playwright-expert
Jeffallan/claude-skills
Úsalo al escribir pruebas de extremo a extremo (E2E) con Playwright, al configurar la infraestructura de pruebas o al depurar pruebas de navegador inestables. Recurre a él para la automatización del navegador, las pruebas E2E, el modelo de objetos de página (Page Object Model), la inestabilidad de las pruebas y las pruebas visuales. Palabras clave: Playwright, E2E, pruebas de navegador, automatización, Page Object.
...Expandir todoAcerca de playwright-expert
La habilidad «playwright-expert » está diseñada para ayudar a escribir y gestionar pruebas de extremo a extremo (E2E) utilizando el marco Playwright. Resuelve retos habituales como la configuración de la infraestructura de pruebas, la depuración de pruebas inestables y la garantía de una automatización del navegador fácil de mantener. Al utilizar esta habilidad, los usuarios pueden optimizar el proceso de creación de pruebas robustas, fiables y rápidas para aplicaciones web, lo cual es fundamental para los flujos de trabajo de CI/CD y las pruebas continuas. También se centra en mejorar la calidad y la facilidad de mantenimiento de las pruebas, ayudando a los probadores a abordar problemas como el comportamiento inestable del navegador, los cuellos de botella en el rendimiento y los problemas de integración con diversos servicios web.
Entre las principales características de la habilidad «playwright-expert » se incluyen conocimientos especializados en patrones del Modelo de Objetos de Página (POM), simulación de API, pruebas de regresión visual y configuración de pruebas para Playwright. La habilidad ayuda a los usuarios a implementar las mejores prácticas, como aprovechar la espera automática para evitar tiempos de espera arbitrarios, escribir pruebas independientes y utilizar selectores basados en roles para garantizar ejecuciones de pruebas fiables. Además, esta habilidad ofrece recomendaciones para gestionar la depuración, habilitar trazas y capturas de pantalla para un análisis rápido de las pruebas, y la ejecución en paralelo de las pruebas para optimizar el rendimiento.
Esta habilidad está dirigida principalmente a ingenieros sénior de automatización de control de calidad, especialmente a aquellos con amplia experiencia en pruebas de navegadores y en Playwright. Resulta muy útil para los usuarios responsables de crear infraestructura de pruebas, depurar pruebas inestables, implementar patrones POM y realizar simulaciones de API y pruebas de regresión visual. Los desarrolladores y probadores que trabajen en pruebas de extremo a extremo para aplicaciones web, especialmente en entornos de CI/CD, encontrarán esta habilidad de gran utilidad.
Preguntas frecuentes
¿Cómo configuro Playwright para las pruebas de extremo a extremo?
Puedes configurar Playwright siguiendo las directrices de configuración del documento «references/configuration.md», que incluye la configuración de playwright.config.ts para una ejecución correcta de las pruebas.
¿Qué es el modelo de objeto de página (POM) y cómo ayuda en las pruebas?
El Modelo de Objeto de Página es un patrón de diseño para crear clases de prueba que representan páginas web. Ayuda a organizar y mantener las pruebas al proporcionar una ubicación central para las interacciones con las páginas, lo que hace que las pruebas sean más legibles y fáciles de mantener.
¿Puedo integrar esta habilidad en mi canalización de CI/CD?
Sí, esta habilidad está diseñada teniendo en cuenta la integración con CI/CD. Las pruebas escritas con Playwright se pueden integrar fácilmente en tu pipeline de CI/CD, lo que garantiza pruebas continuas y ciclos de retroalimentación más rápidos.
¿Hay que tener en cuenta algún aspecto relacionado con el rendimiento al utilizar Playwright?
Se recomienda ejecutar las pruebas en paralelo para optimizar su rendimiento. Playwright también admite la espera automática, lo que reduce los tiempos de espera innecesarios y mejora la eficiencia general de las pruebas.
¿Existe alguna restricción en cuanto a los selectores de pruebas en esta habilidad?
Sí, se aconseja evitar basarse en selectores inestables, como los nombres de clases CSS. En su lugar, debes utilizar selectores basados en roles siempre que sea posible para garantizar que las pruebas sean estables y fáciles de mantener.
Playwright Expert
E2E testing specialist with deep expertise in Playwright for robust, maintainable browser automation.
Core Workflow
- Analyze requirements - Identify user flows to test
- Setup - Configure Playwright with proper settings
- Write tests - Use POM pattern, proper selectors, auto-waiting
- Debug - Run test → check trace → identify issue → fix → verify fix
- Integrate - Add to CI/CD pipeline
Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
|---|---|---|
| Selectors | references/selectors-locators.md | Writing selectors, locator priority |
| Page Objects | references/page-object-model.md | POM patterns, fixtures |
| API Mocking | references/api-mocking.md | Route interception, mocking |
| Configuration | references/configuration.md | playwright.config.ts setup |
| Debugging | references/debugging-flaky.md | Flaky tests, trace viewer |
Constraints
MUST DO
- Use role-based selectors when possible
- Leverage auto-waiting (don't add arbitrary timeouts)
- Keep tests independent (no shared state)
- Use Page Object Model for maintainability
- Enable traces/screenshots for debugging
- Run tests in parallel
MUST NOT DO
- Use
waitForTimeout()(use proper waits) - Rely on CSS class selectors (brittle)
- Share state between tests
- Ignore flaky tests
- Use
first(),nth()without good reason
Code Examples
Selector: Role-based (correct) vs CSS class (brittle)
// ✅ Role-based selector — resilient to styling changesawait page.getByRole('button', { name: 'Submit' }).click();await page.getByLabel('Email address').fill('[email protected]');// ❌ CSS class selector — breaks on refactorawait page.locator('.btn-primary.submit-btn').click();await page.locator('.email-input').fill('[email protected]');
Page Object Model + Test File
// pages/LoginPage.tsimport { type Page, type Locator } from '@playwright/test';export class LoginPage { readonly page: Page; readonly emailInput: Locator; readonly passwordInput: Locator; readonly submitButton: Locator; readonly errorMessage: Locator; constructor(page: Page) { this.page = page; this.emailInput = page.getByLabel('Email address'); this.passwordInput = page.getByLabel('Password'); this.submitButton = page.getByRole('button', { name: 'Sign in' }); this.errorMessage = page.getByRole('alert'); } async goto() { await this.page.goto('/login'); } async login(email: string, password: string) { await this.emailInput.fill(email); await this.passwordInput.fill(password); await this.submitButton.click(); }}
// tests/login.spec.tsimport { test, expect } from '@playwright/test';import { LoginPage } from '../pages/LoginPage';test.describe('Login', () => { let loginPage: LoginPage; test.beforeEach(async ({ page }) => { loginPage = new LoginPage(page); await loginPage.goto(); }); test('successful login redirects to dashboard', async ({ page }) => { await loginPage.login('[email protected]', 'correct-password'); await expect(page).toHaveURL('/dashboard'); }); test('invalid credentials shows error', async () => { await loginPage.login('[email protected]', 'wrong-password'); await expect(loginPage.errorMessage).toBeVisible(); await expect(loginPage.errorMessage).toContainText('Invalid credentials'); });});
Debugging Workflow for Flaky Tests
// 1. Run failing test with trace enabled// playwright.config.tsuse: { trace: 'on-first-retry', screenshot: 'only-on-failure',}// 2. Re-run with retries to capture trace// npx playwright test --retries=2// 3. Open trace viewer to inspect timeline// npx playwright show-trace test-results/.../trace.zip// 4. Common fix — replace arbitrary timeout with proper wait// ❌ Flakyawait page.waitForTimeout(2000);await page.getByRole('button', { name: 'Save' }).click();// ✅ Reliable — waits for element stateawait page.getByRole('button', { name: 'Save' }).waitFor({ state: 'visible' });await page.getByRole('button', { name: 'Save' }).click();// 5. Verify fix — run test 10x to confirm stability// npx playwright test --repeat-each=10
Output Templates
When implementing Playwright tests, provide:
- Page Object classes
- Test files with proper assertions
- Fixture setup if needed
- Configuration recommendations
Knowledge Reference
Playwright, Page Object Model, auto-waiting, locators, fixtures, API mocking, trace viewer, visual comparisons, parallel execution, CI/CD integration
Documentation
Instalar playwright-expert
Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona el repositorio y copia los archivos de la habilidad a tu proyecto.
git clone https://github.com/Jeffallan/claude-skills/blob/main/skills/playwright-expert/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copiar





Hogar
