Home / Function/ untilBrowserLog() — vite Function Reference

untilBrowserLog() — vite Function Reference

Architecture documentation for the untilBrowserLog() function in test-utils.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  a48bb8d5_8ec4_bada_ed97_8eef2ad4dcd4["untilBrowserLog()"]
  c68b21f4_9cd3_3abe_8169_0de2c9650f53["test-utils.ts"]
  a48bb8d5_8ec4_bada_ed97_8eef2ad4dcd4 -->|defined in| c68b21f4_9cd3_3abe_8169_0de2c9650f53
  8ee0e97d_c7ee_a28a_08b3_e9351296df2d["untilBrowserLogAfter()"]
  8ee0e97d_c7ee_a28a_08b3_e9351296df2d -->|calls| a48bb8d5_8ec4_bada_ed97_8eef2ad4dcd4
  style a48bb8d5_8ec4_bada_ed97_8eef2ad4dcd4 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

playground/test-utils.ts lines 274–351

async function untilBrowserLog(
  target?: string | RegExp | Array<string | RegExp>,
  expectOrder = true,
): Promise<string[]> {
  const { promise, resolve, reject } = promiseWithResolvers<void>()
  let timeoutId: ReturnType<typeof setTimeout>

  const logs = []

  try {
    const isMatch = (matcher: string | RegExp) => (text: string) =>
      typeof matcher === 'string' ? text === matcher : matcher.test(text)

    let processMsg: (text: string) => boolean

    if (!target) {
      processMsg = () => true
    } else if (Array.isArray(target)) {
      if (expectOrder) {
        const remainingTargets = [...target]
        processMsg = (text: string) => {
          const nextTarget = remainingTargets.shift()
          expect(text).toMatch(nextTarget)
          return remainingTargets.length === 0
        }
      } else {
        const remainingMatchers = target.map(isMatch)
        processMsg = (text: string) => {
          const nextIndex = remainingMatchers.findIndex((matcher) =>
            matcher(text),
          )
          if (nextIndex >= 0) {
            remainingMatchers.splice(nextIndex, 1)
          }
          return remainingMatchers.length === 0
        }
      }
    } else {
      processMsg = isMatch(target)
    }

    const handleMsg = (msg: ConsoleMessage) => {
      try {
        const text = msg.text()
        logs.push(text)
        const done = processMsg(text)
        if (done) {
          resolve()
        }
      } catch (err) {
        reject(err)
      }
    }

    timeoutId = setTimeout(() => {
      const nextTarget = Array.isArray(target)
        ? expectOrder
          ? target[0]
          : target.join(', ')
        : target
      reject(
        new Error(
          `Timeout waiting for browser logs. Waiting for: ${nextTarget}`,
        ),
      )
      page.off('console', handleMsg)
    }, 5000)

    page.on('console', handleMsg)
  } catch (err) {
    reject(err)
  }

  await promise
  clearTimeout(timeoutId)

  return logs
}

Domain

Subdomains

Frequently Asked Questions

What does untilBrowserLog() do?
untilBrowserLog() is a function in the vite codebase, defined in playground/test-utils.ts.
Where is untilBrowserLog() defined?
untilBrowserLog() is defined in playground/test-utils.ts at line 274.
What calls untilBrowserLog()?
untilBrowserLog() is called by 1 function(s): untilBrowserLogAfter.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free