Wie man Playwright kostenlos in der Cloud hostet
Min-jun Kim
Dev Intern · Leapcell

Playwright ist ein leistungsstarkes Tool zur Automatisierung von Browseraufgaben, das Funktionen wie Screenshot-Erstellung, PDF-Generierung, automatisierte Tests, Web Scraping und mehr bietet. Es ermöglicht die Simulation menschlicher Interaktionen mit Webseiten und ist somit ideal für Aufgaben wie Content Tracking, Uptime Monitoring und Web Scraping.
Viele Szenarien profitieren von der Bereitstellung von Playwright in der Cloud, darunter:
- Auslösen automatisierter Tests über APIs in CI/CD-Pipelines.
- Ausführen von Cronjobs zur Überprüfung der Website-Verfügbarkeit.
- Verwalten von groß angelegten, verteilten Web Scraping-Aufgaben.
Mit dem skalierbaren Pay-as-you-go-Modell des Serverless Computing ist die Cloud-Bereitstellung für Browserautomatisierungsaufgaben sehr sinnvoll. Plattformen wie DigitalOcean berechnen jedoch oft Leerlaufzeiten, was sie für Anwendungsfälle, die periodische Browserinteraktionen erfordern, ineffizient macht. Glücklicherweise unterstützen einige Plattformen die serverlose Ausführung von Playwright: Leapcell und AWS Lambda.
Dieser Artikel untersucht, wie diese Plattformen zur Bereitstellung von Playwright-Aufgaben verwendet werden können, zusammen mit ihren Vorteilen und Herausforderungen.
Die Aufgabe
Wir konzentrieren uns auf eine typische Playwright-Aufgabe: das Erstellen eines Screenshots einer Webseite.
Die Schritte umfassen:
- Besuchen einer bestimmten URL.
- Erstellen eines Screenshots.
- Zurückgeben des Bildes.
Leapcell
Leapcell bietet eine flexible Plattform zur serverlosen Bereitstellung jeder Anwendung, einschließlich Playwright-Automatisierungsaufgaben. Obwohl es nicht speziell für die Verarbeitung von HTTP-Anfragen entwickelt wurde, können Sie auf einfache Weise einen HTTP-Handler erstellen, um Ihre Playwright-Aufgaben auszuführen.
Code-Beispiel:
const { chromium } = require('playwright'); const { Hono } = require('hono'); const { serve } = require('@hono/node-server'); const screenshot = async (url) => { const browser = await chromium.launch({ args: ['--single-process'] }); const page = await browser.newPage(); await page.goto(url); const img = await page.screenshot(); await browser.close(); return img; }; const app = new Hono(); app.get('/', async (c) => { const url = c.req.query('url'); if (url) { const img = await screenshot(url); return c.body(img, { headers: { 'Content-Type': 'image/png' } }); } else { return c.text('Please provide a ?url=https://example.com/ parameter'); } }); const port = 8080; serve({ fetch: app.fetch, port }).on('listening', () => { console.log(`Server is running on port ${port}`); });
Leapcell ermöglicht es Ihnen, dieses Playwright-Skript in einer serverlosen Umgebung bereitzustellen und bietet eine hervorragende Skalierbarkeit für Aufgaben wie Web Scraping oder automatisierte Tests. Darüber hinaus verfügt Leapcell über einen einfachen Bereitstellungsprozess, der sicherstellt, dass Ihre Playwright-Automatisierung gehostet wird, ohne dass Sie die Infrastruktur verwalten müssen.
Lokale Entwicklung
Das Debuggen ist einfach: Führen Sie die Anwendung wie jede andere Node.js-App mit node index.js
aus.
Bereitstellung
Stellen Sie Ihre App auf Leapcell bereit, indem Sie den Build-Befehl, die Laufzeit und den Service-Port konfigurieren. Sie werden feststellen, dass der Einstieg einfach ist.
Sobald die Bereitstellung abgeschlossen ist, ist Ihre Playwright-Automatisierung live und zugänglich.
Zusammenfassung
✅ Vorteile:
- Konsistente lokale und Cloud-Umgebungen für einfacheres Debuggen.
- Direkte Unterstützung für Playwright.
❌ Nachteile:
- Erfordert manuelle Einrichtung für die Verarbeitung von HTTP-Anfragen.
AWS Lambda
Um Playwright auf AWS Lambda auszuführen, können Sie das playwright-core
-Paket mit einer Chromium-Bibliothek eines Drittanbieters wie alixaxel/chrome-aws-lambda
verwenden.
Chromium von Drittanbietern ist erforderlich, da AWS eine 250-MB-Grenze für die Größe einer Lambda-Funktion festlegt. Das standardmäßige Chromium, das mit Puppeteer gebündelt ist, überschreitet diese Grenze leicht (~170 MB unter macOS, ~282 MB unter Linux, ~280 MB unter Windows), wodurch die Verwendung eines abgespeckten Chromium erforderlich wird.
Code-Beispiel:
const chromium = require('chrome-aws-lambda'); const playwright = require('playwright-core'); exports.handler = async (event) => { let browser = null; try { browser = await playwright.chromium.launch({ args: chromium.args, executablePath: await chromium.executablePath, headless: true, }); const page = await browser.newPage(); await page.goto(event.url); const screenshot = await page.screenshot(); return { statusCode: 200, headers: { 'Content-Type': 'image/jpeg' }, body: screenshot.toString('base64'), isBase64Encoded: true, }; } catch (error) { return { statusCode: 500, body: 'Failed to capture screenshot.', }; } finally { if (browser !== null) { await browser.close(); } } };
Lokale Entwicklung
Lokales Debuggen kann mit AWS Lambda aufgrund von Unterschieden in den Laufzeitumgebungen schwierig sein. Wie Sie in der Anleitung von alixaxel/chrome-aws-lambda
sehen können.
Bereitstellung
Sobald der Code fertig ist, können Sie ihn per ZIP-Upload oder mithilfe von Lambda Layers für Abhängigkeiten bereitstellen. Die Einrichtung kann mühsam sein, insbesondere beim Umgang mit großen Dateien wie den Browser-Binärdateien von Playwright.
Zusammenfassung
✅ Vorteile:
- Optimierte Codestruktur für Playwright-Aufgaben.
- Integrierte Unterstützung für moderne Browserautomatisierung.
❌ Nachteile:
- Potenzielle Risiken durch Abhängigkeiten von Drittanbietern (z. B. Chromium).
- Komplexes lokales Debuggen und Bereitstellung.
Für Projekte, die eine effiziente Cloud-basierte Playwright-Automatisierung erfordern, zeichnet sich Leapcell als hervorragende Lösung aus, die eine einfache Bereitstellung und eine skalierbare, kostengünstige Umgebung bietet.
Weitere Informationen finden Sie in der Leapcell Playwright-Dokumentation.