A production-grade end-to-end test framework built with Playwright and TypeScript. It implements the Page Object Model, uses custom fixtures for dependency injection, drives test data from JSON files, and pushes results automatically to Zephyr Scale via a custom reporter. Un framework de tests end-to-end prêt pour la production, construit avec Playwright et TypeScript. Il implémente le Page Object Model, utilise des fixtures personnalisées pour l'injection de dépendances, pilote les données depuis des fichiers JSON, et pousse les résultats automatiquement vers Zephyr Scale via un reporter personnalisé.
test.extend() — no manual instantiation, no shared state between tests.
Les page objects sont injectés dans les tests via test.extend() — pas d'instanciation manuelle, pas d'état partagé entre tests.
data/testData.json. Environment-specific configs are injected via BASE_URL env variable.
Toutes les données de test (utilisateurs, URLs, valeurs attendues) vivent dans data/testData.json. Les configs par environnement sont injectées via la variable BASE_URL.
screenshot: 'only-on-failure' in playwright.config.ts — zero extra code in test files.
Configuré via screenshot: 'only-on-failure' dans playwright.config.ts — aucun code supplémentaire dans les tests.
import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ reporter: [['html', { outputFolder: 'playwright-report', open: 'always' }]], testDir: './tests', timeout: 30 * 1000, use: { headless: false, baseURL: process.env.BASE_URL, screenshot: 'only-on-failure', }, projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] }, }], });
name: Playwright Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '20' } - run: npm ci - run: npx playwright install --with-deps - run: npx playwright test env: BASE_URL: ${{ secrets.BASE_URL }} ZEPHYR_TOKEN: ${{ secrets.ZEPHYR_TOKEN }} - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report path: playwright-report/