Playwright ist ein Testautomatisierungs-Framework, das Browser-Tests mit einer einheitlichen API für Chromium, Firefox und WebKit vereinfacht. Es ist schnell, zuverlässig und weit verbreitet – mit über 1,2 Millionen wöchentlichen Downloads.
Die wichtigsten Vorteile:
- Geschwindigkeit: Im Headless-Modus laufen Tests 2- bis 15-mal schneller als bei herkömmlichen Tests.
- Effizienz: Reduziert die CPU- und Speichernutzung.
- Multi-Browser-Unterstützung: Funktioniert nahtlos mit Chromium, Firefox und WebKit.
- CI/CD-Integration: Lässt sich einfach in Automatisierungspipelines integrieren.
Schnelle Einrichtung:
- Installieren Sie Playwright:
npm init playwright@latest - Konfigurieren Sie Headless-Tests (Standardmodus).
- Führen Sie Tests mit einfachen Befehlen in mehreren Browsern aus.
| Funktion | Herkömmliche Tests | Headless-Tests |
|---|---|---|
| Geschwindigkeit | Langsamer | Bis zu 15-mal schneller |
| Ressourcennutzung | Hoch | Geringer |
| Browser-Unterstützung | Begrenzt | Chromium, Firefox, WebKit |
Mit Playwright können Sie dynamische Inhalte effizient testen, mehrere Browser verarbeiten und sogar Geräte sowie Netzwerkbedingungen simulieren. Bereit für den Einstieg? Sehen wir uns an, wie Sie Playwright einrichten und Ihren ersten Test erstellen.
Playwright Tutorial: Vollständiger Kurs 2024
Einstieg in Playwright
Befolgen Sie diese Schritte, um Playwright im Headless-Modus einzurichten und mit dem Testen zu beginnen.
Installationsschritte
Bevor Sie starten, stellen Sie sicher, dass Ihr System diese Anforderungen erfüllt:
- Node.js: v18, v20 oder v22
- Windows: 10/Server 2016 oder neuer
- macOS: 13 Ventura oder neuer
- Linux: Debian 12, Ubuntu 22.04 oder Ubuntu 24.04 (x86-64/arm64)
Um Playwright schnell einzurichten, führen Sie Folgendes aus:
npm init playwright@latest
Dieser Befehl initialisiert Playwright und erstellt:
- Eine Konfigurationsdatei
- Beispiel-Testskripte
- Einen GitHub-Action-Workflow
- Eine grundlegende Testvorlage
Sie bevorzugen eine manuelle Installation? Verwenden Sie die folgenden Befehle:
npm i -D @playwright/test
npx playwright install
Headless-Modus einrichten
Playwright führt Tests standardmäßig im Headless-Modus aus und zeigt die Ergebnisse direkt im Terminal an. Damit alles aktuell bleibt, verwenden Sie:
npm install -D @playwright/test@latest
npx playwright install --with-deps
Multi-Browser-Tests einrichten
Tests in mehreren Browsern sind mit Playwright einfach. Aktualisieren Sie Ihre Datei playwright.config.ts wie folgt:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
{ name: 'firefox', use: { ...devices['Desktop Firefox'] } },
{ name: 'webkit', use: { ...devices['Desktop Safari'] } },
],
});
So führen Sie Tests aus:
- Alle Browser:
npx playwright test - Einzelner Browser:
npx playwright test --project webkit - Mehrere Browser:
npx playwright test --project webkit --project firefox
Browser-Kompatibilität von Playwright:
| Browser | Windows | macOS | Linux |
|---|---|---|---|
| Chromium | ✓ | ✓ | ✓ |
| Firefox | ✓ | ✓ | ✓ |
| WebKit | ✓ | ✓ | ✓ |
Bei der Installation von Playwright werden die benötigten Browserversionen automatisch heruntergeladen und lokal gespeichert. Das sorgt für konsistente Testumgebungen auf unterschiedlichen Plattformen und Geräten.
Nachdem Playwright eingerichtet ist, können Sie Ihren ersten Test erstellen.
Ihren ersten Test erstellen
Nachdem Sie Playwright eingerichtet haben, erfahren Sie hier, wie Sie Ihren ersten Test erstellen und ausführen.
Beispiel für ein grundlegendes Testskript
Erstellen Sie zunächst eine Datei namens first-test.spec.ts und fügen Sie den folgenden Code hinzu. Führen Sie den Test anschließend mit dem Befehl npx playwright test first-test.spec.ts aus:
import { test, expect } from '@playwright/test';
test('basic navigation test', async ({ page }) => {
await page.goto('https://playwright.dev');
const title = await page.title();
await expect(title).toBe('Playwright');
});
Anleitung zur Elementinteraktion
So können Sie in Playwright mit Elementen interagieren:
test('element interactions', async ({ page }) => {
// Fill out a text field
await page.getByRole('textbox').fill('[email protected]');
// Click a button
await page.getByRole('button', { name: 'Submit' }).click();
// Check a checkbox
await page.getByLabel('Remember me').check();
// Select an option from a dropdown
await page.getByLabel('Country').selectOption('United States');
});
Hier sind einige gängige Locator-Methoden, die Sie verwenden können:
| Locator-Typ | Beispiel | Anwendungsfall |
|---|---|---|
| Rolle | getByRole('button') | Für zugängliche Elemente |
| Label | getByLabel('Password') | Für Formularfelder |
| Text | getByText('Sign up') | Für sichtbaren Text |
| TestId | getByTestId('submit-button') | Für benutzerdefinierte Attribute |
Methoden zur Testverifizierung
Damit Ihre Tests zuverlässig sind, verwenden Sie Assertions zur Überprüfung der Ergebnisse:
test('verification examples', async ({ page }) => {
// Check if an element is visible
await expect(page.getByRole('heading')).toBeVisible();
// Verify the text content of an element
await expect(page.getByTestId('status')).toHaveText('Success');
// Confirm the URL after navigation
await expect(page).toHaveURL(/.*dashboard/);
// Ensure a button is enabled
await expect(page.getByRole('button')).toBeEnabled();
});
Für das Debugging können Sie Playwright mit diesem Befehl im UI-Modus ausführen:
npx playwright test --ui
Playwright führt jeden Test in einem separaten Browserkontext aus und gewährleistet so jedes Mal eine saubere Ausgangsbasis. Diese Isolierung verhindert Wechselwirkungen zwischen Tests und sorgt im Headless-Modus für eine schnelle und effiziente Ausführung.
sbb-itb-23997f1
Erweiterte Testfunktionen
Playwright erweitert grundlegende Testfunktionen um Tools, die die Zuverlässigkeit steigern und Testszenarien erweitern.
Dynamische Inhalte testen
Playwright vereinfacht das Testen dynamischer Webinhalte durch integrierte Wartefunktionen und weborientierte Assertions. Es stellt sicher, dass Elemente für Interaktionen bereit sind, sodass keine manuellen Timeouts erforderlich sind, die häufig zu unzuverlässigen Tests führen [2].
So können Sie dynamische Inhalte effektiv testen:
// Wait for API response before proceeding
await page.waitForResponse(response =>
response.url().includes('/api/data') &&
response.status() === 200
);
// Wait for dynamic content updates
await page.waitForFunction(() => {
const element = document.querySelector('.dynamic-content');
return element && element.textContent.includes('Updated');
});
Bei sporadischen Netzwerkproblemen können Sie Wiederholungsmechanismen ergänzen:
// Retry mechanism for flaky elements
const retryOptions = {
timeout: 30000,
intervals: [1000, 2000, 5000]
};
await page.waitForSelector('.loading-content', retryOptions);
Als Nächstes sehen wir uns an, wie Playwright Geräteemulation und die Simulation von Netzwerkbedingungen unterstützt.
Geräte- und Netzwerktests
Playwright umfasst eine integrierte Gerätedatenbank zur Emulation verschiedener Geräte. Diese Funktion hilft beim Testen unterschiedlicher Bildschirmgrößen und User-Agent-Konfigurationen [5][6].
Hier ist ein Beispiel für Geräteemulation:
const iPhone = playwright.devices['iPhone 13'];
const context = await browser.newContext({
...iPhone,
locale: 'en-US',
geolocation: { longitude: -122.084, latitude: 37.422 },
permissions: ['geolocation']
});
Zum Testen von Netzwerkbedingungen können Sie Route-Handler verwenden:
// Simulate slow network conditions
await page.route('**/*.{jpg,png,jpeg}', route => {
return new Promise(resolve => {
setTimeout(() => {
route.continue();
}, 5000); // 5-second delay
});
});
// Mock API responses
await page.route('/api/data', route => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ status: 'success' })
});
});
Optionen zur Testaufzeichnung
Playwright unterstützt die Aufzeichnung von Artefakten wie Screenshots, Videos und Traces, die beim Debugging helfen. Diese Optionen können Sie in Ihrer Datei playwright.config.js konfigurieren:
| Aufzeichnungstyp | Konfiguration | Bester Anwendungsfall |
|---|---|---|
| Screenshots | screenshot: 'only-on-failure' | Erfasst den visuellen Zustand bei Testfehlern |
| Video | video: 'retain-on-failure' | Zeichnet die Testausführung für fehlgeschlagene Workflows auf |
| Trace | trace: 'on-first-retry' | Erstellt detaillierte Protokolle für das Debugging |
So aktivieren Sie diese Funktionen:
// playwright.config.js
module.exports = {
use: {
screenshot: 'only-on-failure',
video: 'retain-on-failure',
trace: 'on-first-retry'
}
};
„Playwright wartet darauf, dass Elemente ausführbar sind, bevor Aktionen durchgeführt werden ... dadurch entfällt die Notwendigkeit künstlicher Timeouts – der Hauptursache für instabile Tests.“ – Playwright-Dokumentation [2]
Alle aufgezeichneten Artefakte werden im Verzeichnis test-results gespeichert und liefern wertvolle Erkenntnisse für die Fehlerbehebung. Videos werden automatisch gespeichert, wenn der Browserkontext geschlossen wird [7].
Testleistung optimieren
Die Optimierung der Testleistung in Playwright umfasst den intelligenten Einsatz paralleler Ausführung, ein effektives Management von Browserkontexten und durchdachte Wiederholungsstrategien. Diese Methoden sorgen dafür, dass Tests effizient laufen, ohne die Zuverlässigkeit zu beeinträchtigen.
Tests parallel ausführen
Playwright ermöglicht die Ausführung von Tests über mehrere Worker-Prozesse hinweg. Dadurch kann die Dauer einer Testsuite erheblich reduziert werden. Sie können die parallele Ausführung in playwright.config.ts konfigurieren:
export default {
fullyParallel: true,
workers: 4,
maxFailures: 5
};
Innerhalb einer Testdatei können Sie die parallele Ausführung wie folgt aktivieren:
test.describe.configure({ mode: 'parallel' });
test.describe('User Authentication', () => {
test('login flow', async ({ page }) => {
// Test implementation
});
test('registration flow', async ({ page }) => {
// Test implementation
});
});
Um Datenkonflikte zwischen Workern zu vermeiden, verwenden Sie eindeutige Kennungen:
const testId = `user_${process.env.TEST_WORKER_INDEX}_${Date.now()}`;
const userEmail = `test_${testId}@example.com`;
Sobald die Parallelisierung eingerichtet ist, besteht der nächste Schritt darin, Browserkontexte effizient zu verwalten.
Browserkontext-Management
Separate Browserkontexte sorgen für isolierte Testumgebungen, ähnlich wie Inkognito-Profile. Dadurch bleiben Tests unabhängig und Statuskonflikte werden verhindert.
Hier ist ein Beispiel für das Erstellen und Verwenden eines Browserkontexts:
const context = await browser.newContext({
viewport: { width: 1280, height: 720 },
userAgent: 'Playwright/1.32.0',
storageState: './auth.json'
});
await test.step('Verify dashboard', async () => {
const page = await context.newPage();
await page.goto('https://app.example.com/dashboard');
// Test implementation
});
await context.close();
Zu den gängigen Strategien für Browserkontexte gehören:
- Neuer Kontext pro Test: Stellt sicher, dass jeder Test über eine eigene isolierte Umgebung verfügt.
- Gemeinsamer Authentifizierungskontext: Reduziert wiederholte Login-Schritte durch die Wiederverwendung von Authentifizierungsdaten.
- Multi-User-Tests: Simuliert Interaktionen mehrerer Nutzer gleichzeitig.
Nachdem saubere und isolierte Umgebungen sichergestellt sind, liegt der nächste Fokus auf der Behandlung vorübergehender Fehler mit Wiederholungsstrategien.
Strategien für Testwiederholungen
Wiederholungen können bei instabilen Tests helfen, die durch Timing-Probleme oder eine instabile Umgebung verursacht werden. Sie können Wiederholungen in der Playwright-Konfigurationsdatei festlegen:
export default {
retries: process.env.CI ? 2 : 0,
expect: {
timeout: 10000,
toPass: { intervals: [1000, 2000, 5000] }
}
};
Für Assertions, die möglicherweise mehrere Versuche benötigen, verwenden Sie Polling:
await expect
.poll(async () => {
const element = page.locator('.dynamic-content');
return await element.textContent();
}, {
intervals: [1000, 2000, 10000],
timeout: 60000
})
.toBe('Expected Value');
„Wiederholungen erhöhen zwar die Zuverlässigkeit von Tests, ein übermäßiger Einsatz kann jedoch Probleme wie Timeouts und Race Conditions verschleiern. Für stabile Tests ist es entscheidend, die Ursachen zu beheben, Wiederholungen gezielt mit Einschränkungen einzusetzen und Daten zu instabilen Mustern zu protokollieren.“ – Cerosh Jacob [8]
Um sicherzustellen, dass die Seite vollständig geladen ist, bevor Sie Ihre Tests ausführen:
await page.waitForLoadState('networkidle', { timeout: 5000 });
await page.waitForSelector('.content-ready');
Integration von Playwright und Latenode
Die Integration von Playwright mit der Low-Code-Plattform von Latenode vereinfacht Webtests und Workflow-Automatisierung. Mit dieser Kombination können Teams fortschrittliche Tests erstellen, ohne tiefgehende Programmierkenntnisse zu benötigen.
Latenode ergänzt die Funktionen von Playwright, indem es die Automatisierung auf umfassendere Workflow-Anforderungen ausweitet.
Überblick über Latenode
Latenode ist eine Low-Code-Plattform für Integration und Workflow-Automatisierung, die Headless-Browser-Technologie nutzt. Der visuelle Workflow-Builder erleichtert das Erstellen und Verwalten automatisierter Testumgebungen, ohne komplexen Code schreiben zu müssen.
Hier ist ein Beispiel dafür, wie die Browserautomatisierung von Latenode konfiguriert werden kann:
// Example of a Latenode workflow configuration
const workflowConfig = {
browserAutomation: {
viewport: { width: 1920, height: 1080 },
headless: true,
scenarios: ['login', 'data-extraction', 'form-submission']
}
};
Vorteile der Integration
Die Kombination von Playwright mit Latenode bietet mehrere technische Vorteile:
| Funktion | Vorteil |
|---|---|
| Visueller Workflow-Builder | Vereinfacht die Einrichtung im Vergleich zu herkömmlichen Programmiermethoden |
| KI-gestützte Codegenerierung | Erstellt automatisch Playwright-Testskripte |
| Integrierte Datenbankintegration | Verwaltet Testdaten und Ergebnisse effizient |
| Multi-Browser-Unterstützung | Führt Tests in Chromium, Firefox und WebKit aus |
Diese Integration verbessert Test-Workflows und optimiert Automatisierungsprozesse.
Anwendungsfälle für die Automatisierung
Diese Kombination unterstützt eine Vielzahl praktischer Automatisierungsanwendungen. Zum Beispiel:
// Example of a multi-browser test workflow
async function crossPlatformTest() {
const workflow = await latenode.createWorkflow({
name: 'E2E Testing Suite',
browser: playwright.chromium,
integrations: ['slack', 'jira']
});
await workflow.addStep({
type: 'ui-test',
script: async ({ page }) => {
await page.goto('https://app.example.com');
await page.fill('#username', process.env.TEST_USER);
await page.click('#submit');
}
});
}
Für Tests im großen Maßstab unterstützt Latenodes Prime-Plan ($297/Monat) bis zu 1,5 Millionen Workflow-Ausführungen. Dieser Plan eignet sich ideal für Teams, die fortschrittliche Funktionen für die Zusammenarbeit und detailliertes Reporting benötigen.
Zusätzlich helfen die integrierten Datenbankfunktionen von Latenode Teams dabei, Testdaten und Ergebnisse ohne zusätzliche Infrastruktur zu verwalten. Automatisiertes Reporting und Analysen erleichtern es, Trends zu erkennen und Teststrategien gezielt zu optimieren.
Fazit
Playwright bietet eine Reihe fortschrittlicher Funktionen und Performance-Verbesserungen, die es zu einer herausragenden Wahl für automatisierte Tests machen. Hier ist eine kurze Zusammenfassung der wichtigsten Vorteile.
Zentrale Vorteile
Die Headless-Browser-Tests von Playwright steigern die Performance deutlich, da unnötige Rendering-Aufgaben übersprungen werden. Tests zeigen, dass der Headless-Modus 2- bis 15-mal schneller laufen kann als herkömmliche Browser-Tests [3].
Zu den wichtigsten Performance-Vorteilen gehören:
- Schnellere Testausführung
- Geringerer Ressourcenverbrauch
- Höhere Effizienz in CI/CD-Pipelines
| Testaspekt | Leistungsvergleich |
|---|---|
| Geschwindigkeit beim Web Scraping | 56,21 Sekunden (Headless) gegenüber 73,77 Sekunden (mit Browseroberfläche) [1] |
| Ressourcennutzung | Geringere CPU- und Speichernutzung [1] |
| Browser-Unterstützung | Chrome (64,16 %), Safari (19,62 %), Edge (4,87 %) [12] |
Diese Vorteile machen Playwright in Kombination mit den zuvor beschriebenen Einrichtungs- und Teststrategien zu einem leistungsstarken Tool für skalierbare und effiziente Automatisierung.
So starten Sie
Die Performance und Skalierbarkeit von Playwright machen es zu einer ausgezeichneten Wahl für moderne Test-Workflows. Wie Arjun Attam, Senior Product Manager bei Microsoft, erklärt:
„Automatisierte End-to-End-Tests sind wichtiger geworden als je zuvor. Teams veröffentlichen schneller und entwickeln Anwendungen, die auf einer wachsenden Anzahl von Geräten laufen. Diese steigende Geschwindigkeit und die zunehmende Zahl an Web-Zielumgebungen setzen den Testprozess enorm unter Druck – Automatisierung ist entscheidend.“ [10]
So beginnen Sie mit Playwright für Headless-Tests:
- Installieren Sie Node.js und Playwright mit
npm init playwright@latest[9]. - Erstellen Sie Ihre erste Testdatei, beispielsweise
example.spec.js. - Führen Sie die Tests mit
npx playwright testaus [4].
Für eine nahtlose Integration verbinden Sie Playwright über Tools wie Jenkins oder GitHub Actions mit Ihrer CI/CD-Pipeline [9]. Die einheitliche API ermöglicht konsistente Tests in Chrome, Firefox und WebKit, ohne browserspezifische Codeänderungen zu benötigen [12].
Der Headless-Modus von Playwright überzeugt besonders in performanceintensiven Umgebungen und CI/CD-Pipelines, in denen schnelles Feedback entscheidend ist [11]. Dank der Fähigkeit, mehrere Browserinstanzen effizient zu verwalten, ist Playwright eine erstklassige Wahl für umfangreiche Testprozesse.


