@@ -39,7 +39,7 @@ function rgbToHex(rgb: string): string {
3939
4040async function toEl ( el : string | ElementHandle ) : Promise < ElementHandle > {
4141 if ( typeof el === 'string' ) {
42- return await page . $ ( el )
42+ return ( await page . $ ( el ) ) !
4343 }
4444 return el
4545}
@@ -117,14 +117,9 @@ async function untilBrowserLog(
117117 target ?: string | RegExp | Array < string | RegExp > ,
118118 expectOrder = true ,
119119) : Promise < string [ ] > {
120- let resolve : ( ) => void
121- let reject : ( reason : any ) => void
122- const promise = new Promise < void > ( ( _resolve , _reject ) => {
123- resolve = _resolve
124- reject = _reject
125- } )
120+ const { promise, resolve, reject } = promiseWithResolvers < void > ( )
126121
127- const logs = [ ]
122+ const logs : string [ ] = [ ]
128123
129124 try {
130125 const isMatch = ( matcher : string | RegExp ) => ( text : string ) =>
@@ -139,6 +134,9 @@ async function untilBrowserLog(
139134 const remainingTargets = [ ...target ]
140135 processMsg = ( text : string ) => {
141136 const nextTarget = remainingTargets . shift ( )
137+ if ( ! nextTarget ) {
138+ expect . fail ( 'Received more logs than expected. Extra log: ' + text )
139+ }
142140 expect ( text ) . toMatch ( nextTarget )
143141 return remainingTargets . length === 0
144142 }
@@ -186,6 +184,22 @@ export function escapeRegex(str: string): string {
186184 return str . replace ( escapeRegexRE , '\\$&' )
187185}
188186
187+ // TODO: Replace with Promise.withResolvers when bumping to Node 22
188+ export interface PromiseWithResolvers < T > {
189+ promise : Promise < T >
190+ resolve : ( value : T | PromiseLike < T > ) => void
191+ reject : ( reason ?: any ) => void
192+ }
193+ export function promiseWithResolvers < T > ( ) : PromiseWithResolvers < T > {
194+ let resolve : any
195+ let reject : any
196+ const promise = new Promise < T > ( ( _resolve , _reject ) => {
197+ resolve = _resolve
198+ reject = _reject
199+ } )
200+ return { promise, resolve, reject }
201+ }
202+
189203/**
190204 * Before implementing a new util, check if it's not available in core https://github.com/vitejs/vite/blob/main/playground/test-utils.ts
191205 */
0 commit comments