End-to-end testing
End-to-end (E2E) tests exercise an entire user journey across the full stack, UI, API, database, external services, as a real user would. The dominant tools are Playwright, Cypress, and Selenium for web; Detox and Appium for mobile. E2E tests give the strongest guarantee that the system works as a whole; they pay for it with execution speed and flakiness.
E2E tests' value is highest on the critical journeys, checkout, signup, login, where any regression is catastrophic. Their cost is highest in maintenance: UI changes break selectors, async timing causes flakes, third-party dependencies introduce non-determinism. The pragmatic ratio (test pyramid) puts E2E at the top: a small number, focused on critical paths, run on every release. Anti-patterns: testing every feature E2E (slow, flaky, expensive); using E2E to catch bugs that unit or integration tests should catch; ignoring flakes ('it'll pass next run') until the suite is meaningless. Healthy E2E discipline: zero-tolerance for flakes; deterministic test data; isolation between tests.