// @vitest-environment jsdom import { afterEach, it, expect, vi } from 'vitest'; import { render, screen, fireEvent, cleanup } from '@testing-library/react'; import { ErrorView } from './ErrorView'; import { en } from '../i18n/en'; afterEach(cleanup); it.each([true, false])('offers photo recovery and conditional retry (%s)', canRetry => { const retry = vi.fn(), photo = vi.fn(), close = vi.fn(); render(); const retryButton = screen.queryByRole('button', {name: en.error.tryAgain}); expect(Boolean(retryButton)).toBe(canRetry); if (retryButton) { fireEvent.click(retryButton); expect(retry).toHaveBeenCalledOnce(); } const another = screen.getByRole('button', {name: en.error.useAnotherPhoto}); expect(another.className).toContain(canRetry ? 'secondary' : 'primary'); fireEvent.click(another); expect(photo).toHaveBeenCalledOnce(); fireEvent.click(screen.getByRole('button', {name: en.error.close})); expect(close).toHaveBeenCalledOnce(); });