Skip to content
Vitest 3
Main Navigation Guide & APIConfigBrowser ModeAdvanced API
3.2.0
2.1.9
1.6.1
0.34.6

English

简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

English

简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Appearance

Sidebar Navigation

API

Node API

Getting Started

Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

Plugin API

Runner API

Reporters API

Task Metadata

Guides

Running Tests

Extending Reporters

Custom Pool

Config Reference

Test API Reference

On this page

TestModule ​

The TestModule class represents a single module in a single project. This class is only available in the main thread. Refer to the "Runner API" if you are working with runtime tasks.

The TestModule instance always has a type property with the value of module. You can use it to distinguish between different task types:

ts
if (task.type === 'module') {
  task; // TestModule
}

Extending Suite Methods

The TestModule class inherits all methods and properties from the TestSuite. This guide will only list methods and properties unique to the TestModule.

moduleId ​

This is usually an absolute unix file path (even on Windows). It can be a virtual id if the file is not on the disk. This value corresponds to Vite's ModuleGraph id.

ts
'C:/Users/Documents/project/example.test.ts'; // ✅
'/Users/mac/project/example.test.ts'; // ✅
'C:\\Users\\Documents\\project\\example.test.ts'; // ❌

state ​

ts
function state(): TestModuleState;

Works the same way as testSuite.state(), but can also return queued if module wasn't executed yet.

meta 3.1.0+ ​

ts
function meta(): TaskMeta;

Custom metadata that was attached to the module during its execution or collection. The meta can be attached by assigning a property to the task.meta object during a test run:

ts
import { test } from 'vitest';

describe('the validation works correctly', task => {
  // assign "decorated" during collection
  task.file.meta.decorated = false;

  test('some test', ({ task }) => {
    // assign "decorated" during test run, it will be available
    // only in onTestCaseReady hook
    task.file.meta.decorated = false;
  });
});

TIP

If metadata was attached during collection (outside of the test function), then it will be available in onTestModuleCollected hook in the custom reporter.

diagnostic ​

ts
function diagnostic(): ModuleDiagnostic;

Useful information about the module like duration, memory usage, etc. If the module was not executed yet, all diagnostic values will return 0.

ts
interface ModuleDiagnostic {
  /**
   * The time it takes to import and initiate an environment.
   */
  readonly environmentSetupDuration: number;
  /**
   * The time it takes Vitest to setup test harness (runner, mocks, etc.).
   */
  readonly prepareDuration: number;
  /**
   * The time it takes to import the test module.
   * This includes importing everything in the module and executing suite callbacks.
   */
  readonly collectDuration: number;
  /**
   * The time it takes to import the setup module.
   */
  readonly setupDuration: number;
  /**
   * Accumulated duration of all tests and hooks in the module.
   */
  readonly duration: number;
  /**
   * The amount of memory used by the module in bytes.
   * This value is only available if the test was executed with `logHeapUsage` flag.
   */
  readonly heap: number | undefined;
  /**
   * The time spent importing every non-externalized dependency that Vitest has processed.
   */
  readonly importDurations: Record<string, ImportDuration>;
}

/** The time spent importing & executing a non-externalized file. */
interface ImportDuration {
  /** The time spent importing & executing the file itself, not counting all non-externalized imports that the file does. */
  selfTime: number;

  /** The time spent importing & executing the file and all its imports. */
  totalTime: number;
}
Pager
Previous pageTestSuite
Next pageTestCollection

Released under the MIT License.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/test-module

Released under the MIT License.

Copyright (c) 2021-Present Vitest Team