// @vitest-environment jsdom
import { render, screen } from '@testing-library/react'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { ErrorBoundary } from './ErrorBoundary'
function Boom(): never {
throw new Error('kaboom detail')
}
describe('ErrorBoundary', () => {
beforeEach(() => {
// React logs the caught error; silence it so the run stays clean.
vi.spyOn(console, 'error').mockImplementation(() => {})
})
afterEach(() => {
vi.restoreAllMocks()
})
it('renders children when nothing throws', () => {
render(all good
)
expect(screen.getByText('all good')).toBeTruthy()
})
it('shows the error message instead of white-screening when a child throws', () => {
render()
expect(screen.getByText('This screen hit an error')).toBeTruthy()
expect(screen.getByText('kaboom detail')).toBeTruthy()
expect(screen.getByRole('button', { name: 'Reload' })).toBeTruthy()
})
})