Selenium Overview
Introduction
Testable supports executing Selenium tests in a globally distributed fashion using the following Selenium bindings:
- Webdriver.io (Node.js)
- Protractor (Node.js)
- Selenium Java
- Selenium Javascript (+ Mocha)
- Serenity BDD
There are also some specific instructions for testing OpenFin applications.
This document gives a general overview of how Testable integrates with Selenium.
How it Works
Before running the Selenium client (e.g. Webdriver.io, Protractor, Java, Serenity, Javascript/Mocha), each test runner starts its own local Selenium Standalone server and a new port on a local Browsermob proxy. This local Selenium server is shared across the virtual users running on that test runner. The Selenium remote webdriver API is used for Selenium clients to communicate with the local Selenium server. In addition, all network requests made by the browsers are proxied locally using browsermob to capture useful performance metrics.
This share nothing approach allows for scaling massive load tests that simulate concurrent users across numerous test runners and regions by avoiding use of a shared, non-local Selenium grid that limits scalability.
The code that defines your scenario can be uploaded to Testable or downloaded at test time from a Git repository.
Parameters
Parameterize your scenario and reuse it across many test configurations or via API. This can be useful to control things like environment, base URL, credentials, etc. Parameter values are accessible in your Selenium scripts as environment variables. For example, parameter Abc
is accessible as environment variable PARAM_ABC
.
Read more about scenario parameters here.
Environment
Testable passes various environment variables into your test that give you context (e.g. region name, global index, total number of concurrent users, etc).
See our Selenium environment page for more details.