mirror of
https://github.com/hanzoai/vitest.git
synced 2026-09-24 17:04:25 +00:00
201 lines
7.0 KiB
TypeScript
201 lines
7.0 KiB
TypeScript
import fs, { readFileSync } from 'node:fs'
|
||
import { join } from 'node:path'
|
||
import { expect, test } from 'vitest'
|
||
import { editFile, runVitest } from '../../test-utils'
|
||
|
||
test('soft', async () => {
|
||
const root = join(import.meta.dirname, 'fixtures/soft')
|
||
const testFile = join(root, 'basic.test.ts')
|
||
const snapshotFile = join(root, '__snapshots__/basic.test.ts.snap')
|
||
const customFile1 = join(root, '__snapshots__/custom1.txt')
|
||
const customFile2 = join(root, '__snapshots__/custom2.txt')
|
||
|
||
// remove snapshots
|
||
fs.rmSync(join(root, '__snapshots__'), { recursive: true, force: true })
|
||
|
||
// create snapshots from scratch
|
||
let result = await runVitest({ root, update: 'new' })
|
||
expect(result.stderr).toMatchInlineSnapshot(`""`)
|
||
expect(readFileSync(snapshotFile, 'utf-8')).toMatchInlineSnapshot(`
|
||
"// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||
|
||
exports[\`toMatchSnapshot 1\`] = \`"--snap-1--"\`;
|
||
|
||
exports[\`toMatchSnapshot 2\`] = \`"--snap-2--"\`;
|
||
|
||
exports[\`toThrowErrorMatchingSnapshot 1\`] = \`[Error: --error-1--]\`;
|
||
|
||
exports[\`toThrowErrorMatchingSnapshot 2\`] = \`[Error: --error-2--]\`;
|
||
"
|
||
`)
|
||
expect(readFileSync(customFile1, 'utf-8')).toMatchInlineSnapshot(`"--file-1--"`)
|
||
expect(readFileSync(customFile2, 'utf-8')).toMatchInlineSnapshot(`"--file-2--"`)
|
||
expect(result.errorTree()).toMatchInlineSnapshot(`
|
||
{
|
||
"basic.test.ts": {
|
||
"toMatchFileSnapshot": "passed",
|
||
"toMatchSnapshot": "passed",
|
||
"toThrowErrorMatchingSnapshot": "passed",
|
||
},
|
||
}
|
||
`)
|
||
|
||
// edit tests to introduce snapshot errors
|
||
editFile(testFile, s => s
|
||
.replace(`--snap-1--`, `--snap-1-edit--`)
|
||
.replace(`--snap-2--`, `--snap-2-edit--`)
|
||
.replace(`--file-1--`, `--file-1-edit--`)
|
||
.replace(`--file-2--`, `--file-2-edit--`)
|
||
.replace(`--error-1--`, `--error-1-edit--`)
|
||
.replace(`--error-2--`, `--error-2-edit--`))
|
||
|
||
result = await runVitest({ root, update: false })
|
||
expect(result.stderr).toMatchInlineSnapshot(`
|
||
"
|
||
⎯⎯⎯⎯⎯⎯⎯ Failed Tests 3 ⎯⎯⎯⎯⎯⎯⎯
|
||
|
||
FAIL basic.test.ts > toMatchSnapshot
|
||
Error: Snapshot \`toMatchSnapshot 1\` mismatched
|
||
|
||
Expected: ""--snap-1--""
|
||
Received: ""--snap-1-edit--""
|
||
|
||
❯ basic.test.ts:4:34
|
||
2|
|
||
3| test('toMatchSnapshot', () => {
|
||
4| expect.soft('--snap-1-edit--').toMatchSnapshot()
|
||
| ^
|
||
5| expect.soft('--snap-2-edit--').toMatchSnapshot()
|
||
6| })
|
||
|
||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/6]⎯
|
||
|
||
FAIL basic.test.ts > toMatchSnapshot
|
||
Error: Snapshot \`toMatchSnapshot 2\` mismatched
|
||
|
||
Expected: ""--snap-2--""
|
||
Received: ""--snap-2-edit--""
|
||
|
||
❯ basic.test.ts:5:34
|
||
3| test('toMatchSnapshot', () => {
|
||
4| expect.soft('--snap-1-edit--').toMatchSnapshot()
|
||
5| expect.soft('--snap-2-edit--').toMatchSnapshot()
|
||
| ^
|
||
6| })
|
||
7|
|
||
|
||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/6]⎯
|
||
|
||
FAIL basic.test.ts > toMatchFileSnapshot
|
||
Error: Snapshot \`toMatchFileSnapshot 1\` mismatched
|
||
|
||
Expected: "--file-1--"
|
||
Received: "--file-1-edit--"
|
||
|
||
❯ basic.test.ts:9:3
|
||
7|
|
||
8| test('toMatchFileSnapshot', async () => {
|
||
9| await expect.soft('--file-1-edit--').toMatchFileSnapshot('./__snapsh…
|
||
| ^
|
||
10| await expect.soft('--file-2-edit--').toMatchFileSnapshot('./__snapsh…
|
||
11| })
|
||
|
||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/6]⎯
|
||
|
||
FAIL basic.test.ts > toMatchFileSnapshot
|
||
Error: Snapshot \`toMatchFileSnapshot 2\` mismatched
|
||
|
||
Expected: "--file-2--"
|
||
Received: "--file-2-edit--"
|
||
|
||
❯ basic.test.ts:10:3
|
||
8| test('toMatchFileSnapshot', async () => {
|
||
9| await expect.soft('--file-1-edit--').toMatchFileSnapshot('./__snapsh…
|
||
10| await expect.soft('--file-2-edit--').toMatchFileSnapshot('./__snapsh…
|
||
| ^
|
||
11| })
|
||
12|
|
||
|
||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/6]⎯
|
||
|
||
FAIL basic.test.ts > toThrowErrorMatchingSnapshot
|
||
Error: Snapshot \`toThrowErrorMatchingSnapshot 1\` mismatched
|
||
|
||
Expected: "[Error: --error-1--]"
|
||
Received: "[Error: --error-1-edit--]"
|
||
|
||
❯ basic.test.ts:14:62
|
||
12|
|
||
13| test('toThrowErrorMatchingSnapshot', () => {
|
||
14| expect.soft(() => { throw new Error('--error-1-edit--') }).toThrowEr…
|
||
| ^
|
||
15| expect.soft(() => { throw new Error('--error-2-edit--') }).toThrowEr…
|
||
16| })
|
||
|
||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/6]⎯
|
||
|
||
FAIL basic.test.ts > toThrowErrorMatchingSnapshot
|
||
Error: Snapshot \`toThrowErrorMatchingSnapshot 2\` mismatched
|
||
|
||
Expected: "[Error: --error-2--]"
|
||
Received: "[Error: --error-2-edit--]"
|
||
|
||
❯ basic.test.ts:15:62
|
||
13| test('toThrowErrorMatchingSnapshot', () => {
|
||
14| expect.soft(() => { throw new Error('--error-1-edit--') }).toThrowEr…
|
||
15| expect.soft(() => { throw new Error('--error-2-edit--') }).toThrowEr…
|
||
| ^
|
||
16| })
|
||
17|
|
||
|
||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/6]⎯
|
||
|
||
"
|
||
`)
|
||
expect(result.errorTree()).toMatchInlineSnapshot(`
|
||
{
|
||
"basic.test.ts": {
|
||
"toMatchFileSnapshot": [
|
||
"Snapshot \`toMatchFileSnapshot 1\` mismatched",
|
||
"Snapshot \`toMatchFileSnapshot 2\` mismatched",
|
||
],
|
||
"toMatchSnapshot": [
|
||
"Snapshot \`toMatchSnapshot 1\` mismatched",
|
||
"Snapshot \`toMatchSnapshot 2\` mismatched",
|
||
],
|
||
"toThrowErrorMatchingSnapshot": [
|
||
"Snapshot \`toThrowErrorMatchingSnapshot 1\` mismatched",
|
||
"Snapshot \`toThrowErrorMatchingSnapshot 2\` mismatched",
|
||
],
|
||
},
|
||
}
|
||
`)
|
||
|
||
// run with update
|
||
result = await runVitest({ root, update: 'all' })
|
||
expect(result.stderr).toMatchInlineSnapshot(`""`)
|
||
expect(readFileSync(snapshotFile, 'utf-8')).toMatchInlineSnapshot(`
|
||
"// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||
|
||
exports[\`toMatchSnapshot 1\`] = \`"--snap-1-edit--"\`;
|
||
|
||
exports[\`toMatchSnapshot 2\`] = \`"--snap-2-edit--"\`;
|
||
|
||
exports[\`toThrowErrorMatchingSnapshot 1\`] = \`[Error: --error-1-edit--]\`;
|
||
|
||
exports[\`toThrowErrorMatchingSnapshot 2\`] = \`[Error: --error-2-edit--]\`;
|
||
"
|
||
`)
|
||
expect(readFileSync(customFile1, 'utf-8')).toMatchInlineSnapshot(`"--file-1-edit--"`)
|
||
expect(readFileSync(customFile2, 'utf-8')).toMatchInlineSnapshot(`"--file-2-edit--"`)
|
||
expect(result.errorTree()).toMatchInlineSnapshot(`
|
||
{
|
||
"basic.test.ts": {
|
||
"toMatchFileSnapshot": "passed",
|
||
"toMatchSnapshot": "passed",
|
||
"toThrowErrorMatchingSnapshot": "passed",
|
||
},
|
||
}
|
||
`)
|
||
})
|