Skip to content

Commit 559c8cc

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

File tree

4 files changed

+71
-0
lines changed

4 files changed

+71
-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,49 @@
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+
* export default {
16+
* extensions: [
17+
* playwright({ browsers: ["chromium", "firefox", "webkit"] })
18+
* ]
19+
* };
20+
* ```
21+
*/
22+
export const playwrightTestTask = task({
23+
id: "playwright-test",
24+
retry: {
25+
maxAttempts: 1,
26+
},
27+
run: async () => {
28+
logger.log("Starting Playwright automation task");
29+
30+
for (const browserType of [chromium]) {
31+
const prefix = (msg: string) => `[${browserType}]: ${msg}`;
32+
33+
const browser = await browserType.launch();
34+
logger.log(prefix("Browser launched"));
35+
36+
const page = await browser.newPage();
37+
logger.log(prefix("New page created"));
38+
39+
await page.goto("https://google.com");
40+
logger.log(prefix("Navigated to google.com"));
41+
42+
const screenshot = await page.screenshot({ path: "screenshot.png" });
43+
logger.log(prefix("Screenshot taken"), { size: screenshot.byteLength });
44+
45+
await browser.close();
46+
logger.log(prefix("Browser closed"));
47+
}
48+
},
49+
});

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)