From 89cb78460bd983a668d6abfbf5cc1cb4540ce7c6 Mon Sep 17 00:00:00 2001 From: "vercel-gh-bot-2[bot]" <282331341+vercel-gh-bot-2[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 22:02:49 +0000 Subject: [PATCH] test(turbopack): cover package module specifiers in worker URLs Next-Maintainer-Receipt: v1.ojGI4WblTRW96gOPpmw19HmxN8HHA7baxuJVc6SGtcQ --- .../app/package-module-specifier/page.js | 31 +++++++++++++++++++ .../node_modules/worker-package/index.js | 3 ++ .../node_modules/worker-package/package.json | 15 +++++++++ .../node_modules/worker-package/worker.js | 1 + test/e2e/app-dir/worker/worker.test.ts | 15 +++++++++ 5 files changed, 65 insertions(+) create mode 100644 test/e2e/app-dir/worker/app/package-module-specifier/page.js create mode 100644 test/e2e/app-dir/worker/node_modules/worker-package/index.js create mode 100644 test/e2e/app-dir/worker/node_modules/worker-package/package.json create mode 100644 test/e2e/app-dir/worker/node_modules/worker-package/worker.js diff --git a/test/e2e/app-dir/worker/app/package-module-specifier/page.js b/test/e2e/app-dir/worker/app/package-module-specifier/page.js new file mode 100644 index 000000000000..b0ce438102b9 --- /dev/null +++ b/test/e2e/app-dir/worker/app/package-module-specifier/page.js @@ -0,0 +1,31 @@ +'use client' + +import { useState } from 'react' +import { createWorker } from 'worker-package' + +export default function Page() { + const [state, setState] = useState('default') + + return ( + <> + +
{state}
+ > + ) +} diff --git a/test/e2e/app-dir/worker/node_modules/worker-package/index.js b/test/e2e/app-dir/worker/node_modules/worker-package/index.js new file mode 100644 index 000000000000..e8e9976cd400 --- /dev/null +++ b/test/e2e/app-dir/worker/node_modules/worker-package/index.js @@ -0,0 +1,3 @@ +export function createWorker() { + return new Worker(new URL('worker-package/worker.js', import.meta.url)) +} diff --git a/test/e2e/app-dir/worker/node_modules/worker-package/package.json b/test/e2e/app-dir/worker/node_modules/worker-package/package.json new file mode 100644 index 000000000000..20e02ccb8b48 --- /dev/null +++ b/test/e2e/app-dir/worker/node_modules/worker-package/package.json @@ -0,0 +1,15 @@ +{ + "name": "worker-package", + "version": "1.0.0", + "type": "module", + "exports": { + ".": { + "import": "./index.js", + "default": "./index.js" + }, + "./*": { + "import": "./*", + "default": "./*" + } + } +} diff --git a/test/e2e/app-dir/worker/node_modules/worker-package/worker.js b/test/e2e/app-dir/worker/node_modules/worker-package/worker.js new file mode 100644 index 000000000000..cbe93316aad8 --- /dev/null +++ b/test/e2e/app-dir/worker/node_modules/worker-package/worker.js @@ -0,0 +1 @@ +self.postMessage('worker-loaded') diff --git a/test/e2e/app-dir/worker/worker.test.ts b/test/e2e/app-dir/worker/worker.test.ts index 772af1b36fa8..155aca281328 100644 --- a/test/e2e/app-dir/worker/worker.test.ts +++ b/test/e2e/app-dir/worker/worker.test.ts @@ -56,6 +56,21 @@ describe('app dir - workers', () => { ) }) + it('should support package module specifiers in web worker URLs', async () => { + const browser = await next.browser('/package-module-specifier', { + beforePageLoad, + }) + expect(await browser.elementByCss('#worker-state').text()).toBe('default') + + await browser.elementByCss('button').click() + + await retry(async () => + expect(await browser.elementByCss('#worker-state').text()).toBe( + 'worker-loaded' + ) + ) + }) + it('should not bundle web workers with string specifiers', async () => { const browser = await next.browser('/string', { beforePageLoad,