review
alirezarezvani/claude-skills
Systematically audit Playwright tests for anti-patterns, best practices, and coverage gaps.
What is review?
Review Playwright test files against 20 known anti-patterns and best practices, scoring each file 1-10 and providing actionable fixes. Use when you need to improve test quality, catch flaky patterns, or audit an entire test suite for compliance with Playwright golden rules.
- Scans test files for 20 anti-patterns (critical, warning, and info-level issues)
- Scores each file 1-10 based on production-readiness and adherence to best practices
- Detects critical issues like waitForTimeout(), non-web-first assertions, hardcoded URLs, and shared mutable state
- Identifies coverage gaps and missing test cases for error/edge scenarios
- Generates file-by-file review reports with line-specific fixes and corrected code
- Supports single files, directories, or project-wide reviews with parallel processing
How to install review
npx skills add https://github.com/alirezarezvani/claude-skills --skill reviewHow to use review
- 1.Run the skill with a file path, directory, or leave empty to review all tests in testDir
- 2.Review the generated report showing scores, critical issues, and warnings for each file
- 3.Examine the actionable fix list with corrected code snippets
- 4.Approve and apply fixes using the provided Edit tool
- 5.Check the summary table for coverage gaps and project-wide metrics
Use cases
- Audit a new test suite before merging to main branch
- Review specific test files flagged as flaky or problematic
- Perform project-wide quality check across all Playwright tests
- Identify missing accessibility or visual regression tests
- Refactor test naming, structure, and data management to follow best practices
- QA engineers and test automation specialists
- Frontend developers writing Playwright tests
- Engineering leads reviewing test suite quality
- Teams adopting Playwright and establishing testing standards
review FAQ
The 7 critical issues are: waitForTimeout() usage, non-web-first assertions, hardcoded URLs, CSS/XPath selectors instead of role-based, missing await on Playwright calls, shared mutable state between tests, and test execution order dependencies.
Files are rated 1-10: 9-10 is production-ready, 7-8 is good with minor improvements, 5-6 has anti-patterns, 3-4 has significant flaky issues, and 1-2 needs rewrite.
Yes. Leave $ARGUMENTS empty to review all tests in the project's testDir. For large suites, the skill spawns up to 5 concurrent sub-agents per file or uses batch mode.
Yes. For each critical issue, the skill provides corrected code and asks if you want to apply the fixes automatically using the Edit tool.
The skill identifies pages or features with no tests, missing error/edge case tests, and missing accessibility or visual regression tests for UI-heavy pages.
Full instructions (SKILL.md)
Source of truth, from alirezarezvani/claude-skills.
name: "review" description: >- Review Playwright tests for quality. Use when user says "review tests", "check test quality", "audit tests", "improve tests", "test code review", or "playwright best practices check".
Review Playwright Tests
Systematically review Playwright test files for anti-patterns, missed best practices, and coverage gaps.
Input
$ARGUMENTS can be:
- A file path: review that specific test file
- A directory: review all test files in the directory
- Empty: review all tests in the project's
testDir
Steps
1. Gather Context
- Read
playwright.config.tsfor project settings - List all
*.spec.ts/*.spec.jsfiles in scope - If reviewing a single file, also check related page objects and fixtures
2. Check Each File Against Anti-Patterns
Load anti-patterns.md from this skill directory. Check for all 20 anti-patterns.
Critical (must fix):
waitForTimeout()usage- Non-web-first assertions (
expect(await ...)) - Hardcoded URLs instead of
baseURL - CSS/XPath selectors when role-based exists
- Missing
awaiton Playwright calls - Shared mutable state between tests
- Test execution order dependencies
Warning (should fix):
8. Tests longer than 50 lines (consider splitting)
9. Magic strings without named constants
10. Missing error/edge case tests
11. page.evaluate() for things locators can do
12. Nested test.describe() more than 2 levels deep
13. Generic test names ("should work", "test 1")
Info (consider):
14. No page objects for pages with 5+ locators
15. Inline test data instead of factory/fixture
16. Missing accessibility assertions
17. No visual regression tests for UI-heavy pages
18. Console error assertions not checked
19. Network idle waits instead of specific assertions
20. Missing test.describe() grouping
3. Score Each File
Rate 1-10 based on:
- 9-10: Production-ready, follows all golden rules
- 7-8: Good, minor improvements possible
- 5-6: Functional but has anti-patterns
- 3-4: Significant issues, likely flaky
- 1-2: Needs rewrite
4. Generate Review Report
For each file:
## <filename> — Score: X/10
### Critical
- Line 15: `waitForTimeout(2000)` → use `expect(locator).toBeVisible()`
- Line 28: CSS selector `.btn-submit` → `getByRole('button', { name: "submit" })`
### Warning
- Line 42: Test name "test login" → "should redirect to dashboard after login"
### Suggestions
- Consider adding error case: what happens with invalid credentials?
5. For Project-Wide Review
If reviewing an entire test suite:
- Spawn sub-agents per file for parallel review (up to 5 concurrent)
- Or use
/batchfor very large suites - Aggregate results into a summary table
6. Offer Fixes
For each critical issue, provide the corrected code. Ask user: "Apply these fixes? [Yes/No]"
If yes, apply all fixes using Edit tool.
Output
- File-by-file review with scores
- Summary: total files, average score, critical issue count
- Actionable fix list
- Coverage gaps identified (pages/features with no tests)
Related skills
More from alirezarezvani/claude-skills and the wider catalog.

risk-management-specialist
Medical device risk management specialist implementing ISO 14971 throughout product lifecycle. Provides risk analysis, risk evaluation, risk control, and post-production information analysis. Use when user mentions risk management, ISO 14971, risk analysis, FMEA, fault tree analysis, hazard identification, risk control, risk matrix, benefit-risk analysis, residual risk, risk acceptability, or post-market risk.

run
Run a single experiment iteration: edit, evaluate, keep or discard.

sales-engineer
Analyzes RFP/RFI responses for coverage gaps, builds competitive feature comparison matrices, and plans proof-of-concept (POC) engagements for pre-sales engineering. Use when responding to RFPs, bids, or proposal requests; comparing product features against competitors; planning or scoring a customer POC or sales demo; preparing a technical proposal; or performing win/loss competitor analysis. Handles tasks described as 'RFP response', 'bid response', 'proposal response', 'competitor comparison', 'feature matrix', 'POC planning', 'sales demo prep', or 'pre-sales engineering'.

scrum-master
Advanced Scrum Master skill for data-driven agile team analysis and coaching. Use when the user asks about sprint planning, velocity tracking, retrospectives, standup facilitation, backlog grooming, story points, burndown charts, blocker resolution, or agile team health. Runs Python scripts to analyse sprint JSON exports from Jira or similar tools: velocity_analyzer.py for Monte Carlo sprint forecasting, sprint_health_scorer.py for multi-dimension health scoring, and retrospective_analyzer.py for action-item and theme tracking. Produces confidence-interval forecasts, health grade reports, and improvement-velocity trends for high-performing Scrum teams.

security-pen-testing
Use when the user asks to perform security audits, penetration testing, vulnerability scanning, OWASP Top 10 checks, or offensive security assessments. Covers static analysis, dependency scanning, secret detection, API security testing, and pen test report generation.

self-improving-agent
Curate Claude Code's auto-memory into durable project knowledge. Analyze MEMORY.md for patterns, promote proven learnings to CLAUDE.md and .claude/rules/, extract recurring solutions into reusable skills. Use when: (1) reviewing what Claude has learned about your project, (2) graduating a pattern from notes to enforced rules, (3) turning a debugging solution into a skill, (4) checking memory health and capacity.