Popular Searches
Popular Course Categories
Popular Courses

Jenkins

Selenium with CI/CD

Jenkins for Selenium Automation

Jenkins is an open-source automation server widely used to automate software build, test, and delivery workflows. In Selenium automation, Jenkins can be used to automatically execute test suites, integrate source-control changes, run Maven/TestNG tests, collect test results, generate reports, and support CI/CD workflows.

Jenkins is especially useful when Selenium tests need to execute automatically after code changes instead of being started manually. A Jenkins Pipeline can be defined as code in a Jenkinsfile and stored with the project source code, allowing the build and test workflow to be version controlled along with the application. :contentReference[oaicite:0]{index=0}

Course Resource: Selenium Training | Register for Course Demo


1. What is Jenkins?

Jenkins is an automation server that helps teams automate repetitive software-development activities such as building applications, executing automated tests, publishing test results, and deploying software.

For Selenium testers, Jenkins provides a centralized environment where automated browser tests can be executed on demand, on a schedule, or as part of a CI/CD pipeline.

A simplified Selenium automation workflow can be represented as:

Developer Pushes Code

        |

        v

Source Code Repository

        |

        v

Jenkins

        |

        v

Checkout Latest Code

        |

        v

Build Project

        |

        v

Execute Selenium Tests

        |

        v

Generate Test Reports

        |

        v

Publish Results

        |

        v

Notify Team


2. Why is Jenkins Important for Selenium?

Without Jenkins, testers may need to manually execute Selenium test suites whenever application changes are introduced. Jenkins can automate this process and provide repeatable execution.

  • Automatically executes Selenium test suites.
  • Supports continuous integration workflows.
  • Can execute tests after source-code changes.
  • Supports scheduled test execution.
  • Integrates with Maven and TestNG.
  • Can publish test results and reports.
  • Can execute tests on different Jenkins agents.
  • Supports Pipeline as Code through Jenkinsfiles.
  • Can integrate with source-control systems.
  • Can be used as part of CI/CD pipelines.
  • Can trigger downstream jobs.
  • Provides build history and console logs.


3. Jenkins and Selenium Relationship

Jenkins does not replace Selenium. Jenkins is responsible for automation orchestration, while Selenium is responsible for browser automation.

TechnologyPrimary Responsibility
JenkinsAutomates and orchestrates the build and test workflow
Selenium WebDriverAutomates browser interactions
TestNGOrganizes and executes Java test cases
MavenBuilds the Java project and manages dependencies
GitManages source code
Jenkins PipelineDefines the automated workflow as code


4. Jenkins CI/CD Flow for Selenium

Git Repository

      |

      v

Jenkins Trigger

      |

      v

Checkout Code

      |

      v

Install Dependencies

      |

      v

Compile Project

      |

      v

Run Selenium Tests

      |

      v

Generate Reports

      |

      v

Publish Results

      |

      v

Success / Failure Notification


5. Continuous Integration

Continuous Integration (CI) is a development practice in which code changes are integrated frequently and automated build and test processes are executed to detect problems early.

For Selenium automation, Jenkins can execute browser tests after application changes are committed to the source repository.

Example:

Developer

   |

   | git push

   v

Git Repository

   |

   v

Jenkins

   |

   v

Maven Build

   |

   v

Selenium + TestNG

   |

   v

Test Report


6. Continuous Delivery and Continuous Deployment

Continuous Delivery focuses on keeping software in a releasable state through automated build, test, and delivery processes.

Continuous Deployment extends this approach by automatically deploying qualifying changes to an environment.

A Jenkins workflow may therefore contain:

Build

  |

  v

Unit Tests

  |

  v

Selenium Tests

  |

  v

API Tests

  |

  v

Reports

  |

  v

Deployment


7. Jenkins Architecture

Jenkins commonly uses a controller-and-agent architecture. The Jenkins controller coordinates jobs and scheduling, while agents can provide execution environments for workloads.

                Jenkins Controller

                       |

        +--------------+--------------+

        |              |              |

        v              v              v

    Agent 1        Agent 2        Agent 3

    Chrome         Firefox          Edge

        |              |              |

        v              v              v

    Selenium       Selenium        Selenium

      Tests          Tests           Tests


8. Jenkins Controller

The Jenkins controller is responsible for coordinating Jenkins activities such as job configuration, scheduling, pipeline orchestration, and communication with agents.

In a larger Selenium framework, the controller can distribute workloads to available agents rather than running every test directly on the controller.


9. Jenkins Agents

Jenkins agents are machines or execution environments that perform work assigned by Jenkins.

An agent can be configured with the tools required by the automation framework, such as:

  • Java
  • Maven
  • Git
  • Chrome
  • Firefox
  • Microsoft Edge
  • Selenium-compatible drivers or browser-management utilities
  • Project-specific dependencies


10. Jenkins Job

A Jenkins job represents a configured automation task. A job can checkout source code, execute commands, run tests, archive artifacts, and publish results.

For Selenium automation, a job may perform:

Checkout

   |

Build

   |

Run Selenium Tests

   |

Generate Reports

   |

Archive Reports

   |

Notify


11. Jenkins Pipeline

A Jenkins Pipeline is a series of automated steps that define how a project is built, tested, and potentially delivered.

Jenkins Pipeline supports Pipeline as Code, where the workflow can be stored in a Jenkinsfile inside source control. Jenkins documentation recommends using a source-controlled Jenkinsfile for more complex pipelines because it keeps the pipeline definition with the project. :contentReference[oaicite:1]{index=1}


12. Jenkinsfile

A Jenkinsfile contains the Pipeline definition. It is commonly stored in the root directory of a project repository.

pipeline {

    agent any

 

    stages {

        stage('Build') {

            steps {

                echo 'Building project'

            }

        }

 

        stage('Test') {

            steps {

                echo 'Running tests'

            }

        }

    }

}


13. Declarative Pipeline

Declarative Pipeline provides a structured syntax for defining Jenkins pipelines.

A basic structure is:

pipeline {

    agent any

 

    stages {

        stage('Stage Name') {

            steps {

                // commands

            }

        }

    }

}

Declarative Pipeline is commonly used because its structure makes stages and pipeline configuration easier to understand.


14. Scripted Pipeline

Scripted Pipeline uses a Groovy-based scripting approach and provides greater programming flexibility.

node {

    stage('Build') {

        echo 'Building project'

    }

 

    stage('Test') {

        echo 'Running tests'

    }

}

Jenkins supports both Declarative and Scripted Pipeline approaches. :contentReference[oaicite:2]{index=2}


15. Jenkins Pipeline Stages

Stages divide a pipeline into logical sections.

pipeline

   |

   +-- Checkout

   |

   +-- Build

   |

   +-- Test

   |

   +-- Report

   |

   +-- Deploy

For Selenium projects, a common stage sequence is:

  • Checkout
  • Build
  • Install dependencies
  • Execute Selenium tests
  • Generate reports
  • Archive results
  • Notify stakeholders


16. Jenkins Steps

Steps are the individual actions executed within a pipeline stage.

stage('Test') {

    steps {

        sh 'mvn test'

    }

}

On Windows agents, a command such as bat can be used instead of sh.

stage('Test') {

    steps {

        bat 'mvn test'

    }

}


17. Installing Jenkins

Jenkins can be installed in several environments depending on project requirements. A Jenkins installation requires an appropriate Java runtime and can then be accessed through its web interface.

The official Jenkins guided tour currently documents running Jenkins locally and accessing it through a browser. :contentReference[oaicite:3]{index=3}

After installation, a typical setup includes:

  1. Start Jenkins.
  2. Open the Jenkins web interface.
  3. Complete initial setup.
  4. Install required plugins.
  5. Configure tools and agents.
  6. Create a project or Pipeline.
  7. Connect the project to source control.
  8. Execute the first build.


18. Jenkins Dashboard

The Jenkins dashboard provides access to jobs, builds, administration options, build history, pipeline information, and other configured resources.

From the dashboard, a tester or developer can typically:

  • Create jobs.
  • Run builds.
  • View build history.
  • Open console output.
  • Configure jobs.
  • View pipeline stages.
  • Inspect test results.
  • Manage credentials and tools according to permissions.


19. Creating a Jenkins Freestyle Project

A Freestyle project is one traditional way to configure a Jenkins job through the Jenkins user interface.

Basic process:

  1. Open Jenkins Dashboard.
  2. Select New Item.
  3. Enter the project name.
  4. Select Freestyle project.
  5. Configure source control.
  6. Configure build steps.
  7. Configure post-build actions if required.
  8. Save the project.
  9. Run the build.


20. Creating a Jenkins Pipeline Project

A Pipeline project can be configured through Jenkins or can load its Jenkinsfile from source control.

Jenkins Dashboard

       |

       v

New Item

       |

       v

Pipeline

       |

       v

Pipeline Configuration

       |

       v

Jenkinsfile / Pipeline Script

       |

       v

Save

       |

       v

Build

Jenkins documentation describes both defining a Pipeline directly in the UI and loading a Jenkinsfile from SCM. :contentReference[oaicite:4]{index=4}


21. Source Control Integration

Jenkins can integrate with source-control repositories so that the latest project code can be checked out before building and testing.

A Selenium project may follow:

Git Repository

      |

      v

Jenkins Checkout

      |

      v

Latest Automation Code

      |

      v

Maven

      |

      v

TestNG

      |

      v

Selenium


22. Jenkins with Git

Git is commonly used to store Selenium automation projects and Jenkinsfiles.

A typical repository may contain:

selenium-project/

|

|-- pom.xml

|-- Jenkinsfile

|-- testng.xml

|-- src/

|   |-- main/

|   |-- test/

|

|-- reports/

|-- README.md


23. Jenkins with Maven

Maven is frequently used in Java Selenium projects for dependency management, compilation, and test execution.

A Jenkins build can execute:

mvn clean test

Other commonly used commands include:

mvn clean

mvn compile

mvn test

mvn clean test

mvn clean install


24. Selenium Test Execution through Maven

A typical Jenkins Selenium pipeline can use Maven to execute TestNG tests.

pipeline {

    agent any

 

    stages {

        stage('Checkout') {

            steps {

                checkout scm

            }

        }

 

        stage('Test') {

            steps {

                sh 'mvn clean test'

            }

        }

    }

}


25. Jenkins with TestNG

TestNG organizes Java-based Selenium test execution, while Jenkins controls when and where the test suite is executed.

Jenkins

   |

   v

Maven

   |

   v

TestNG

   |

   v

@DataProvider / @Test

   |

   v

Selenium WebDriver

   |

   v

Browser


26. Jenkins with Selenium WebDriver

Selenium WebDriver performs browser interactions while Jenkins provides the automated execution environment.

Example test:

@Test

public void loginTest() {

    driver.get("https://example.com/login");

    driver.findElement(By.id("username")).sendKeys("admin");

    driver.findElement(By.id("password")).sendKeys("password");

    driver.findElement(By.id("login")).click();

}

Jenkins can invoke the Maven/TestNG suite containing this test.


27. Jenkins with Headless Browser Testing

CI environments may use headless browser execution so that browsers can run without displaying a normal graphical browser window.

ChromeOptions options = new ChromeOptions();

options.addArguments("--headless=new");

 

WebDriver driver = new ChromeDriver(options);

Headless execution can be useful on CI agents where a graphical desktop is not available.


28. Jenkins Environment Variables

Jenkins provides environment information that can be used by build steps and tests.

Examples include:

  • BUILD_NUMBER
  • BUILD_ID
  • JOB_NAME
  • WORKSPACE
  • BUILD_URL
  • NODE_NAME

Pipeline example:

pipeline {

    agent any

 

    stages {

        stage('Information') {

            steps {

                echo "Job: ${env.JOB_NAME}"

                echo "Build: ${env.BUILD_NUMBER}"

                echo "Workspace: ${env.WORKSPACE}"

            }

        }

    }

}


29. Passing Parameters to Jenkins

Jenkins jobs can be parameterized so that a user or another automation process can provide values at build time.

For example, a Selenium pipeline may accept:

  • Browser name
  • Environment
  • Test suite
  • Execution type
  • Application URL

Conceptually:

Build Parameter

      |

      v

Jenkins Pipeline

      |

      v

Maven Command

      |

      v

TestNG

      |

      v

Selenium Test


30. Browser Parameterization in Jenkins

Browser selection can be passed from Jenkins into the Selenium framework.

pipeline {

    agent any

 

    parameters {

        choice(

            name: 'BROWSER',

            choices: ['chrome', 'firefox', 'edge'],

            description: 'Select browser'

        )

    }

 

    stages {

        stage('Test') {

            steps {

                echo "Browser: ${params.BROWSER}"

            }

        }

    }

}

The selected value can then be consumed by the test framework.


31. Environment Parameterization

A Selenium framework can also accept an environment parameter.

pipeline {

    agent any

 

    parameters {

        choice(

            name: 'ENVIRONMENT',

            choices: ['qa', 'staging', 'production'],

            description: 'Select environment'

        )

    }

 

    stages {

        stage('Run Tests') {

            steps {

                echo "Environment: ${params.ENVIRONMENT}"

            }

        }

    }

}


32. Jenkins Credentials

Automation projects often require credentials for repositories, environments, cloud services, or other systems. Jenkins provides a credentials mechanism so that sensitive information can be managed separately from ordinary source code.

Credentials should not be unnecessarily hard-coded into Jenkinsfiles, Selenium test classes, or source-controlled configuration files.

For example, a pipeline can reference a credential by ID rather than placing a secret directly in the Jenkinsfile.


33. Jenkins Pipeline with Selenium and Maven

pipeline {

    agent any

 

    stages {

        stage('Checkout') {

            steps {

                checkout scm

            }

        }

 

        stage('Build') {

            steps {

                sh 'mvn clean compile'

            }

        }

 

        stage('Selenium Tests') {

            steps {

                sh 'mvn test'

            }

        }

 

        stage('Reports') {

            steps {

                echo 'Publishing test results'

            }

        }

    }

}


34. Jenkins Post Actions

Pipeline post conditions can be used to perform actions after stages or the complete pipeline have finished.

post {

    always {

        echo 'Build completed'

    }

 

    success {

        echo 'Tests passed'

    }

 

    failure {

        echo 'Tests failed'

    }

}

This can be useful for cleanup, report processing, and notifications.


35. Jenkins Test Reports

Automated test execution should normally be accompanied by test-result publishing so that the team can understand which tests passed, failed, or were skipped.

Jenkins provides Pipeline-compatible steps through plugins for publishing different test-result formats. Its Pipeline Steps Reference includes a TestNG results step and a JUnit results step. :contentReference[oaicite:5]{index=5}

Example concept:

Run Tests

    |

    v

Generate XML Results

    |

    v

Jenkins

    |

    v

Publish Test Results

    |

    v

Test Report


36. Publishing TestNG Results

When a TestNG reporting plugin is configured, the pipeline can publish TestNG result files generated during test execution.

post {

    always {

        testNG(

            pattern: '**/testng-results.xml'

        )

    }

}

The exact configuration depends on the installed plugin and the format/location of the generated result files.


37. Selenium HTML Reports in Jenkins

Selenium-related HTML reports can also be integrated into Jenkins through appropriate plugins or publishing mechanisms. Jenkins provides a Pipeline step for publishing Selenium HTML reports. :contentReference[oaicite:6]{index=6}

A typical reporting workflow is:

Selenium Execution

      |

      v

HTML Report Generated

      |

      v

Jenkins Workspace

      |

      v

Report Publisher

      |

      v

Jenkins Build Report


38. Console Output

Jenkins provides console output for individual builds. Console logs are useful for identifying build failures, Maven errors, Selenium exceptions, environment problems, and configuration issues.

Example:

[INFO] Building Selenium Automation Project

[INFO] Running tests

[INFO] Tests run: 20

[INFO] Failures: 1

[INFO] BUILD FAILED


39. Jenkins Build History

Jenkins maintains build history for jobs. A tester can inspect earlier builds to understand when failures occurred and review the associated logs and reports.

Build #105  SUCCESS

Build #104  SUCCESS

Build #103  FAILURE

Build #102  SUCCESS

Build #101  SUCCESS


40. Jenkins Scheduled Execution

Jenkins can be configured to run jobs according to a schedule. This is useful for nightly regression suites or periodic automated validation.

For example, a regression suite may be scheduled during non-business hours:

Nightly Schedule

      |

      v

Jenkins

      |

      v

Checkout Latest Code

      |

      v

Run Regression Tests

      |

      v

Generate Reports

      |

      v

Notify Team


41. Jenkins Trigger after Source Code Changes

A CI workflow can trigger Jenkins when source code changes are detected or when an external repository event triggers a build.

Typical flow:

Developer

    |

    v

Git Push

    |

    v

Repository Event

    |

    v

Jenkins

    |

    v

Build + Test

    |

    v

Report


42. Jenkins and Webhooks

A webhook can notify Jenkins that a repository event has occurred. The exact webhook configuration depends on the source-control provider and Jenkins integration.

This allows teams to move from manually starting builds toward event-driven CI workflows.


43. Jenkins Pipeline from SCM

A Pipeline can be loaded from source control. In this model, Jenkins retrieves the Jenkinsfile from the repository and executes the pipeline defined there.

Repository

    |

    |-- Jenkinsfile

    |-- pom.xml

    |-- src/

    |

    v

Jenkins Checkout

    |

    v

Read Jenkinsfile

    |

    v

Execute Pipeline

Jenkins documentation describes Pipeline script from SCM as a way to load the Jenkinsfile from a repository. :contentReference[oaicite:7]{index=7}


44. Pipeline as Code

Pipeline as Code means defining the automation workflow in code rather than relying entirely on manual UI configuration.

Benefits include:

  • Version control for pipeline definitions.
  • Reviewable pipeline changes.
  • Repeatable configuration.
  • Better collaboration.
  • Easier recovery and maintenance.
  • Pipeline configuration stored with project source code.


45. Jenkinsfile Example for Selenium

pipeline {

    agent any

 

    stages {

        stage('Checkout') {

            steps {

                checkout scm

            }

        }

 

        stage('Compile') {

            steps {

                sh 'mvn clean compile'

            }

        }

 

        stage('Run Selenium Tests') {

            steps {

                sh 'mvn test'

            }

        }

 

        stage('Archive Reports') {

            steps {

                archiveArtifacts artifacts: '**/reports/**',

                    allowEmptyArchive: true

            }

        }

    }

 

    post {

        always {

            echo 'Selenium pipeline completed'

        }

 

        success {

            echo 'Selenium tests completed successfully'

        }

 

        failure {

            echo 'Selenium tests failed'

        }

    }

}


46. Jenkins with Page Object Model

Jenkins can execute Selenium frameworks built using the Page Object Model. Jenkins does not need to know the internal page-object implementation; it simply executes the project's build and test commands.

Jenkins

   |

   v

Maven

   |

   v

TestNG

   |

   v

Test Classes

   |

   v

Page Classes

   |

   v

WebDriver

   |

   v

Browser


47. Jenkins with Data Providers

Data Providers can be combined with Jenkins to execute the same Selenium test with multiple data sets.

Jenkins

   |

   v

Maven

   |

   v

TestNG

   |

   v

@DataProvider

   |

   +-- User 1

   +-- User 2

   +-- User 3

   +-- User 4

   |

   v

Selenium Tests


48. Jenkins with Parameterized Selenium Tests

Jenkins parameters can be combined with framework configuration to select browsers, environments, suites, or other execution options.

Jenkins Parameter

       |

       v

Framework Configuration

       |

       v

TestNG

       |

       v

Selenium WebDriver

       |

       v

Selected Environment / Browser


49. Jenkins Parallel Execution

Jenkins can distribute independent workloads across agents or pipeline branches. TestNG and Selenium can also perform parallel execution when the framework is designed for thread safety.

                 Jenkins

                    |

          +---------+---------+

          |         |         |

          v         v         v

       Chrome    Firefox     Edge

          |         |         |

          v         v         v

       Tests      Tests      Tests

Parallel Selenium execution requires isolated WebDriver instances and careful management of shared resources.


50. Jenkins Parallel Pipeline

Independent pipeline branches can be executed in parallel.

stage('Cross Browser') {

    parallel {

        stage('Chrome') {

            steps {

                echo 'Chrome tests'

            }

        }

 

        stage('Firefox') {

            steps {

                echo 'Firefox tests'

            }

        }

 

        stage('Edge') {

            steps {

                echo 'Edge tests'

            }

        }

    }

}

Jenkins Pipeline supports parallel execution constructs for independent branches. :contentReference[oaicite:8]{index=8}


51. Jenkins Artifacts

Artifacts are files generated during a build that may need to be retained for later inspection.

Examples include:

  • HTML reports
  • Screenshots
  • Logs
  • XML test results
  • Videos
  • Application packages
  • Execution evidence

Jenkins provides an archiveArtifacts Pipeline step for archiving build artifacts. :contentReference[oaicite:9]{index=9}


52. Screenshot Capture in Selenium with Jenkins

When a Selenium test fails, screenshots can provide useful evidence of the browser state at the time of failure.

File screenshot = ((TakesScreenshot) driver)

        .getScreenshotAs(OutputType.FILE);

The framework can save the screenshot into a build workspace directory and Jenkins can archive it as a build artifact.


53. Failure Handling

A good Jenkins Selenium framework should capture enough evidence to diagnose failures.

Test Failure

    |

    +-- Console Log

    |

    +-- Screenshot

    |

    +-- TestNG Result

    |

    +-- HTML Report

    |

    +-- Browser Information

    |

    v

Failure Analysis


54. Jenkins Notifications

Jenkins can be integrated with notification systems so that teams can be informed about build or test results.

A notification workflow can be:

Test Execution

      |

      v

Build Result

      |

      +------ SUCCESS ------> Success Notification

      |

      +------ FAILURE ------> Failure Notification

The exact notification mechanism depends on the plugins and integrations configured in the Jenkins environment.


55. Jenkins Workspace

A Jenkins workspace is the directory used by a job or agent to check out source code and perform build and test operations.

A Selenium project may appear inside the workspace as:

workspace/

|

|-- pom.xml

|-- Jenkinsfile

|-- testng.xml

|-- src/

|-- target/

|-- reports/

|-- screenshots/


56. Jenkins Clean Workspace

Old build files can sometimes interfere with new executions. A pipeline can clean the workspace before or after execution when appropriate.

pipeline {

    agent any

 

    stages {

        stage('Clean') {

            steps {

                deleteDir()

            }

        }

 

        stage('Checkout') {

            steps {

                checkout scm

            }

        }

    }

}


57. Jenkins with Selenium Grid

Selenium Grid can be used when Selenium tests need to execute across multiple browser or operating-system environments. Jenkins can orchestrate the test workflow while the Selenium infrastructure provides the browser execution environments.

Jenkins

    |

    v

Selenium Test Suite

    |

    v

Selenium Grid

    |

    +------ Chrome

    |

    +------ Firefox

    |

    +------ Edge

    |

    v

Test Results

Jenkins also has plugin integrations related to Selenium Grid, although the available plugin ecosystem and recommended architecture should be evaluated for the current Jenkins environment. :contentReference[oaicite:10]{index=10}


58. Jenkins Agent for Browser Testing

A Jenkins agent can be prepared specifically for Selenium execution.

Example environment:

Jenkins Agent

|

|-- Java

|-- Maven

|-- Git

|-- Chrome

|-- Firefox

|-- Edge

|-- Selenium Project

|-- Test Reporting Tools


59. Jenkins Docker Integration

Jenkins Pipeline can also work with containerized environments. Docker can provide consistent execution environments for builds and tests.

Jenkins

    |

    v

Docker Environment

    |

    +-- Java

    +-- Maven

    +-- Browser

    +-- Selenium

    |

    v

Test Execution

Container-based execution can help standardize dependencies across different environments.


60. Jenkins and Selenium Docker Example

pipeline {

    agent {

        docker {

            image 'maven:3.9-eclipse-temurin-17'

        }

    }

 

    stages {

        stage('Test') {

            steps {

                sh 'mvn clean test'

            }

        }

    }

}

The exact container image and browser setup should match the project's Selenium requirements.


61. Jenkins Build Parameters and Maven

Jenkins parameters can be passed to Maven as system properties.

mvn clean test -Dbrowser=chrome -Denvironment=qa

The Selenium framework can then read these values from Java system properties.

String browser = System.getProperty("browser");

String environment = System.getProperty("environment");

 

System.out.println(browser);

System.out.println(environment);


62. Jenkins and TestNG XML

If a Selenium framework uses a TestNG XML suite file, Maven or the test framework configuration can execute that suite through the Jenkins pipeline.

mvn test

Example conceptual flow:

Jenkins

   |

   v

Maven

   |

   v

testng.xml

   |

   v

TestNG

   |

   v

Selenium Tests


63. Jenkins and Regression Testing

Jenkins is particularly useful for regression testing because large Selenium test suites can be executed repeatedly without manually starting each test.

Code Change

    |

    v

Jenkins

    |

    v

Regression Suite

    |

    +-- Login

    +-- Search

    +-- Cart

    +-- Checkout

    +-- Profile

    |

    v

Reports


64. Jenkins Smoke Testing

A Jenkins pipeline can execute a smaller smoke-test suite after a deployment or build.

Build

  |

  v

Deploy to QA

  |

  v

Smoke Tests

  |

  +-- Login

  +-- Home Page

  +-- Search

  +-- Logout

  |

  v

Result


65. Jenkins Scheduled Regression Architecture

Nightly Trigger

      |

      v

Jenkins

      |

      v

Checkout Code

      |

      v

Build

      |

      v

Regression Suite

      |

      v

Selenium

      |

      v

Reports

      |

      v

Notifications


66. Jenkins Build Failure Reasons

A Selenium Jenkins build may fail for many different reasons.

  • Compilation errors.
  • Maven dependency problems.
  • Incorrect Java version.
  • Browser installation problems.
  • Driver or browser startup failures.
  • Application unavailable.
  • Incorrect environment URL.
  • Test failures.
  • Element-not-found errors.
  • Timeout exceptions.
  • Network problems.
  • Insufficient agent resources.
  • Incorrect Jenkins configuration.
  • Missing credentials or permissions.


67. Troubleshooting Jenkins Selenium Failures

ProblemPossible Investigation
Browser does not startCheck browser, driver/browser-management setup, permissions, and agent environment
Maven command failsCheck Maven installation, Java version, dependencies, and console output
Tests cannot access applicationCheck URL, network connectivity, environment availability, and firewall rules
Reports missingCheck report generation path and Jenkins publishing configuration
Tests fail only in JenkinsCompare local and CI environment configuration
Permission errorCheck Jenkins user, agent permissions, credentials, and workspace access
Parallel tests interfereCheck WebDriver isolation and shared test resources


68. Local Execution vs Jenkins Execution

Local ExecutionJenkins Execution
Usually started manuallyCan be automatically triggered
Runs on developer/tester machineRuns on configured controller/agent environment
Limited automation orchestrationPipeline orchestration available
Reports may remain localResults can be published centrally
Environment may vary between usersCan use standardized agents
Manual repetitionAutomated repetition


69. Jenkins vs Manual Selenium Execution

Manual ExecutionJenkins Automation
Tester starts tests manuallyPipeline can start tests automatically
Execution depends on user availabilityCan run on schedules or triggers
Limited centralized historyBuild history is maintained
Manual report collectionReports can be published automatically
Harder to scale repeated executionCan use agents and parallel workflows


70. Jenkins Security Best Practices

  • Do not store passwords directly in Jenkinsfiles.
  • Use Jenkins credentials management for secrets.
  • Restrict administrative permissions.
  • Keep Jenkins and plugins maintained according to organizational policy.
  • Use secure communication for Jenkins access.
  • Limit access to sensitive build information.
  • Avoid printing secrets in console output.
  • Use separate credentials for different environments when appropriate.
  • Review permissions assigned to users and agents.
  • Protect source-control and deployment credentials.


71. Jenkins Best Practices for Selenium

  • Keep Selenium tests independent where possible.
  • Use Page Object Model to separate page interaction logic.
  • Use Maven for dependency and build management.
  • Store Jenkinsfile in source control.
  • Keep environment-specific configuration separate from test logic.
  • Use headless execution where appropriate for CI agents.
  • Capture screenshots for important failures.
  • Publish machine-readable test results.
  • Archive useful reports and evidence.
  • Use isolated WebDriver instances for parallel tests.
  • Keep CI execution reproducible.
  • Use meaningful stage names.
  • Keep pipelines small and maintainable.
  • Clean temporary files when appropriate.
  • Never expose sensitive credentials in logs.


72. Common Jenkins Mistakes in Selenium Projects

  • Hard-coding local file paths.
  • Assuming the Jenkins agent has the same environment as the developer machine.
  • Using a GUI browser without configuring the CI environment correctly.
  • Ignoring console output when troubleshooting failures.
  • Not publishing test results.
  • Not archiving screenshots or reports.
  • Sharing WebDriver instances between parallel tests.
  • Hard-coding passwords in the repository.
  • Using environment URLs directly inside many test classes.
  • Creating a very large monolithic Jenkinsfile.
  • Not testing the Jenkins pipeline after configuration changes.


73. Practical Selenium Jenkins Project Structure

selenium-automation/

|

|-- pom.xml

|-- Jenkinsfile

|-- testng.xml

|

|-- src/

|   |-- main/

|   |   |-- java/

|   |       |-- pages/

|   |       |-- utilities/

|   |       |-- factory/

|   |

|   |-- test/

|       |-- java/

|           |-- tests/

|           |-- data/

|

|-- reports/

|-- screenshots/

|-- README.md


74. Complete Selenium Jenkins Pipeline Example

pipeline {

    agent any

 

    parameters {

        choice(

            name: 'BROWSER',

            choices: ['chrome', 'firefox'],

            description: 'Select browser'

        )

 

        choice(

            name: 'ENVIRONMENT',

            choices: ['qa', 'staging'],

            description: 'Select environment'

        )

    }

 

    stages {

        stage('Checkout') {

            steps {

                checkout scm

            }

        }

 

        stage('Build') {

            steps {

                sh 'mvn clean compile'

            }

        }

 

        stage('Run Selenium Tests') {

            steps {

                sh "mvn clean test -Dbrowser=${params.BROWSER} -Denvironment=${params.ENVIRONMENT}"

            }

        }

 

        stage('Archive Reports') {

            steps {

                archiveArtifacts artifacts: '**/reports/**',

                    allowEmptyArchive: true

            }

        }

    }

 

    post {

        always {

            echo 'Pipeline execution completed'

        }

 

        success {

            echo 'Selenium execution completed successfully'

        }

 

        failure {

            echo 'Selenium execution failed'

        }

    }

}


75. Real-World Selenium CI/CD Architecture

                 Developer

                     |

                     v

                Git Repository

                     |

                     v

                  Jenkins

                     |

          +----------+----------+

          |                     |

          v                     v

       Build                Configuration

          |                     |

          +----------+----------+

                     |

                     v

                Test Execution

                     |

             +-------+-------+

             |       |       |

             v       v       v

          Chrome  Firefox   Edge

             |       |       |

             +-------+-------+

                     |

                     v

                Test Results

                     |

          +----------+----------+

          |                     |

          v                     v

       Reports              Screenshots

          |                     |

          +----------+----------+

                     |

                     v

                Notification


76. Jenkins with Test Reports and Artifacts

A mature Selenium automation pipeline should preserve enough execution evidence to make failures understandable.

Test Execution

      |

      +-- Console Logs

      |

      +-- TestNG Results

      |

      +-- HTML Report

      |

      +-- Screenshots

      |

      +-- Browser Logs

      |

      v

Jenkins Build Artifacts


77. Jenkins Pipeline Failure and Recovery

A pipeline should clearly identify the stage where execution failed.

Checkout

   |

   v

Build

   |

   v

Test

   |

   X---- Failure

   |

   v

Post Actions

   |

   +-- Capture Reports

   +-- Capture Screenshots

   +-- Notify

   |

   v

Build Result


78. Jenkins for Smoke, Sanity, and Regression Suites

SuiteTypical Jenkins Usage
Smoke TestingRun after a build or deployment to check critical functionality
Sanity TestingRun focused validation of changed functionality
Regression TestingRun larger automated suites on scheduled or triggered builds
Cross-Browser TestingRun browser-specific jobs or parallel branches


79. Jenkins Pipeline with Multiple Test Suites

pipeline {

    agent any

 

    stages {

        stage('Smoke Tests') {

            steps {

                sh 'mvn test -Dgroups=smoke'

            }

        }

 

        stage('Regression Tests') {

            steps {

                sh 'mvn test -Dgroups=regression'

            }

        }

 

        stage('Reports') {

            steps {

                echo 'Collecting reports'

            }

        }

    }

}


80. Jenkins Interview Questions

1. What is Jenkins?

Jenkins is an automation server used to automate software development workflows such as building, testing, and delivery.

2. Why is Jenkins used in Selenium?

Jenkins is used to automatically execute Selenium test suites as part of CI/CD workflows.

3. What is a Jenkins Pipeline?

A Pipeline is a sequence of automated steps that defines a software delivery or testing workflow.

4. What is a Jenkinsfile?

A Jenkinsfile is a file containing the definition of a Jenkins Pipeline.

5. Where should a Jenkinsfile generally be stored?

It is commonly stored in source control along with the project code.

6. What is a Jenkins agent?

A Jenkins agent is an execution environment where Jenkins can run build or test workloads.

7. What is the difference between controller and agent?

The controller coordinates Jenkins activities while agents perform assigned workloads.

8. Can Jenkins run Maven tests?

Yes. Jenkins can execute Maven commands such as mvn clean test.

9. Can Jenkins execute TestNG tests?

Yes. Jenkins can execute TestNG-based Java tests through the project's configured build process.

10. Can Jenkins run Selenium tests?

Yes. Jenkins can execute Selenium tests when the agent environment has the required project dependencies and browser execution setup.

11. What is CI?

Continuous Integration is a practice of frequently integrating code changes and automatically validating them through builds and tests.

12. What is CD?

CD can refer to Continuous Delivery or Continuous Deployment depending on the workflow being implemented.

13. What is a Jenkins job?

A Jenkins job is a configured unit of work that Jenkins can execute.

14. What is a Jenkins workspace?

The workspace is the working directory where a Jenkins job checks out code and performs its operations.

15. Can Jenkins run tests on a schedule?

Yes. Jenkins supports scheduled job execution.

16. Can Jenkins run tests after Git changes?

Yes. Jenkins can be integrated with source-control events and triggers.

17. What is Pipeline as Code?

Pipeline as Code means defining the Jenkins automation workflow in code, commonly through a Jenkinsfile stored in source control.

18. What is Declarative Pipeline?

Declarative Pipeline is a structured syntax for defining Jenkins Pipeline workflows.

19. What is Scripted Pipeline?

Scripted Pipeline uses a Groovy-based scripting approach to define Jenkins automation.

20. What is an artifact in Jenkins?

An artifact is a file generated during a build that is retained for later use or inspection.

21. How can Selenium screenshots be stored in Jenkins?

Selenium can save screenshots into the workspace, after which Jenkins can archive the files as build artifacts.

22. How can Selenium reports be published in Jenkins?

Appropriate Jenkins plugins or Pipeline-compatible reporting steps can be used to publish test results and reports.

23. How can Jenkins execute cross-browser tests?

Cross-browser tests can be executed using separate agents, parallel pipeline branches, Selenium Grid, or other suitable browser-execution infrastructure.

24. Why should WebDriver not be shared between parallel tests?

Sharing one WebDriver instance across concurrent tests can cause browser-session interference and race conditions.

25. How do you troubleshoot a Selenium test that passes locally but fails in Jenkins?

Compare Java, browser, environment variables, application URL, permissions, network access, browser mode, dependencies, workspace paths, and Jenkins console output.


81. Quick Reference Table

ConceptDescription
JenkinsAutomation server
CIContinuous Integration
CDContinuous Delivery or Continuous Deployment
PipelineAutomated workflow
JenkinsfilePipeline definition stored as code
ControllerCoordinates Jenkins activities
AgentExecutes build and test workloads
WorkspaceDirectory used for project execution
ArtifactFile retained from a build
Console OutputBuild execution log
MavenBuild and dependency management tool
TestNGJava testing framework
SeleniumBrowser automation framework
GitSource-control system


82. Learning Roadmap for Jenkins with Selenium

  1. Understand CI/CD concepts.
  2. Learn Jenkins architecture.
  3. Install and configure Jenkins.
  4. Understand Jenkins Dashboard.
  5. Create a Freestyle project.
  6. Create a Pipeline project.
  7. Learn Jenkinsfile syntax.
  8. Understand Declarative Pipeline.
  9. Understand Scripted Pipeline.
  10. Integrate Jenkins with Git.
  11. Integrate Jenkins with Maven.
  12. Run TestNG tests from Jenkins.
  13. Execute Selenium tests in Jenkins.
  14. Configure headless browser execution.
  15. Publish test reports.
  16. Archive screenshots and artifacts.
  17. Use Jenkins parameters.
  18. Use Jenkins credentials securely.
  19. Configure scheduled execution.
  20. Configure source-control triggers.
  21. Learn parallel execution.
  22. Use Jenkins agents.
  23. Learn Selenium Grid integration.
  24. Build a complete Selenium CI/CD pipeline.


83. Practical Exercises

  1. Install Jenkins and create your first job.
  2. Create a Freestyle project for a Java Maven project.
  3. Connect Jenkins to a Git repository.
  4. Execute mvn clean test through Jenkins.
  5. Create a Jenkinsfile for a Selenium project.
  6. Create separate Build and Test stages.
  7. Run TestNG Selenium tests from Jenkins.
  8. Configure Chrome headless execution.
  9. Publish TestNG or JUnit-compatible results.
  10. Archive Selenium screenshots.
  11. Create browser parameters for Chrome and Firefox.
  12. Create QA and staging environment parameters.
  13. Schedule a nightly Selenium regression suite.
  14. Create parallel browser execution stages.
  15. Configure a Jenkins agent for Selenium testing.
  16. Build a complete Selenium CI/CD pipeline.


84. Real-World Selenium Jenkins Project

Consider an e-commerce application where developers continuously push changes to a Git repository. Jenkins can automatically retrieve the latest code, build the automation project, execute Selenium tests, generate reports, archive screenshots, and provide the build result.

Developer

    |

    v

Git Push

    |

    v

Jenkins Trigger

    |

    v

Checkout

    |

    v

Maven Build

    |

    v

TestNG

    |

    v

Selenium WebDriver

    |

    +-- Login

    +-- Search

    +-- Product

    +-- Cart

    +-- Checkout

    |

    v

Assertions

    |

    v

Reports + Screenshots

    |

    v

Jenkins Build Result


85. Complete Practical Jenkinsfile

pipeline {

    agent any

 

    parameters {

        choice(

            name: 'BROWSER',

            choices: ['chrome', 'firefox'],

            description: 'Browser for Selenium execution'

        )

 

        choice(

            name: 'SUITE',

            choices: ['smoke', 'regression'],

            description: 'Test suite'

        )

    }

 

    stages {

        stage('Checkout') {

            steps {

                checkout scm

            }

        }

 

        stage('Build') {

            steps {

                sh 'mvn clean compile'

            }

        }

 

        stage('Execute Tests') {

            steps {

                sh "mvn test -Dbrowser=${params.BROWSER} -Dsuite=${params.SUITE}"

            }

        }

 

        stage('Archive Evidence') {

            steps {

                archiveArtifacts artifacts: '**/screenshots/**,**/reports/**',

                    allowEmptyArchive: true

            }

        }

    }

 

    post {

        always {

            echo 'Automation execution completed'

        }

 

        success {

            echo 'Selenium automation passed'

        }

 

        failure {

            echo 'Selenium automation failed'

        }

    }

}


86. Jenkins Best-Practice Architecture

                 Source Control

                      |

                      v

                  Jenkins

                      |

              +-------+-------+

              |               |

              v               v

          Parameters       Credentials

              |               |

              +-------+-------+

                      |

                      v

                   Pipeline

                      |

          +-----------+-----------+

          |           |           |

          v           v           v

       Build        Test        Report

                      |

                      v

                  Selenium

                      |

             +--------+--------+

             |        |        |

             v        v        v

          Chrome   Firefox    Edge

             |        |        |

             +--------+--------+

                      |

                      v

                Test Results

                      |

             +--------+--------+

             |                 |

             v                 v

          Reports          Screenshots

             |

             v

         Notification


87. Summary

Jenkins is an important tool for implementing automated CI/CD workflows around Selenium testing. It allows teams to execute Selenium and TestNG suites automatically instead of relying only on manual execution.

A typical Selenium Jenkins pipeline connects source control, Maven, TestNG, Selenium WebDriver, browsers, test reports, screenshots, artifacts, and notifications.

For scalable automation projects, Jenkins can be combined with Page Object Model, Data Providers, Selenium Grid, parallel execution, environment parameterization, external test data, and secure credentials.

The Jenkinsfile provides a way to define the pipeline as code, while Jenkins agents provide execution environments for build and test workloads. Jenkins documentation describes Pipeline as a suite of plugins for implementing and integrating continuous-delivery workflows and supports both Declarative and Scripted Pipeline styles. :contentReference[oaicite:11]{index=11}


88. Course Resources

Learn more about Selenium automation and professional testing concepts:

Final Takeaway: Jenkins automates the execution and orchestration of Selenium testing workflows. When combined with Git, Maven, TestNG, Selenium WebDriver, reporting, and CI/CD practices, it provides a repeatable way to build, test, report, and continuously validate web applications.

whatsapp