@vitest/runner 5.0.0-beta.2 → 5.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -91,7 +91,8 @@ class TestFixtures {
91
91
  "onTestFailed",
92
92
  "onTestFinished",
93
93
  "skip",
94
- "annotate"
94
+ "annotate",
95
+ "bench"
95
96
  ];
96
97
  static _fixtureOptionKeys = [
97
98
  "auto",
@@ -937,6 +938,8 @@ function createTestHook(name, handler) {
937
938
  */
938
939
  function interpretTaskModes(file, namePattern, testLocations, testIds, testTagsFilter, onlyMode, parentIsOnly, allowOnly) {
939
940
  const matchedLocations = [];
941
+ const testLocationsSet = testLocations !== undefined && testLocations.length !== 0 ? new Set(testLocations) : undefined;
942
+ const testIdsSet = testIds ? new Set(testIds) : undefined;
940
943
  const traverseSuite = (suite, parentIsOnly, parentMatchedWithLocation) => {
941
944
  const suiteIsOnly = parentIsOnly || suite.mode === "only";
942
945
  // Check if any tasks in this suite have `.only` - if so, only those should run
@@ -963,8 +966,8 @@ function interpretTaskModes(file, namePattern, testLocations, testIds, testTagsF
963
966
  // Match test location against provided locations, only run if present
964
967
  // in `testLocations`. Note: if `includeTaskLocation` is not enabled,
965
968
  // all test will be skipped.
966
- if (testLocations !== undefined && testLocations.length !== 0) {
967
- if (t.location && testLocations?.includes(t.location.line)) {
969
+ if (testLocationsSet !== undefined) {
970
+ if (t.location && testLocationsSet.has(t.location.line)) {
968
971
  t.mode = "run";
969
972
  matchedLocations.push(t.location.line);
970
973
  hasLocationMatch = true;
@@ -978,7 +981,7 @@ function interpretTaskModes(file, namePattern, testLocations, testIds, testTagsF
978
981
  if (namePattern && !getTaskFullName(t).match(namePattern)) {
979
982
  t.mode = "skip";
980
983
  }
981
- if (testIds && !testIds.includes(t.id)) {
984
+ if (testIdsSet && !testIdsSet.has(t.id)) {
982
985
  t.mode = "skip";
983
986
  }
984
987
  if (testTagsFilter && !testTagsFilter(t.tags || [])) {
@@ -1796,6 +1799,7 @@ function createSuiteCollector(name, factory = () => {}, mode, each, suiteOptions
1796
1799
  meta: testMeta,
1797
1800
  annotations: [],
1798
1801
  artifacts: [],
1802
+ benchmarks: [],
1799
1803
  tags: testTags
1800
1804
  };
1801
1805
  const handler = options.handler;
@@ -2344,15 +2348,25 @@ catch (error) {
2344
2348
  function withCancel(fn, signal) {
2345
2349
  return (function runWithCancel(...args) {
2346
2350
  return new Promise((resolve, reject) => {
2347
- signal.addEventListener("abort", () => reject(signal.reason));
2351
+ const onAbort = () => reject(signal.reason);
2352
+ signal.addEventListener("abort", onAbort, { once: true });
2353
+ const cleanup = () => signal.removeEventListener("abort", onAbort);
2348
2354
  try {
2349
2355
  const result = fn(...args);
2350
2356
  if (typeof result === "object" && result != null && typeof result.then === "function") {
2351
- result.then(resolve, reject);
2357
+ result.then((value) => {
2358
+ cleanup();
2359
+ resolve(value);
2360
+ }, (error) => {
2361
+ cleanup();
2362
+ reject(error);
2363
+ });
2352
2364
  } else {
2365
+ cleanup();
2353
2366
  resolve(result);
2354
2367
  }
2355
2368
  } catch (error) {
2369
+ cleanup();
2356
2370
  reject(error);
2357
2371
  }
2358
2372
  });
@@ -2502,7 +2516,7 @@ async function collectTests(specs, runner) {
2502
2516
  setHooks(file, fileHooks);
2503
2517
  file.collectDuration = now$1() - collectStart;
2504
2518
  } catch (e) {
2505
- const errors = e instanceof AggregateError ? e.errors.map((e) => processError(e, runner.config.diffOptions)) : [processError(e, runner.config.diffOptions)];
2519
+ const errors = e instanceof AggregateError ? e.errors.map((e) => processError(e, runner.config._diffOptions)) : [processError(e, runner.config._diffOptions)];
2506
2520
  file.result = {
2507
2521
  state: "fail",
2508
2522
  errors
@@ -2613,14 +2627,14 @@ async function callTestHooks(runner, test, hooks, sequence) {
2613
2627
  try {
2614
2628
  await Promise.all(hooks.map((fn) => limitMaxConcurrency(() => fn(test.context))));
2615
2629
  } catch (e) {
2616
- failTask(test.result, e, runner.config.diffOptions);
2630
+ failTask(test.result, e, runner.config._diffOptions);
2617
2631
  }
2618
2632
  } else {
2619
2633
  for (const fn of hooks) {
2620
2634
  try {
2621
2635
  await limitMaxConcurrency(() => fn(test.context));
2622
2636
  } catch (e) {
2623
- failTask(test.result, e, runner.config.diffOptions);
2637
+ failTask(test.result, e, runner.config._diffOptions);
2624
2638
  }
2625
2639
  }
2626
2640
  }
@@ -2985,12 +2999,12 @@ async function runTest(test, runner) {
2985
2999
  test.result.state = "pass";
2986
3000
  }
2987
3001
  } catch (e) {
2988
- failTask(test.result, e, runner.config.diffOptions);
3002
+ failTask(test.result, e, runner.config._diffOptions);
2989
3003
  }
2990
3004
  try {
2991
3005
  await runner.onTaskFinished?.(test);
2992
3006
  } catch (e) {
2993
- failTask(test.result, e, runner.config.diffOptions);
3007
+ failTask(test.result, e, runner.config._diffOptions);
2994
3008
  }
2995
3009
  try {
2996
3010
  await $("test.afterEach", () => callSuiteHook(suite, test, "afterEach", runner, [test.context, suite]));
@@ -3001,7 +3015,7 @@ async function runTest(test, runner) {
3001
3015
  // Fixtures created for aroundEach will be cleaned up after aroundEach teardown
3002
3016
  await callFixtureCleanupFrom(test.context, fixtureCheckpoint);
3003
3017
  } catch (e) {
3004
- failTask(test.result, e, runner.config.diffOptions);
3018
+ failTask(test.result, e, runner.config._diffOptions);
3005
3019
  }
3006
3020
  if (test.onFinished?.length) {
3007
3021
  await $("test.onFinished", () => callTestHooks(runner, test, test.onFinished, "stack"));
@@ -3016,14 +3030,14 @@ async function runTest(test, runner) {
3016
3030
  repeats: repeatCount
3017
3031
  });
3018
3032
  }).catch((error) => {
3019
- failTask(test.result, error, runner.config.diffOptions);
3033
+ failTask(test.result, error, runner.config._diffOptions);
3020
3034
  });
3021
3035
  // Clean up fixtures that were created for aroundEach (before the checkpoint)
3022
3036
  // This runs after aroundEach teardown has completed
3023
3037
  try {
3024
3038
  await callFixtureCleanup(test.context);
3025
3039
  } catch (e) {
3026
- failTask(test.result, e, runner.config.diffOptions);
3040
+ failTask(test.result, e, runner.config._diffOptions);
3027
3041
  }
3028
3042
  // skipped with new PendingError
3029
3043
  if (test.result?.pending || test.result?.state === "skip") {
@@ -3157,7 +3171,7 @@ async function runSuite(suite, runner) {
3157
3171
  try {
3158
3172
  beforeAllCleanups = await $("suite.beforeAll", () => callSuiteHook(suite, suite, "beforeAll", runner, [suite]));
3159
3173
  } catch (e) {
3160
- failTask(suite.result, e, runner.config.diffOptions);
3174
+ failTask(suite.result, e, runner.config._diffOptions);
3161
3175
  markTasksAsSkipped(suite, runner);
3162
3176
  return;
3163
3177
  }
@@ -3196,7 +3210,7 @@ async function runSuite(suite, runner) {
3196
3210
  await Promise.all(contexts.map((context) => callFixtureCleanup(context)));
3197
3211
  }
3198
3212
  } catch (e) {
3199
- failTask(suite.result, e, runner.config.diffOptions);
3213
+ failTask(suite.result, e, runner.config._diffOptions);
3200
3214
  }
3201
3215
  }
3202
3216
  });
@@ -3205,7 +3219,7 @@ async function runSuite(suite, runner) {
3205
3219
  if (!suiteRan) {
3206
3220
  markTasksAsSkipped(suite, runner);
3207
3221
  }
3208
- failTask(suite.result, e, runner.config.diffOptions);
3222
+ failTask(suite.result, e, runner.config._diffOptions);
3209
3223
  }
3210
3224
  if (suite.mode === "run" || suite.mode === "queued") {
3211
3225
  if (!runner.config.passWithNoTests && !hasTests(suite)) {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { d as TestArtifact, b as Test, S as Suite, e as SuiteHooks, f as FileSpecification, g as VitestRunner, F as File, h as TaskUpdateEvent, T as Task, i as TestAPI, j as SuiteAPI, k as SuiteCollector } from './tasks.d-B4a0-8OW.js';
2
- export { A as AfterAllListener, l as AfterEachListener, m as AroundAllListener, n as AroundEachListener, B as BeforeAllListener, o as BeforeEachListener, p as BrowserTraceArtifact, q as CancelReason, r as FailureScreenshotArtifact, s as Fixture, t as FixtureFn, u as FixtureOptions, v as Fixtures, I as ImportDuration, w as InferFixturesTypes, O as OnTestFailedHandler, x as OnTestFinishedHandler, R as Retry, y as RunMode, z as RuntimeContext, D as SequenceHooks, E as SequenceSetupFiles, G as SerializableRetry, H as SuiteFactory, J as SuiteOptions, K as TaskBase, L as TaskCustomOptions, M as TaskEventPack, N as TaskHook, P as TaskMeta, Q as TaskPopulated, U as TaskResult, W as TaskResultPack, X as TaskState, Y as TestAnnotation, Z as TestAnnotationArtifact, _ as TestAnnotationLocation, $ as TestArtifactBase, a0 as TestArtifactLocation, a1 as TestArtifactRegistry, a2 as TestAttachment, a3 as TestContext, a4 as TestFunction, a5 as TestOptions, a as TestTagDefinition, a6 as TestTags, a7 as Use, a8 as VisualRegressionArtifact, V as VitestRunnerConfig, a9 as VitestRunnerConstructor, aa as VitestRunnerImportSource, ab as afterAll, ac as afterEach, ad as aroundAll, ae as aroundEach, af as beforeAll, ag as beforeEach, ah as onTestFailed, ai as onTestFinished } from './tasks.d-B4a0-8OW.js';
1
+ import { d as TestArtifact, b as Test, S as Suite, e as SuiteHooks, f as FileSpecification, g as VitestRunner, F as File, h as TaskUpdateEvent, T as Task, i as TestAPI, j as SuiteAPI, k as SuiteCollector } from './tasks.d-BR8WBtGa.js';
2
+ export { A as AfterAllListener, l as AfterEachListener, m as AroundAllListener, n as AroundEachListener, B as BaselineData, o as BeforeAllListener, p as BeforeEachListener, q as BrowserTraceArtifact, r as CancelReason, s as FailureScreenshotArtifact, t as Fixture, u as FixtureFn, v as FixtureOptions, w as Fixtures, I as ImportDuration, x as InferFixturesTypes, O as OnTestFailedHandler, y as OnTestFinishedHandler, R as Retry, z as RunMode, D as RuntimeContext, E as SequenceHooks, G as SequenceSetupFiles, H as SerializableRetry, J as SuiteFactory, K as SuiteOptions, L as TaskBase, M as TaskCustomOptions, N as TaskEventData, P as TaskEventPack, Q as TaskHook, U as TaskMeta, W as TaskPopulated, X as TaskResult, Y as TaskResultPack, Z as TaskState, _ as TestAnnotation, $ as TestAnnotationArtifact, a0 as TestAnnotationLocation, a1 as TestArtifactBase, a2 as TestArtifactLocation, a3 as TestArtifactRegistry, a4 as TestAttachment, a5 as TestBenchmark, a6 as TestBenchmarkTask, a7 as TestContext, a8 as TestFunction, a9 as TestOptions, a as TestTagDefinition, aa as TestTags, ab as TestTryOptions, ac as Use, ad as VisualRegressionArtifact, V as VitestRunnerConfig, ae as VitestRunnerConstructor, af as VitestRunnerImportSource, ag as afterAll, ah as afterEach, ai as aroundAll, aj as aroundEach, ak as beforeAll, al as beforeEach, am as onTestFailed, an as onTestFinished } from './tasks.d-BR8WBtGa.js';
3
3
  import { Awaitable } from '@vitest/utils';
4
- import '@vitest/utils/diff';
4
+ import 'tinybench';
5
5
 
6
6
  /**
7
7
  * @experimental
@@ -1,5 +1,5 @@
1
1
  import { TestError, Awaitable } from '@vitest/utils';
2
- import { DiffOptions } from '@vitest/utils/diff';
2
+ import { Statistics } from 'tinybench';
3
3
 
4
4
  /**
5
5
  * This is a subset of Vitest config that's required for the runner to work.
@@ -27,7 +27,6 @@ interface VitestRunnerConfig {
27
27
  hookTimeout: number;
28
28
  retry: SerializableRetry;
29
29
  includeTaskLocation: boolean | undefined;
30
- diffOptions?: DiffOptions;
31
30
  tags: TestTagDefinition[];
32
31
  tagsFilter: string[] | undefined;
33
32
  strictTags: boolean;
@@ -65,6 +64,10 @@ interface VitestRunnerConstructor {
65
64
  new (config: VitestRunnerConfig): VitestRunner;
66
65
  }
67
66
  type CancelReason = "keyboard-input" | "test-failure" | (string & Record<string, never>);
67
+ interface TestTryOptions {
68
+ retry: number;
69
+ repeats: number;
70
+ }
68
71
  interface VitestRunner {
69
72
  /**
70
73
  * First thing that's getting called before actually collecting and running tests.
@@ -91,10 +94,7 @@ interface VitestRunner {
91
94
  /**
92
95
  * Called before actually running the test function. Already has "result" with "state" and "startTime".
93
96
  */
94
- onBeforeTryTask?: (test: Test, options: {
95
- retry: number;
96
- repeats: number;
97
- }) => unknown;
97
+ onBeforeTryTask?: (test: Test, options: TestTryOptions) => unknown;
98
98
  /**
99
99
  * When the task has finished running, but before cleanup hooks are called
100
100
  */
@@ -106,18 +106,12 @@ interface VitestRunner {
106
106
  /**
107
107
  * Called right after running the test function. Doesn't have new state yet. Will not be called, if the test function throws.
108
108
  */
109
- onAfterTryTask?: (test: Test, options: {
110
- retry: number;
111
- repeats: number;
112
- }) => unknown;
109
+ onAfterTryTask?: (test: Test, options: TestTryOptions) => unknown;
113
110
  /**
114
111
  * Called after the retry resolution happened. Unlike `onAfterTryTask`, the test now has a new state.
115
112
  * All `after` hooks were also called by this point.
116
113
  */
117
- onAfterRetryTask?: (test: Test, options: {
118
- retry: number;
119
- repeats: number;
120
- }) => unknown;
114
+ onAfterRetryTask?: (test: Test, options: TestTryOptions) => unknown;
121
115
  /**
122
116
  * Called before running a single suite. Doesn't have "result" yet.
123
117
  */
@@ -674,6 +668,39 @@ interface Test<ExtraContext = object> extends TaskPopulated {
674
668
  */
675
669
  artifacts: TestArtifact[];
676
670
  fullTestName: string;
671
+ /**
672
+ * An array of benchmark results generated by `context.bench` function.
673
+ * The benchmark is added only after `bench().run` or `bench.compare` is resolved.
674
+ *
675
+ * @experimental
676
+ */
677
+ benchmarks: TestBenchmark[];
678
+ }
679
+ interface TestBenchmark {
680
+ name: string;
681
+ tasks: TestBenchmarkTask[];
682
+ }
683
+ type TestBenchmarkStatistics = Statistics;
684
+ interface BaselineData {
685
+ latency: TestBenchmarkStatistics;
686
+ throughput: TestBenchmarkStatistics;
687
+ period: number;
688
+ totalTime: number;
689
+ }
690
+ interface TestBenchmarkTask {
691
+ name: string;
692
+ latency: TestBenchmarkStatistics;
693
+ throughput: TestBenchmarkStatistics;
694
+ period: number;
695
+ totalTime: number;
696
+ rank: number;
697
+ perProject?: boolean;
698
+ /**
699
+ * `true` when the task was produced by `bench.from()` rather than by
700
+ * executing a function. Reporters can use this to render the row as a
701
+ * static reference (no margin of error, no samples).
702
+ */
703
+ fromStore?: boolean;
677
704
  }
678
705
  type Task = Test | Suite | File;
679
706
  type TestFunction<ExtraContext = object> = (context: TestContext & ExtraContext) => Awaitable<any> | void;
@@ -1325,13 +1352,13 @@ type SequenceSetupFiles = "list" | "parallel";
1325
1352
  /**
1326
1353
  * Represents a file or data attachment associated with a test artifact.
1327
1354
  *
1328
- * Attachments can be either file-based (via `path`) or inline content (via `body`).
1355
+ * Attachments can be either path-based (via `path`) or inline content (via `body`).
1329
1356
  * The `contentType` helps consumers understand how to interpret the attachment data.
1330
1357
  */
1331
1358
  interface TestAttachment {
1332
1359
  /** MIME type of the attachment (e.g., 'image/png', 'text/plain') */
1333
1360
  contentType?: string;
1334
- /** File system path to the attachment */
1361
+ /** Local file path or external HTTP(S) URL to the attachment. Relative paths are resolved from the project root. */
1335
1362
  path?: string;
1336
1363
  /** Inline attachment content as a string or raw binary data */
1337
1364
  body?: string | Uint8Array | undefined;
@@ -1522,5 +1549,5 @@ interface TestArtifactRegistry {}
1522
1549
  */
1523
1550
  type TestArtifact = BrowserTraceArtifact | FailureScreenshotArtifact | TestAnnotationArtifact | VisualRegressionArtifact | TestArtifactRegistry[keyof TestArtifactRegistry];
1524
1551
 
1525
- export { afterAll as ab, afterEach as ac, aroundAll as ad, aroundEach as ae, beforeAll as af, beforeEach as ag, onTestFailed as ah, onTestFinished as ai, createChainable as c };
1526
- export type { TestArtifactBase as $, AfterAllListener as A, BeforeAllListener as B, ChainableFunction as C, SequenceHooks as D, SequenceSetupFiles as E, File as F, SerializableRetry as G, SuiteFactory as H, ImportDuration as I, SuiteOptions as J, TaskBase as K, TaskCustomOptions as L, TaskEventPack as M, TaskHook as N, OnTestFailedHandler as O, TaskMeta as P, TaskPopulated as Q, Retry as R, Suite as S, Task as T, TaskResult as U, VitestRunnerConfig as V, TaskResultPack as W, TaskState as X, TestAnnotation as Y, TestAnnotationArtifact as Z, TestAnnotationLocation as _, TestTagDefinition as a, TestArtifactLocation as a0, TestArtifactRegistry as a1, TestAttachment as a2, TestContext as a3, TestFunction as a4, TestOptions as a5, TestTags as a6, Use as a7, VisualRegressionArtifact as a8, VitestRunnerConstructor as a9, VitestRunnerImportSource as aa, Test as b, TestArtifact as d, SuiteHooks as e, FileSpecification as f, VitestRunner as g, TaskUpdateEvent as h, TestAPI as i, SuiteAPI as j, SuiteCollector as k, AfterEachListener as l, AroundAllListener as m, AroundEachListener as n, BeforeEachListener as o, BrowserTraceArtifact as p, CancelReason as q, FailureScreenshotArtifact as r, Fixture as s, FixtureFn as t, FixtureOptions as u, Fixtures as v, InferFixturesTypes as w, OnTestFinishedHandler as x, RunMode as y, RuntimeContext as z };
1552
+ export { afterAll as ag, afterEach as ah, aroundAll as ai, aroundEach as aj, beforeAll as ak, beforeEach as al, onTestFailed as am, onTestFinished as an, createChainable as c };
1553
+ export type { TestAnnotationArtifact as $, AfterAllListener as A, BaselineData as B, ChainableFunction as C, RuntimeContext as D, SequenceHooks as E, File as F, SequenceSetupFiles as G, SerializableRetry as H, ImportDuration as I, SuiteFactory as J, SuiteOptions as K, TaskBase as L, TaskCustomOptions as M, TaskEventData as N, OnTestFailedHandler as O, TaskEventPack as P, TaskHook as Q, Retry as R, Suite as S, Task as T, TaskMeta as U, VitestRunnerConfig as V, TaskPopulated as W, TaskResult as X, TaskResultPack as Y, TaskState as Z, TestAnnotation as _, TestTagDefinition as a, TestAnnotationLocation as a0, TestArtifactBase as a1, TestArtifactLocation as a2, TestArtifactRegistry as a3, TestAttachment as a4, TestBenchmark as a5, TestBenchmarkTask as a6, TestContext as a7, TestFunction as a8, TestOptions as a9, TestTags as aa, TestTryOptions as ab, Use as ac, VisualRegressionArtifact as ad, VitestRunnerConstructor as ae, VitestRunnerImportSource as af, Test as b, TestArtifact as d, SuiteHooks as e, FileSpecification as f, VitestRunner as g, TaskUpdateEvent as h, TestAPI as i, SuiteAPI as j, SuiteCollector as k, AfterEachListener as l, AroundAllListener as m, AroundEachListener as n, BeforeAllListener as o, BeforeEachListener as p, BrowserTraceArtifact as q, CancelReason as r, FailureScreenshotArtifact as s, Fixture as t, FixtureFn as u, FixtureOptions as v, Fixtures as w, InferFixturesTypes as x, OnTestFinishedHandler as y, RunMode as z };
package/dist/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { A as AfterAllListener, l as AfterEachListener, m as AroundAllListener, n as AroundEachListener, B as BeforeAllListener, o as BeforeEachListener, p as BrowserTraceArtifact, q as CancelReason, r as FailureScreenshotArtifact, F as File, f as FileSpecification, s as Fixture, t as FixtureFn, u as FixtureOptions, v as Fixtures, I as ImportDuration, w as InferFixturesTypes, O as OnTestFailedHandler, x as OnTestFinishedHandler, R as Retry, y as RunMode, z as RuntimeContext, D as SequenceHooks, E as SequenceSetupFiles, G as SerializableRetry, S as Suite, j as SuiteAPI, k as SuiteCollector, H as SuiteFactory, e as SuiteHooks, J as SuiteOptions, T as Task, K as TaskBase, L as TaskCustomOptions, M as TaskEventPack, N as TaskHook, P as TaskMeta, Q as TaskPopulated, U as TaskResult, W as TaskResultPack, X as TaskState, h as TaskUpdateEvent, b as Test, i as TestAPI, Y as TestAnnotation, Z as TestAnnotationArtifact, _ as TestAnnotationLocation, d as TestArtifact, $ as TestArtifactBase, a0 as TestArtifactLocation, a1 as TestArtifactRegistry, a2 as TestAttachment, a3 as TestContext, a4 as TestFunction, a5 as TestOptions, a as TestTagDefinition, a6 as TestTags, a7 as Use, a8 as VisualRegressionArtifact, g as VitestRunner, V as VitestRunnerConfig, a9 as VitestRunnerConstructor, aa as VitestRunnerImportSource } from './tasks.d-B4a0-8OW.js';
1
+ export { A as AfterAllListener, l as AfterEachListener, m as AroundAllListener, n as AroundEachListener, B as BaselineData, o as BeforeAllListener, p as BeforeEachListener, q as BrowserTraceArtifact, r as CancelReason, s as FailureScreenshotArtifact, F as File, f as FileSpecification, t as Fixture, u as FixtureFn, v as FixtureOptions, w as Fixtures, I as ImportDuration, x as InferFixturesTypes, O as OnTestFailedHandler, y as OnTestFinishedHandler, R as Retry, z as RunMode, D as RuntimeContext, E as SequenceHooks, G as SequenceSetupFiles, H as SerializableRetry, S as Suite, j as SuiteAPI, k as SuiteCollector, J as SuiteFactory, e as SuiteHooks, K as SuiteOptions, T as Task, L as TaskBase, M as TaskCustomOptions, N as TaskEventData, P as TaskEventPack, Q as TaskHook, U as TaskMeta, W as TaskPopulated, X as TaskResult, Y as TaskResultPack, Z as TaskState, h as TaskUpdateEvent, b as Test, i as TestAPI, _ as TestAnnotation, $ as TestAnnotationArtifact, a0 as TestAnnotationLocation, d as TestArtifact, a1 as TestArtifactBase, a2 as TestArtifactLocation, a3 as TestArtifactRegistry, a4 as TestAttachment, a5 as TestBenchmark, a6 as TestBenchmarkTask, a7 as TestContext, a8 as TestFunction, a9 as TestOptions, a as TestTagDefinition, aa as TestTags, ab as TestTryOptions, ac as Use, ad as VisualRegressionArtifact, g as VitestRunner, V as VitestRunnerConfig, ae as VitestRunnerConstructor, af as VitestRunnerImportSource } from './tasks.d-BR8WBtGa.js';
2
2
  import '@vitest/utils';
3
- import '@vitest/utils/diff';
3
+ import 'tinybench';
package/dist/utils.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { S as Suite, F as File, T as Task, a as TestTagDefinition, V as VitestRunnerConfig, b as Test } from './tasks.d-B4a0-8OW.js';
2
- export { C as ChainableFunction, c as createChainable } from './tasks.d-B4a0-8OW.js';
1
+ import { S as Suite, F as File, T as Task, a as TestTagDefinition, V as VitestRunnerConfig, b as Test } from './tasks.d-BR8WBtGa.js';
2
+ export { C as ChainableFunction, c as createChainable } from './tasks.d-BR8WBtGa.js';
3
3
  import { ParsedStack, Arrayable } from '@vitest/utils';
4
- import '@vitest/utils/diff';
4
+ import 'tinybench';
5
5
 
6
6
  /**
7
7
  * If any tasks been marked as `only`, mark all other tasks as `skip`.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/runner",
3
3
  "type": "module",
4
- "version": "5.0.0-beta.2",
4
+ "version": "5.0.0-beta.4",
5
5
  "description": "Vitest test runner",
6
6
  "license": "MIT",
7
7
  "funding": "https://opencollective.com/vitest",
@@ -44,7 +44,8 @@
44
44
  ],
45
45
  "dependencies": {
46
46
  "pathe": "^2.0.3",
47
- "@vitest/utils": "5.0.0-beta.2"
47
+ "tinybench": "^6.0.1",
48
+ "@vitest/utils": "5.0.0-beta.4"
48
49
  },
49
50
  "scripts": {
50
51
  "build": "premove dist && rollup -c",