Selenium Overview


Testable supports executing Selenium tests in a globally distributed fashion using the following Selenium bindings:

  1. (Node.js)
  2. Protractor (Node.js)
  3. Selenium Java
  4. Selenium Javascript (+ Mocha)
  5. 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

Selenium Diagram

Before running the Selenium client (e.g., 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.


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.


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.