Skip to content

Vitest ​

Introduction ​

This guide will take you through the process of installing Vitest, a testing framework, on an existing Ts.ED project. Vitest is designed to work seamlessly with Ts.ED, providing a simple and efficient way to run tests for your TypeScript code. Follow the steps below to integrate Vitest into your project.

Installation ​

Open your project's terminal where you usually run npm commands. Run the following npm command to install Vitest and its required dependencies:

bash
$ npm i --save-dev vitest unplugin-swc @swc/core @vitest/coverage-v8
bash
$ yarn add -D vitest unplugin-swc @swc/core @vitest/coverage-v8
bash
$ pnpm add -D vitest unplugin-swc @swc/core @vitest/coverage-v8
bash
$ bun add -D vitest unplugin-swc @swc/core @vitest/coverage-v8

This command installs Vitest, the SWC plugin for Vite, and the V8 coverage tool for Vitest.

Create vitest.config.ts ​

Create a new configuration file named vitest.config.ts at the root of your project. Copy and paste the following content into the file:

typescript
// vitest.config.ts
import swc from "unplugin-swc";
import {defineConfig} from "vitest/config";

export default defineConfig({
  test: {
    globals: true,
    root: "./"
  },
  plugins: [
    // This is required to build the test files with SWC
    swc.vite({
      sourceMaps: "inline",

      jsc: {
        target: "es2022",
        externalHelpers: true,
        keepClassNames: true,
        parser: {
          syntax: "typescript",
          tsx: true,
          decorators: true,
          dynamicImport: true,
          importMeta: true,
          preserveAllComments: true
        },
        transform: {
          useDefineForClassFields: false,
          legacyDecorator: true,
          decoratorMetadata: true
        }
      },
      module: {
        type: "es6",
        strictMode: true,
        lazy: false,
        noInterop: false
      },
      isModule: true
    })
  ]
});

This configuration file specifies the testing globals and includes the necessary SWC plugin configuration for running test files.

Update package.json with Test Scripts ​

Add the following example of test scripts to your package.json file:

json
{
  "scripts": {
    "test": "vitest run",
    "test:watch": "vitest",
    "test:coverage": "vitest run --coverage",
    "test:debug": "vitest --inspect-brk --inspect --logHeapUsage --threads=false"
  }
}

These scripts allow you to run various Vitest commands, such as running tests, watching for changes, generating coverage reports, debugging tests, and running end-to-end tests with a custom configuration.

Congratulations! You have successfully integrated Vitest into your existing Ts.ED project, and you're ready to leverage the provided scripts for efficient testing.

Released under the MIT License.