SeleniumHQ / SeleniumHQ/selenium

[🚀 Feature]: Support Electron

Open
#13,954 5 comments 3 reactions 0 assignees View on GitHub
I-enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.