New to Claude Skills? Learn how to install them →

alirezarezvani on GitHub

Fix Failing Tests

Free

Diagnose and resolve flaky Playwright tests effectively.

Get this skill

Free · Opens the source repo

What Fix Failing Tests does

The Fix Failing Tests skill is designed to help developers troubleshoot and resolve issues with flaky or failing Playwright tests. It provides a systematic approach to diagnose problems, allowing users to reproduce failures, capture traces, categorize issues, and apply targeted fixes. This skill is particularly beneficial for teams relying on automated testing in continuous integration (CI) environments, where intermittent failures can lead to significant delays and frustration.

To begin, the skill guides users through the process of reproducing test failures, which is crucial for understanding the underlying issues. By running tests in various configurations, such as with multiple workers or through burn-in testing, users can identify whether a test is genuinely failing or merely flaky. The skill also emphasizes the importance of capturing detailed traces to analyze what went wrong during test execution.

Once the failure is reproduced, the skill directs users to categorize the issue based on a predefined taxonomy. This categorization helps in pinpointing the root cause, whether it be timing issues, test isolation problems, environmental discrepancies, or infrastructure-related challenges. Each category comes with specific recommendations on how to address the identified problems, ensuring that users can apply the most effective solutions.

Finally, the skill encourages users to verify the fix by rerunning tests multiple times to confirm stability and suggests preventive measures to avoid future occurrences of the same issues. This comprehensive approach not only resolves current test failures but also helps maintain a more robust testing suite moving forward.

When to use it

Use this skill when encountering tests that intermittently fail or pass, particularly in CI environments.

When not to use it

This skill may not be suitable for tests that fail consistently due to known issues or for non-Playwright testing frameworks.

What you can build with it

Debugging CI Failures

When tests fail in a CI environment but pass locally, use this skill to identify environmental discrepancies.

Resolving Flaky Tests

For tests that pass sometimes and fail at other times, this skill helps categorize and address the underlying issues.

Improving Test Stability

After fixing a test, use the skill's verification process to ensure that the test now consistently passes.

How to install Fix Failing Tests

View source

1. Install with the skills CLI

npx skills add alirezarezvani/claude-skills/fix --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by alirezarezvani

Fix Failing or Flaky Tests

Diagnose and fix a Playwright test that fails or passes intermittently using a systematic taxonomy.

Input

$ARGUMENTS contains:

  • A test file path: e2e/login.spec.ts
  • A test name: ""should redirect after login"`
  • A description: "the checkout test fails in CI but passes locally"

Steps

1. Reproduce the Failure

Run the test to capture the error:

npx playwright test <file> --reporter=list

If the test passes, it's likely flaky. Run burn-in:

npx playwright test <file> --repeat-each=10 --reporter=list

If it still passes, try with parallel workers:

npx playwright test --fully-parallel --workers=4 --repeat-each=5

2. Capture Trace

Run with full tracing:

npx playwright test <file> --trace=on --retries=0

Read the trace output. Use /debug to analyze trace files if available.

3. Categorize the Failure

Load flaky-taxonomy.md from this skill directory.

Every failing test falls into one of four categories:

CategorySymptomDiagnosis
Timing/AsyncFails intermittently everywhere--repeat-each=20 reproduces locally
Test IsolationFails in suite, passes alone--workers=1 --grep "test name" passes
EnvironmentFails in CI, passes locallyCompare CI vs local screenshots/traces
InfrastructureRandom, no patternError references browser internals

4. Apply Targeted Fix

Timing/Async:

  • Replace waitForTimeout() with web-first assertions
  • Add await to missing Playwright calls
  • Wait for specific network responses before asserting
  • Use toBeVisible() before interacting with elements

Test Isolation:

  • Remove shared mutable state between tests
  • Create test data per-test via API or fixtures
  • Use unique identifiers (timestamps, random strings) for test data
  • Check for database state leaks

Environment:

  • Match viewport sizes between local and CI
  • Account for font rendering differences in screenshots
  • Use docker locally to match CI environment
  • Check for timezone-dependent assertions

Infrastructure:

  • Increase timeout for slow CI runners
  • Add retries in CI config (retries: 2)
  • Check for browser OOM (reduce parallel workers)
  • Ensure browser dependencies are installed

5. Verify the Fix

Run the test 10 times to confirm stability:

npx playwright test <file> --repeat-each=10 --reporter=list

All 10 must pass. If any fail, go back to step 3.

6. Prevent Recurrence

Suggest:

  • Add to CI with retries: 2 if not already
  • Enable trace: 'on-first-retry' in config
  • Add the fix pattern to project's test conventions doc

Output

  • Root cause category and specific issue
  • The fix applied (with diff)
  • Verification result (10/10 passes)
  • Prevention recommendation

Frequently asked questions about Fix Failing Tests

Similar skills