// Interview Prep/Prep plans/14-Day Automation QA Prep Plan

๐Ÿ—“๏ธ 14-Day Automation QA Prep Plan

Mid-to-senior automation engineers preparing for a structured interview loop. Assumes you can already write basic code โ€” this plan sharpens your automation instincts, builds interview-ready artefacts, and targets the specific question banks interviewers use.

14 days~1โ€“2 hrs/dayยทautomation qa role page โ†’

// GOAL

Arrive at the Automation QA interview with a real test suite on GitHub, a working CI pipeline, and confident answers to questions on E2E automation, framework design, API testing, and CI/CD.

// THE PLAN

01Days 1โ€“2 โ€” Strategy foundations

Sharpen test design instincts before writing a line of automation

// STUDY

  • The automation pyramid: what lives at unit, integration, and UI layers โ€” and why misplacing tests costs you
  • What makes a good automation target: stable selectors, deterministic outcomes, high-value user journeys
  • Test isolation principles: independent tests, no shared mutable state, atomic setup
  • The Automation QA interview scope: rounds, question themes, and what interviewers actually grade

// PRACTISE

  • Read the role page and identify the 3 topic areas where your current knowledge is weakest
  • Write 5 test cases for a login form โ€” happy path, wrong password, empty fields, account locked, SQL injection attempt โ€” to warm up test-design thinking
  • List 3 features from any app you know that are NOT worth automating and write a one-sentence justification for each

Deliverable

A written decision for your chosen framework (Playwright or Cypress) and a shortlist of 3 app features you will automate across the rest of the plan.

02Days 3โ€“5 โ€” First stable spec

Write a passing, non-brittle E2E test in your chosen framework

// STUDY

  • Playwright: auto-waits, web-first locator API (getByRole, getByTestId, getByLabel), and expect assertions
  • Cypress: command queue mechanics, cy.intercept() for network stubs, and web-first assertions
  • Locator stability: ARIA roles and data-testid as first choice; why text and CSS class locators break
  • Running headless and reading the failure output: stack trace, screenshot, and trace context

// PRACTISE

  • Install your framework and scaffold a TypeScript project from scratch (no boilerplate generators)
  • Write a login test for a public demo app: assert on the success state, the URL, and one visible element post-login
  • Deliberately break your locator to produce a failure โ€” read the trace or screenshot and fix it

Deliverable

A passing test file committed to a public GitHub repository โ€” the foundation for every phase that follows.

03Days 6โ€“8 โ€” Framework patterns

Refactor into Page Object Model and add reusable infrastructure

// STUDY

  • Page Object Model: separating locators and actions from assertions and test flow
  • Fixture factories: creating typed test data builders to keep tests readable and decoupled
  • Shared fixtures: reusing authentication state so tests don't re-log-in on every run
  • Data-driven tests: parameterising the same spec over multiple input sets

// PRACTISE

  • Refactor your Days 3โ€“5 tests into at least 2 page objects with typed action methods
  • Add a shared authentication fixture so downstream tests start already logged in
  • Write one parameterised test covering 3 input variations using the framework's test.each or data table

Deliverable

A refactored suite with at least 2 page objects, 1 shared authentication fixture, and 1 data-driven test โ€” all passing.

04Days 9โ€“11 โ€” API testing and CI/CD

Add API tests and run the full suite in a GitHub Actions pipeline

// STUDY

  • REST API testing in your framework: sending requests, asserting status codes, validating JSON response bodies
  • Chaining requests: extracting a token or ID from one response and passing it into the next
  • GitHub Actions: trigger on push, install dependencies, run tests in parallel, upload the HTML report
  • Reading a failing pipeline: where to find the error, how to reproduce it locally

// PRACTISE

  • Write 3 API tests against a public REST API (e.g. reqres.in or jsonplaceholder.typicode.com): GET list, POST create, DELETE and assert 204
  • Set up a GitHub Actions workflow file that installs, runs your full suite on push, and uploads the Playwright/Cypress HTML report as an artifact
  • Trigger a deliberate CI failure and fix it from the GitHub Actions log alone โ€” practice diagnosing pipeline errors without a local environment

Deliverable

A green GitHub Actions pipeline with your full suite (UI + API tests) running on every push, with a downloadable HTML report artifact.

05Days 12โ€“13 โ€” Interview question banks

Work through the question banks systematically and identify gaps

// STUDY

  • Cypress and Playwright banks: focus on questions about auto-wait, network interception, parallel execution, and debugging flakes
  • Framework design bank: POM trade-offs, selector strategies, fixture patterns, test isolation
  • CI/CD bank: pipeline triggers, parallel sharding, artifact management, failure triage
  • Behavioural bank: flaky test escalation, legacy codebase with no tests, stakeholder communication

// PRACTISE

  • Answer 10 questions aloud from the banks โ€” time yourself at 90 seconds per answer
  • Identify your 5 weakest answers and write a worked example for each, referencing your own test suite
  • Ask a colleague or friend to run a 30-minute mock using questions from the banks

Deliverable

Written answers to your 5 weakest questions, with concrete examples drawn from the suite you built in Days 3โ€“11.

06Day 14 โ€” Mock task

Capstone: simulate the technical interview task

Mock task

Set a 45-minute timer. On a demo e-commerce app (e.g. automationexercise.com or saucedemo.com), automate a complete user journey: search for a product, add it to the basket, and complete checkout. Use stable locators (ARIA roles or data-testid), assert on each major transition (product page loaded, basket count updated, order confirmed), and push the finished test to GitHub. Time-box strictly โ€” partial coverage with clean, maintainable code beats rushed coverage with brittle selectors. Include a one-paragraph code review of your own test: what you would change given more time.