assert_
glossary ↓ downloads
cheatsheet · suite 08

Capstone project

every pattern from this suite, one pageCtrl+P prints it clean
Milestones
M1 walking skeleton: Base+Factory+Config+login test
M2 login coverage: data-driven invalids + @Tag smoke
M3 shopping flow: Products/Cart/Checkout pages + tests
M4 sorting (data-driven) + 2 API tests
M5 speed: parallel + headless timings
M6 CI: workflow, break-fix ritual, badge
Rule: never start a milestone with a red suite.
Acceptance criteria
  • 8+ tests: 6 UI (2 data-driven) + 2 API
  • Zero locators in tests; zero hardcoded config
  • Explicit waits only; smoke tagged; parallel on
  • CI: smoke on push, nightly cron, failure artifacts
  • README: badge + three commands that work anywhere
Debugging ladder
1. Failure or Error?  (app vs test)
2. Locator? -> verify in DevTools $$() first
3. Passes with breakpoint? -> missing explicit wait
4. Only in parallel? -> hunt shared static state
5. Only in CI? -> headless window size
README skeleton
# Title + Actions badge
Java 21 · Selenium 4 · JUnit 5 · REST Assured · CI
## Run it: clone -> cd -> mvn test -Dheadless=true
## What's demonstrated (with NUMBERS: 38s vs 1:57)
## Structure (paste the tree)
Commit messages that read well
M1: walking skeleton — login test green
M2: data-driven invalid logins (4 rows)
M3: checkout flow with page objects
Fix: wait for overlay before clicking checkout
CI: nightly cron + failure artifacts
The three-command promise (README)
git clone https://github.com/YOU/saucedemo-automation-framework
cd saucedemo-automation-framework
mvn test -Dheadless=true      # -> BUILD SUCCESS
NOTES.md — capture while it's fresh
  • one line each: date · what broke · exact error · root cause · fix
  • "tell me about a tricky automation bug" → you'll have five, documented
  • your pain, converted into interview stories
Interview mapping
  • What to automate? → Suite 00 ROI filter
  • Flaky tests? → explicit waits + independence story
  • Explain POM → open LoginPage, one-file-fix story
  • CSS or XPath? → default CSS; text/ancestor = XPath
  • Walk me through it → README structure, top to bottom