Skip to content

Commit 2af8ffb

Browse files
committed
update doc
1 parent 5319309 commit 2af8ffb

2 files changed

Lines changed: 19 additions & 10 deletions

File tree

packages/test/BUNDLING.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -284,21 +284,22 @@ When upgrading the vitest version:
284284
### Build Flow
285285

286286
```
287-
1. bundleVitest() Copy vitest-dev dist/ -> dist/
288-
2. copyVitestPackages() Copy @vitest/* -> dist/@vitest/
289-
3. convertTabsToSpaces() Normalize formatting for patches
290-
4. collectLeafDependencies() Parse imports with oxc-parser
291-
5. bundleLeafDeps() Bundle chai, pathe, etc -> dist/vendor/
292-
6. rewriteVitestImports() Rewrite @vitest/*, vitest/*, vite
293-
7. patchVitestPkgRootPaths() Fix distRoot for relocated files
287+
1. bundleVitest() Copy vitest-dev dist/ -> dist/
288+
2. copyVitestPackages() Copy @vitest/* -> dist/@vitest/
289+
3. convertTabsToSpaces() Normalize formatting for patches
290+
4. collectLeafDependencies() Parse imports with oxc-parser
291+
5. bundleLeafDeps() Bundle chai, pathe, etc -> dist/vendor/
292+
6. rewriteVitestImports() Rewrite @vitest/*, vitest/*, vite
293+
7. patchVitestPkgRootPaths() Fix distRoot for relocated files
294294
8. patchVitestBrowserPackage() Inject vendor-aliases plugin
295-
9. patchPlaywrightLocators() Fix browser-safe imports
295+
9. patchBrowserProviderLocators() Fix browser-safe imports
296296
10. Post-processing:
297297
- patchVendorPaths()
298298
- createBrowserCompatShim()
299299
- createModuleRunnerStub() Browser-safe stub
300300
- createNodeEntry() index-node.js with browser-provider
301301
- copyBrowserClientFiles()
302+
- createBrowserEntryFiles() browser/ entry files at package root
302303
- createPluginExports() dist/plugins/* for pnpm overrides
303304
- mergePackageJson()
304305
- validateExternalDeps()
@@ -307,6 +308,9 @@ When upgrading the vitest version:
307308
### Output Structure
308309

309310
```
311+
browser/ # Entry files for ./browser export
312+
├── context.js # Runtime guard (throws if not in browser)
313+
└── context.d.ts # Re-exports from dist/@vitest/browser/context.d.ts
310314
dist/
311315
├── @vitest/ # Copied packages (browser/Node.js safe)
312316
│ ├── runner/
@@ -355,6 +359,7 @@ This is achieved through:
355359
4. `vendor-aliases` plugin injection to resolve imports at runtime:
356360
- Handles `@vitest/*` imports → resolves to copied `dist/@vitest/` files
357361
- Handles `vitest/*` subpaths → resolves to dist files (enables `vitest/browser-playwright` usage)
362+
- Handles `vitest/browser-playwright`, `vitest/browser-webdriverio`, `vitest/browser-preview` → resolves to bundled browser providers
358363
- Handles `@voidzero-dev/vite-plus-test/*` subpaths → maps to equivalent vitest paths
359364
- Handles `@voidzero-dev/vite-plus/test/*` subpaths → maps to equivalent vitest paths (CLI package)
360365
- Intercepts `vitest/browser`, `@voidzero-dev/vite-plus-test/browser`, `@voidzero-dev/vite-plus/test/browser` → returns virtual module ID for BrowserContext plugin

packages/test/build.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,10 @@ async function patchVitestBrowserPackage() {
12131213
'vitest/reporters': resolve(packageRoot, 'reporters.js'),
12141214
'vitest/snapshot': resolve(packageRoot, 'snapshot.js'),
12151215
'vitest/mocker': resolve(packageRoot, 'mocker.js'),
1216+
// Browser providers - resolve to our bundled @vitest/browser-* packages
1217+
'vitest/browser-playwright': resolve(packageRoot, '@vitest/browser-playwright/index.js'),
1218+
'vitest/browser-webdriverio': resolve(packageRoot, '@vitest/browser-webdriverio/index.js'),
1219+
'vitest/browser-preview': resolve(packageRoot, '@vitest/browser-preview/index.js'),
12161220
};
12171221
if (vitestSubpathMap[id]) {
12181222
return vitestSubpathMap[id];
@@ -1298,7 +1302,7 @@ async function patchVitestBrowserPackage() {
12981302

12991303
// 4. Patch BrowserContext to also handle our package aliases as fallback
13001304
// This allows direct imports from our package without requiring vitest override
1301-
// Supports: @voidzero-dev/vite-plus-test/browser, @voidzero-dev/vite-plus/test/browser
1305+
// Supports: vitest/browser, @voidzero-dev/vite-plus-test/browser, @voidzero-dev/vite-plus/test/browser
13021306
const browserContextPattern = /if \(id === ID_CONTEXT\) \{/;
13031307
if (browserContextPattern.test(content)) {
13041308
content = content.replace(
@@ -1373,7 +1377,7 @@ async function patchBrowserProviderLocators() {
13731377
// webdriverio/preview: import page from context.js, keep other imports from index.js
13741378
const extraImportsStr = provider.extraImports.join(', ');
13751379
const importPattern = new RegExp(
1376-
`import \\{ page, server, ${extraImportsStr.replace(/, /g, ', ')} \\} from ['"]\\.\\.\/browser\/index\\.js['"];?`,
1380+
`import \\{ page, server, ${extraImportsStr} \\} from ['"]\\.\\.\/browser\/index\\.js['"];?`,
13771381
);
13781382
if (importPattern.test(content)) {
13791383
const replacement = `import { page } from '../browser/context.js';\nimport { ${extraImportsStr} } from '../browser/index.js';`;

0 commit comments

Comments
 (0)