import { Component } from "react"; import type { ErrorInfo, ReactNode } from "react"; interface ErrorBoundaryProps { children: ReactNode; } interface ErrorBoundaryState { error: Error | null; } /** * Top-level ErrorBoundary — renders the error visibly so the actual exception * appears in the DOM (and therefore in the Playwright snapshot) instead of * React 18+ unmounting the entire tree to a blank `
`. * * Background: GRO-2094. The bundle was executing but never painting, with * the failure swallowed. Surfacing the error here is the first step; the * real fix is in the underlying component that threw. */ export class ErrorBoundary extends Component { state: ErrorBoundaryState = { error: null }; static getDerivedStateFromError(error: Error): ErrorBoundaryState { return { error }; } componentDidCatch(error: Error, info: ErrorInfo): void { // Also surface to the console — this is what the test harness greps for. // eslint-disable-next-line no-console console.error("[ErrorBoundary] Uncaught render error:", error, info); } render() { if (this.state.error) { const err = this.state.error; return (

Something went wrong

The app failed to render. The full error is shown below — please share this output when reporting the bug.

            {err.name}: {err.message}
            {"\n\n"}
            {err.stack ?? "(no stack)"}
          
); } return this.props.children; } }