11import type { File , Suite , Test } from '@vitest/runner'
2+ import type { Node } from 'estree'
23import type { RawSourceMap } from 'vite-node'
34import type { TestProject } from '../node/project'
45import {
@@ -51,8 +52,6 @@ export async function collectTests(
5152 if ( ! request ) {
5253 return null
5354 }
54- // unwrap __vite_ssr_identity__ for Vite 6
55- request . code = request . code . replace ( / _ _ v i t e _ s s r _ i d e n t i t y _ _ \( ( \w + \. \w + ) \) / g, '( $1)' )
5655 const ast = await parseAstAsync ( request . code )
5756 const testFilepath = relative ( ctx . config . root , filepath )
5857 const projectName = ctx . name
@@ -72,7 +71,7 @@ export async function collectTests(
7271 }
7372 file . file = file
7473 const definitions : LocalCallDefinition [ ] = [ ]
75- const getName = ( callee : any ) : string | null => {
74+ const getName = ( callee : Node ) : string | null => {
7675 if ( ! callee ) {
7776 return null
7877 }
@@ -86,12 +85,20 @@ export async function collectTests(
8685 return getName ( callee . tag )
8786 }
8887 if ( callee . type === 'MemberExpression' ) {
88+ const object = callee . object as any
8989 // direct call as `__vite_ssr_exports_0__.test()`
90- if ( callee . object ?. name ?. startsWith ( '__vite_ssr_' ) ) {
90+ if ( object ?. name ?. startsWith ( '__vite_ssr_' ) ) {
9191 return getName ( callee . property )
9292 }
9393 // call as `__vite_ssr__.test.skip()`
94- return getName ( callee . object ?. property )
94+ return getName ( object ?. property )
95+ }
96+ // unwrap (0, ...)
97+ if ( callee . type === 'SequenceExpression' && callee . expressions . length === 2 ) {
98+ const [ e0 , e1 ] = callee . expressions
99+ if ( e0 . type === 'Literal' && e0 . value === 0 ) {
100+ return getName ( e1 )
101+ }
95102 }
96103 return null
97104 }
0 commit comments