Configuration Playwright expliquée

Ce chapitre présente en détailplaywright.config.tsles différentes configurations qu'il contient, vous permettant d'ajuster avec flexibilité le comportement des tests en fonction des exigences du projet.


Aperçu du fichier de configuration

playwright.config.tsest le fichier de configuration central de Playwright, où tous les paramètres d'exécution des tests sont définis.

Exemple

// Chemin du fichier : playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  // ===== Configuration de base =====
  testDir: './tests',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: 'html',
  timeout: 30000,

  // ===== Configuration globale partagée =====
  use: {
    baseURL: 'http://localhost:3000',
    trace: 'on-first-retry',
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
  },

  // ===== Projets multi-navigateurs =====
  projects: [
    { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
    { name: 'firefox',  use: { ...devices['Desktop Firefox'] } },
    { name: 'webkit',   use: { ...devices['Desktop Safari'] } },
  ],

  // ===== Serveur Web =====
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    reuseExistingServer: !process.env.CI,
  },
});

Options de configuration de base

Élément de configurationTypeValeur par défautDescription
testDirstringtestsRépertoire où se trouvent les fichiers de test
fullyParallelbooléenfalseIndique s'il faut exécuter tous les tests entièrement en parallèle (y compris les tests au sein d'un même fichier)
workersnombreCœurs CPU / 2Nombre de workers exécutés en parallèle
retriesnombre0Nombre de tentatives pour les tests échoués
timeoutnombre30000Délai d'expiration total par test (millisecondes)
reporterchaîne/tableaulisteType de rapporteur de tests
forbidOnlybooléenfalseÉchouer si test.only() est détecté sur CI
testMatchstring/RegExp*.spec.(ts\|js)Motif de correspondance des fichiers de test
testIgnorestring/RegExp-Motifs de fichiers de test ignorés

Exemple de configuration

Exemple

export default defineConfig({
  // Rechercher les tests dans le répertoire e2e
  testDir: './e2e',

  // Tous les tests entièrement en parallèle
  fullyParallel: true,

  // Allouer automatiquement le nombre de workers
  workers: undefined,

  // Aucune nouvelle tentative en cas d'échec (local) / réessayer 2 fois (CI)
  retries: process.env.CI ? 2 : 0,

  // Utiliser à la fois les rapports en ligne de commande et HTML
  reporter: [
    ['list'],
    ['html', { open: 'never' }],
  ],
});

utiliser la configuration commune

useLa configuration qu'il contient s'applique à tous les tests et projets :

Élément de configurationTypeDescription
baseURLstringURL de base, les chemins relatifs peuvent être utilisés dans les tests (par ex.await page.goto('/login'))
viewport{width, height}Taille de la fenêtre d'affichage du navigateur, par défaut{ width: 1280, height: 720 }
localestringLangue du navigateur, par ex.'zh-CN'、'en-US'
timezonestringFuseau horaire, par ex.'Asia/Shanghai'
colorSchemestringSchéma de couleurs :'light'|'dark'|'no-preference'
geolocation{latitude, longitude}Géolocalisation simulée
permissionsstring[]Autorisations du navigateur accordées (par ex.['geolocation'])
userAgentstringChaîne User-Agent personnalisée
tracestringStratégie de collecte des traces :'on'|'off'|'on-first-retry'
screenshotstringStratégie de capture d'écran :'on'|'off'|'only-on-failure'
videostringStratégie d'enregistrement vidéo :'on'|'off'|'retain-on-failure'
storageStatestringChemin du fichier d'état d'authentification
testIdAttributestringNom de l'attribut testId personnalisé, par défaut'data-testid'
actionTimeoutnombreDélai d'attente pour chaque opération (click, fill)
navigationTimeoutnombreDélai d'attente pour chaque navigation

Configuration de webServer

webServerLa configuration permet à Playwright de démarrer automatiquement votre serveur de développement avant d'exécuter les tests :

Exemple

export default defineConfig({
  webServer: {
    // Commande de démarrage
    command: 'npm run dev',

    // Attendre que cette URL soit accessible avant d'exécuter les tests
    url: 'http://localhost:5173',

    // Durée d'attente du timeout (milliseconds)
    timeout: 120000,

    // S'il faut réutiliser un serveur déjà en cours d'exécution (réutilisation locale possible, redémarrage sur CI)
    reuseExistingServer: !process.env.CI,
  },
});

globalSetup / globalTeardown Hooks globaux

Exécuté une fois avant/après l'exécution de tous les tests, adapté aux opérations telles que l'initialisation de la base de données.

Exemple

export default defineConfig({
  globalSetup: './global-setup.ts',
  globalTeardown: './global-teardown.ts',
});

Exemple

// Chemin du fichier : global-setup.ts
import { FullConfig } from '@playwright/test';

async function globalSetup(config: FullConfig) {
  // Exécuté avant l'exécution de tous les tests
  console.log('Démarrage de la configuration globale...');
  // Par exemple : initialiser la base de données de test, créer des utilisateurs de test, etc.
}

export default globalSetup;
Autres extensions