Automating GitHub Actions for Selenium Grid Execution - Nytrotype/Selenium-with-Java-automation-work GitHub Wiki
Introduction
Automating Selenium Grid execution with GitHub Actions ensures continuous testing, parallel execution, and cloud-based scalability. This setup integrates Selenium with CI/CD pipelines, enabling automated test execution for every Git push or pull request.
1. Why Use GitHub Actions for Selenium Grid?
✅ Fully Automated Test Execution – Runs Selenium Grid tests on every code change.
✅ Parallel Testing Support – Executes tests across multiple browser environments.
✅ Integrates with CI/CD Pipelines – Ensures stable builds before deployment.
✅ Cloud & Local Execution – Supports AWS, Azure, LambdaTest, Sauce Labs.
✅ Reduces Manual Effort – Automates QA validation for faster release cycles.
2. Setting Up GitHub Actions for Selenium Grid
.github/workflows/selenium-grid.yml
Step 1: Create Inside your repository, create the following workflow file:
name: Selenium Grid Test Execution
on:
push:
branches:
- main
pull_request:
jobs:
selenium-grid-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Set Up Java Environment
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
- name: Install Maven Dependencies
run: mvn clean install
- name: Start Selenium Grid Hub & Nodes
run: |
docker-compose -f selenium-grid.yml up -d
- name: Run Selenium Tests
run: mvn test
- name: Store Test Reports
uses: actions/upload-artifact@v2
with:
name: Selenium-Test-Reports
path: target/test-output/
3. Configuring Selenium Grid for CI/CD
selenium-grid.yml
)
Step 1: Create a Docker Compose File (Use Docker Compose to deploy Selenium Hub & Nodes:
version: '3'
services:
selenium-hub:
image: selenium/hub
ports:
- "4444:4444"
chrome-node:
image: selenium/node-chrome
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
Step 2: Execute Selenium Tests on Grid
Ensure your Java project uses Remote WebDriver:
String gridUrl = "http://localhost:4444/wd/hub";
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("browserName", "chrome");
WebDriver driver = new RemoteWebDriver(new URL(gridUrl), caps);
driver.get("https://www.google.com");
System.out.println("Page Title: " + driver.getTitle());
driver.quit();
4. Storing Test Artifacts in GitHub
✅ Enable GitHub Actions to upload test reports:
- name: Store Test Reports
uses: actions/upload-artifact@v2
with:
name: Selenium-Test-Reports
path: target/test-output/
✅ View reports in GitHub Actions Workflow Runs.
✅ Integrate Allure Reports for enhanced test analytics.
5. Best Practices for GitHub Actions & Selenium Grid
✅ Use Parallel Execution – Speed up test cycles via TestNG parallel execution.
✅ Implement Retry Logic – Reduce flaky test failures with JUnit/TestNG retries.
✅ Cache Maven Dependencies – Improve pipeline speed with:
- name: Cache Maven Dependencies
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
✅ Run Headless Tests – Save execution time with:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
WebDriver driver = new ChromeDriver(options);
Conclusion
By automating Selenium Grid execution with GitHub Actions, teams ensure continuous testing, scalable parallel execution, and faster feedback loops. This approach improves quality assurance while seamlessly integrating into CI/CD workflows.