Skip to main content
Back to Blog

CI/CD for QA Engineers: What You Need to Know in 2026

By Aston Cook7 min read
ci cd for qacicd for testerscontinuous integration testingqa engineer ci cdgithub actions testingqa pipelineci cd interview questions qa

CI/CD is not just a DevOps topic. If you write tests, your work lives inside a CI/CD pipeline. Understanding how pipelines work, where tests run, and how to diagnose failures is a core QA skill in 2026 — not a nice-to-have.

In the 2024 State of DevOps Report, teams with mature CI/CD practices deploy 208 times more frequently than low performers, with 7x lower change failure rates. Automated testing at every pipeline stage is the single biggest differentiator.

This guide covers what QA engineers need to know about CI/CD — no more, no less. You do not need to become a DevOps engineer. You need to understand the system your tests run in.

What CI/CD Actually Means

Continuous Integration (CI) means developers merge code into a shared branch frequently (daily or multiple times a day), and every merge triggers an automated build and test run. The goal is to catch integration problems early, before they compound.

Continuous Delivery (CD) means the codebase is always in a deployable state. After CI passes, the code can be deployed to production with a manual approval step.

Continuous Deployment goes one step further — every change that passes CI is automatically deployed to production without manual intervention.

For QA engineers, the important part is CI. That is where your tests run and where they create the most value.

Anatomy of a CI Pipeline

A typical pipeline runs in stages, each building on the previous:

Code Push → Build → Unit Tests → Integration Tests → E2E Tests → Deploy

Stage 1: Build

The application is compiled and dependencies are installed. If the build fails, nothing else runs. This catches syntax errors, missing dependencies, and compilation issues.

Stage 2: Unit Tests

Fast, isolated tests that run in milliseconds. These are typically written by developers and test individual functions or classes. As a QA engineer, you may not write unit tests, but you should understand what they cover (and what they do not).

Stage 3: Integration Tests

Tests that verify how components work together. This includes API tests, database integration tests, and service-to-service communication tests. This is where QA engineers contribute heavily.

Stage 4: End-to-End Tests

Browser-based tests that simulate real user flows. These are the slowest and most resource-intensive tests, so they typically run last. Frameworks like Playwright and Selenium drive these tests.

Stage 5: Deploy

If all tests pass, the code is deployed — either to a staging environment for manual verification or directly to production. Deployment strategies like blue-green deployment and canary releases minimize risk.

Where QA Tests Fit in the Pipeline

The test pyramid guides how you distribute tests across the pipeline:

  • Many unit tests at the base (fast, run first)
  • Fewer integration/API tests in the middle (medium speed)
  • Fewest E2E/browser tests at the top (slowest, most expensive)

As a QA engineer, you own the middle and top layers. Your goal is to maximize coverage while keeping pipeline times reasonable. A pipeline that takes 45 minutes to run discourages frequent merges and slows the entire team.

Practical guidelines

  • API tests should run in the integration stage. They are fast enough to run on every push.
  • E2E tests can run on every push for small suites (under 5 minutes), but larger suites should run on pull request merges or on a schedule.
  • Smoke tests — a small subset of critical E2E tests — should run on every deployment to production. See smoke testing for what to include.
  • Performance tests should run on a schedule (nightly or weekly), not on every push.

GitHub Actions: A Practical Example

GitHub Actions is the most common CI tool for modern teams. Here is a real workflow that runs Playwright tests:

name: QA Tests
on:
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npx playwright install --with-deps chromium
      - run: npx playwright test
      - uses: actions/upload-artifact@v4
        if: failure()
        with:
          name: test-results
          path: test-results/

This workflow:

  1. Triggers on pull requests to main
  2. Sets up a clean Ubuntu environment
  3. Installs dependencies
  4. Installs Playwright's browser
  5. Runs all tests
  6. Uploads test artifacts (traces, screenshots) on failure for debugging

Running tests in parallel

For larger suites, split tests across multiple machines to cut pipeline time:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        shard: [1/4, 2/4, 3/4, 4/4]
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npx playwright install --with-deps chromium
      - run: npx playwright test --shard=${{ matrix.shard }}

This splits your test suite across 4 parallel machines. A 20-minute suite becomes 5 minutes.

Diagnosing Pipeline Failures

When tests fail in CI but pass locally, here is your debugging checklist:

Environment differences. CI runs on a clean Linux machine. Your laptop has cached data, a logged-in session, environment variables, and a different OS. Check whether the test depends on any local state.

Timing issues. CI machines are shared and can be slower than your laptop. If your tests have tight timeouts, they may fail under load. Use Playwright's auto-waiting instead of fixed timeouts.

Missing dependencies. CI installs from scratch every time. If you forgot to commit a file or add a dependency to package.json, it will fail in CI even though it works locally.

Flaky tests. If the same test fails intermittently, it is likely flaky. Quarantine it, investigate the root cause, and fix it. Do not just re-run the pipeline and hope.

Test isolation. Tests that pass individually but fail when run together usually share state. Check for leftover data from other tests, shared variables, or dependency on test execution order.

Monitoring Test Health

A healthy test suite is one your team trusts. Track these metrics:

  • Pass rate. Should be above 98%. Below that, the team stops trusting failures.
  • Pipeline duration. If it takes more than 15 minutes, developers start avoiding it.
  • Flake rate. Track which tests fail intermittently and fix them aggressively.
  • Test coverage trend. Not just line coverage — are you covering the flows that matter?

CI/CD in QA Interviews

CI/CD questions appear in almost every SDET and senior QA engineer interview. Common questions:

  • Where in the pipeline do you run different types of tests and why?
  • How do you handle a flaky test that is blocking the CI pipeline?
  • What is the difference between continuous delivery and continuous deployment?
  • How do you keep end-to-end test suites fast as the application grows?
  • Describe how you would set up a testing pipeline from scratch.

Practice answering these with AssertHired's mock interviews — the CI/CD category asks exactly these kinds of questions.

Key Takeaways

  1. CI/CD is where your tests create value — tests that only run locally are just scripts
  2. Follow the test pyramid: many fast tests, fewer slow tests
  3. Keep pipeline times under 15 minutes by parallelizing and being selective
  4. Debug CI failures methodically — environment, timing, and isolation are the usual suspects
  5. Track test health metrics so your team trusts the suite

If you are building automation skills and want to understand the full picture, explore the resources for SDET candidates in the AssertHired store.

Related Interview Prep