CI/CD

The qa-automation repository uses GitHub Actions to automate testing, linting, and infrastructure deployment. All workflows are defined in .github/workflows/ and can be triggered automatically or manually.

Workflows

Workflow Trigger Purpose

cucumber.yaml

Called by other workflows (reusable workflow)

Imports .feature files from Jira/Xray, runs tests via Docker, and exports results back to Xray

on_schedule.yaml

Daily at 12:00 UTC (cron: 0 12 * * *)

Runs the full test suite sequentially, executing one test set per matrix key. Runs 6 separate test suites (keys: ENG-8820, ENG-9250, ENG-11544, ENG-11943, ENG-12341) with max-parallel: 1 to avoid overwhelming external services

on_dispatch.yaml

Manual workflow dispatch via GitHub UI or Jira automation

Runs specific test set(s) on-demand. Accepts keys input (comma-separated Jira issue keys) to select which test suites to execute

on_pr.yaml

Pull request to main

Lints code (make lint) and runs Terraform plan (no infrastructure changes)

on_main.yaml

Push to main

Builds code and applies Terraform changes to the test environment only

Test Execution Pipeline

The cucumber.yaml reusable workflow implements the complete test execution flow:

  1. Checkout code — Clone the repository at the trigger commit

  2. Setup environment — Write AWS credentials to cucumber/.env, set XRAY_TOKEN and XRAY_CLIENT_ID environment variables

  3. Import features — Call cucumber/import_features.sh --keys <keys> to download the latest .feature files from Jira/Xray API

  4. GitHub Container Registry login — Authenticate to pull the devkit Docker image used for test execution

  5. Run tests — Execute make cucumber which launches tests inside a Docker container via yarn test

  6. Export results — Call cucumber/export_results.sh --keys <keys> to upload test results JSON back to Jira/Xray API

Jira/Xray Integration

Two shell scripts handle synchronization with Jira/Xray:

Import (cucumber/import_features.sh)

Fetches .feature files from the Xray API and writes them to the local cucumber/features/ directory. Accepts --keys flag with comma-separated Jira issue keys.

Export (cucumber/export_results.sh)

Reads test results from the latest run and uploads them to Xray API. Accepts --keys flag to associate results with specific Jira issues.

Both scripts require: * XRAY_TOKEN — API token for Xray authentication * XRAY_CLIENT_ID — Client ID for Xray authentication

These are stored as GitHub Action secrets and injected during workflow execution.

Manual Dispatch

To manually trigger a test run:

  1. Navigate to the Actions tab in the GitHub repository

  2. Select the On Dispatch workflow

  3. Click Run workflow button

  4. Enter the keys parameter as a comma-separated list of Jira issue keys (e.g., ENG-8820,ENG-9250)

  5. Click Run workflow

Tests will execute immediately and results will be exported to Xray.

Alternatively, Jira automation can trigger the dispatch workflow via the Xray "Execute Test" button if the webhook is configured.