getgauge / gauge-vscode

A Visual Studio Code plug-in for Gauge
https://gauge.org
MIT License
50 stars 19 forks source link

vscode.dev support #793

Open jbadeau opened 2 years ago

jbadeau commented 2 years ago

Now that microsoft has released https://vscode.dev/ and opensourced the vscode server, it would be great if the gauge plugin could be extended to run in the browser version as well. Most likely the file IO apis will need some work.

Cheers

sriv commented 2 years ago

It's a great idea, but not trivial to implement. gauge-vscode will be relatively easy to migrate to support web extension. However gauge-vscode requires gauge executable for two aspects - (1) as an LSP server, and (2) as a test runner.

(1) and (2) will require porting gauge and the runners to WebAssembly, which is where the main challenge is.

jbadeau commented 2 years ago

I think the LSP sever should run fine if a web socket proxy is put in front. I once tried using gauge deamon in lsp mode with Monaco and it worked. Prob need to adapt the plugin to use web socket as an alternative protocol.

jbadeau commented 2 years ago

https://user-images.githubusercontent.com/152763/141594522-4ab5a7f6-5336-4b6a-bded-abc1adb97f68.MOV

jbadeau commented 2 years ago

Ok I cheated, it's running on open vscode sever.

I installed Java, Gauge, into the docker image and installed the plugins via visa files. Works nicely

zabil commented 2 years ago

I installed Java, Gauge, into the docker image and installed the plugins via visa files. Works nicely

I haven't explored vscode.dev much yet but does it allow connecting to docker images or setting them up?

jbadeau commented 2 years ago

Not as far as I know. So making it work in the browser only is not really gonna be easy as already stated. However more projects and companies are basing there web IDEs off of vscode sever. What I am trying to do now is provide customised vscode that makes it easy for non technical people to write specs without a full blown ide.

It's working now but I will customise the ide ui to remove the unnecessary stuff.