diff --git a/packages/ui/client/composables/client/static.ts b/packages/ui/client/composables/client/static.ts index 7c560a9c4..89c58fffb 100644 --- a/packages/ui/client/composables/client/static.ts +++ b/packages/ui/client/composables/client/static.ts @@ -70,10 +70,10 @@ export function createStaticClient(): VitestClient { rpc: undefined!, reconnect: () => registerMetadata(), waitForConnection: async () => {}, - }) + }) as VitestClient - ctx.state.filesMap = reactive(ctx.state.filesMap) - ctx.state.idMap = reactive(ctx.state.idMap) + ctx.state.filesMap = reactive(ctx.state.filesMap) as StateManager['filesMap'] + ctx.state.idMap = reactive(ctx.state.idMap) as StateManager['idMap'] async function registerMetadata() { const content = await window.HTML_REPORT_METADATA! diff --git a/packages/vitest/src/defaults.ts b/packages/vitest/src/defaults.ts index b23b0eb91..ecaabfe27 100644 --- a/packages/vitest/src/defaults.ts +++ b/packages/vitest/src/defaults.ts @@ -1,6 +1,6 @@ import type { - BenchmarkUserOptions, CoverageOptions, + ResolvedBenchmarkOptions, UserConfig, } from './node/types/config' import type { FieldsWithDefaultValues } from './node/types/coverage' @@ -14,13 +14,12 @@ export const defaultExclude: string[] = [ '**/node_modules/**', '**/.git/**', ] -export const benchmarkConfigDefaults: Required = { +export const benchmarkConfigDefaults: ResolvedBenchmarkOptions = { enabled: false, include: ['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)'], exclude: defaultExclude, includeSource: [], retainSamples: false, - provider: 'default', suppressExportGetterWarnings: false, // Populated automatically when Vitest clones the parent project; the default // here applies to the (unused) raw config that's never run as a benchmark. diff --git a/packages/vitest/src/node/config/resolveConfig.ts b/packages/vitest/src/node/config/resolveConfig.ts index f61d35e7b..05810c53b 100644 --- a/packages/vitest/src/node/config/resolveConfig.ts +++ b/packages/vitest/src/node/config/resolveConfig.ts @@ -294,7 +294,7 @@ export function resolveTestConfig( ...benchmarkConfigDefaults, ...resolved.benchmark, } - if (resolved.benchmark.provider && resolved.benchmark.provider !== 'default') { + if (resolved.benchmark.provider) { resolved.benchmark.provider = resolvePath( resolved.benchmark.provider, resolved.root, diff --git a/packages/vitest/src/node/types/benchmark.ts b/packages/vitest/src/node/types/benchmark.ts index a220cf1bb..27abfcca3 100644 --- a/packages/vitest/src/node/types/benchmark.ts +++ b/packages/vitest/src/node/types/benchmark.ts @@ -30,15 +30,13 @@ export interface BenchmarkUserOptions { /** * The benchmark provider that executes registered benchmarks and produces - * their results. Either the built-in `'default'` provider (backed by - * tinybench) or a path to a module whose default export implements + * their results. Provide a path to a module whose default export implements * `BenchmarkProvider`. The path is resolved relative to the project - * root. + * root. If not specified, the built-in provider is used. * - * @default 'default' * @experimental */ - provider?: 'default' | (string & {}) + provider?: string /** * Disable warnings when a benchmark accesses module export getters too many times. @@ -55,3 +53,7 @@ export interface BenchmarkUserOptions { */ projectName?: string } + +export type ResolvedBenchmarkOptions = Omit, 'provider'> & { + provider?: string | undefined +} diff --git a/packages/vitest/src/node/types/config.ts b/packages/vitest/src/node/types/config.ts index 2289dae72..582cceb26 100644 --- a/packages/vitest/src/node/types/config.ts +++ b/packages/vitest/src/node/types/config.ts @@ -20,13 +20,13 @@ import type { TestCase, TestModule, TestSuite } from '../reporters/reported-task import type { TestSequencerConstructor } from '../sequencers/types' import type { VCSProvider } from '../vcs/vcs' import type { WatcherTriggerPattern } from '../watcher' -import type { BenchmarkUserOptions } from './benchmark' +import type { BenchmarkUserOptions, ResolvedBenchmarkOptions } from './benchmark' import type { BrowserConfigOptions, BrowserServerContribution, ResolvedBrowserOptions } from './browser' import type { CoverageOptions, ResolvedCoverageOptions } from './coverage' import type { Reporter } from './reporter' export type { CoverageOptions, ResolvedCoverageOptions } -export type { BenchmarkUserOptions } +export type { BenchmarkUserOptions, ResolvedBenchmarkOptions } export type { RuntimeConfig, SerializedConfig } from '../../runtime/config' export type { SequenceHooks, SequenceSetupFiles } from '../../runtime/runner/types' export type { BrowserConfigOptions, BrowserInstanceOption, BrowserScript } from './browser' @@ -1227,7 +1227,7 @@ export interface ResolvedConfig cliExclude?: string[] project: string[] - benchmark: Required + benchmark: ResolvedBenchmarkOptions shard?: { index: number count: number diff --git a/packages/vitest/src/runtime/benchmark.ts b/packages/vitest/src/runtime/benchmark.ts index 204a658d2..41f95a4c6 100644 --- a/packages/vitest/src/runtime/benchmark.ts +++ b/packages/vitest/src/runtime/benchmark.ts @@ -129,7 +129,7 @@ export function resolveBenchmarkProvider( ): Promise { if (!cachedProvider) { const provider = config.benchmark.provider - cachedProvider = provider === 'default' || !provider + cachedProvider = !provider ? Promise.resolve(createDefaultBenchmarkProvider(config)) : loadProviderModule(provider, moduleRunner) } diff --git a/packages/vitest/src/runtime/benchmark/default-provider.ts b/packages/vitest/src/runtime/benchmark/default-provider.ts index f5fb3f57a..37fd5a17d 100644 --- a/packages/vitest/src/runtime/benchmark/default-provider.ts +++ b/packages/vitest/src/runtime/benchmark/default-provider.ts @@ -9,7 +9,7 @@ const now = globalThis.performance /** * The built-in benchmark provider, backed by tinybench. Selected when - * `benchmark.provider` is `'default'` (the default). + * `benchmark.provider` is not configured. */ export function createDefaultBenchmarkProvider(config: SerializedConfig): BenchmarkProvider { let benchIdx = 0 diff --git a/packages/vitest/src/runtime/config.ts b/packages/vitest/src/runtime/config.ts index 22e2bbe3e..4c66f5606 100644 --- a/packages/vitest/src/runtime/config.ts +++ b/packages/vitest/src/runtime/config.ts @@ -143,7 +143,7 @@ export interface SerializedConfig { benchmark: { enabled: boolean retainSamples: boolean - provider: string + provider: string | undefined suppressExportGetterWarnings: boolean projectName: string } diff --git a/packages/vitest/src/runtime/runners/test.ts b/packages/vitest/src/runtime/runners/test.ts index 0d5313c64..42d2c5bb4 100644 --- a/packages/vitest/src/runtime/runners/test.ts +++ b/packages/vitest/src/runtime/runners/test.ts @@ -243,9 +243,7 @@ export class TestRunner implements VitestTestRunner { Object.defineProperty(context, 'bench', { get() { if (!_bench) { - _bench = createBench(context.task, runnerConfig, { - import: id => moduleRunner.import(id), - }) + _bench = createBench(context.task, runnerConfig, moduleRunner) benchInstances.set(context.task, _bench) } return _bench