
Generate Playwright Tests
FreeAutomatically generate Playwright tests from user stories or components.
Free · Opens the source repo
What Generate Playwright Tests does
Generate Playwright Tests is a skill designed to streamline the process of writing end-to-end tests for web applications using Playwright. By inputting a user story, URL, component name, or feature description, developers can quickly create production-ready test scripts. The skill intelligently parses the input to identify the necessary context, such as user behaviors and component interactions, making it easier to ensure comprehensive test coverage.
The skill operates in several steps, starting with understanding the target based on the provided arguments. It then explores the codebase to gather relevant context, including configurations, existing tests, and component details. By leveraging templates for various testing scenarios, the skill adapts to the specific requirements of the application, replacing placeholders with actual selectors and data as needed.
Once the test structure is established, the skill generates the test code following best practices, ensuring that the resulting scripts are robust and maintainable. It prioritizes the use of semantic locators and includes error handling, making the tests reliable. Additionally, the skill can create supporting files like page objects and fixtures when necessary, further enhancing test organization and reusability.
This skill is particularly beneficial for developers who want to automate the testing process in their web applications. It reduces the time spent writing repetitive test cases and helps maintain a consistent testing approach across the codebase, ultimately leading to higher code quality and fewer bugs in production.
When to use it
Use this skill when you need to quickly generate Playwright tests based on user stories or component specifications.
When not to use it
This skill may not be suitable for projects that require highly customized or complex testing scenarios that cannot be captured by templates.
What you can build with it
Generate tests for a login feature
Input a user story like 'user can log in with email and password' to create tests that validate the login functionality.
Create tests for a checkout flow
Provide a description of the checkout process to automatically generate tests that cover various scenarios in the checkout flow.
Test a specific component
Use the path to a component, such as 'src/components/UserProfile.tsx', to generate tests that ensure its functionality works as expected.
How to install Generate Playwright Tests
View source1. Install with the skills CLI
npx skills add alirezarezvani/claude-skills/generate --agent claude-code2. 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 alirezarezvaniGenerate Playwright Tests
Generate production-ready Playwright tests from a user story, URL, component name, or feature description.
Input
$ARGUMENTS contains what to test. Examples:
"user can log in with email and password""the checkout flow""src/components/UserProfile.tsx""the search page with filters"
Steps
1. Understand the Target
Parse $ARGUMENTS to determine:
- User story: Extract the behavior to verify
- Component path: Read the component source code
- Page/URL: Identify the route and its elements
- Feature name: Map to relevant app areas
2. Explore the Codebase
Use the Explore subagent to gather context:
- Read
playwright.config.tsfortestDir,baseURL,projects - Check existing tests in
testDirfor patterns, fixtures, and conventions - If a component path is given, read the component to understand its props, states, and interactions
- Check for existing page objects in
pages/ - Check for existing fixtures in
fixtures/ - Check for auth setup (
auth.setup.tsorstorageStateconfig)
3. Select Templates
Check templates/ in this plugin for matching patterns:
| If testing... | Load template from |
|---|---|
| Login/auth flow | ../pw/templates/auth/login.md |
| CRUD operations | templates/crud/ |
| Checkout/payment | templates/checkout/ |
| Search/filter UI | templates/search/ |
| Form submission | templates/forms/ |
| Dashboard/data | templates/dashboard/ |
| Settings page | templates/settings/ |
| Onboarding flow | templates/onboarding/ |
| API endpoints | templates/api/ |
| Accessibility | templates/accessibility/ |
Adapt the template to the specific app — replace {{placeholders}} with actual selectors, URLs, and data.
4. Generate the Test
Follow these rules:
Structure:
import { test, expect } from '@playwright/test';
// Import custom fixtures if the project uses them
test.describe('Feature Name', () => {
// Group related behaviors
test('should <expected behavior>', async ({ page }) => {
// Arrange: navigate, set up state
// Act: perform user action
// Assert: verify outcome
});
});
Locator priority (use the first that works):
getByRole()— buttons, links, headings, form elementsgetByLabel()— form fields with labelsgetByText()— non-interactive text contentgetByPlaceholder()— inputs with placeholder textgetByTestId()— when semantic options aren't available
Assertions — always web-first:
// GOOD — auto-retries
await expect(page.getByRole('heading')).toBeVisible();
await expect(page.getByRole('alert')).toHaveText('Success');
// BAD — no retry
const text = await page.textContent('.msg');
expect(text).toBe('Success');
Never use:
page.waitForTimeout()page.$(selector)orpage.$$(selector)- Bare CSS selectors unless absolutely necessary
page.evaluate()for things locators can do
Always include:
- Descriptive test names that explain the behavior
- Error/edge case tests alongside happy path
- Proper
awaiton every Playwright call baseURL-relative navigation (page.goto('/')notpage.goto('http://...'))
5. Match Project Conventions
- If project uses TypeScript → generate
.spec.ts - If project uses JavaScript → generate
.spec.jswithrequire()imports - If project has page objects → use them instead of inline locators
- If project has custom fixtures → import and use them
- If project has a test data directory → create test data files there
6. Generate Supporting Files (If Needed)
- Page object: If the test touches 5+ unique locators on one page, create a page object
- Fixture: If the test needs shared setup (auth, data), create or extend a fixture
- Test data: If the test uses structured data, create a JSON file in
test-data/
7. Verify
Run the generated test:
npx playwright test <generated-file> --reporter=list
If it fails:
- Read the error
- Fix the test (not the app)
- Run again
- If it's an app issue, report it to the user
Output
- Generated test file(s) with path
- Any supporting files created (page objects, fixtures, data)
- Test run result
- Coverage note: what behaviors are now tested
Frequently asked questions about Generate Playwright Tests
Similar skills
Rhino 3D Scripting
Streamline your Rhinoceros 3D scripting tasks.
MVVM Toolkit
Streamline ViewModel development with source generators.
FreeCAD Scripts
Generate Python scripts for FreeCAD automation and modeling.
Azure Architecture Builder
Design and deploy Azure infrastructure using natural language.
Command Development
Streamline your command creation for Claude Code.
Create Cowork Plugin
Easily build and package plugins through guided sessions.
