GoogleChromeLabs / carlo

Web rendering surface for Node applications
Apache License 2.0
9.31k stars 309 forks source link

Allow other browsers #27

Open piranna opened 6 years ago

piranna commented 6 years ago

Allow to use other browsers if Chrome is not available. Maybe all features are not available, but for just launching a web page that connect to de Node.js server would be far from enough... :-)

KeziahMoselle commented 6 years ago

It use Puppeteer so I don't think they can support others browsers than Chrome :(

nklayman commented 6 years ago

The other browsers would have to implement puppeteer for this to work. Until then, I think this will be labeled as wontfix.

fenwick67 commented 6 years ago

Other browsers support WebDriver instead of puppeteer for browser control, so I believe it's theoretically possible with some extra glue.

Xotabu4 commented 6 years ago

@fenwick67 WebDriver is much slower because uses http REST, and Chrome Debug Protocol uses websockets. There will be higher latency. And WebDriver protocol does not have all the features of Chrome Debug Protocol (for example Network, Performance and other - https://chromedevtools.github.io/devtools-protocol/)

fenwick67 commented 6 years ago

@Xotabu4 Yes, webdriver is transactional HTTP, which will be slower than websockets for things like opening or moving a window (though I'm skeptical it would be perceptible in most cases, since it's all over loopback anyway).

But I think it should be possible to load some js into the window to handle websocket connections for more performance-critical RPC stuff, as long as the functionality could be done with the regular browser APIs.

ab35 commented 5 years ago

OS manufacturers should work on a browser shell standard common to all operating systems, because after all, all browsers do the same thing according to W3C standards.

So particular brands of browsers like Edge, Safari, Chrome, etc would all derive from a common standard shell present in all operating systems.

Then, users would just have to choose what browser brand they want to upgrade to / or there will be one brand by default installed along the shell in the particular OS (for example the Edge brand in windows OS).

This would allow to greatly reduce the internet bandwidth when acquiring and updating new browsers on an OS, and carlo apps wouldn't need to ship with chromium while still being compatible with all browser brands.

KeziahMoselle commented 5 years ago

This is a future solution for Firefox : https://github.com/GoogleChrome/puppeteer/tree/master/experimental/puppeteer-firefox#readme

sbhamad commented 4 years ago

Behold the next generation of puppeteer. Works with all major browsers, and has more features. @piranna

https://github.com/microsoft/playwright