Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ssssota/doc-vitest
Documentation tests with Vitest
https://github.com/ssssota/doc-vitest
doctest documentation plugin test vite vitest
Last synced: about 13 hours ago
JSON representation
Documentation tests with Vitest
- Host: GitHub
- URL: https://github.com/ssssota/doc-vitest
- Owner: ssssota
- Created: 2023-09-09T11:06:50.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-28T22:26:07.000Z (23 days ago)
- Last Synced: 2024-12-31T13:03:46.194Z (21 days ago)
- Topics: doctest, documentation, plugin, test, vite, vitest
- Language: TypeScript
- Homepage: https://npmjs.com/vite-plugin-doctest
- Size: 362 KB
- Stars: 61
- Watchers: 2
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- fucking-awesome-vite - vite-plugin-doctest - Documentation testing for Vitest. (Plugins / Framework-agnostic Plugins)
- awesome-vite - vite-plugin-doctest - Documentation testing for Vitest. (Plugins / Framework-agnostic Plugins)
README
# vite-plugin-doctest
Vitest plugin for doctest.
You can write test in your source code with documentation.## Usage
```ts
/**
* @example
* ```ts @import.meta.vitest
* expect(add(1, 2)).toBe(3);
* assert(add(3, 4) === 7);
* ```
*/
export function add(a: number, b: number) {
return a + b;
}
```You can also test code in markdown.
````markdown
# Test```ts:[email protected]
const { add } = await import('./add');
expect(add(1, 2)).toBe(3);
```
````## Setup
```sh
npm i -D vitest vite-plugin-doctest
``````ts
// vitest.config.ts or vite.config.ts (js)
import { defineConfig } from 'vitest/config'; // or `import { defineConfig } from 'vite';`
import { doctest } from 'vite-plugin-doctest';
export default defineConfig({
plugins: [doctest({ /* options */ })],
test: {
includeSource: [
'./src/**/*.[jt]s?(x)',
'./**/*.md', // You can disable markdown test by removing this line
],
},
});
``````sh
npx vitest
```### Options
Currently, there is no option.
```ts
type Options = {}
```## How it works
This plugin will transform your documentation tests.
This transformation occurs only when you start Vitest.
So, you don't need to worry about the performance of your production code.```ts
/**
* @example
* ```ts @import.meta.vitest
* expect(add(1, 2)).toBe(3);
* ```
*/
export function add(a: number, b: number) {
return a + b;
}
```↓
```ts
/**
* @example
* ```ts @import.meta.vitest
* expect(add(1, 2)).toBe(3);
* ```
*/
export function add(a: number, b: number) {
return a + b;
}if (import.meta.vitest) {
const {assert,chai,createExpect,expect,getRunningMode,isWatchMode,should,vi,vitest} = import.meta.vitest;
import.meta.vitest.test("1+2=3", async () => {
expect(add(1, 2)).toBe(3);
});
}
```### Constraints
This plugin has some constraints.
- You cannot use typechecks. (e.g. `expectTypeOf`, `assertType`, etc...)
- You cannot use lifecycle hooks. (e.g. `beforeEach`, `afterAll`, etc...)
- Currently you cannot use `import` statement in your test code. (You can use dynamic import)
- and more... (Please make an issue if you find it)## Related
- [Vitest](https://vitest.dev)
- [power-doctest](https://github.com/azu/power-doctest)## License
MIT License