Selenium Grid Config
Shaka Player's test runner (Karma) can be directed to run tests on a Selenium grid. For this, you need a config file that defines what browsers are available, and how to request them via WebDriver.
For a fully-worked, detailed example, see the config for the private grid in our lab at build/shaka-lab.yaml
Usage
python build/test.py \
--grid-config grid-config.yaml \
--grid-address selenium-hub-hostname:4444
Syntax
The config file is written in YAML. We chose YAML because it has two big advantages over JSON:
- You can add comments
- You can define variables (with YAML "anchors") to factor out common configs
Variables
You can define any common variables in the vars
section, then refer to them
elsewhere. For example:
vars:
# Generates an "anchor" with the given name. Later, you can inject the
# contents of the variable with "*name".
firefox_config: &firefox_config
moz:firefoxOptions:
# Override Firefox default preferences in the temporary profile created
# for each test run.
prefs:
# Overrides Selenium's explicit default setting, to allow Firefox to
# install the Widevine CDM on demand.
media.gmp-manager.updateEnabled: true
# Overrides Firefox's Linux-specific default setting to disable DRM.
media.eme.enabled: true
# These three browser definitions share the same config from above.
FirefoxMac:
browser: firefox
os: Mac
extra_config: *firefox_config
FirefoxWindows:
browser: firefox
os: Windows
extra_config: *firefox_config
FirefoxLinux:
browser: firefox
os: Linux
extra_config: *firefox_config
Browsers
Each top-level key in the config file (except for vars
) is the name of a
browser made available to Karma. Within each of those keys are the following:
browser
: The name of the browser. This is case-sensitive, and must match the string and case used by Selenium.os
(optional): The name of the OS. This is case-INsensitive, and must match the name of the platform as used by Selenium. For Generic WebDriver Server, this can be omitted or set to the name of the host platform.version
(optional): The version of the browser. This is case-sensitive, and must match the string and case used in the Selenium node config.disabled
(optional): If true, this browser is disabled and will not be used unless explicitly requested.extra_config
(optional): A dictionary of extra configs which will be merged with the WebDriver launcher config in Karma.
Examples of basic desktop browsers definitions:
ChromeMac:
browser: chrome
os: Mac
FirefoxMac:
browser: firefox
os: Mac
Safari:
browser: safari
os: Mac
SafariTP:
browser: safari
os: Mac
extra_config:
safari.options:
technologyPreview: true
ChromeWindows:
browser: chrome
os: Windows
FirefoxWindows:
browser: firefox
os: Windows
Edge:
browser: msedge
os: Windows
ChromeLinux:
browser: chrome
os: Linux
FirefoxLinux:
browser: firefox
os: Linux