Notes from the testing trenches
Welcome to The SDET
A first-person blog from an SDET sharing practical insights on Selenium, Playwright, CI/CD pipelines, tackling flaky tests, and exploring AI testing tools.
Recent notes
A practical Playwright guide to reliable file upload testing with input[type=file], file chooser handling, hidden inputs, drag and drop, fixture files, and CI-safe assertions.
Learn how to run Selenium tests in Docker with browser containers, Selenium Grid, and CI-friendly setup patterns. Includes examples, tradeoffs, and common failure modes.
Learn how to run Selenium tests in Jenkins with a practical CI setup, browser dependencies, reports, artifacts, headless execution, and common failure modes.
Learn how to combine API calls with Selenium tests to set up data, verify state, and reduce UI setup friction, with practical Selenium and Python examples.
Learn how to test file uploads with Playwright, including setInputFiles, multiple files, drag and drop, validation checks, and common failure modes in CI.
Learn how to test login flows with Selenium, including locators, waits, assertions, MFA considerations, failure modes, CI integration, and when a simpler alternative like Endtest may fit better.
A practical flake ownership model for QA leaders, with CI triage process steps, escalation rules, and guidance for separating product defects from automation noise without derailing the roadmap.
Learn how to define a release confidence threshold that reflects real release risk by combining failure patterns, change scope, test signal quality, and environment health.
A production-minded checklist for evaluating AI-generated test code in CI, including selector strategy, assertion quality, review cost, flaky test risk, and ownership boundaries.
A practical guide to building a test email harness with IMAP and Mailgun for email verification testing, magic link testing, inbox automation, retries, cleanup, and maintenance tradeoffs.
A practical Playwright suite maintenance strategy for deciding whether flaky tests need better locators, cleaner test data, or a smaller scope, with decision signals and tradeoffs.
A practical Playwright test data strategy for choosing between fixtures, API setup, and UI steps, with decision rules for isolation, readability, and debuggability.
A practical ownership model for browser test failure ownership, including triage rules, escalation paths, release blocking issues, and how to stop Slack ping-pong.
Learn how to run Playwright tests in Docker, install browser dependencies, structure a Playwright container, and avoid common CI failures with browser tests.
Learn how to run Playwright tests in Jenkins with a practical CI pipeline, browser setup, reports, artifacts, and failure handling for stable Jenkins browser tests.
Learn how to run Selenium tests in GitHub Actions with a real browser setup, GitHub Actions workflow examples, artifact collection, and practical debugging tips for flaky CI browser tests.
Learn Selenium waits explained with practical code examples for implicit wait, explicit wait, and fluent wait, plus how to avoid timing bugs and flaky tests.
A practical model for estimating test suite maintenance cost, including flaky test cost, reruns, review time, CI overhead, and automation debt before they slow delivery.
A practical guide to building a CI gate for flaky tests that separates product risk from test noise, with ownership rules, escalation paths, and deployment gating tactics.
A practical framework for evaluating AI coding assistant generated test suites with a focus on test maintainability, reviewability, generated code quality, and preserved test intent.
A practical look at Endtest for email flow testing, including verification email testing, password reset automation, and magic link testing across signup and recovery flows.
An SDET analysis of why frontend tests break after design token changes, covering spacing drift, selector stability, design system testing, and how to reduce flaky regressions.
A practical guide to test email verification flows, magic link testing, and password reset testing with stable browser checks, inbox polling, token extraction, cleanup, and CI-friendly patterns.
A practical framework for flaky test triage, including when flaky test retries are acceptable, when test isolation is the real fix, and when rewriting the test is the cheaper long-term option.
A practical debugging guide for Playwright tests that fail after dynamic imports, code splitting, and route-based lazy loading, with CI-focused failure modes and fixes.
Learn how to test shadow DOM with Playwright, handle web components testing, and verify portaled modals with resilient locator strategies that survive UI refactors.
A practical guide to test WebSocket reconnects in web apps, covering lost messages, live state recovery, browser automation, flaky test traps, and CI strategies.
A practical guide to test hydration mismatches in React, catch client-side render drift, and debug SSR UI regressions with Playwright, Selenium, and CI checks.
A practical SDET walkthrough for testing drag-and-drop uploads, reorder lists, and dropzone edge cases in Playwright, with timing fixes, file input fallbacks, and CI-safe patterns.
A practical tutorial on testing localStorage, sessionStorage, refresh state, hard reloads, and rehydration bugs in Playwright, with patterns that keep E2E suites stable.
A practical Playwright retry strategy for SDETs and frontend teams. Learn when to wait, retry, or fail fast, and how to reduce flaky Playwright tests without hiding real bugs.
Learn how to combine API calls with Playwright tests to set up data, validate backend behavior, and build faster API and UI tests with Playwright request context.
Learn how to test login flows with Playwright, including selectors, assertions, authentication state, storage, and CI-friendly patterns for stable Playwright login tests.
A practical tutorial for SDETs and QA teams on how to test AI help widgets, RAG answers, generated responses, fallback behavior, and human escalation flows without over-trusting the model.
A practical guide to debug CI failures from dependency drift, lockfile changes, and browser version mismatch, with root-cause checks for SDETs and QA engineers.
A practical first-person framework for choosing mocks, stubs, or real services in end-to-end tests, with tradeoffs, examples, and CI guidance.
A practical guide to test web push notifications, service workers, and background sync in modern web apps with Playwright, CI/CD, and PWA automation techniques.
A practical debugging guide for Playwright tests that fail only after feature flags flip, covering release toggle bugs, dark launch testing, environment drift, and conditional UI paths.
A practical guide to test AI summary panels, AI sidebar testing, and generated explanation validation with stable UI automation, contract checks, and low-trust assertions.
A practical framework for evaluating an AI test agent in CI, with the metrics, validation signals, and governance checks that reveal whether it is improving quality or hiding risk.
A practical guide to measuring release confidence in CI for frontend releases, including green build risk, CI signal quality, flaky tests, and the signals that matter beyond pass rates.
A practical checklist for logging Playwright CI-only failures, including traces, browser timing, network logs, environment drift, and artifacts that separate flaky tests from real regressions.
A practical first-person guide to stabilizing Playwright tests for virtualized lists, infinite scroll feeds, and lazy loaded UIs with better locators, waits, and scroll handling.
Learn how to run Playwright tests in GitHub Actions with browser installation, caching, reports, artifacts, and practical troubleshooting tips.
A practical first-person guide to choosing Playwright fixtures vs API setup, with tradeoffs for speed, readability, auth, and maintainable E2E test design.
Learn how to test browser permissions in Playwright for notifications, geolocation, and pop-up prompts while avoiding flaky state leakage with isolated browser contexts.
A hands-on SDET guide to test session timeout flows, idle logout testing, and re-authentication E2E behavior in Selenium and Playwright without making your suite flaky.
Learn how to run Playwright tests in parallel, configure workers and projects, avoid shared-state bugs, and scale parallel execution in CI.
A practical Playwright locators tutorial covering getByRole, text selectors, CSS selectors, locator examples, strict mode, and locator best practices for stable UI tests.
Learn the Playwright Page Object Model tutorial with practical TypeScript examples, locator patterns, fixtures, and maintenance tradeoffs for SDETs and QA engineers.
Learn how to install Playwright, run Playwright tests locally, open browser test UI, debug failures, and structure a reliable local workflow for developers and SDETs.
Learn how to run Selenium tests in parallel locally and with Selenium Grid, plus common setup patterns, CI tips, and flakiness traps to avoid.
Learn how to store Playwright traces in CI, capture videos and screenshots, and organize CI artifacts so failure triage is faster and more reliable.
A practical Playwright debugging workflow for reproducing CI-only browser failures using traces, console logs, request timing, and environment diffs.
A practical guide to debugging Playwright tests that fail after design system token updates, separating real regressions from harmless visual drift, and hardening selector stability.
Learn how to handle dynamic elements in Selenium with stable locators, explicit waits, XPath patterns, fallback strategies, and practical debugging tips.
Learn Selenium Page Object Model with practical Python and Java examples, locator strategies, wait handling, and maintainability tips for SDETs and QA engineers.
Learn how to test email verification with Selenium using real inboxes, test email APIs, and CI-friendly patterns. Includes waits, token handling, edge cases, and an Endtest alternative.
Learn how to test email verification with Playwright using real inboxes, test email APIs, and disposable mailboxes. Includes setup patterns, code examples, CI tips, and when Endtest is a simpler alternative.
Learn how to handle dynamic elements in Playwright with stable locators, auto-waiting, retries, and debugging patterns for dynamic UIs.
Learn how to build a Selenium test automation framework from scratch with drivers, page objects, waits, config, screenshots, reporting, and CI/CD tips.
Learn how to use Claude to refactor Playwright tests safely, improve maintainability, and decide when human review or Endtest is the better option.
A practical Selenium to Playwright migration guide covering locators, waits, fixtures, assertions, CI updates, and when Endtest may be a simpler alternative.
A practical guide to separating real product regressions from flaky tests, environment drift, and CI noise, without turning every release into a manual investigation.
A practical first-person guide to debugging flaky Playwright tests caused by animation, CSS transitions, and layout shift, with techniques for stabilization, diagnostics, and better waits.
A practical analysis of why green CI builds can still hide release risk, and the pipeline health signals I check for broken coverage, stale artifacts, weak assertions, and false green builds.
A practical CI release checklist for frontend teams. Learn what to verify before trusting a green pipeline, from flaky tests and coverage gaps to build artifacts, environment drift, and deploy readiness.
My practical decision framework for choosing when to mock, stub, or use real services in Playwright E2E tests without over-mocking away real bugs.
A practical Playwright tutorial for testing downloaded PDFs, invoices, and CSV exports by verifying real file content, avoiding flaky filename-only assertions, and handling CI file download pitfalls.
Learn how to convert Selenium tests to Playwright with AI, what usually migrates cleanly, what still needs manual work, and when Endtest is a better migration target.
A technical guide to the reliability metrics, release gate signals, and governance checks teams should measure before trusting AI-generated test assertions in CI.
Learn how to debug Playwright tests that pass locally but fail in GitHub Actions after cache changes, with a root-cause workflow for cache invalidation, dependency drift, and build artifacts.
A practical analysis of flaky test cost, retry policies, quarantine tradeoffs, and ownership models that reduce noise without masking real release risk.
A risk-based guide to evaluate AI test agents before using them on checkout or login flows, with criteria for auditability, failure transparency, and human approval.
A practical root-cause guide for Playwright tests that pass locally on Mac and Windows but fail in Linux CI, covering fonts, permissions, timing, containers, and browser environment drift.
A practical workflow for test AI-powered UI changes, catch prompt change testing issues, and validate AI frontend regression without brittle tests.
Learn how to convert manual test cases to Playwright with AI, including prompt patterns, locator cleanup, review steps, CI integration, and when Endtest is the better alternative.
A practical debugging checklist for browser tests that pass in preview but fail after merge, covering environment drift, caching, hidden dependencies, and timing issues.
A practical framework for flaky test root cause analysis. Learn how to tell product bugs, test bugs, and CI flakiness apart without patching the wrong thing.
Learn how to store Playwright test artifacts in CI, including traces, screenshots, videos, and logs, so flaky failures are easier to reproduce and debug.
Learn how to test shadow DOM and iframes in Playwright with stable locators, frame handling patterns, and debugging tips for modern component-heavy apps.
A practical SDET workflow for testing AI-generated frontend changes, catching selector drift, markup regressions, and behavior changes before they hit the release branch.
A practical guide to test WebSocket-driven UI flows with Playwright and Selenium, covering synchronization, assertions, flaky test failure modes, and browser automation timing.
A practical tutorial for debugging AI-generated Playwright tests, covering locators, waits, assertions, test structure, CI failures, and when Endtest is the simpler alternative.
A practical SDET guide to review AI-generated Playwright code, covering locators, waits, assertions, fixtures, cleanup, and CI behavior.
Learn how to generate Playwright tests with Cursor, where AI generated Playwright code helps, and what still needs manual engineering for stable test automation.
Learn how to generate Playwright tests with GitHub Copilot, prompt it effectively, review AI-generated test code, and decide when Endtest is the simpler alternative.
A practical Playwright framework tutorial covering TypeScript structure, fixtures, page objects, config, reporting, CI, and maintainability tradeoffs.
An opinionated guide to the test automation maintenance metrics that matter most, including flaky rate, selector churn, suite ownership, and debugging time.
A practical guide to debug flaky API and UI tests by tracing backend state, test data drift, async UI failures, and network timing issues before blaming the browser.
A practical tutorial for testing file upload components in React with Playwright and Selenium, covering hidden inputs, drag-and-drop flows, reliable locators, and CI-friendly patterns.
A practical AI-generated Playwright tests example that shows how to review, harden, and maintain generated test code, plus when an AI test platform like Endtest is the simpler choice.
Learn how to generate Playwright tests with ChatGPT, write better prompts, review AI-generated code, and decide when a low-code platform is a better fit for reliable automation.
Learn how to generate Playwright tests with Claude, review the output, harden locators, and keep AI generated Playwright code maintainable in CI.
A practical guide to test a release pipeline in CI, covering build steps, environment parity, test ordering, artifacts, and failure reporting before you trust a new deployment flow.
A practical guide to Playwright test data strategies, including seeded data, API setup, cleanup, and parallel-safe records for deterministic test automation.
A practical guide to testing AI-powered form validation with deterministic assertions, mocks, and human review, including Playwright examples, flaky test controls, and CI strategies.
A practical workflow to debug flaky Playwright tests using trace viewer, console logs, screenshots, and timing clues, without rewriting your whole suite.
A practical checklist for debugging CI only failures in end-to-end tests, covering environment drift, timing issues, secrets, viewport differences, containers, and browser automation debugging.
Learn how I use Playwright network interception to mock API responses, stabilize auth flows, and isolate flaky third-party calls with practical examples and tradeoffs.
A practical debugging workflow to stop flaky Playwright tests before they reach CI, with isolation tactics, locator checks, retry analysis, and stability patterns.
A practical SDET perspective on why Codex can feel impressive for small coding tasks, but test automation often needs long reasoning chains, debugging, and reruns that quickly hit usage limits. Includes Playwright, Selenium, and an alternative built for editable tests.
A first-hand look at a critical regression test fix interrupted by Claude usage limits, why that creates release risk, and why editable test platforms like Endtest can be more reliable for urgent automation work.
A real-world look at Claude Code limits test automation work in a growing Playwright framework, where context, debugging, and maintenance overhead start to dominate. Includes practical alternatives like Endtest.
A practical SDET experience with Codex test automation limits while debugging a growing Playwright framework, and why purpose-built AI testing tools can be a better fit.