Skip to content

Commit a367708

Browse files
committed
feat: add playwright task
1 parent 63b3e10 commit a367708

File tree

4 files changed

+69
-0
lines changed

4 files changed

+69
-0
lines changed

pnpm-lock.yaml

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

references/v3-catalog/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"msw": "^2.2.1",
4242
"openai": "^4.47.0",
4343
"pg": "^8.11.5",
44+
"playwright": "^1.50.1",
4445
"puppeteer": "^23.4.0",
4546
"react": "19.0.0-rc.0",
4647
"react-email": "^3.0.1",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { logger, task } from "@trigger.dev/sdk/v3";
2+
import { chromium } from "playwright";
3+
4+
/**
5+
* Example task demonstrating Playwright browser automation with Trigger.dev
6+
*
7+
* To use other browsers (firefox, webkit):
8+
* 1. Import them from playwright: `import { chromium, firefox, webkit } from "playwright";`
9+
* 2. Add them to the browserType array: `for (const browserType of [chromium, firefox, webkit])`
10+
* 3. Configure the playwright extension in your project:
11+
* ```
12+
* // In your build configuration
13+
* import { playwright } from "@trigger.dev/core/v3/build";
14+
*
15+
* extensions: [
16+
* playwright({ browsers: ["chromium", "firefox", "webkit"] })
17+
* ]
18+
* ```
19+
*/
20+
export const playwrightTestTask = task({
21+
id: "playwright-test",
22+
retry: {
23+
maxAttempts: 1,
24+
},
25+
run: async () => {
26+
logger.log("Starting Playwright automation task");
27+
28+
for (const browserType of [chromium]) {
29+
const prefix = (msg: string) => `[${browserType.name()}]: ${msg}`;
30+
31+
const browser = await browserType.launch();
32+
logger.log(prefix("Browser launched"));
33+
34+
const page = await browser.newPage();
35+
logger.log(prefix("New page created"));
36+
37+
await page.goto("https://google.com");
38+
logger.log(prefix("Navigated to google.com"));
39+
40+
const screenshot = await page.screenshot({ path: "screenshot.png" });
41+
logger.log(prefix("Screenshot taken"), { size: screenshot.byteLength });
42+
43+
await browser.close();
44+
logger.log(prefix("Browser closed"));
45+
}
46+
},
47+
});

references/v3-catalog/trigger.config.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { esbuildPlugin } from "@trigger.dev/build";
55
import { audioWaveform } from "@trigger.dev/build/extensions/audioWaveform";
66
import { ffmpeg, syncEnvVars } from "@trigger.dev/build/extensions/core";
77
import { puppeteer } from "@trigger.dev/build/extensions/puppeteer";
8+
import { playwright } from "@trigger.dev/build/extensions/playwright";
89
import { prismaExtension } from "@trigger.dev/build/extensions/prisma";
910
import { emitDecoratorMetadata } from "@trigger.dev/build/extensions/typescript";
1011
import { defineConfig } from "@trigger.dev/sdk/v3";
@@ -87,6 +88,7 @@ export default defineConfig({
8788
}));
8889
}),
8990
puppeteer(),
91+
playwright(),
9092
],
9193
external: ["re2"],
9294
},

0 commit comments

Comments
 (0)