Extensions Playwright et migration
Ce chapitre présente les fonctionnalités d'extension de l'écosystème Playwright, y compris le mode script de la bibliothèque, les services MCP, les agents de test, et un guide pour migrer d'autres frameworks vers Playwright.
Mode script de Playwright Library
Playwright Library est une bibliothèque autonome d'automatisation de navigateur, adaptée aux scénarios en dehors des exécuteurs de tests.
Installation
npm i playwright
Utilisation typique
Exemple
import { chromium } from 'playwright';
(async () => {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://www.example.com/');
await page.screenshot({ path: 'example.png', fullPage: vrai });
await browser.close();
console.log('Capture d’écran enregistrée dans example.png');
})();
Génération de PDF
Exemple
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com/');
// Générer un PDF (Chromium uniquement)
await page.pdf({
path: 'example.pdf',
format: 'A4',
margin: { top: '20px', bottom: '20px' },
});
await browser.close();
})();
Choisir entre le mode bibliothèque et le lanceur de tests
| Scénario | Recommandation |
|---|---|
| Écrire des tests E2E | Lanceur de tests Playwright |
| Captures d’écran de pages Web, génération de PDF | Bibliothèque Playwright |
| Extraction de données web | Bibliothèque Playwright |
| Scripts d'automatisation ponctuels | Bibliothèque Playwright |
Introduction à Playwright MCP
Le serveur Playwright MCP (Model Context Protocol) permet aux assistants IA de contrôler directement le navigateur.
Installation et configuration de MCP
# 为 Claude Code 添加 Playwright MCP claude mcp add playwright npx @playwright/mcp@latest
Configurez-le dans VS Code ou d'autres clients MCP :
Exemple
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
Comment fonctionne MCP
L'agent IA perçoit le contenu de la page via des instantanés d'accessibilité structurés.
Chaque information d'accessibilité dispose d'unrefidentifiant ref, et l'Agent utilise cette ref pour effectuer des actions telles que cliquer et saisir du texte.
Cette approche ne nécessite pas de captures d'écran ; elle est entièrement basée sur l'interaction avec des données structurées, ce qui est rapide et hautement déterministe.
Playwright Test Agents
Les Test Agents sont des outils de test expérimentaux pilotés par l'IA qui peuvent générer et corriger automatiquement des tests.
| Agent | Fonctionnalité | Méthode de déclenchement |
|---|---|---|
| Planner | Explorer automatiquement l'application et générer un plan de test Markdown | Piloté par un agent LLM |
| Generator | Convertir le plan de test en code de test Playwright | Piloté par un agent LLM |
| Healer | Exécuter la suite de tests et corriger automatiquement les tests en échec | Piloté par un agent LLM |
Initialiser les Test Agents :
# 为 VS Code 初始化 npx playwright init-agents --loop=vscode # 为 Claude Code 初始化 npx playwright init-agents --loop=claude
Aperçu des tests de composants (expérimental)
Playwright permet de monter et tester directement des composants React/Vue sans avoir besoin d'un environnement de page complet.
Exemple
// Monter le composant React
const component = await mount(
<Button title="Submit" />
);
// Vérifier le texte affiché par le composant
await expect(component).toContainText('Submit');
// Cliquer sur le bouton
await component.click();
});
Tests d'accessibilité
Playwright fournit des assertions pour les noms et descriptions accessibles afin d'aider à vérifier l'accessibilité de la page.
Exemple
await expect(page.getByRole('button'))
.toHaveAccessibleName('Envoyer le formulaire');
// Vérifier que l'élément a une description accessible
await expect(page.getByLabel('Nom d'utilisateur'))
.toHaveAccessibleDescription('Veuillez saisir une combinaison alphanumérique de 4-16 caractères');
Migration depuis d'autres frameworks
Migration depuis Puppeteer
Playwright et Puppeteer partagent les capacités du protocole Chrome DevTools, ce qui rend la migration relativement simple.
| Puppeteer | Playwright |
|---|---|
puppeteer.launch() | chromium.launch() |
page.waitForSelector() | Pas nécessaire (attente automatique) oupage.locator() |
page.$(selector) | page.locator(selector) |
page.evaluate() | page.evaluate()(identique) |
page.setRequestInterception() | page.route() |
Migration depuis Cypress
Le concept de Locator de Playwright est similaire au chaînage de requêtes de Cypress, mais il présente quelques différences clés :
| Cypress | Playwright |
|---|---|
cy.get('.class') | page.locator('.class') |
cy.contains('text') | page.getByText('text') |
cy.get('[data-cy="btn"]') | page.getByTestId('btn')avectestIdAttribute: 'data-cy') |
cy.intercept() | page.route() |
cy.wait() | Pas nécessaire (attente automatique) |
Migration depuis Selenium
Selenium utilise le protocole WebDriver, tandis que Playwright contrôle directement les protocoles des navigateurs, ce qui donne des styles d'API très différents.
| Selenium | Playwright |
|---|---|
driver.findElement(By.id('x')) | page.locator('#x') |
driver.get(url) | page.goto(url) |
element.click() | locator.click() |
WebDriverWait | Pas nécessaire (attente automatique intégrée) |
new RemoteWebDriver() | chromium.connect(url) |
Autres extensionsConseil de migration : n'essayez pas de migrer tous les tests en une seule étape.
Choisissez d'abord les tests pour une ou deux fonctionnalités principales et réécrivez-les avec Playwright. Une fois la vérification réussie, migrez progressivement les tests restants.