e2e-tester
E2E Testing with Playwright & Testcontainers
Write end-to-end tests using Playwright against a full Redpanda Console stack running in Docker containers via testcontainers.
When to Use This Skill
- Testing 2+ step user journeys (login -> action -> verify)
- Multi-page workflows
- Browser automation with Playwright
NOT for: Component unit tests -> use testing
Critical Rules
ALWAYS:
- Run
bun run buildbefore running E2E tests (frontend assets required) - Use
testcontainersAPI for container management (never manualdockercommands in tests) - Use
page.getByRole()andpage.getByLabel()selectors (avoid CSS selectors) - Add
data-testidattributes when semantic selectors aren't available - Use Task tool with MCP Playwright agents to analyze failures
- Clean up test data using
afterEachto call cleanup API endpoints
NEVER:
- Test UI component rendering (use unit/integration tests)
- Use brittle CSS selectors like
.class-nameor#id - Use
force:trueon.click()orwaitForTimeout - Hard-code wait times (use
waitForwith conditions) - Leave containers running after test failures
- Commit test screenshots to git
Commands
bun run build # Build frontend (REQUIRED first!)
bun run e2e-test # Run OSS E2E tests
bun run e2e-test-enterprise # Run Enterprise E2E tests
bun run e2e-test:ui # Playwright UI mode (debugging)
bun run e2e-test tests/topics/create-topic.spec.ts # Specific file
Test Architecture
OSS Mode (bun run e2e-test): Redpanda + Backend + OwlShop containers
Enterprise Mode (bun run e2e-test-enterprise): Same + RBAC, SSO (requires console-enterprise repo)
File location: tests/<feature>/*.spec.ts
Selector Priority
getByRole()- Best for accessibilitygetByLabel()- For form inputsgetByText()- For content verificationgetByTestId()- When semantic selectors aren't clear- CSS selectors - Avoid if possible
Test ID Naming
- kebab-case:
data-testid="feature-action-element" - Specific: include feature name + action + element type
- Dynamic:
data-testid={\item-delete-${id}`}`
References
- Container Setup — Testcontainer lifecycle, configs, CI setup
- Test Patterns — Multi-step workflows, forms, tables, API testing
- Failure Analysis — Error patterns, debugging, MCP Playwright agents
Output
After completing work:
- Confirm frontend build succeeded
- Verify all E2E tests pass
- Note any new test IDs added to components
- Mention cleanup of test containers
More from redpanda-data/console
react-best-practices
Client-side React performance optimization patterns.
72tanstack-router-migration
Migrate React applications from React Router to TanStack Router with file-based routing. Use when user requests: (1) Router migration, (2) TanStack Router setup, (3) File-based routing implementation, (4) React Router replacement, (5) Type-safe routing, or mentions 'migrate router', 'tanstack router', 'file-based routes'.
61code-standards
TypeScript, React, and JavaScript best practices enforced by Ultracite/Biome.
55security-scan
Resolve npm dependency vulnerabilities detected by security scans.
49ui-development
Build UI with Redpanda Registry components, Tailwind v4, and accessibility best practices.
44state-management
Manage client and server state with Zustand stores and React Query patterns.
43