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
python build/test.py \ --grid-config grid-config.yaml \ --grid-address selenium-hub-hostname:4444
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
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
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