بنقرة واحدة
webstatus-e2e
// Use when writing, modifying, or debugging Playwright end-to-end (E2E) tests for webstatus.dev.
// Use when writing, modifying, or debugging Playwright end-to-end (E2E) tests for webstatus.dev.
Use when creating or modifying Go backend API endpoints, modifying Spanner database schemas, or working with OpenAPI and Spanner mappers.
Use when working with the webstatus notification pipeline, event producer, push delivery, or push workers (e.g., Email, Webhooks), and Pub/Sub subscribers.
Use when modifying the ANTLR search grammar, adding new search terms, or working with the query parser and builder.
Use when modifying the frontend SPA, working with TypeScript, Lit web components, Shoelace components, or frontend tests.
Use when working on Go data ingestion workflows, scheduled Cloud Run jobs, or adding new scrapers for BCD, WPT, or other data sources.
Use when upgrading toolchain versions (Go, Node.js, Terraform, Playwright) or updating the DevContainer and Github CI configurations.
| name | webstatus-e2e |
| description | Use when writing, modifying, or debugging Playwright end-to-end (E2E) tests for webstatus.dev. |
This skill provides guidance for working with the End-to-End (E2E) test suite in webstatus.dev, which is built using Playwright and TypeScript.
e2e/ directory.playwright.config.ts handles browser definitions, retries, and worker limits.For a detailed technical guide on the local development environment (Skaffold/Minikube), data population strategies, and the CI/PR validation lifecycle, see references/architecture.md.
frontend/src/**/*.test.ts).data-testid attributes (e.g., page.getByTestId('submit-btn')) over brittle CSS classes or XPath.page.mouse.move(0, 0)) before taking visual snapshots to avoid flaky tests caused by unintended hover effects on UI elements.localhost:8080 via port-forward) to mock GitHub API responses, such as user profiles and email lookups during login.waitForChartCompletion and waitForTabbedChartCompletion hooks (from utils.ts) for Google Charts instead of naive .waitForSelector to avoid timeout races.toBeAttached() instead of toBeVisible() to cleanly bypass WebKit strict-mode 0px bounding box quirks for inline host elements or absolutely positioned fragments.await on asynchronous Playwright matchers like toBeChecked() to prevent tests from skipping past Lit hydration cycles synchronously.workers: 1 is strictly enforced in playwright.config.ts.CI=true (e.g., CI=true make playwright-test).projects array within playwright.config.ts.Makefile in the project root:
make playwright-test: Sets up a fresh local environment and runs the test suite.SKIP_FRESH_ENV=1 make playwright-test: Rapidly iterates on E2E tests by skipping the full Skaffold/Minikube setup (requires an already running environment).make playwright-ui: Runs the tests in Playwright's interactive UI mode.make playwright-debug: Runs the tests in debug mode.make playwright-update-snapshots: Updates visual regression snapshots.When modifying playwright configuration, retries, or execution strategies:
GEMINI.md to ensure I am aware of the changes.