Write and run Playwright E2E tests for Redpanda Console using testcontainers. Analyzes test failures, adds missing testids, and improves test stability. Use when user requests E2E tests, Playwright tests, integration tests, test failures, missing testids, or mentions 'test workflow', 'browser testing', 'end-to-end', or 'testcontainers'.
Write end-to-end tests using Playwright against a full Redpanda Console stack running in Docker containers via testcontainers.
NOT for: Component unit tests -> use testing
ALWAYS:
bun run build before running E2E tests (frontend assets required)testcontainers API for container management (never manual docker commands in tests)page.getByRole() and page.getByLabel() selectors (avoid CSS selectors)data-testid attributes when semantic selectors aren't availableafterEach to call cleanup API endpointsNEVER:
.class-name or #idforce:true on .click() or waitForTimeoutwaitFor with conditions)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
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
getByRole() - Best for accessibilitygetByLabel() - For form inputsgetByText() - For content verificationgetByTestId() - When semantic selectors aren't cleardata-testid="feature-action-element"data-testid={\item-delete-${id}`}`After completing work: