Advanced Chapter 19 · 11 min read

CI/CD Integration

Run Cucumber tests in GitHub Actions and Jenkins pipelines. Publish reports, handle headless browsers, and set up automated BDD execution.

CI/CD Integration for BDD

BDD tests should run automatically on every commit. CI/CD pipelines execute your Cucumber suite in headless mode, publish reports, and block merges when scenarios fail.

.github/workflows/bdd-tests.yml
name: BDD Tests (Cucumber-JVM)

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  bdd-tests:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Install Chrome
        uses: browser-actions/setup-chrome@v1

      - name: Run Cucumber Tests
        run: mvn clean test -Dheadless=true -Dcucumber.filter.tags="not @wip"

      - name: Generate Allure Report
        if: always()
        run: mvn allure:report

      - name: Upload Cucumber Report
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: cucumber-report
          path: |
            target/cucumber-reports.html
            target/site/allure-maven-plugin/

      - name: Publish Test Results
        uses: dorny/test-reporter@v1
        if: always()
        with:
          name: Cucumber Results
          path: target/cucumber-junit.xml
          reporter: java-junit
.github/workflows/bdd-tests.yml
name: BDD Tests (Behave)

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  bdd-tests:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Install Chrome
        uses: browser-actions/setup-chrome@v1

      - name: Install dependencies
        run: pip install -r requirements.txt

      - name: Run BDD Tests
        run: |
          behave \
            --tags="not @wip" \
            --junit --junit-directory=reports/junit \
            -f allure_behave.formatter:AllureFormatter \
            -o reports/allure \
            --no-capture
        env:
          HEADLESS: "true"

      - name: Upload Reports
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: behave-reports
          path: reports/

      - name: Publish Test Results
        uses: dorny/test-reporter@v1
        if: always()
        with:
          name: BDD Results
          path: reports/junit/*.xml
          reporter: java-junit

Cucumber BDD Advanced CI/CD Integration

Written by PV

© 2026 All Rights Reserved