The test finally passed—then failed again two minutes later. Somewhere between your browser automation and your Domino workspace, a mismatched permission or environment variable broke the chain. That tiny disconnect is the reason Domino Data Lab Selenium deserves a thoughtful setup rather than a last‑minute patch.
Domino Data Lab handles heavy lifting for model development. It manages compute environments, collaboration, and reproducibility. Selenium, on the other hand, exists to control browsers, validate web interactions, and prove that what your data app shows on screen actually works. When you connect the two, you get reproducible browser tests that live right next to your experiments.
The integration is mostly about trust and context. Selenium sessions need to spin up inside Domino’s managed workspace without leaking credentials or colliding versions of Chrome or Firefox drivers. Domino enforces container isolation, but Selenium still needs to know how to talk to the remote driver through a stable endpoint. Think of Domino as the lab, Selenium as the robot arm, and your tests as the steady rhythm that keeps the assembly line running.
How the integration works
- Define the environment image in Domino that includes Selenium WebDriver binaries and the target browser.
- Authenticate through Domino’s identity layer so tests inherit the same access as your running project, often via SSO providers like Okta or Azure AD.
- Trigger runs through Domino’s Jobs or Scheduled Runs so Selenium executes under the same reproducible context as your code and data.
- Capture logs and screenshots back into the Domino file store for versioned review.
Best practices
- Pin browser and driver versions so every run behaves identically.
- Map RBAC roles in Domino to downstream services Selenium touches, such as internal dashboards secured by OIDC.
- Rotate secrets periodically. Domino’s environment variables make this simple if you source from AWS Secrets Manager or Vault.
- Keep Selenium tests stateless; never depend on cached cookies between runs.
Results you can expect: