openshift/debug-test
Debug and fix failing Playwright e2e tests with MCP-assisted diagnosis. Use when user says "playwright test failing", "fix e2e test", "debug spec", or provides a failing .spec.ts file, e2e directory, or Playwright tag.
npx skills add https://github.com/openshift/console --skill debug-test
Debug and fix failing Playwright tests using MCP as the primary diagnostic tool. Works for a single spec, a directory, or a tag. Merged from openshift-ui-tests-template/debug-test.md and test-fix-cycle.md.
frontend/e2e/.env exists. If missing, copy frontend/e2e/.env.example to frontend/e2e/.env and tell the user to fill in their cluster values before continuing..claude/migration-context.md for the Console architecture, selector mappings, and migration rules. That file is the single source of truth for how Playwright tests should be structured./debug-test e2e/tests/console/cluster-settings/upstream-modal.spec.ts/debug-test "Verify console login"/debug-test e2e/tests/helm//debug-test --project=helm--workers=N (default: 4)Examples:
/debug-test e2e/tests/console/cluster-settings/upstream-modal.spec.ts
/debug-test e2e/tests/helm/ --workers=2
/debug-test --project=topology
npx playwright test <file> --retries=0 --workers=1 --reporter=listnpx playwright test <directory> --retries=0 --workers=<N> --reporter=listnpx playwright test --project=<name> --retries=0 --workers=<N> --reporter=listnpx playwright test --project=<name>-developer --retries=0 --workers=1 --reporter=listFor each failure, use MCP to identify root cause:
For each fixable failure, in priority order:
robustClick() or waitForLoadingComplete()awaittest.skip(true, 'reason') after confirming with MCPFix in the correct layer: selectors and waits in page objects, assertions in test files. Never put locators directly in test files when a page object exists.
Run individual test after each fix to verify. If unfixable after 2 attempts: test.skip(true, 'Descriptive reason').
Debug Summary: <target>
Total tests: N
Passing: X
Fixed: Y
Skipped: Z
Fixes applied:
- <file>: <fix description>
Tests skipped:
- <file>: <reason>
If MCP tools fail with "tool not found" or "connection refused": diagnose from error messages alone. Warn: "MCP not available — selector fixes may be inaccurate without live verification." Focus on fixes that don't require live inspection (missing awaits, type errors, obvious selector typos).
If npx playwright test fails with login/connection errors on every test: this is an infrastructure issue, not a test bug. Report it to the user and suggest checking cluster access, BRIDGE_BASE_ADDRESS, and storageState files.
If npx playwright test fails with "Cannot find module": the Playwright foundation hasn't been set up yet. Tell the user to complete the infrastructure setup first.
If a test passes on re-run without any fix: it's flaky. Use MCP to identify the timing-sensitive interaction, then fix with robustClick(), waitForLoadingComplete(), or a more specific waitFor() condition. Never mask flakiness with retries.
--retries=0 during the cyclecd frontend && yarn eslint <fixed-files> after fixesTake openshift/debug-test from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.