Zum Inhalt springen

E2E Test Isolation

E2E-Tests sind per Definition Integrationstests. Vollständige Isolation macht sie wertlos. Aber ohne jede Isolation werden sie zum Chaos-Faktor.

Zu viel Isolation (Mocks): Man testet nur den Mock, nicht das System. Wenn sich das Backend ändert, bemerken die Tests das nicht.

Zu wenig Isolation (Shared State): Tests beeinflussen sich gegenseitig. Reihenfolge-Abhängigkeiten. Flaky Tests durch parallele Ausführung.

Jeder E2E-Test-Lauf bekommt eine saubere Datenbankinstanz (oder einen isolierten Datenbankzustand) und initialisiert die nötigen Fixtures.

// playwright test fixture
test.beforeEach(async ({ page, apiClient }) => {
await apiClient.resetTestData();
await apiClient.createFixture({
user: { email: 'test@example.com', role: 'admin' },
tasks: [{ title: 'Test Task', status: 'open' }],
});
});

In Taskly laufen E2E-Tests gegen Preview-Umgebungen — nicht gegen lokale Setups oder Mocks. Das bedeutet:

  • Echter Auth-Flow (Keycloak)
  • Echte API (NestJS)
  • Echtes Message-Passing (RabbitMQ)
  • Deterministische Waits: page.waitForSelector() statt setTimeout()
  • Retry-Logik: test.retry(2) für instabile Netzwerk-abhängige Tests
  • Parallele Ausführung mit Worker-Isolation: Playwright-Worker bekommen eigene Fixtures