Skip to content

Commit 76c4397

Browse files
authored
fix: don't show internal ssr handler in errors (#9547)
1 parent 2d21b13 commit 76c4397

File tree

6 files changed

+25
-6
lines changed

6 files changed

+25
-6
lines changed

packages/utils/src/serialize.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ export function serializeValue(val: any, seen: WeakMap<WeakKey, any> = new WeakM
120120
obj = Object.getPrototypeOf(obj)
121121
}
122122
if (val instanceof Error) {
123-
safe(() => val.message = normalizeErrorMessage(val.message))
123+
safe(() => clone.message = normalizeErrorMessage(val.message))
124124
}
125125
return clone
126126
}
@@ -136,5 +136,11 @@ function safe(fn: () => void) {
136136
}
137137

138138
function normalizeErrorMessage(message: string) {
139-
return message.replace(/__(vite_ssr_import|vi_import)_\d+__\./g, '')
139+
return message
140+
// vite 7+
141+
.replace(/\(0\s?,\s?__vite_ssr_import_\d+__.(\w+)\)/g, '$1')
142+
// vite <7
143+
.replace(/__(vite_ssr_import|vi_import)_\d+__\./g, '')
144+
// vitest-browser-* errors will have __vitest_<componentId>__ in their messages
145+
.replace(/getByTestId('__vitest_\d+__')/g, 'page')
140146
}

packages/utils/src/source-map.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,10 @@ export function parseSingleV8Stack(raw: string): ParsedStack | null {
197197

198198
if (method) {
199199
method = method
200-
.replace(/__vite_ssr_import_\d+__\./g, '')
200+
// vite 7+
201+
.replace(/\(0\s?,\s?__vite_ssr_import_\d+__.(\w+)\)/g, '$1')
202+
// vite <7
203+
.replace(/__(vite_ssr_import|vi_import)_\d+__\./g, '')
201204
.replace(/(Object\.)?__vite_ssr_export_default__\s?/g, '')
202205
}
203206

packages/vitest/src/node/ast-collect.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,10 @@ function astParseFile(filepath: string, code: string) {
168168
}
169169

170170
message = message
171-
// Vite SSR injects these
172-
.replace(/__vite_ssr_import_\d+__\./g, '')
171+
// vite 7+
172+
.replace(/\(0\s?,\s?__vite_ssr_import_\d+__.(\w+)\)/g, '$1')
173+
// vite <7
174+
.replace(/__(vite_ssr_import|vi_import)_\d+__\./g, '')
173175
// Vitest module mocker injects these
174176
.replace(/__vi_import_\d+__\./g, '')
175177

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { test, vi } from 'vitest'
2+
3+
test('__vite_ssr_import__ is removed in error', () => {
4+
// vi is not a function
5+
vi()
6+
})

test/cli/test/__snapshots__/fails.test.ts.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ exports[`should fail expect-soft.test.ts 1`] = `"Error: expect.soft() can only b
2727
2828
exports[`should fail expect-unreachable.test.ts 1`] = `"AssertionError: expected "hi" not to be reached"`;
2929
30+
exports[`should fail exports-error.test.js 1`] = `"TypeError: vi is not a function"`;
31+
3032
exports[`should fail hook-timeout.test.ts 1`] = `"Error: Hook timed out in 10ms."`;
3133
3234
exports[`should fail hooks-called.test.ts 1`] = `

test/cli/test/fails.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { expect, it } from 'vitest'
77
import { runInlineTests, runVitest, ts } from '../../test-utils'
88

99
const root = resolve(import.meta.dirname, '../fixtures/fails')
10-
const files = await glob(['**/*.test.ts'], { cwd: root, dot: true, expandDirectories: false })
10+
const files = await glob(['**/*.test.{ts,js}'], { cwd: root, dot: true, expandDirectories: false })
1111

1212
it.each(files)('should fail %s', async (file) => {
1313
const { stderr } = await runVitest({ root }, [file])

0 commit comments

Comments
 (0)