[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
12

Configure Feed

Select the types of activity you want to include in your feed.

fix(browser): exclude missed packages from optimization, print help message (#6445)

authored by

Vladimir and committed by
GitHub
(Sep 7, 2024, 9:02 AM +0200) 8d883cf0 c321a3fd

+56 -27
+21 -3
packages/browser/src/node/index.ts
··· 1 1 import type { WorkspaceProject } from 'vitest/node' 2 2 import type { Plugin } from 'vitest/config' 3 - import { createServer } from 'vitest/node' 3 + import { createViteLogger, createViteServer } from 'vitest/node' 4 4 import c from 'tinyrainbow' 5 5 import { version } from '../../package.json' 6 6 import { setupBrowserRpc } from './rpc' ··· 30 30 31 31 const configPath = typeof configFile === 'string' ? configFile : false 32 32 33 - const vite = await createServer({ 33 + const logLevel = (process.env.VITEST_BROWSER_DEBUG as 'info') ?? 'info' 34 + 35 + const logger = createViteLogger(logLevel) 36 + 37 + const vite = await createViteServer({ 34 38 ...project.options, // spread project config inlined in root workspace config 35 39 base: '/', 36 - logLevel: (process.env.VITEST_BROWSER_DEBUG as 'info') ?? 'info', 40 + logLevel, 41 + customLogger: { 42 + ...logger, 43 + info(msg, options) { 44 + logger.info(msg, options) 45 + if (msg.includes('optimized dependencies changed. reloading')) { 46 + logger.warn( 47 + [ 48 + c.yellow(`\n${c.bold('[vitest]')} Vite unexpectedly reloaded a test. This may cause tests to fail, lead to flaky behaviour or duplicated test runs.\n`), 49 + c.yellow(`For a stable experience, please add mentioned dependencies to your config\'s ${c.bold('\`optimizeDeps.include\`')} field manually.\n\n`), 50 + ].join(''), 51 + ) 52 + } 53 + }, 54 + }, 37 55 mode: project.config.mode, 38 56 configFile: configPath, 39 57 // watch is handled by Vitest
+25 -23
packages/browser/src/node/plugin.ts
··· 182 182 ...(project.config.snapshotSerializers || []), 183 183 ] 184 184 185 + const exclude = [ 186 + 'vitest', 187 + 'vitest/utils', 188 + 'vitest/browser', 189 + 'vitest/runners', 190 + '@vitest/browser', 191 + '@vitest/browser/client', 192 + '@vitest/utils', 193 + '@vitest/utils/source-map', 194 + '@vitest/runner', 195 + '@vitest/spy', 196 + '@vitest/utils/error', 197 + '@vitest/snapshot', 198 + '@vitest/expect', 199 + 'std-env', 200 + 'tinybench', 201 + 'tinyspy', 202 + 'tinyrainbow', 203 + 'pathe', 204 + 'msw', 205 + 'msw/browser', 206 + ] 207 + 185 208 if (project.config.diff) { 186 209 entries.push(project.config.diff) 187 210 } ··· 193 216 const path = tryResolve('@vitest/coverage-v8', [project.ctx.config.root]) 194 217 if (path) { 195 218 entries.push(path) 219 + exclude.push('@vitest/coverage-v8/browser') 196 220 } 197 221 } 198 222 else if (provider === 'istanbul') { 199 223 const path = tryResolve('@vitest/coverage-istanbul', [project.ctx.config.root]) 200 224 if (path) { 201 225 entries.push(path) 226 + exclude.push('@vitest/coverage-istanbul') 202 227 } 203 228 } 204 229 else if (provider === 'custom' && coverage.customProviderModule) { ··· 223 248 if (vue) { 224 249 include.push(vue) 225 250 } 226 - 227 - const exclude = [ 228 - 'vitest', 229 - 'vitest/utils', 230 - 'vitest/browser', 231 - 'vitest/runners', 232 - '@vitest/browser', 233 - '@vitest/browser/client', 234 - '@vitest/utils', 235 - '@vitest/utils/source-map', 236 - '@vitest/runner', 237 - '@vitest/spy', 238 - '@vitest/utils/error', 239 - '@vitest/snapshot', 240 - '@vitest/expect', 241 - 'std-env', 242 - 'tinybench', 243 - 'tinyspy', 244 - 'tinyrainbow', 245 - 'pathe', 246 - 'msw', 247 - 'msw/browser', 248 - ] 249 251 250 252 const svelte = tryResolve('vitest-browser-svelte', [project.ctx.config.root]) 251 253 if (svelte) {
+10 -1
packages/vitest/src/public/node.ts
··· 1 + import { createServer as _createServer } from 'vite' 1 2 import { TestModule as _TestFile } from '../node/reporters/reported-tasks' 2 3 import type { ModuleDiagnostic as _FileDiagnostic } from '../node/reporters/reported-tasks' 3 4 ··· 49 50 export type { JUnitOptions } from '../node/reporters/junit' 50 51 export type { HTMLOptions } from '../node/reporters/html' 51 52 52 - export { isFileServingAllowed, createServer, parseAst, parseAstAsync } from 'vite' 53 + export { 54 + isFileServingAllowed, 55 + parseAst, 56 + parseAstAsync, 57 + createLogger as createViteLogger, 58 + } from 'vite' 59 + /** @deprecated use `createViteServer` instead */ 60 + export const createServer = _createServer 61 + export const createViteServer = _createServer 53 62 export type * as Vite from 'vite' 54 63 55 64 export { TestCase, TestModule, TestSuite } from '../node/reporters/reported-tasks'