Skip to content

Commit 3aab8a1

Browse files
authored
refactor: deprecate all config types from the main Vitest entrypoint, introduce SerializedConfig type (#6205)
1 parent 883f348 commit 3aab8a1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+584
-264
lines changed

docs/guide/browser/context.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export const page: {
6767
/**
6868
* Serialized test config.
6969
*/
70-
config: ResolvedConfig
70+
config: SerializedConfig
7171
/**
7272
* Change the size of iframe's viewport.
7373
*/

packages/browser/context.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ResolvedConfig } from 'vitest'
1+
import type { SerializedConfig } from 'vitest'
22

33
export type BufferEncoding =
44
| 'ascii'
@@ -253,7 +253,7 @@ export interface BrowserPage {
253253
/**
254254
* Serialized test config.
255255
*/
256-
config: ResolvedConfig
256+
config: SerializedConfig
257257
/**
258258
* Change the size of iframe's viewport.
259259
*/

packages/browser/src/client/orchestrator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import type { ResolvedConfig } from 'vitest'
21
import { channel, client } from '@vitest/browser/client'
32
import { generateHash } from '@vitest/runner/utils'
43
import { type GlobalChannelIncomingEvent, type IframeChannelEvent, type IframeChannelIncomingEvent, globalChannel } from '@vitest/browser/client'
54
import { relative } from 'pathe'
5+
import type { SerializedConfig } from 'vitest'
66
import { getBrowserState, getConfig } from './utils'
77
import { getUiAPI } from './ui'
88
import { createModuleMocker } from './tester/msw'
@@ -230,7 +230,7 @@ async function done() {
230230
await client.rpc.finishBrowserTests(getBrowserState().contextId)
231231
}
232232

233-
async function getContainer(config: ResolvedConfig): Promise<HTMLDivElement> {
233+
async function getContainer(config: SerializedConfig): Promise<HTMLDivElement> {
234234
if (config.browser.ui) {
235235
const element = document.querySelector('#tester-ui')
236236
if (!element) {

packages/browser/src/client/tester/runner.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { CancelReason, File, Suite, Task, TaskResultPack, VitestRunner } from '@vitest/runner'
2-
import type { ResolvedConfig, WorkerGlobalState } from 'vitest'
2+
import type { SerializedConfig, WorkerGlobalState } from 'vitest'
33
import type { VitestExecutor } from 'vitest/execute'
44
import { NodeBenchmarkRunner, VitestTestRunner } from 'vitest/runners'
55
import { loadDiffConfig, loadSnapshotSerializers, takeCoverageInsideWorker } from 'vitest/browser'
@@ -12,7 +12,7 @@ import { rpc } from './rpc'
1212
import type { VitestBrowserClientMocker } from './mocker'
1313

1414
interface BrowserRunnerOptions {
15-
config: ResolvedConfig
15+
config: SerializedConfig
1616
}
1717

1818
export const browserHashMap = new Map<
@@ -25,13 +25,13 @@ interface CoverageHandler {
2525
}
2626

2727
export function createBrowserRunner(
28-
runnerClass: { new (config: ResolvedConfig): VitestRunner },
28+
runnerClass: { new (config: SerializedConfig): VitestRunner },
2929
mocker: VitestBrowserClientMocker,
3030
state: WorkerGlobalState,
3131
coverageModule: CoverageHandler | null,
3232
): { new (options: BrowserRunnerOptions): VitestRunner } {
3333
return class BrowserTestRunner extends runnerClass implements VitestRunner {
34-
public config: ResolvedConfig
34+
public config: SerializedConfig
3535
hashMap = browserHashMap
3636
public sourceMapCache = new Map<string, any>()
3737

@@ -140,7 +140,7 @@ let cachedRunner: VitestRunner | null = null
140140
export async function initiateRunner(
141141
state: WorkerGlobalState,
142142
mocker: VitestBrowserClientMocker,
143-
config: ResolvedConfig,
143+
config: SerializedConfig,
144144
) {
145145
if (cachedRunner) {
146146
return cachedRunner

packages/browser/src/client/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ResolvedConfig, WorkerGlobalState } from 'vitest'
1+
import type { SerializedConfig, WorkerGlobalState } from 'vitest'
22

33
export async function importId(id: string) {
44
const name = `/@id/${id}`.replace(/\\/g, '/')
@@ -10,15 +10,15 @@ export async function importFs(id: string) {
1010
return getBrowserState().wrapModule(() => import(/* @vite-ignore */ name))
1111
}
1212

13-
export function getConfig(): ResolvedConfig {
13+
export function getConfig(): SerializedConfig {
1414
return getBrowserState().config
1515
}
1616

1717
export interface BrowserRunnerState {
1818
files: string[]
1919
runningFiles: string[]
2020
moduleCache: WorkerGlobalState['moduleCache']
21-
config: ResolvedConfig
21+
config: SerializedConfig
2222
provider: string
2323
viteConfig: {
2424
root: string

packages/browser/src/node/commands/screenshot.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { mkdir } from 'node:fs/promises'
22
import { normalize } from 'node:path'
3-
import type { BrowserCommand } from 'vitest/node'
3+
import type { BrowserCommand, ResolvedConfig } from 'vitest/node'
44
import { basename, dirname, relative, resolve } from 'pathe'
5-
import type { ResolvedConfig } from 'vitest'
65
import type { ScreenshotOptions } from '../../../context'
76
import { PlaywrightBrowserProvider } from '../providers/playwright'
87
import { WebdriverBrowserProvider } from '../providers/webdriver'

packages/browser/src/node/resolveMock.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import { existsSync, readFileSync, readdirSync } from 'node:fs'
22
import { builtinModules } from 'node:module'
33
import { basename, dirname, extname, isAbsolute, join, resolve } from 'pathe'
44
import type { PartialResolvedId } from 'rollup'
5-
import type { ResolvedConfig } from 'vitest'
5+
import type { ResolvedConfig, WorkspaceProject } from 'vitest/node'
66
import type { ResolvedConfig as ViteConfig } from 'vite'
7-
import type { WorkspaceProject } from 'vitest/node'
87

98
export async function resolveMock(
109
project: WorkspaceProject,

packages/browser/src/node/server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import type {
1111
import { join, resolve } from 'pathe'
1212
import type { ErrorWithDiff } from '@vitest/utils'
1313
import { slash } from '@vitest/utils'
14-
import type { ResolvedConfig } from 'vitest'
1514
import { type StackTraceParserOptions, parseErrorStacktrace, parseStacktrace } from '@vitest/utils/source-map'
15+
import type { SerializedConfig } from 'vitest'
1616
import { BrowserServerState } from './state'
1717
import { getBrowserProvider } from './utils'
1818
import { BrowserServerCDPHandler } from './cdp'
@@ -224,7 +224,7 @@ export class BrowserServer implements IBrowserServer {
224224
}
225225
}
226226

227-
function wrapConfig(config: ResolvedConfig): ResolvedConfig {
227+
function wrapConfig(config: SerializedConfig): SerializedConfig {
228228
return {
229229
...config,
230230
// workaround RegExp serialization

packages/browser/src/node/serverOrchestrator.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@ export async function resolveOrchestrator(
1717

1818
const files = server.state.getContext(contextId!)?.files ?? []
1919

20-
const config = server.getSerializableConfig()
2120
const injectorJs = typeof server.injectorJs === 'string'
2221
? server.injectorJs
2322
: await server.injectorJs
2423

2524
const injector = replacer(injectorJs, {
2625
__VITEST_PROVIDER__: JSON.stringify(server.provider.name),
27-
__VITEST_CONFIG__: JSON.stringify(config),
26+
__VITEST_CONFIG__: JSON.stringify(server.getSerializableConfig()),
2827
__VITEST_VITE_CONFIG__: JSON.stringify({
2928
root: server.vite.config.root,
3029
}),

packages/browser/src/node/serverTester.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,9 @@ export async function resolveTester(
3838
? server.injectorJs
3939
: await server.injectorJs
4040

41-
const config = server.getSerializableConfig()
42-
4341
const injector = replacer(injectorJs, {
4442
__VITEST_PROVIDER__: JSON.stringify(server.provider.name),
45-
__VITEST_CONFIG__: JSON.stringify(config),
43+
__VITEST_CONFIG__: JSON.stringify(server.getSerializableConfig()),
4644
__VITEST_FILES__: JSON.stringify(files),
4745
__VITEST_VITE_CONFIG__: JSON.stringify({
4846
root: server.vite.config.root,
@@ -57,7 +55,7 @@ export async function resolveTester(
5755
const testerScripts = await server.formatScripts(
5856
project.config.browser.testerScripts,
5957
)
60-
const clientScript = `<script type="module" src="${config.base || '/'}@vite/client"></script>`
58+
const clientScript = `<script type="module" src="${server.project.config.base || '/'}@vite/client"></script>`
6159
const stateJs = typeof server.stateJs === 'string'
6260
? server.stateJs
6361
: await server.stateJs

0 commit comments

Comments
 (0)