Qu'est-ce que Playwright Test
Playwright est une bibliothèque Node.js pour automatiser Chromium, Firefox et WebKit avec une seule API. Playwright est conçu pour permettre une automatisation Web multi-navigateurs évolutive, fiable et rapide. Étant donné que Microsoft Edge adopte aussi la plate-forme Web open source Chromium, Playwright est également capable d'automatiser Microsoft Edge.
Playwright nécessite Node.js version 12 ou supérieure. Exécutez node -v à partir de la ligne de commande pour vous assurer que vous disposez d'une version compatible de Node.js. Les binaires du navigateur pour Chromium, Firefox et WebKit fonctionnent sous Windows, macOS et Linux.
Comme vous l'avez peut-être entendu, l'équipe Playwright vient d'introduire un tout nouveau lanceur de test conçu à partir de zéro par l'équipe de Playwright spécifiquement pour répondre aux principaux besoins de test de bout en bout tels que :
Installation
Installons Playwright et Playwright Test :
# install les navigateurs supportés
npx playwright install
Premier test
Créez tests/example.spec.js (ou tests/example.spec.ts pour TypeScript) pour définir votre test.const { test, expect } = require('@playwright/test');
test('basic test', async ({ page }) => {
    await page.goto('https://playwright.dev/');
    const title = page.locator('.navbar__inner .navbar__title');
    await expect(title).toHaveText('Playwright');
});
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
    await page.goto('https://playwright.dev/');
    const title = page.locator('.navbar__inner .navbar__title');
    await expect(title).toHaveText('Playwright');
});
Lancez vos tests
Pour aller plus loin
Fichier de configuration
Pour profiter de toutes les fonctionnalités que Playwright a à offrir, vous allez créer un fichier de configuration playwright.config.ts (ou playwright.config.js). Il vous permet d'exécuter des tests dans plusieurs navigateurs configurés comme vous le souhaitez.
Voici un exemple de configuration qui exécute chaque test dans Chromium, Firefox et WebKit, en créant un "projet" pour chaque configuration de navigateur. Il spécifie également deux nouvelles options de traçage.
// playwright.config.js
// @ts-check
const { devices } = require('@playwright/test');
/** @type {import('@playwright/test').PlaywrightTestConfig} */
const config = {
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
use: {
trace: 'on-first-retry',
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
],
};
module.exports = config;
// playwright.config.ts
import { PlaywrightTestConfig, devices } from '@playwright/test';
const config: PlaywrightTestConfig = {
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
use: {
trace: 'on-first-retry',
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
],
};
export default config;
Vous pouvez désormais exécuter des tests dans plusieurs navigateurs par défaut.
Running 5 tests using 5 workers
✓ [chromium] › example.spec.ts:3:1 › basic test (2s)
✓ [firefox] › example.spec.ts:3:1 › basic test (2s)
✓ [webkit] › example.spec.ts:3:1 › basic test (2s)
Utilisez l'option de ligne de commande --project pour exécuter un seul projet.
Running 1 test using 1 worker
✓ [firefox] › example.spec.ts:3:1 › basic test (2s)
Ecriture des assertions
Playwright utilise la bibliothèque expect pour les assertions de test. Il l'étend avec les matchers spécifiques à Playwright pour obtenir une plus grande ergonomie de test.
// example.spec.js
const { test, expect } = require('@playwright/test');
test('my test', async ({ page }) => {
await page.goto('https://playwright.dev/');
// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);
// Expect an attribute "to be strictly equal" to the value.
await expect(page.locator('text=Get Started').first()).toHaveAttribute('href', '/docs/intro');
// Expect an element "to be visible".
await expect(page.locator('text=Learn more').first()).toBeVisible();
await page.click('text=Get Started');
// Expect some text to be visible on the page.
await expect(page.locator('text=Introduction').first()).toBeVisible();
});
// example.spec.ts
import { test, expect } from '@playwright/test';
test('my test', async ({ page }) => {
await page.goto('https://playwright.dev/');
// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);
// Expect an attribute "to be strictly equal" to the value.
await expect(page.locator('text=Get Started').first()).toHaveAttribute('href', '/docs/intro');
// Expect an element "to be visible".
await expect(page.locator('text=Learn more').first()).toBeVisible();
await page.click('text=Get Started');
// Expect some text to be visible on the page.
await expect(page.locator('text=Introduction').first()).toBeVisible();
});
Ligne de commande
Lancer tous les tests
Lancer un test unique
Exécuter un ensemble de fichiers de test
Exécuter les fichiers qui ont my-spec ou my-spec-2 dans le nom de fichier
Lancer le test avec le titre
Exécuter des tests dans une configuration spécifique (project)
Exécuter des tests dans les navigateurs principaux
Désactiver la parallélisation
Choisisez un reporter
Lancer en mode debug
Obtenir de l'aide
HappyAPI utilise Playwright
Tous les tests de HappyAPI sont exécutés avec Playwright.
Avant chaque mise en production, toutes les API sont testées pour garantir la non régression.