Mastering Selenium Side Runner: The Complete Guide
As organizations accelerate release velocity, delivering high quality software is increasingly challenging. Research shows teams practicing continuous testing release products up to 30% faster. But setting up test automation requires significant effort and expertise.
This is where Selenium Side Runner comes in – bridging the gap between streamlined test recording and scalable test execution to enable continuous testing.
In this comprehensive guide, you‘ll learn how to leverage Selenium Side Runner to automate functional tests across browsers without needing to code. Let‘s get started!
What is Selenium Side Runner and Why It Matters
Selenium Side Runner allows you to execute Selenium IDE exported test suites headlessly from the command line. No browser UI needed.
Key Benefits:
- Headless test execution without needing a browser UI
- Support for parallel test runs
- Integration with popular CI/CD tools
- Compatibility with Selenium Grid for distributed testing
- Customizable reporting in different formats
- Active community support
This makes setting up test automation faster compared to programming-based approaches like Selenium WebDriver or proprietary tools.
As per the World Quality Report 2021-22, test automation adoption saw a 50% increase over the past 4 years. Organizations implementing CI/CD pipelines have a 38% higher product release frequency than others.
Selenium Side Runner bridges this gap to help drive rapid iterations.
Installing Selenium IDE
Since Selenium Side Runner executes tests exported from Selenium IDE, you‘ll first need the IDE browser extension installed.
Steps:
- Download the Chrome or Firefox extension
- Pin the browser extension for easy access
- Enter a test project name and base URL of your application under test
- Click Record and interact with your app to build test steps
Here‘s how the Selenium IDE recorder looks like:

Creating Your First Test
With Selenium IDE set up, let‘s create your first test case.
- Go to https://demo.applitools.com/index.html
- Enter "Test Project" as project name
- Start recording
- Enter username as "tomsmith" and password as "SuperSecretPassword!"
- Click login
- Validate successful login
- Stop recording
- Export test case as LoginTest.side
This test case verifies valid credentials logging into the demo app.
Repeat the steps to add more test cases like invalid password checks, mandatory field validations etc.
Executing Tests with Selenium Side Runner
To install side runner:
npm install -g selenium-side-runner
Then install the Selenium web driver for your chosen browser:
npm install -g chromedriver
With the prerequisites in place, navigate to the folder containing your .side files.
Execute tests:
selenium-side-runner LoginTest.side
This will run all test cases headlessly and report pass/fail status:

Use command line arguments to customize behavior:
// Timeout
selenium-side-runner -t 30 LoginTest.side
// Specify environment
selenium-side-runner -e staging LoginTest.side
// Parallel execution
selenium-side-runner -p 4 LoginTest.side
Integration with CI/CD Pipelines
To integrate side runner with your builds:
- Define test script in package.json:
"scripts": { "test": "selenium-side-runner -r junit tests/*.side" } - Configure your CI/CD pipeline to run
npm test
Here is a CircleCI config with side runner:

This will enable running browser tests on every commit for rapid feedback.
Running Tests on BrowserStack
To run tests across 2000+ real mobile devices and browsers on BrowserStack, pass desired capabilities:
selenium-side-runner
--capability "os=OS X,os_version=Monterey"
--capability "browser=Chrome"
--capability "browser_version=latest"
tests.side
Integrate your BrowserStack account for live test debugging and shareable reports.
Configuring Through Feature Flags
Manage test execution using .properties file:
browser=chrome
events.enabled=true
Pass file path to set values runtime:
selenium-side-runner -o properties.properties tests.side
Then add logic in tests based on flags:
if (events.enabled) {
// execute tracking steps
}
This way you can shift between configurations without changing tests.
Grouping Test Cases
The real power of side runner comes from being able to categorize related tests into suites, allowing you to:
- Run regression test packs together
- Retry only failed tests
- Segregate smoke tests from integration tests
test_suite_1:
- LoginTests.side
- AccountTests.side
smoke:
- LandingPageTests.side
And execute specific suites based on needs:
selenium-side-runner test_suite_1
Generating Reports and Metrics
To generate results in JUnit format:
selenium-side-runner -r junit -o test-results.xml tests
Get HTML report:
selenium-side-runner -r html -o test-report.html tests
Share reports using CI artifacts or tools like BrowserStack Reports:

Analyze trends on test durations, failures etc. with the selenium-side-runner-stats package.
Debugging Test Failures
Debug failures by enabling screenshots and artifact collection:
selenium-side-runner -a screenshots -a logs tests
Review screenshots to visualize test steps. Inspect browser console logs to pinpoint JS errors.
For deeper inspection, run tests in non-headless mode:
selenium-side-runner -c "browserName=chrome" tests
Then utilize Browser DevTools to identify fixes.
Maintaining Stable Tests
With test automation, it‘s important that your checks are resilient to application changes. Here are some best practices:
Generic Element Selectors
Avoid hard-coded IDs. Use descriptive prefixes for reusable selectors:
click(`[data-testid=‘submit_button‘]`)
Parameterization
Externalize test data from scripts for maintainability:
const { username, password } = require(‘./config.js‘)
setValue(`[name=email]`, username)
setValue(`[name=pass]`, password)
Page Objects
Encapsulate page interactions into reusable page objects:
// LoginPage.js
module.exports = {
login(username, password){
// enter details
// submit
}
}
// Test
const { LoginPage } = require(‘./pages‘);
LoginPage.login(/* user */);
This improves cohesion and reduces duplication.
Limitations of Selenium Side Runner
While side runner simplifies test automation, few limitations to consider:
1. Only supports web apps – Consider solutions like Appium for native mobile testing.
2. Not ideal for advanced custom logic – Lacks programming flexibility of Selenium WebDriver.
Evaluate WebDriverIO or Cypress if you need greater control for frameworks.
3. Browser-only behaviors – Specialized tools can better handle visual testing, cross-browser testing etc. Integrate with Applitools or BrowserStack.
The Future of Test Automation
Selenium Side Runner helps teams adopt test automation in a frictionless manner. As adoption increases, we envision more enrichments around:
- Tighter IDE integration for CI/CD
- Enhanced support for test analytics
- Unified reporting dashboard
- Improved extensibility and custom tool integrations
Rapid test creation coupled with instant CI feedback will help democratize quality for teams practicing continuous delivery.
Key Takeaways
With capabilities ranging from accelerated test recording to seamless CI/CD integration, Selenium Side Runner enables scalable test automation while lowering entry barriers.
In this guide, we covered:
✅ Installing Selenium Side Runner
✅ Creating automated browser tests without coding
✅ Executing test suites headlessly via CLI
✅ Integration techniques with CI/CD pipelines
✅ Debugging failures with screenshots and logs
✅ Following best practices for stable test suites
✅ Options for test analytics and reporting
Leverage these patterns to harness Selenium Side Runner and unlock the benefits of automated testing.
Shift testing left with rapid feedback. Deliver high quality innovations continuously. Accelerate releases fearlessly.