Skip to content

Commit a50330e

Browse files
authored
feat: add browser.ui option (#5771)
1 parent a431887 commit a50330e

File tree

7 files changed

+30
-3
lines changed

7 files changed

+30
-3
lines changed

docs/config/index.md

+8
Original file line numberDiff line numberDiff line change
@@ -1626,6 +1626,14 @@ This option has no effect on tests running inside Node.js.
16261626

16271627
If you rely on spying on ES modules with `vi.spyOn`, you can enable this experimental feature to allow spying on module exports.
16281628

1629+
#### browser.ui {#browser-ui}
1630+
1631+
- **Type:** `boolean`
1632+
- **Default:** `!isCI`
1633+
- **CLI:** `--browser.ui=false`
1634+
1635+
Should Vitest UI be injected into the page. By default, injects UI iframe during development.
1636+
16291637
#### browser.indexScripts {#browser-indexscripts}
16301638

16311639
- **Type:** `BrowserScript[]`

packages/browser/src/client/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
{__VITEST_SCRIPTS__}
2626
</head>
2727
<body>
28-
<iframe id="vitest-ui" src="/__vitest__/"></iframe>
28+
{__VITEST_UI__}
2929
<script type="module" src="/main.ts"></script>
3030
<div id="vitest-tester"></div>
3131
</body>

packages/browser/src/client/tester.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ async function prepareTestEnvironment(files: string[]) {
9292
rpc,
9393
durations: {
9494
environment: 0,
95-
prepare: 0,
95+
prepare: performance.now(),
9696
},
9797
providedContext,
9898
}
@@ -169,6 +169,8 @@ async function runTests(files: string[]) {
169169

170170
const { config, runner, state, setupCommonEnv, startTests } = preparedData
171171

172+
state.durations.prepare = performance.now() - state.durations.prepare
173+
172174
try {
173175
await setupCommonEnv(config)
174176
for (const file of files)

packages/browser/src/node/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ export default (project: WorkspaceProject, base = '/'): Plugin[] => {
7373
__VITEST_TITLE__: 'Vitest Browser Runner',
7474
__VITEST_SCRIPTS__: indexScripts,
7575
__VITEST_INJECTOR__: injector,
76+
__VITEST_UI__: project.config.browser.ui
77+
? '<iframe id="vitest-ui" src="/__vitest__/"></iframe>'
78+
: '',
7679
})
7780
res.write(html, 'utf-8')
7881
res.end()

packages/vitest/src/node/cli/cli-config.ts

+3
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,9 @@ export const cliOptionsConfig: VitestCLIOptions = {
347347
isolate: {
348348
description: 'Run every browser test file in isolation. To disable isolation, use `--browser.isolate=false` (default: `true`)',
349349
},
350+
ui: {
351+
description: 'Show Vitest UI when running tests',
352+
},
350353
fileParallelism: {
351354
description: 'Should all test files run in parallel. Use `--browser.file-parallelism=false` to disable (default: same as `--file-parallelism`)',
352355
},

packages/vitest/src/node/config.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,9 @@ export function resolveConfig(
520520
...resolved.typecheck,
521521
}
522522

523-
resolved.environmentMatchGlobs = (resolved.environmentMatchGlobs || []).map(i => [resolve(resolved.root, i[0]), i[1]])
523+
resolved.environmentMatchGlobs = (resolved.environmentMatchGlobs || []).map(i =>
524+
[resolve(resolved.root, i[0]), i[1]],
525+
)
524526

525527
resolved.typecheck ??= {} as any
526528
resolved.typecheck.enabled ??= false
@@ -533,6 +535,7 @@ export function resolveConfig(
533535
resolved.browser.headless ??= isCI
534536
resolved.browser.slowHijackESM ??= false
535537
resolved.browser.isolate ??= true
538+
resolved.browser.ui ??= !isCI
536539

537540
if (resolved.browser.enabled && stdProvider === 'stackblitz')
538541
resolved.browser.provider = 'none'

packages/vitest/src/types/browser.ts

+8
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,13 @@ export interface BrowserConfigOptions {
8787
*/
8888
isolate?: boolean
8989

90+
/**
91+
* Show Vitest UI
92+
*
93+
* @default !process.env.CI
94+
*/
95+
ui?: boolean
96+
9097
/**
9198
* Run test files in parallel. Fallbacks to `test.fileParallelism`.
9299
*
@@ -156,4 +163,5 @@ export interface ResolvedBrowserOptions extends BrowserConfigOptions {
156163
headless: boolean
157164
isolate: boolean
158165
api: ApiConfig
166+
ui: boolean
159167
}

0 commit comments

Comments
 (0)