generate
alirezarezvani/claude-skills
Générer des tests Playwright. À utiliser lorsque l'utilisateur dit « écrire des tests », « générer des tests », « ajouter des tests pour », « tester ce composant », « test e2e », « créer un test pour », « tester cette page » ou « tester cette fonctionnalité ».
...Développer toutÀ propos de « generate »
Cette compétence, « generate », génère des tests Playwright de bout en bout prêts à être déployés à partir d’une user story, d’une URL, d’un chemin d’accès à un composant ou d’une description de fonctionnalité. Elle résout le problème lié à la rédaction manuelle de tests de navigateur fiables et conformes aux conventions : elle explore le projet existant pour identifier son répertoire de tests, son URL de base, ses fixtures et ses conventions relatives aux objets de page avant de générer quoi que ce soit, de sorte que le résultat s'adapte à la base de code cible plutôt qu'à un modèle générique.
Le workflow analyse ce qu’il faut tester, utilise un sous-agent « Explore » pour lire la configuration Playwright et les tests existants, sélectionne un modèle correspondant (authentification, CRUD, paiement, recherche, formulaires, tableau de bord, paramètres, onboarding, API, accessibilité) et l’adapte avec des sélecteurs et des données réels. Generate Les tests respectent des règles de qualité strictes : un ordre de priorité des localisateurs privilégiant getByRole, getByLabel et d’autres localisateurs sémantiques par rapport au CSS nu ; des assertions à réessai automatique axées sur le Web ; et une interdiction explicite des anti-modèles tels que waitForTimeout, les sélecteurs page.$ et l’utilisation inutile de page.evaluate. Il respecte les conventions du projet concernant TypeScript par rapport à JavaScript, les objets de page et les fixtures, et peut generate prendre en charge les objets de page, les fixtures et les fichiers de données de test lorsque cela est justifié. Enfin, il exécute les tests generate d à l’aide de la CLI Playwright et itère en cas d’échecs.
Il s’adresse aux développeurs web et aux ingénieurs QA qui utilisent Playwright et souhaitent une couverture e2e cohérente et facile à maintenir, generate d dans le style de leur propre projet. Parmi les cas d’utilisation, on peut citer le test des flux de connexion et de paiement, la validation des formulaires, les interfaces utilisateur de recherche et de filtrage, ainsi que le comportement des composants. La compétence est fournie avec un fichier SKILL.md et une bibliothèque patterns.md contenant des exemples concrets de tests pour l’authentification, les opérations CRUD et les flux de validation.
FAQ
Quelles entrées accepte-t-elle ?
Une user story, un chemin d’accès à un fichier de composant, une page ou une URL, ou encore un nom de fonctionnalité — par exemple « l’utilisateur peut se connecter avec son e-mail et son mot de passe » ou « src/components/UserProfile.tsx ».
Quel style de localisation et d’assertion impose-t-elle ?
Il privilégie les localisateurs sémantiques (getByRole, getByLabel, getByText, getByPlaceholder, getByTestId, dans cet ordre) et utilise toujours des assertions avec réessais automatiques « web-first » plutôt que l’extraction manuelle de texte.
Quels anti-modèles évite-t-il ?
Il n’utilise jamais page.waitForTimeout(), les sélecteurs page.$/page.$$, les sélecteurs CSS nus sauf en cas de nécessité absolue, ni page.evaluate() pour des tâches que les localisateurs peuvent effectuer.
Vérifie-t-il les tests qu’il écrit ?
Oui : il exécute le test d’generated avec la commande « npx playwright test
S’adaptera-t-il aux conventions de mon projet ?
Il analyse le fichier playwright.config.ts et les tests existants pour s’adapter à l’utilisation de TypeScript ou de JavaScript, aux objets de page existants, aux fixtures personnalisées et aux répertoires de données de test.
Tous les fichiers
2 fichiers SKILL.md 4,4 Ko Viewpatterns.md 5,7 Ko ViewGenerate 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 themtest.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-retriesawait expect(page.getByRole('heading')).toBeVisible();await expect(page.getByRole('alert')).toHaveText('Success');// BAD — no retryconst 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
Installer generate
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
git clone https://github.com/alirezarezvani/claude-skills/blob/main/engineering-team/playwright-pro/skills/generate/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copier





Maison
