Use this guide to explain why the repository keeps three maintained tracks instead of treating one framework as universally best.
| Track | Best teaching use | Strengths | Tradeoffs |
|---|---|---|---|
| Java Selenium/TestNG | Legacy suite rescue, enterprise browser coverage, Page Object design | W3C WebDriver standard, broad Grid/vendor support, familiar Java interview surface | More lifecycle code, more explicit waits, and higher risk of brittle Page Objects |
| TypeScript Playwright | Modern flagship UI and resource testing | Auto-waiting locators, browser projects, request client, traces, HTML reports, mobile emulation | Tool-specific mental model; not a drop-in WebDriver replacement |
| Python Playwright | Python SDET/data-friendly comparison against the same catalog | Same browser engines as TypeScript Playwright, pytest markers, Python ergonomics | Smaller ecosystem surface than Java for legacy Selenium shops |
| Cypress | Comparison topic only | Popular JavaScript developer workflow and strong local runner | Not implemented here to avoid a fourth overlapping browser stack |
| WebdriverIO | Comparison topic only | Useful WebDriver-flavored JavaScript option | Lower marginal teaching value once Selenium plus Playwright are present |
As of 2026-07-12, the latest published State of JavaScript results are the 2025 edition. Its testing section is the citation to refresh when discussing JavaScript testing tool popularity or sentiment: State of JavaScript 2025 — Testing.
Use that citation as context, not as a mandate. This repository’s implementation choices are driven by teaching coverage: Selenium for legacy/WebDriver literacy, TypeScript Playwright for the flagship modern stack, and Python Playwright for a second-language comparison.