From 61f77b7dfb26354d9fd3d07b466570db351021af Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Thu, 16 Nov 2023 09:06:03 +0100 Subject: [PATCH 1/3] fix: add vitest/ imports to entries --- packages/browser/src/node/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/browser/src/node/index.ts b/packages/browser/src/node/index.ts index 696eebfc3999..923297a1643a 100644 --- a/packages/browser/src/node/index.ts +++ b/packages/browser/src/node/index.ts @@ -45,6 +45,11 @@ export default (project: WorkspaceProject, base = '/'): Plugin[] => { } = project.config const projectRoot = dir || root const entries = await project.globAllTestFiles(include, exclude, includeSource, projectRoot) + entries.push( + 'vitest/utils', + 'vitest/browser', + 'vitest/runners', + ) return { optimizeDeps: { entries, From af798d9e8de401f2fbf731ecf354ebd92ddd926b Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Thu, 16 Nov 2023 09:11:56 +0100 Subject: [PATCH 2/3] chore: make it more stable --- packages/browser/src/client/main.ts | 24 +++++++++++++++++++++++- packages/browser/src/client/utils.ts | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/browser/src/client/main.ts b/packages/browser/src/client/main.ts index 778cff644e97..0780333421f8 100644 --- a/packages/browser/src/client/main.ts +++ b/packages/browser/src/client/main.ts @@ -135,7 +135,7 @@ ws.addEventListener('open', async () => { await runTests(paths, config!) }) -async function runTests(paths: string[], config: ResolvedConfig) { +async function prepareTestEnvironment(config: ResolvedConfig) { // need to import it before any other import, otherwise Vite optimizer will hang const viteClientPath = '/@vite/client' await import(viteClientPath) @@ -157,6 +157,28 @@ async function runTests(paths: string[], config: ResolvedConfig) { runner = new BrowserRunner({ config, browserHashMap }) } + return { + startTests, + setupCommonEnv, + loadDiffConfig, + executor, + runner, + } +} + +async function runTests(paths: string[], config: ResolvedConfig) { + let preparedData: Awaited> | undefined + // if importing /@id/ failed, we reload the page waiting until Vite prebundles it + try { + preparedData = await prepareTestEnvironment(config) + } + catch (err) { + location.reload() + return + } + + const { startTests, setupCommonEnv, loadDiffConfig, executor, runner } = preparedData! + onCancel.then((reason) => { runner?.onCancel?.(reason) }) diff --git a/packages/browser/src/client/utils.ts b/packages/browser/src/client/utils.ts index aa9bebe46368..b79f353d319e 100644 --- a/packages/browser/src/client/utils.ts +++ b/packages/browser/src/client/utils.ts @@ -1,5 +1,5 @@ // it's possible that import was not optimized yet -async function tryImport(id: string, tries = 10): Promise { +async function tryImport(id: string, tries = 20): Promise { try { return await import(id) } From 021c9787a7b94c5e62a5a64f3ae78ddb455132a9 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Thu, 16 Nov 2023 09:18:38 +0100 Subject: [PATCH 3/3] chore: use another array --- packages/browser/src/node/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/browser/src/node/index.ts b/packages/browser/src/node/index.ts index 923297a1643a..448665992c5d 100644 --- a/packages/browser/src/node/index.ts +++ b/packages/browser/src/node/index.ts @@ -45,14 +45,14 @@ export default (project: WorkspaceProject, base = '/'): Plugin[] => { } = project.config const projectRoot = dir || root const entries = await project.globAllTestFiles(include, exclude, includeSource, projectRoot) - entries.push( - 'vitest/utils', - 'vitest/browser', - 'vitest/runners', - ) return { optimizeDeps: { - entries, + entries: [ + ...entries, + 'vitest/utils', + 'vitest/browser', + 'vitest/runners', + ], exclude: [ ...builtinModules, 'vitest',