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?
- Sprachunabhängig – Der Server könnte auch von Ruby, Go oder was auch immer angesprochen werden
- Debugbar – HTTP-Traffic lässt sich leicht inspizieren
- Entkoppelt – Server kann auf einem anderen Host laufen
- 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