selenium
selenium copied to clipboard
[🚀 Feature]: Support Electron
Feature and motivation
Right now, to run tests on electron apps, it pretty much requires a JavaScript dev environment. Electron versions are defined in the development directory, and npm is used to install the correct version of chromedriver via electron-chromedriver.npm
So the proposal is:
- Create an
ElectronOptionsclass that is a subclass ofChromiumOptions, where the browser name iselectron. - Create an
ElectronDriverclass that requires an ElectronOptions argument, and errors if the binary has not been set - Create an
ElectronServicein case the user wants to specify the location of the chromedriver (maybe?) - Selenium Manager downloads the driver from https://github.com/electron/electron/releases based on the specified version, or gets the latest. I think we should not try to automatically determine the version of the electron app; the app is bundled with a specific runtime version but it appears to be quite challenging to actually surface the version of it.
Usage example
ElectronOptions options = new ElectronOptions();
options.browserVersion = "29.0";
options.binary = "/path/to/electron/app";
ElectronDriver driver = new ElectronDriver(options);
I updated the description here. An example of how users are currently working with electron can be found in the Sauce docs
The bindings work should be easy, not certain about the selenium manager piece with the naming conventions
I can implement this in Python.