PerlPlaywrightTestingPythonAPI

Playwright für Perl: Eine HTTP-Bridge

Browser-Automatisierung in Legacy-Projekten

Mein Hauptprojekt ist in Perl geschrieben. Über 1.300 Module, gewachsen über Jahre. Die Testinfrastruktur auch – Test::More, Test::Class, bewährte Patterns.

Jetzt wollte ich Playwright nutzen. Das Problem: Playwright gibt es für Python, Node, Java, .NET – aber nicht für Perl. Die Lösung: Eine Bridge.

Das Ziel

Perl-Tests sollen Browser steuern können. Nicht als Ersatz für die bestehende Suite, sondern als Ergänzung für End-to-End-Tests. Der Code soll sich “perlish” anfühlen:

use Playwright::Bridge;

my $pw = Playwright::Bridge->new();
$pw->navigate('https://example.com');
$pw->fill('#username', 'testuser');
$pw->click('button[type="submit"]');

like($pw->title(), qr/Dashboard/, 'Login successful');

Die Architektur

Statt Playwright direkt aus Perl anzusprechen (was einen Perl-Binding erfordern würde), setze ich auf HTTP:

Perl Test ──HTTP──▶ Bridge Server ──Playwright──▶ Browser

Der Bridge-Server läuft als separater Prozess, geschrieben in Python mit FastAPI. Er nimmt JSON-Requests entgegen und übersetzt sie in Playwright-Aufrufe.

Warum HTTP?

  1. Sprachunabhängig – Der Server könnte auch von Ruby, Go oder was auch immer angesprochen werden
  2. Debugbar – HTTP-Traffic lässt sich leicht inspizieren
  3. Entkoppelt – Server kann auf einem anderen Host laufen
  4. Einfach – Perl kann HTTP, kein Binding nötig

Der Server

[TODO: FastAPI-Code]

Das Perl-Modul

[TODO: Playwright::Bridge Modul]

Integration in bestehende Tests

[TODO: Test::More Beispiel]

Was ich gelernt habe

[TODO: Learnings]


Disclaimer: Der Code ist ein Proof of Concept aus meiner täglichen Arbeit. Funktioniert für meine Zwecke, keine Garantie für andere Setups.

GitHub: cuber-it/playwright-perl-bridge

Aktualisiert: 2026-01-05