Playwright v1.61.0: WebAuthn-Passkeys, eine echte WebStorage-API und Trace-artige Video-Modi für den Test-Runner

Playwright v1.61.0: WebAuthn-Passkeys, eine echte WebStorage-API und Trace-artige Video-Modi für den Test-Runner

lschvn

Playwright v1.61.0 ist heute, am 15. Juni 2026 um 10:05 UTC erschienen, etwa sechs Wochen nach v1.60.0 am 11. Mai. Es ist ein Feature-Release ohne Breaking Changes, und drei der neuen APIs adressieren direkt langjährige Lücken dabei, wie Teams Passkey-Flows testen, Browser-Storage manipulieren und flaky CI-Runs nachvollziehen. Die Release bringt außerdem die Browser-Kanäle Chromium 149, Firefox 151 und WebKit 26.5 und nimmt Ubuntu 26.04 in die Liste der unterstützten Plattformen auf.

Ein virtueller WebAuthn-Authenticator für Passkey-Tests

Das Headline-Feature ist browserContext.credentials, ein virtueller Authenticator, der Passkeys registrieren und navigator.credentials.create() / navigator.credentials.get()-Zeremonien in der Seite beantworten kann. Es wird kein echter Hardware-Key benötigt, und es funktioniert in jedem Browser-Kanal, Chromium, Firefox und WebKit.

Der typische Ablauf ist, einen Passkey zu seeden, den das Backend bereits für einen Test-User provisioniert hat, und dann den navigator.credentials.get() der Seite mit diesem Key auf den Challenge antworten zu lassen:

const context = await browser.newContext();

// Seeded einen Passkey, den euer Backend für einen Test-User provisioniert hat.
await context.credentials.create('example.com', {
  id: credentialId,
  userHandle,
  privateKey,
  publicKey,
});
await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/login');
// Der navigator.credentials.get() der Seite wird mit dem geseedeten Passkey beantwortet.

Die Release-Notes nennen ein alternatives Muster: einen One-Shot-Setup-Test laufen lassen, der einen Passkey über die echte UI registriert, ihn mit credentials.get() zurückliest und in den Rest der Suite re-seeded. Das ist die richtige Form für Projekte, die feststellen, dass Passkey-Support zum Login nötig ist und diese Tests vorher komplett übersprungen haben.

Die praktische Konsequenz ist, dass der explicit resource management-Patch, den Bun in 1.3.12 geliefert hat, jetzt eine viel dünnere Ausrede ist: einen Passkey-only-Login zu testen erforderte vorher einen echten YubiKey auf dem CI-Runner, einen Custom-Treiber für einen virtuellen Authenticator oder das Überspringen des Flows. Nach 1.61.0 ist es ein credentials.create-Aufruf in einem beforeEach.

Eine erstklassige page.localStorage- und page.sessionStorage-API

Das zweite Stück ist die neue WebStorage-API, exponiert als page.localStorage und page.sessionStorage. Reads und Writes gehen direkt in den Storage der Seite für die aktuelle Origin, ohne page.evaluate-Round-Trip:

await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
const items = await page.sessionStorage.items();

page.evaluate(() => localStorage.setItem('token', 'abc')) funktioniert weiterhin, aber die neue API ist eine erstklassige Protokoll-Kommando in derselben Form, die Playwright bereits für Cookies und Storage-State verwendet. Das macht sie auf Hintergrund-Seiten, auf Service Workern und in Tests nutzbar, die einfach nur einen Storage-Zustand asserten wollen, ohne durch den JS-Kontext zu hüpfen.

Netzwerk: securityDetails() und serverAddr() auf API-Responses

Die neuen apiResponse.securityDetails() und apiResponse.serverAddr() spiegeln die Browser-seitigen response.securityDetails() und response.serverAddr(). Für Teams, die HTTP über Playwrights request- / APIRequestContext-API abfangen und replay-en, ist das endlich ein Weg, die ausgehandelte TLS-Version, die Cipher, den Zertifikats-Subject und die aufgelöste Server-Adresse in einem einzigen Test zu asserten. Es ist dieselbe Klasse von Capability, die die esbuild-0.28.1-Dev-Server-Path-Traversal-Story auf Offense-Seite getrieben hat; hier ist es die Defense-Seite.

Test-Runner: Trace-artige Video-Modi und expect.soft.poll

Der Runner nimmt drei Video-Modi auf, die testOptions.video auf Parität mit testOptions.trace bringen. Die neuen Werte sind 'on-all-retries', 'retain-on-first-failure' und 'retain-on-failure-and-retries'. Die Video-Modi-Tabelle dokumentiert, welche Runs in welchem Modus aufgenommen und behalten werden. Für CI ist 'retain-on-failure' der offensichtliche Gewinn: nur kaputte Runs verbrauchen Disk.

Weitere Runner-Verbesserungen sind klein, aber nützlich:

  • expect.soft.poll(...) wird jetzt unterstützt, die Polling-Form von expect.soft. Fehlgeschlagene Assertions werden am Test vermerkt, aber die Ausführung läuft weiter, sodass ein Dashboard-Test fünf lose gekoppelte Dinge asserten und am Ende alle Fehler berichten kann, statt das erste zu fixen, neu zu laufen, das nächste zu finden und zu wiederholen.
  • fullConfig.argv ist ein Snapshot von process.argv aus dem Runner-Prozess, den Reporter lesen können, um Custom-Argumente hinter dem ---Separator offenzulegen.
  • fullConfig.failOnFlakyTests spiegelt die Config-Option, sodass Reporter erklären können, warum ein als flaky markierter Run fehlgeschlagen ist.
  • testInfo.errors listet jetzt jeden Sub-Fehler eines AggregateError als separaten Eintrag, sodass eine Multi-Failure-Assertion im Report nicht mehr zu einer einzelnen Zeile kollabiert.
  • Eine neue CLI-Kurzform -G für --grep-invert.

Browser-Versionen, HAR und Plattform-Support

Die Release pinnt Chromium 149.0.7827.55, Mozilla Firefox 151.0 und WebKit 26.5 und wird zusätzlich gegen die Stable-Kanäle Google Chrome 149 und Microsoft Edge 149 getestet. Ubuntu 26.04 ist jetzt eine unterstützte Plattform.

HAR- und Trace-Aufzeichnungen enthalten jetzt WebSocket-Requests. Vor 1.61.0 haben Playwrights HAR- und Trace-Aufzeichnungen nur HTTP-Traffic erfasst, sodass eine Regression, die nur über eine WebSocket-Verbindung auftrat (Chat, Live-Cursor, Echtzeit-Updates, Server-Sent-Events, die über einen einzelnen Socket multiplexed sind), im Artefakt unsichtbar war. Das Network-Panel des Trace-Viewers und die HAR-Datei enthalten jetzt beide die WebSocket-Frames, was die meisten Teams vom ersten Tag an erwartet haben.

Kleinere Touches

  • Eine neue artifactsDir-Option auf browserType.connectOverCDP() steuert, wo Traces und Downloads landen, wenn man sich an einen existierenden Browser anhängt.
  • Eine neue cursor-Option auf screencast.showActions() steuert die Cursor-Dekoration, die für Pointer-Aktionen gerendert wird.
  • Der onFrame-Callback in screencast.start() erhält jetzt einen timestamp, wann die Frame vom Browser präsentiert wurde.

Für die meisten Teams ist das Upgrade bun install @playwright/test@latest und eine Neuinstallation der Browser. Die neuen APIs sind additiv, kein Flag-Day. Die Passkey- und WebStorage-APIs lohnen eine kleine Migration, weil sie die Test-Suite deutlich ehrlicher machen, was die Produktions-App tatsächlich handhaben muss.

Häufig gestellte Fragen

Verwandte Artikel

Weitere Berichterstattung zu ähnlichen Themen und Tags.

esbuild 0.28.1: Erstes Release seit zwei Monaten mit einer High-Severity-Deno-RCE, einem Windows-Path-Traversal und einem `using`-Disposal-Bug
security

esbuild 0.28.1: Erstes Release seit zwei Monaten mit einer High-Severity-Deno-RCE, einem Windows-Path-Traversal und einem `using`-Disposal-Bug

esbuild v0.28.1 (11. Juni 2026) ist das erste Release seit April. Es behebt eine CVSS-8.1-Remote-Code-Execution in der Deno-API via NPM_CONFIG_REGISTRY, einen nur Windows betreffenden Path-Traversal im Dev-Server und einen Minifier-Bug, der das Ressourcen-Disposal mit `using` und `await using` stillschweigend kaputtgemacht hat.
Google JSIR: Eine MLIR-basierte Zwischenrepräsentation für JavaScript-Analyse
security

Google JSIR: Eine MLIR-basierte Zwischenrepräsentation für JavaScript-Analyse

Google hat JSIR quelloffen gemacht, ein neuartiges JavaScript-Analysewerkzeug auf MLIR-Basis. Es unterstützt sowohl hochrangige Datenflussanalyse als auch verlustfreie Quellcode-Transformation, intern genutzt für Hermes-Bytecode-Dekompilierung und KI-gestützte JavaScript-Deobfuskation.
Claude Code Bug #74066: Nutzer Melden Cross-Workspace-Kontext-Leaks auf Sonnet 5, Anthropic Hat Noch Nicht Antwortet
security

Claude Code Bug #74066: Nutzer Melden Cross-Workspace-Kontext-Leaks auf Sonnet 5, Anthropic Hat Noch Nicht Antwortet

Ein offener Bug, der am 2026-07-04 gegen Claude Code von einem [Enterprise-ZDR](https://docs.anthropic.com/en/docs/build-with-claude/zero-data-retention)-Nutzer eingereicht wurde, beschreibt eine Arbeitssitzung auf Sonnet 5, die plötzlich auf einen unrelated Minecraft-Tempelbau referenziert und dann im Recap bei der falschen Aufgabe bleibt. Der Reporter (GitHub: [@milesrichardson-edb](https://github.com/milesrichardson-edb), Issue [anthropics/claude-code#74066](https://github.com/anthropics/claude-code/issues/74066)) ist auf Enterprise Zero Data Retention, dem Tier, das Anthropic speziell als sitzungsisoliert vermarktet. Ein Triage auf der lokalen Sitzungs-JSONL des Reporters unter `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl` zeigt, dass der geleakte Text nicht im Transkript enthalten ist, was einen lokalen Kontext-Leak durch Datei-Überlappung ausschließt. Vier andere Nutzer in den Kommentaren (mit Arbeitsgeschichten, die bis ins letzte Jahr zurückreichen) beschreiben nahezu identisches Verhalten über Claude Code, Claude Mobile und Claude Deep Research hinweg. Der plausibelste architektonische Fit ist geteilter KV-Cache-Zustand in der Inferenz ([laut @yv3nne in den Kommentaren](https://github.com/anthropics/claude-code/issues/74066#issuecomment-4880448776)), aber kein Anthropic-Ingenieur hat die Issue in den 22 Stunden seit der Einreichung kommentiert, und die Issue erreichte am 2026-07-04 die Spitze von [Hacker News](https://news.ycombinator.com/item?id=42481789). Der Ton im Thread ist gespalten: Die Hälfte vermutet echte Plattform-Cache-Wiederverwendung, die andere Hälfte vermutet eine [sonnet-5-spezifische Halluzination, ausgelöst durch einen Pygments-Lexer](https://github.com/anthropics/claude-code/issues/74066#issuecomment-4880334711). Beide Lesarten sind glaubwürdig.

Kommentare

Anmelden Melden Sie sich an, um an der Diskussion teilzunehmen.

Noch keine Kommentare. Seien Sie der Erste, der seine Gedanken teilt.