@trigger.dev/build 0.0.0-re2-20250508091848 → 0.0.0-re2-20250512143406

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,50 @@
1
+ import type { BuildContext, BuildExtension } from "@trigger.dev/core/v3/build";
2
+ import type { BuildManifest, BuildTarget } from "@trigger.dev/core/v3";
3
+ type PlaywrightBrowser = "chromium" | "firefox" | "webkit";
4
+ interface PlaywrightExtensionOptions {
5
+ /**
6
+ * Browsers to install. Select only needed browsers to optimize build time and size.
7
+ * @default ["chromium"]
8
+ */
9
+ browsers?: PlaywrightBrowser[];
10
+ /**
11
+ * Run the browsers in headless mode (Recommended)
12
+ * @default true
13
+ */
14
+ headless?: boolean;
15
+ /**
16
+ * Playwright version override. If not provided, we will try to detect the version automatically.
17
+ */
18
+ version?: string;
19
+ }
20
+ /**
21
+ * Creates a Playwright extension for trigger.dev
22
+ * @param options Configuration options
23
+ */
24
+ export declare function playwright(options?: PlaywrightExtensionOptions): PlaywrightExtension;
25
+ /**
26
+ * Background:
27
+ *
28
+ * Running `npx playwright install --with-deps` normally will install the browsers and the dependencies.
29
+ * However, this is not possible in a build context, because we don't have sudo access.
30
+ *
31
+ * So we need to install the dependencies manually and then download and install the browsers.
32
+ * This has a few challenges:
33
+ * 1. We don't want to download all browsers, only the ones we need with it's dependencies
34
+ * The less dependencies we have to install, the faster the build, and the smaller the image.
35
+ * 2. We need to know where to download the browsers from
36
+ * while we can hardcode the download url it might change over time (as it has in the past)
37
+ * so we need to download the browser info first and then parse the output to get the download url.
38
+ *
39
+ * Note: While this looks like we are downloading & installing a lot of stuff, it's actually not that bad
40
+ * since running `npx playwright install --with-deps` will result in the same amount of downloads.
41
+ */
42
+ declare class PlaywrightExtension implements BuildExtension {
43
+ readonly name = "PlaywrightExtension";
44
+ private moduleExternals;
45
+ private readonly options;
46
+ constructor({ browsers, headless, version, }?: PlaywrightExtensionOptions);
47
+ externalsForTarget(target: BuildTarget): string[];
48
+ onBuildComplete(context: BuildContext, manifest: BuildManifest): void;
49
+ }
50
+ export {};
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.playwright = playwright;
4
+ /**
5
+ * This list is from the official playwright registry.
6
+ *
7
+ * @see https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/registry/nativeDeps.ts
8
+ */
9
+ const debian12Deps = {
10
+ tools: [
11
+ "xvfb",
12
+ "fonts-noto-color-emoji",
13
+ "fonts-unifont",
14
+ "libfontconfig1",
15
+ "libfreetype6",
16
+ "xfonts-scalable",
17
+ "fonts-liberation",
18
+ "fonts-ipafont-gothic",
19
+ "fonts-wqy-zenhei",
20
+ "fonts-tlwg-loma-otf",
21
+ "fonts-freefont-ttf",
22
+ ],
23
+ chromium: [
24
+ "libasound2",
25
+ "libatk-bridge2.0-0",
26
+ "libatk1.0-0",
27
+ "libatspi2.0-0",
28
+ "libcairo2",
29
+ "libcups2",
30
+ "libdbus-1-3",
31
+ "libdrm2",
32
+ "libgbm1",
33
+ "libglib2.0-0",
34
+ "libnspr4",
35
+ "libnss3",
36
+ "libpango-1.0-0",
37
+ "libx11-6",
38
+ "libxcb1",
39
+ "libxcomposite1",
40
+ "libxdamage1",
41
+ "libxext6",
42
+ "libxfixes3",
43
+ "libxkbcommon0",
44
+ "libxrandr2",
45
+ ],
46
+ firefox: [
47
+ "libasound2",
48
+ "libatk1.0-0",
49
+ "libcairo-gobject2",
50
+ "libcairo2",
51
+ "libdbus-1-3",
52
+ "libdbus-glib-1-2",
53
+ "libfontconfig1",
54
+ "libfreetype6",
55
+ "libgdk-pixbuf-2.0-0",
56
+ "libglib2.0-0",
57
+ "libgtk-3-0",
58
+ "libharfbuzz0b",
59
+ "libpango-1.0-0",
60
+ "libpangocairo-1.0-0",
61
+ "libx11-6",
62
+ "libx11-xcb1",
63
+ "libxcb-shm0",
64
+ "libxcb1",
65
+ "libxcomposite1",
66
+ "libxcursor1",
67
+ "libxdamage1",
68
+ "libxext6",
69
+ "libxfixes3",
70
+ "libxi6",
71
+ "libxrandr2",
72
+ "libxrender1",
73
+ "libxtst6",
74
+ ],
75
+ webkit: [
76
+ "libsoup-3.0-0",
77
+ "gstreamer1.0-libav",
78
+ "gstreamer1.0-plugins-bad",
79
+ "gstreamer1.0-plugins-base",
80
+ "gstreamer1.0-plugins-good",
81
+ "libatk-bridge2.0-0",
82
+ "libatk1.0-0",
83
+ "libcairo2",
84
+ "libdbus-1-3",
85
+ "libdrm2",
86
+ "libegl1",
87
+ "libenchant-2-2",
88
+ "libepoxy0",
89
+ "libevdev2",
90
+ "libfontconfig1",
91
+ "libfreetype6",
92
+ "libgbm1",
93
+ "libgdk-pixbuf-2.0-0",
94
+ "libgles2",
95
+ "libglib2.0-0",
96
+ "libglx0",
97
+ "libgstreamer-gl1.0-0",
98
+ "libgstreamer-plugins-base1.0-0",
99
+ "libgstreamer1.0-0",
100
+ "libgtk-4-1",
101
+ "libgudev-1.0-0",
102
+ "libharfbuzz-icu0",
103
+ "libharfbuzz0b",
104
+ "libhyphen0",
105
+ "libicu72",
106
+ "libjpeg62-turbo",
107
+ "liblcms2-2",
108
+ "libmanette-0.2-0",
109
+ "libnotify4",
110
+ "libopengl0",
111
+ "libopenjp2-7",
112
+ "libopus0",
113
+ "libpango-1.0-0",
114
+ "libpng16-16",
115
+ "libproxy1v5",
116
+ "libsecret-1-0",
117
+ "libwayland-client0",
118
+ "libwayland-egl1",
119
+ "libwayland-server0",
120
+ "libwebp7",
121
+ "libwebpdemux2",
122
+ "libwoff1",
123
+ "libx11-6",
124
+ "libxcomposite1",
125
+ "libxdamage1",
126
+ "libxkbcommon0",
127
+ "libxml2",
128
+ "libxslt1.1",
129
+ "libatomic1",
130
+ "libevent-2.1-7",
131
+ "libavif15",
132
+ ],
133
+ lib2package: {
134
+ "libavif.so.15": "libavif15",
135
+ "libsoup-3.0.so.0": "libsoup-3.0-0",
136
+ "libasound.so.2": "libasound2",
137
+ "libatk-1.0.so.0": "libatk1.0-0",
138
+ "libatk-bridge-2.0.so.0": "libatk-bridge2.0-0",
139
+ "libatspi.so.0": "libatspi2.0-0",
140
+ "libcairo.so.2": "libcairo2",
141
+ "libcups.so.2": "libcups2",
142
+ "libdbus-1.so.3": "libdbus-1-3",
143
+ "libdrm.so.2": "libdrm2",
144
+ "libgbm.so.1": "libgbm1",
145
+ "libgio-2.0.so.0": "libglib2.0-0",
146
+ "libglib-2.0.so.0": "libglib2.0-0",
147
+ "libgobject-2.0.so.0": "libglib2.0-0",
148
+ "libnspr4.so": "libnspr4",
149
+ "libnss3.so": "libnss3",
150
+ "libnssutil3.so": "libnss3",
151
+ "libpango-1.0.so.0": "libpango-1.0-0",
152
+ "libsmime3.so": "libnss3",
153
+ "libX11.so.6": "libx11-6",
154
+ "libxcb.so.1": "libxcb1",
155
+ "libXcomposite.so.1": "libxcomposite1",
156
+ "libXdamage.so.1": "libxdamage1",
157
+ "libXext.so.6": "libxext6",
158
+ "libXfixes.so.3": "libxfixes3",
159
+ "libxkbcommon.so.0": "libxkbcommon0",
160
+ "libXrandr.so.2": "libxrandr2",
161
+ "libgtk-4.so.1": "libgtk-4-1",
162
+ },
163
+ };
164
+ /**
165
+ * Creates a Playwright extension for trigger.dev
166
+ * @param options Configuration options
167
+ */
168
+ function playwright(options = {}) {
169
+ return new PlaywrightExtension(options);
170
+ }
171
+ /**
172
+ * Background:
173
+ *
174
+ * Running `npx playwright install --with-deps` normally will install the browsers and the dependencies.
175
+ * However, this is not possible in a build context, because we don't have sudo access.
176
+ *
177
+ * So we need to install the dependencies manually and then download and install the browsers.
178
+ * This has a few challenges:
179
+ * 1. We don't want to download all browsers, only the ones we need with it's dependencies
180
+ * The less dependencies we have to install, the faster the build, and the smaller the image.
181
+ * 2. We need to know where to download the browsers from
182
+ * while we can hardcode the download url it might change over time (as it has in the past)
183
+ * so we need to download the browser info first and then parse the output to get the download url.
184
+ *
185
+ * Note: While this looks like we are downloading & installing a lot of stuff, it's actually not that bad
186
+ * since running `npx playwright install --with-deps` will result in the same amount of downloads.
187
+ */
188
+ class PlaywrightExtension {
189
+ name = "PlaywrightExtension";
190
+ moduleExternals;
191
+ options;
192
+ constructor({ browsers = ["chromium"], headless = true, version, } = {}) {
193
+ if (browsers && browsers.length === 0) {
194
+ throw new Error("At least one browser must be specified");
195
+ }
196
+ this.options = { browsers, headless, version };
197
+ this.moduleExternals = ["playwright"];
198
+ }
199
+ externalsForTarget(target) {
200
+ if (target === "dev") {
201
+ return [];
202
+ }
203
+ return this.moduleExternals;
204
+ }
205
+ onBuildComplete(context, manifest) {
206
+ if (context.target === "dev")
207
+ return;
208
+ // Detect Playwright version from manifest.externals or use override
209
+ const playwrightExternal = manifest.externals?.find((external) => external.name === "playwright" || external.name === "@playwright/test");
210
+ const version = playwrightExternal?.version ?? this.options.version;
211
+ if (!version) {
212
+ throw new Error("PlaywrightExtension could not determine the version of playwright. Please provide a version in the PlaywrightExtension options.");
213
+ }
214
+ context.logger.debug(`Adding ${this.name} to the build with browsers: ${this.options.browsers.join(", ")}, version: ${version}`);
215
+ const instructions = [
216
+ // Base dependencies, we need these to download the browsers
217
+ `RUN apt-get update && apt-get install -y --no-install-recommends \
218
+ curl \
219
+ unzip \
220
+ jq \
221
+ grep \
222
+ sed \
223
+ npm \
224
+ && apt-get clean && rm -rf /var/lib/apt/lists/*`,
225
+ // Install Playwright globally with detected version
226
+ `RUN npm install -g playwright@${version}`,
227
+ ];
228
+ const deps = [...debian12Deps.tools, ...Object.values(debian12Deps.lib2package)];
229
+ if (this.options.browsers.includes("chromium"))
230
+ deps.push(...debian12Deps.chromium);
231
+ if (this.options.browsers.includes("firefox"))
232
+ deps.push(...debian12Deps.firefox);
233
+ if (this.options.browsers.includes("webkit"))
234
+ deps.push(...debian12Deps.webkit);
235
+ instructions.push(`RUN apt-get update && apt-get install -y --no-install-recommends ${deps.join(" ")} \
236
+ && apt-get clean && rm -rf /var/lib/apt/lists/*`);
237
+ // Setup directory for playwright browsers
238
+ instructions.push(`RUN mkdir -p /ms-playwright`);
239
+ /**
240
+ * `npx playwright install --dry-run` prints the download urls for the browsers.
241
+ * We save this output to a file and then parse it to get the download urls for the browsers.
242
+ */
243
+ instructions.push(`RUN npx playwright install --dry-run > /tmp/browser-info.txt`);
244
+ this.options.browsers.forEach((browser) => {
245
+ const browserType = browser === "chromium" ? "chromium-headless-shell" : browser;
246
+ instructions.push(`RUN grep -A5 "browser: ${browserType}" /tmp/browser-info.txt > /tmp/${browser}-info.txt`, `RUN INSTALL_DIR=$(grep "Install location:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs) && \
247
+ DIR_NAME=$(basename "$INSTALL_DIR") && \
248
+ MS_DIR="/ms-playwright/$DIR_NAME" && \
249
+ mkdir -p "$MS_DIR"`, `RUN DOWNLOAD_URL=$(grep "Download url:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs | sed "s/mac-arm64/linux/g" | sed "s/mac-15-arm64/ubuntu-20.04/g") && \
250
+ echo "Downloading ${browser} from $DOWNLOAD_URL" && \
251
+ curl -L -o /tmp/${browser}.zip "$DOWNLOAD_URL" && \
252
+ unzip -q /tmp/${browser}.zip -d "/ms-playwright/$(basename $(grep "Install location:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs))" && \
253
+ chmod -R +x "/ms-playwright/$(basename $(grep "Install location:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs))" && \
254
+ rm /tmp/${browser}.zip`);
255
+ });
256
+ // Environment variables
257
+ const envVars = {
258
+ PLAYWRIGHT_BROWSERS_PATH: "/ms-playwright", // where playwright will find the browsers
259
+ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1", // we already downloaded the browsers
260
+ PLAYWRIGHT_SKIP_BROWSER_VALIDATION: "1", // we already downloaded the browsers
261
+ };
262
+ if (!this.options.headless) {
263
+ instructions.push(`RUN echo '#!/bin/sh' > /usr/local/bin/xvfb-exec`, `RUN echo 'Xvfb :99 -screen 0 1024x768x24 &' >> /usr/local/bin/xvfb-exec`, `RUN echo 'exec "$@"' >> /usr/local/bin/xvfb-exec`, `RUN chmod +x /usr/local/bin/xvfb-exec`);
264
+ envVars.DISPLAY = ":99"; // Virtual display for the browsers
265
+ }
266
+ context.addLayer({
267
+ id: "playwright",
268
+ image: {
269
+ instructions,
270
+ },
271
+ deploy: {
272
+ env: envVars,
273
+ override: true,
274
+ },
275
+ dependencies: {
276
+ playwright: version,
277
+ },
278
+ });
279
+ }
280
+ }
281
+ //# sourceMappingURL=playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.js","sourceRoot":"","sources":["../../../src/extensions/playwright.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "0.0.0-re2-20250508091848";
4
+ exports.VERSION = "0.0.0-re2-20250512143406";
5
5
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,50 @@
1
+ import type { BuildContext, BuildExtension } from "@trigger.dev/core/v3/build";
2
+ import type { BuildManifest, BuildTarget } from "@trigger.dev/core/v3";
3
+ type PlaywrightBrowser = "chromium" | "firefox" | "webkit";
4
+ interface PlaywrightExtensionOptions {
5
+ /**
6
+ * Browsers to install. Select only needed browsers to optimize build time and size.
7
+ * @default ["chromium"]
8
+ */
9
+ browsers?: PlaywrightBrowser[];
10
+ /**
11
+ * Run the browsers in headless mode (Recommended)
12
+ * @default true
13
+ */
14
+ headless?: boolean;
15
+ /**
16
+ * Playwright version override. If not provided, we will try to detect the version automatically.
17
+ */
18
+ version?: string;
19
+ }
20
+ /**
21
+ * Creates a Playwright extension for trigger.dev
22
+ * @param options Configuration options
23
+ */
24
+ export declare function playwright(options?: PlaywrightExtensionOptions): PlaywrightExtension;
25
+ /**
26
+ * Background:
27
+ *
28
+ * Running `npx playwright install --with-deps` normally will install the browsers and the dependencies.
29
+ * However, this is not possible in a build context, because we don't have sudo access.
30
+ *
31
+ * So we need to install the dependencies manually and then download and install the browsers.
32
+ * This has a few challenges:
33
+ * 1. We don't want to download all browsers, only the ones we need with it's dependencies
34
+ * The less dependencies we have to install, the faster the build, and the smaller the image.
35
+ * 2. We need to know where to download the browsers from
36
+ * while we can hardcode the download url it might change over time (as it has in the past)
37
+ * so we need to download the browser info first and then parse the output to get the download url.
38
+ *
39
+ * Note: While this looks like we are downloading & installing a lot of stuff, it's actually not that bad
40
+ * since running `npx playwright install --with-deps` will result in the same amount of downloads.
41
+ */
42
+ declare class PlaywrightExtension implements BuildExtension {
43
+ readonly name = "PlaywrightExtension";
44
+ private moduleExternals;
45
+ private readonly options;
46
+ constructor({ browsers, headless, version, }?: PlaywrightExtensionOptions);
47
+ externalsForTarget(target: BuildTarget): string[];
48
+ onBuildComplete(context: BuildContext, manifest: BuildManifest): void;
49
+ }
50
+ export {};
@@ -0,0 +1,278 @@
1
+ /**
2
+ * This list is from the official playwright registry.
3
+ *
4
+ * @see https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/registry/nativeDeps.ts
5
+ */
6
+ const debian12Deps = {
7
+ tools: [
8
+ "xvfb",
9
+ "fonts-noto-color-emoji",
10
+ "fonts-unifont",
11
+ "libfontconfig1",
12
+ "libfreetype6",
13
+ "xfonts-scalable",
14
+ "fonts-liberation",
15
+ "fonts-ipafont-gothic",
16
+ "fonts-wqy-zenhei",
17
+ "fonts-tlwg-loma-otf",
18
+ "fonts-freefont-ttf",
19
+ ],
20
+ chromium: [
21
+ "libasound2",
22
+ "libatk-bridge2.0-0",
23
+ "libatk1.0-0",
24
+ "libatspi2.0-0",
25
+ "libcairo2",
26
+ "libcups2",
27
+ "libdbus-1-3",
28
+ "libdrm2",
29
+ "libgbm1",
30
+ "libglib2.0-0",
31
+ "libnspr4",
32
+ "libnss3",
33
+ "libpango-1.0-0",
34
+ "libx11-6",
35
+ "libxcb1",
36
+ "libxcomposite1",
37
+ "libxdamage1",
38
+ "libxext6",
39
+ "libxfixes3",
40
+ "libxkbcommon0",
41
+ "libxrandr2",
42
+ ],
43
+ firefox: [
44
+ "libasound2",
45
+ "libatk1.0-0",
46
+ "libcairo-gobject2",
47
+ "libcairo2",
48
+ "libdbus-1-3",
49
+ "libdbus-glib-1-2",
50
+ "libfontconfig1",
51
+ "libfreetype6",
52
+ "libgdk-pixbuf-2.0-0",
53
+ "libglib2.0-0",
54
+ "libgtk-3-0",
55
+ "libharfbuzz0b",
56
+ "libpango-1.0-0",
57
+ "libpangocairo-1.0-0",
58
+ "libx11-6",
59
+ "libx11-xcb1",
60
+ "libxcb-shm0",
61
+ "libxcb1",
62
+ "libxcomposite1",
63
+ "libxcursor1",
64
+ "libxdamage1",
65
+ "libxext6",
66
+ "libxfixes3",
67
+ "libxi6",
68
+ "libxrandr2",
69
+ "libxrender1",
70
+ "libxtst6",
71
+ ],
72
+ webkit: [
73
+ "libsoup-3.0-0",
74
+ "gstreamer1.0-libav",
75
+ "gstreamer1.0-plugins-bad",
76
+ "gstreamer1.0-plugins-base",
77
+ "gstreamer1.0-plugins-good",
78
+ "libatk-bridge2.0-0",
79
+ "libatk1.0-0",
80
+ "libcairo2",
81
+ "libdbus-1-3",
82
+ "libdrm2",
83
+ "libegl1",
84
+ "libenchant-2-2",
85
+ "libepoxy0",
86
+ "libevdev2",
87
+ "libfontconfig1",
88
+ "libfreetype6",
89
+ "libgbm1",
90
+ "libgdk-pixbuf-2.0-0",
91
+ "libgles2",
92
+ "libglib2.0-0",
93
+ "libglx0",
94
+ "libgstreamer-gl1.0-0",
95
+ "libgstreamer-plugins-base1.0-0",
96
+ "libgstreamer1.0-0",
97
+ "libgtk-4-1",
98
+ "libgudev-1.0-0",
99
+ "libharfbuzz-icu0",
100
+ "libharfbuzz0b",
101
+ "libhyphen0",
102
+ "libicu72",
103
+ "libjpeg62-turbo",
104
+ "liblcms2-2",
105
+ "libmanette-0.2-0",
106
+ "libnotify4",
107
+ "libopengl0",
108
+ "libopenjp2-7",
109
+ "libopus0",
110
+ "libpango-1.0-0",
111
+ "libpng16-16",
112
+ "libproxy1v5",
113
+ "libsecret-1-0",
114
+ "libwayland-client0",
115
+ "libwayland-egl1",
116
+ "libwayland-server0",
117
+ "libwebp7",
118
+ "libwebpdemux2",
119
+ "libwoff1",
120
+ "libx11-6",
121
+ "libxcomposite1",
122
+ "libxdamage1",
123
+ "libxkbcommon0",
124
+ "libxml2",
125
+ "libxslt1.1",
126
+ "libatomic1",
127
+ "libevent-2.1-7",
128
+ "libavif15",
129
+ ],
130
+ lib2package: {
131
+ "libavif.so.15": "libavif15",
132
+ "libsoup-3.0.so.0": "libsoup-3.0-0",
133
+ "libasound.so.2": "libasound2",
134
+ "libatk-1.0.so.0": "libatk1.0-0",
135
+ "libatk-bridge-2.0.so.0": "libatk-bridge2.0-0",
136
+ "libatspi.so.0": "libatspi2.0-0",
137
+ "libcairo.so.2": "libcairo2",
138
+ "libcups.so.2": "libcups2",
139
+ "libdbus-1.so.3": "libdbus-1-3",
140
+ "libdrm.so.2": "libdrm2",
141
+ "libgbm.so.1": "libgbm1",
142
+ "libgio-2.0.so.0": "libglib2.0-0",
143
+ "libglib-2.0.so.0": "libglib2.0-0",
144
+ "libgobject-2.0.so.0": "libglib2.0-0",
145
+ "libnspr4.so": "libnspr4",
146
+ "libnss3.so": "libnss3",
147
+ "libnssutil3.so": "libnss3",
148
+ "libpango-1.0.so.0": "libpango-1.0-0",
149
+ "libsmime3.so": "libnss3",
150
+ "libX11.so.6": "libx11-6",
151
+ "libxcb.so.1": "libxcb1",
152
+ "libXcomposite.so.1": "libxcomposite1",
153
+ "libXdamage.so.1": "libxdamage1",
154
+ "libXext.so.6": "libxext6",
155
+ "libXfixes.so.3": "libxfixes3",
156
+ "libxkbcommon.so.0": "libxkbcommon0",
157
+ "libXrandr.so.2": "libxrandr2",
158
+ "libgtk-4.so.1": "libgtk-4-1",
159
+ },
160
+ };
161
+ /**
162
+ * Creates a Playwright extension for trigger.dev
163
+ * @param options Configuration options
164
+ */
165
+ export function playwright(options = {}) {
166
+ return new PlaywrightExtension(options);
167
+ }
168
+ /**
169
+ * Background:
170
+ *
171
+ * Running `npx playwright install --with-deps` normally will install the browsers and the dependencies.
172
+ * However, this is not possible in a build context, because we don't have sudo access.
173
+ *
174
+ * So we need to install the dependencies manually and then download and install the browsers.
175
+ * This has a few challenges:
176
+ * 1. We don't want to download all browsers, only the ones we need with it's dependencies
177
+ * The less dependencies we have to install, the faster the build, and the smaller the image.
178
+ * 2. We need to know where to download the browsers from
179
+ * while we can hardcode the download url it might change over time (as it has in the past)
180
+ * so we need to download the browser info first and then parse the output to get the download url.
181
+ *
182
+ * Note: While this looks like we are downloading & installing a lot of stuff, it's actually not that bad
183
+ * since running `npx playwright install --with-deps` will result in the same amount of downloads.
184
+ */
185
+ class PlaywrightExtension {
186
+ name = "PlaywrightExtension";
187
+ moduleExternals;
188
+ options;
189
+ constructor({ browsers = ["chromium"], headless = true, version, } = {}) {
190
+ if (browsers && browsers.length === 0) {
191
+ throw new Error("At least one browser must be specified");
192
+ }
193
+ this.options = { browsers, headless, version };
194
+ this.moduleExternals = ["playwright"];
195
+ }
196
+ externalsForTarget(target) {
197
+ if (target === "dev") {
198
+ return [];
199
+ }
200
+ return this.moduleExternals;
201
+ }
202
+ onBuildComplete(context, manifest) {
203
+ if (context.target === "dev")
204
+ return;
205
+ // Detect Playwright version from manifest.externals or use override
206
+ const playwrightExternal = manifest.externals?.find((external) => external.name === "playwright" || external.name === "@playwright/test");
207
+ const version = playwrightExternal?.version ?? this.options.version;
208
+ if (!version) {
209
+ throw new Error("PlaywrightExtension could not determine the version of playwright. Please provide a version in the PlaywrightExtension options.");
210
+ }
211
+ context.logger.debug(`Adding ${this.name} to the build with browsers: ${this.options.browsers.join(", ")}, version: ${version}`);
212
+ const instructions = [
213
+ // Base dependencies, we need these to download the browsers
214
+ `RUN apt-get update && apt-get install -y --no-install-recommends \
215
+ curl \
216
+ unzip \
217
+ jq \
218
+ grep \
219
+ sed \
220
+ npm \
221
+ && apt-get clean && rm -rf /var/lib/apt/lists/*`,
222
+ // Install Playwright globally with detected version
223
+ `RUN npm install -g playwright@${version}`,
224
+ ];
225
+ const deps = [...debian12Deps.tools, ...Object.values(debian12Deps.lib2package)];
226
+ if (this.options.browsers.includes("chromium"))
227
+ deps.push(...debian12Deps.chromium);
228
+ if (this.options.browsers.includes("firefox"))
229
+ deps.push(...debian12Deps.firefox);
230
+ if (this.options.browsers.includes("webkit"))
231
+ deps.push(...debian12Deps.webkit);
232
+ instructions.push(`RUN apt-get update && apt-get install -y --no-install-recommends ${deps.join(" ")} \
233
+ && apt-get clean && rm -rf /var/lib/apt/lists/*`);
234
+ // Setup directory for playwright browsers
235
+ instructions.push(`RUN mkdir -p /ms-playwright`);
236
+ /**
237
+ * `npx playwright install --dry-run` prints the download urls for the browsers.
238
+ * We save this output to a file and then parse it to get the download urls for the browsers.
239
+ */
240
+ instructions.push(`RUN npx playwright install --dry-run > /tmp/browser-info.txt`);
241
+ this.options.browsers.forEach((browser) => {
242
+ const browserType = browser === "chromium" ? "chromium-headless-shell" : browser;
243
+ instructions.push(`RUN grep -A5 "browser: ${browserType}" /tmp/browser-info.txt > /tmp/${browser}-info.txt`, `RUN INSTALL_DIR=$(grep "Install location:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs) && \
244
+ DIR_NAME=$(basename "$INSTALL_DIR") && \
245
+ MS_DIR="/ms-playwright/$DIR_NAME" && \
246
+ mkdir -p "$MS_DIR"`, `RUN DOWNLOAD_URL=$(grep "Download url:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs | sed "s/mac-arm64/linux/g" | sed "s/mac-15-arm64/ubuntu-20.04/g") && \
247
+ echo "Downloading ${browser} from $DOWNLOAD_URL" && \
248
+ curl -L -o /tmp/${browser}.zip "$DOWNLOAD_URL" && \
249
+ unzip -q /tmp/${browser}.zip -d "/ms-playwright/$(basename $(grep "Install location:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs))" && \
250
+ chmod -R +x "/ms-playwright/$(basename $(grep "Install location:" /tmp/${browser}-info.txt | cut -d':' -f2- | xargs))" && \
251
+ rm /tmp/${browser}.zip`);
252
+ });
253
+ // Environment variables
254
+ const envVars = {
255
+ PLAYWRIGHT_BROWSERS_PATH: "/ms-playwright", // where playwright will find the browsers
256
+ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1", // we already downloaded the browsers
257
+ PLAYWRIGHT_SKIP_BROWSER_VALIDATION: "1", // we already downloaded the browsers
258
+ };
259
+ if (!this.options.headless) {
260
+ instructions.push(`RUN echo '#!/bin/sh' > /usr/local/bin/xvfb-exec`, `RUN echo 'Xvfb :99 -screen 0 1024x768x24 &' >> /usr/local/bin/xvfb-exec`, `RUN echo 'exec "$@"' >> /usr/local/bin/xvfb-exec`, `RUN chmod +x /usr/local/bin/xvfb-exec`);
261
+ envVars.DISPLAY = ":99"; // Virtual display for the browsers
262
+ }
263
+ context.addLayer({
264
+ id: "playwright",
265
+ image: {
266
+ instructions,
267
+ },
268
+ deploy: {
269
+ env: envVars,
270
+ override: true,
271
+ },
272
+ dependencies: {
273
+ playwright: version,
274
+ },
275
+ });
276
+ }
277
+ }
278
+ //# sourceMappingURL=playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.js","sourceRoot":"","sources":["../../../src/extensions/playwright.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.0.0-re2-20250508091848";
1
+ export const VERSION = "0.0.0-re2-20250512143406";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/build",
3
- "version": "0.0.0-re2-20250508091848",
3
+ "version": "0.0.0-re2-20250512143406",
4
4
  "description": "trigger.dev build extensions",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -29,7 +29,8 @@
29
29
  "./extensions/prisma": "./src/extensions/prisma.ts",
30
30
  "./extensions/audioWaveform": "./src/extensions/audioWaveform.ts",
31
31
  "./extensions/typescript": "./src/extensions/typescript.ts",
32
- "./extensions/puppeteer": "./src/extensions/puppeteer.ts"
32
+ "./extensions/puppeteer": "./src/extensions/puppeteer.ts",
33
+ "./extensions/playwright": "./src/extensions/playwright.ts"
33
34
  },
34
35
  "sourceDialects": [
35
36
  "@triggerdotdev/source"
@@ -57,11 +58,14 @@
57
58
  ],
58
59
  "extensions/puppeteer": [
59
60
  "dist/commonjs/extensions/puppeteer.d.ts"
61
+ ],
62
+ "extensions/playwright": [
63
+ "dist/commonjs/extensions/playwright.d.ts"
60
64
  ]
61
65
  }
62
66
  },
63
67
  "dependencies": {
64
- "@trigger.dev/core": "0.0.0-re2-20250508091848",
68
+ "@trigger.dev/core": "0.0.0-re2-20250512143406",
65
69
  "pkg-types": "^1.1.3",
66
70
  "tinyglobby": "^0.2.2",
67
71
  "tsconfck": "3.1.3"
@@ -165,6 +169,17 @@
165
169
  "types": "./dist/commonjs/extensions/puppeteer.d.ts",
166
170
  "default": "./dist/commonjs/extensions/puppeteer.js"
167
171
  }
172
+ },
173
+ "./extensions/playwright": {
174
+ "import": {
175
+ "@triggerdotdev/source": "./src/extensions/playwright.ts",
176
+ "types": "./dist/esm/extensions/playwright.d.ts",
177
+ "default": "./dist/esm/extensions/playwright.js"
178
+ },
179
+ "require": {
180
+ "types": "./dist/commonjs/extensions/playwright.d.ts",
181
+ "default": "./dist/commonjs/extensions/playwright.js"
182
+ }
168
183
  }
169
184
  },
170
185
  "main": "./dist/commonjs/index.js",