Topic 7
41 items

CI/CD

Depth ceilingOwn the TEST STAGE — 'I consume the platform, I own the test stage.' Jenkins slightly outranks GH Actions in our pool. STOP before Jenkins admin, K8s ops, Terraform, deployment mechanics.

14 MUST · 15 SHOULD · 9 STRETCH · 3 SKIP

not started · 0 written · 41 not started

Foundations
not started0/2
  1. MUSTExplain
    What CI/CD is & why tests belong in it

    CI/CD runs the test suite automatically on a shared server on every code change and uses the result to gate merges/releases.

    Asked 'How do you integrate your automated tests into a CI/CD pipeline?' / 'Walk me through the stages of your test pipeline.'

    named in the job descriptions

  2. MUSTExplain
    The gate chain: exit code -> job status -> required check -> merge blocked

    A failing test exits non-zero, the job fails, the PR check goes red, and branch-protection required-checks physically block the merge.

    Asked 'What actually stops broken code from reaching main?' / 'What's a quality gate?'

    named in the job descriptions

GitHub Actions
not started0/4
  1. MUSTExplain
    Branch protection -> required status checks (the real merge gate)

    Repo setting that requires named checks to pass before merge is allowed; this is what converts a red build into a blocked merge.

    Asked 'How is the gate actually enforced in GitHub?'

    named in the job descriptions

  2. MUSTApply
    Triggers: push / pull_request / schedule(cron) / workflow_dispatch

    Control when a workflow runs and the difference between running on PR vs on merge to main.

    Asked 'When does your pipeline run?' / 'PR builds vs nightly builds?'

    named in the job descriptions

  3. MUSTApply
    Marketplace vs shell: uses vs run; core actions (checkout, setup-python, cache, upload-artifact)

    Know when a step calls a reusable action (uses:) vs runs a shell command (run:) and the four workhorse actions.

    Asked Follow-ups while whiteboarding the workflow.

    asked in interviews, not named in any job description

  4. MUSTBuild
    Author a GHA workflow from scratch (checkout/setup-python/install/pytest/artifact)

    Write a working .github/workflows/*.yml that checks out code, sets up Python, installs deps + browsers, runs pytest, and uploads the report.

    Asked 'Write a GitHub Actions workflow that runs Playwright tests on every PR.'

    named in the job descriptions

Jenkins
not started0/2
  1. MUSTExplain
    Jenkinsfile literacy: declarative pipeline stages/steps, read + add a Test stage

    Understand a declarative Jenkinsfile (pipeline { agent / stages / stage('Test') { steps {...} } }) well enough to read one and add a test stage.

    Asked 'Add a stage to this Jenkinsfile that runs the regression suite and publishes the report.'

    named in the job descriptions

  2. SHOULDExplain
    Jenkins reporting + credentials: post{always{}}, junit/publishHTML, withCredentials

    The Jenkins equivalents of GHA artifacts/secrets: post{always{}} block, junit/publishHTML for reports, withCredentials/credentials() for secrets.

    Asked 'How do reports and credentials work in Jenkins vs GitHub Actions?'

    named in the job descriptions

Platforms
not started0/4
  1. MUSTExplain
    Jenkins vs GitHub Actions trade-off

    When to pick which: Jenkins = self-hosted, customizable, plugin-rich, you maintain it; GHA = GitHub-native, serverless, YAML, zero-maintenance.

    Asked 'Jenkins vs GitHub Actions - when would you pick which?'

    named in the job descriptions

  2. SHOULDRecognize
    Azure DevOps Pipelines - name-level awareness (YAML pipelines)

    Azure Pipelines YAML is another CI platform; same trigger/stage/step concepts.

    Asked 'Any Azure DevOps exposure?' (screening).

    named in the job descriptions

  3. SHOULDExplain
    GitLab CI - name + concepts (parallel keyword, native Docker, MR integration)

    .gitlab-ci.yml with stages/jobs; the 'parallel' keyword makes sharding trivial; native Docker + merge-request integration.

    Asked 'Have you used GitLab CI?' / 'How would you shard in GitLab?'

    named in the job descriptions

  4. STRETCHRecognize
    CircleCI / Harness / Drone - recognize as CI platforms

    Other hosted CI platforms that appear in some JDs; same pipeline concepts.

    Asked Screening keyword match only.

    named in the job descriptions

Quality gates
not started0/2
  1. MUSTOwn
    Define quality gates + give concrete examples

    A gate is an automated pass/fail rule that must be green to merge/release (all required suites pass, min coverage, no critical vulns, required reviewer).

    Asked 'What's a quality gate? Give examples.' / 'Own CI/CD quality gates - decide what blocks a merge.'

    named in the job descriptions

  2. SHOULDApply
    Coverage gate (--cov-fail-under) as one gate, not the gate

    Fail the build when coverage drops below a threshold via pytest --cov --cov-fail-under=N.

    Asked 'How do you enforce coverage in CI?'

    named in the job descriptions

Reporting & Artifacts
not started0/3
  1. MUSTApply
    Artifacts on failure (if: always() / if: !cancelled())

    Upload HTML report + traces + JUnit XML even when tests fail, using if: always()/!cancelled().

    Asked 'Where do artifacts go and how do you get them on failure?'

    named in the job descriptions

  2. MUSTApply
    Report formats: Playwright HTML, traces (retain-on-failure), JUnit XML

    Know the three artifact types and that JUnit XML is what CI natively parses for pass/fail and test-result UIs.

    Asked 'What reports does your pipeline produce and how do you triage a failure?'

    named in the job descriptions

  3. STRETCHRecognize
    Centralized dashboards: Allure / ReportPortal

    Aggregated historical test-result dashboards across runs (trends, flaky history, categorization).

    Asked 'How do you visualize test results over time?'

    named in the job descriptions

Parallelization & Speed
not started0/5
  1. SHOULDApply
    Sharding vs workers (across machines vs across cores)

    workers/pytest-xdist parallelize across CPU cores on one machine; sharding splits the suite across multiple CI machines via a job matrix.

    Asked 'How would you cut a 40-minute suite to under 10?' / 'How do you run tests in parallel in CI?'

    named in the job descriptions

  2. SHOULDApply
    Matrix strategy (browsers / Python versions / shards)

    strategy: matrix fans one job into N parallel jobs across browsers, versions, or shard indices.

    Asked 'How do you run across browsers/versions in CI?'

    asked in interviews, not named in any job description

  3. SHOULDApply
    Caching (pip deps / browser binaries)

    Cache dependencies and browser binaries to cut minutes off every run.

    Asked 'How do you speed up CI runs?' (paired with sharding answer).

    asked in interviews, not named in any job description

  4. SHOULDApply
    Merging sharded results into one report

    Fan-out/fan-in: each shard emits partial results, a final needs:-dependent job merges them into one report.

    Asked 'You sharded the suite - how do you get one combined report?'

    asked in interviews, not named in any job description

  5. SHOULDBuild
    Sharding a PYTEST suite (pytest-shard / pytest-split) - NOT native --shard

    For his Python/pytest stack sharding needs a plugin: pytest-shard (--shard-id/--num-shards, hash-based) or pytest-split (--splits/--group, duration-based).

    Asked 'How do you shard a pytest suite across CI machines?' (deep follow-up exposes the runner nuance).

    asked in interviews, not named in any job description

Docker & Containers
not started0/2
  1. SHOULDApply
    Run tests in the pinned Playwright container (determinism)

    Run tests inside mcr.microsoft.com/playwright/python:<ver>-noble so browsers + system libs are baked in and CI matches local.

    Asked 'How do you make CI reproducible?' / 'Why run tests in Docker?'

    named in the job descriptions

  2. STRETCHRecognize
    Kubernetes awareness (tests run in pods) - not operating it

    Tests can execute inside K8s pods; knowing that is enough for an SDET.

    Asked 'Any Kubernetes exposure?' (screening).

    named in the job descriptions

Flaky tests
not started0/3
  1. MUSTApply
    Debug 'passes locally, fails in CI'

    Systematic diagnosis of environment-specific failures.

    Asked 'A test passes locally but fails in CI - how do you debug?'

    named in the job descriptions

  2. MUSTOwn
    Handle flaky tests in CI (retry-without-masking, quarantine)

    Identify flaky tests, retry in CI (retries: 2 max) without masking, quarantine so they don't block the gate, track, root-cause, re-enable.

    Asked 'How do you handle flaky tests in CI?' (asked almost universally).

    named in the job descriptions

  3. SHOULDExplain
    Flaky rate as a tracked metric

    Measure flaky rate as a number; treat >2% as a reliability incident, not noise.

    Asked 'How do you know your CI is trustworthy?'

    named in the job descriptions

Secrets & Config
not started0/1
  1. MUSTApply
    Secrets handling + masking (never hardcode)

    Inject secrets via GHA encrypted secrets (${{ secrets.X }}) or Jenkins credentials; they are masked in logs and passed as env vars.

    Asked 'How do you handle secrets/credentials in the pipeline?'

    asked in interviews, not named in any job description

Triggers & Scheduling
not started0/1
  1. SHOULDApply
    Scheduled / nightly runs (cron) + PR-vs-nightly strategy

    Run a fast subset on PRs and the full cross-browser suite nightly via cron.

    Asked 'Do you run everything on every PR? How do you balance speed and coverage?'

    named in the job descriptions

Notifications
not started0/1
  1. SHOULDApply
    Failure notifications (Slack/Teams webhook, PR comment)

    Post pass/fail to Slack/Teams via webhook on failure and/or comment the report link on the PR.

    Asked 'How does the team find out a build failed?'

    named in the job descriptions

Test data & Environments
not started0/1
  1. SHOULDApply
    Test data / environment provisioning + cleanup in CI

    Provision the app + data CI needs per run: DB seeding, test-data factories, sidecar services (GHA services:/docker-compose), cleanup.

    Asked 'How do you manage test data in CI when tests run on every PR?'

    named in the job descriptions

Advanced / Stretch
not started0/5
  1. STRETCHRecognize
    Reusable workflows / composite actions (GHA) & shared libraries (Jenkins)

    DRY pipeline logic reused across repos.

    Asked 'How do you avoid duplicating pipeline config across services?'

    asked in interviews, not named in any job description

  2. STRETCHExplain
    Ephemeral / preview environments per PR

    Spin a fresh app instance per PR, run E2E against it, tear it down; usually DevOps-built.

    Asked 'How would you test against isolated per-PR environments?'

    named in the job descriptions

  3. STRETCHExplain
    Selective / impacted-test execution

    Run only tests affected by the diff on PRs, full suite nightly.

    Asked 'How do you keep PR feedback fast as the suite grows?'

    asked in interviews, not named in any job description

  4. STRETCHExplain
    Dynamic sharding (compute shard count from test volume)

    Derive shard count from actual test volume instead of hardcoding, eliminating maintenance.

    Asked Design-question follow-up on scaling the pipeline.

    asked in interviews, not named in any job description

  5. STRETCHOwn
    CI/CD design question fluency

    Architect a pipeline end-to-end under interview pressure.

    Asked 'Architect a CI/CD pipeline for 500 daily test runs.'

    named in the job descriptions

AI/LLM edge
not started0/1
  1. STRETCHOwn
    Gating non-deterministic LLM-eval suites in CI

    LLM outputs are non-deterministic, so CI gates them with threshold/score bands (pass-rate, score windows), not exact-match asserts.

    Asked 'How would you put an AI/LLM feature under a CI quality gate?'

    asked in interviews, not named in any job description

Role boundary
not started0/1
  1. SHOULDOwn
    SDET-owns vs DevOps-owns line

    SDET owns the test stage (steps that run the suite, gates, parallelization, flakiness, reports); DevOps/SRE owns the platform (runners, cluster, deploy mechanics, secret infra).

    Asked 'Where does your responsibility for the pipeline end?'

    named in the job descriptions

OVERKILL / SKIP
not started0/3
Write to me

If any of this is something you can help with, or you think I have got it wrong, write and tell me. I read them all myself.

Dhanunjaya M.Dhanunjaya M
tvsdhanan009@gmail.com →

One address, no form, no list to join. I am not asking for money, and there is nothing set up here that could take any.