SeleniumHQ / SeleniumHQ/selenium
[🚀 Feature]: Support Electron
- Dominant language
- Java
- Stars
- 34.5k
- Forks
- 8.7k
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 92
Description
### 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:
1. Create an `ElectronOptions` class that is a subclass of `ChromiumOptions`, where the browser name is `electron`.
2. Create an `ElectronDriver` class that requires an ElectronOptions argument, and errors if the binary has not been set
3. Create an `ElectronService` in case the user wants to specify the location of the chromedriver (maybe?)
4. 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);
```
Contributor guide
Assessment
This issue has not been assessed yet.