# Capstone Checklist — SauceDemo Automation Framework

## Functional coverage (8 tests minimum)
- [ ] Valid login lands on Products              @Tag("smoke")
- [ ] Invalid logins — data-driven, 4+ rows (locked out / wrong password / empty username / empty password)
- [ ] Add to cart updates the badge
- [ ] Full checkout flow ends in "Thank you for your order!"
- [ ] Product sorting — data-driven, 3+ orders
- [ ] Remove from cart
- [ ] API: GET with JSON-path assertions (JSONPlaceholder)
- [ ] API: POST with extract().path("id")

## Engineering requirements
- [ ] Page Object Model — zero locators in test classes
- [ ] BaseTest: @BeforeEach/@AfterEach + screenshot-on-failure TestWatcher
- [ ] DriverFactory + config.properties, -D overrides work
- [ ] No hardcoded URLs/credentials anywhere (sweep the code!)
- [ ] Explicit waits only — no Thread.sleep anywhere
- [ ] Parallel classes enabled (junit-platform.properties)
- [ ] Git history: meaningful commits per milestone (M1–M6)
- [ ] GitHub Actions: smoke on push, full suite nightly (cron), failure artifacts

## Definition of done
- [ ] mvn test green locally — headed AND -Dheadless=true
- [ ] Actions tab green on latest commit
- [ ] Deliberately broken test → red run + downloadable screenshot artifact
- [ ] README: badge + three commands that work on a stranger's machine
- [ ] NOTES.md: every problem you hit + how you fixed it (interview fuel)
