Files
2026-05-11 17:46:13 +02:00

117 lines
3.4 KiB
TypeScript

import fs from 'node:fs'
import path from 'node:path'
import { expect, test } from 'vitest'
import { runVitest } from '../../test-utils'
test('snapshots in skipped test/suite is not obsolete', async () => {
// create snapshot on first run
const root = path.join(import.meta.dirname, 'fixtures/skip-test')
fs.rmSync(path.join(root, '__snapshots__'), { recursive: true, force: true })
let vitest = await runVitest({
root,
update: true,
})
expect(vitest.stdout).toContain('Snapshots 2 written')
expect(fs.readFileSync(path.join(root, '__snapshots__/repro.test.ts.snap'), 'utf-8')).toMatchInlineSnapshot(`
"// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[\`repro suite > inner case 1\`] = \`"hi-1"\`;
exports[\`top-level case 1\`] = \`"hi-2"\`;
"
`)
// running with `skipIf` enabled should not show "obsolete"
vitest = await runVitest({
root,
env: {
ENABLE_SKIP: '1',
},
})
expect(vitest.stdout).toContain('2 skipped')
expect(vitest.stdout).not.toContain('obsolete')
// running with `skipIf` and `update` should keep snapshots
vitest = await runVitest({
root,
update: true,
env: {
ENABLE_SKIP: '1',
},
})
expect(fs.readFileSync(path.join(root, '__snapshots__/repro.test.ts.snap'), 'utf-8')).toMatchInlineSnapshot(`
"// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[\`repro suite > inner case 1\`] = \`"hi-1"\`;
exports[\`top-level case 1\`] = \`"hi-2"\`;
"
`)
})
test('handle obsoleteness of toMatchSnapshot("custom message")', async () => {
const root = path.join(import.meta.dirname, './fixtures/skip-test-custom')
// clear snapshots
fs.rmSync(path.join(root, '__snapshots__'), { recursive: true, force: true })
// create snapshot on first run
let vitest = await runVitest({
root,
update: true,
})
expect(vitest.stdout).toContain('Snapshots 4 written')
expect(fs.readFileSync(path.join(root, '__snapshots__/basic.test.ts.snap'), 'utf-8')).toMatchInlineSnapshot(`
"// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[\`custom a > x 1\`] = \`0\`;
exports[\`custom a > y 1\`] = \`0\`;
exports[\`custom b > w 1\`] = \`0\`;
exports[\`custom b > z 1\`] = \`0\`;
"
`)
// Skipped tests' `toMatchSnapshot("...")` is not considered obsolete
vitest = await runVitest({
root,
testNamePattern: 'custom a',
})
expect(vitest.stdout).toContain('1 passed')
expect(vitest.stdout).toContain('1 skipped')
expect(vitest.stdout).not.toContain('obsolete')
vitest = await runVitest({
root,
testNamePattern: 'custom b',
})
expect(vitest.stdout).toContain('1 passed')
expect(vitest.stdout).toContain('1 skipped')
expect(vitest.stdout).not.toContain('obsolete')
// check snapshot doesn't change when skip + update
vitest = await runVitest({
root,
update: true,
testNamePattern: 'custom a',
})
expect(vitest.stdout).toContain('1 passed')
expect(vitest.stdout).toContain('1 skipped')
expect(vitest.stdout).not.toContain('obsolete')
expect(fs.readFileSync(path.join(root, '__snapshots__/basic.test.ts.snap'), 'utf-8')).toMatchInlineSnapshot(`
"// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[\`custom a > x 1\`] = \`0\`;
exports[\`custom a > y 1\`] = \`0\`;
exports[\`custom b > w 1\`] = \`0\`;
exports[\`custom b > z 1\`] = \`0\`;
"
`)
})