Latenode

Playwright Headless Browser: Schnelles und zuverlässiges Testtool

Entdecken Sie ein leistungsstarkes Testtool, das Browser-Tests mit einer einheitlichen API für mehrere Browser beschleunigt und Effizienz sowie Zuverlässigkeit steigert.

9 Min. Lesezeit
Playwright-Tests für Chromium, Firefox und WebKit im Headless-Modus

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:

  1. Installieren Sie Playwright: npm init playwright@latest
  2. Konfigurieren Sie Headless-Tests (Standardmodus).
  3. Führen Sie Tests mit einfachen Befehlen in mehreren Browsern aus.
FunktionHerkömmliche TestsHeadless-Tests
GeschwindigkeitLangsamerBis zu 15-mal schneller
RessourcennutzungHochGeringer
Browser-UnterstützungBegrenztChromium, 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:

BrowserWindowsmacOSLinux
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-TypBeispielAnwendungsfall
RollegetByRole('button')Für zugängliche Elemente
LabelgetByLabel('Password')Für Formularfelder
TextgetByText('Sign up')Für sichtbaren Text
TestIdgetByTestId('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:

AufzeichnungstypKonfigurationBester Anwendungsfall
Screenshotsscreenshot: 'only-on-failure'Erfasst den visuellen Zustand bei Testfehlern
Videovideo: 'retain-on-failure'Zeichnet die Testausführung für fehlgeschlagene Workflows auf
Tracetrace: '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:

FunktionVorteil
Visueller Workflow-BuilderVereinfacht die Einrichtung im Vergleich zu herkömmlichen Programmiermethoden
KI-gestützte CodegenerierungErstellt automatisch Playwright-Testskripte
Integrierte DatenbankintegrationVerwaltet Testdaten und Ergebnisse effizient
Multi-Browser-UnterstützungFü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
TestaspektLeistungsvergleich
Geschwindigkeit beim Web Scraping56,21 Sekunden (Headless) gegenüber 73,77 Sekunden (mit Browseroberfläche) [1]
RessourcennutzungGeringere CPU- und Speichernutzung [1]
Browser-UnterstützungChrome (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:

  1. Installieren Sie Node.js und Playwright mit npm init playwright@latest [9].
  2. Erstellen Sie Ihre erste Testdatei, beispielsweise example.spec.js.
  3. Führen Sie die Tests mit npx playwright test aus [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.

References

FAQ

Frequently Asked Questions

Im Headless-Modus werden Chromium, Firefox oder WebKit ohne sichtbare Benutzeroberfläche ausgeführt. Dadurch sind automatisierte Tests und Scraping schneller möglich – mit derselben einheitlichen API wie bei Browsern mit Benutzeroberfläche.

War das hilfreich? Teile es →

Geschrieben von

Vasiliy Datsenko

Leiter des Kundensupports

Vasiliy Datsenko ist Leiter des Kundensupports bei Latenode und ein produktorientierter Autor zum Thema Automatisierung. Seine Arbeit verbindet Kundengespräche, Workflow-Automatisierungsforschung, KI-Anwendungsfälle und praktische Produktschulungen für Teams, die echte Geschäftsprozesse automatisieren möchten.

Autorenprofil →

Faktencheck von

Oleg Zankov

CEO Latenode, No-code-Experte

Mit einer Philosophie, die auf Innovation, Problemlösung und Benutzererfahrung basiert, konzentriere ich mich darauf, Teams zu befähigen, maßgeschneiderte Integrationen zu erstellen und Arbeitsabläufe einfach und effizient zu automatisieren. Mit umfangreicher Erfahrung in den Bereichen Geschäftsentwicklung, Technologieunternehmertum und Softwareentwicklung erkannte ich den Bedarf an einer zugänglicheren, skalierbareren und anpassungsfähigeren Integrationslösung. So entstand Latenode.com. Mit unserer Plattform können Unternehmen die Macht der Technologie nutzen, ohne umfassende Programmierkenntnisse zu benötigen. Leidenschaftlich daran interessiert, eine Zukunft zu fördern, in der Technologie uns dient und nicht umgekehrt, ist es meine Mission, komplexe Prozesse zu vereinfachen. Ich glaube an die Demokratisierung der Technologie und daran, Teams mit den Werkzeugen auszustatten, um in einer zunehmend digitalen Welt zu innovieren, zu wachsen und erfolgreich zu sein.

Autorenprofil →

Weiterlesen