import React from 'react'; import { describe, it, expect, vi } from 'vitest'; import { render, fireEvent } from '@testing-library/react'; import { OverlayBackdrop } from '../../overlays/_internal/OverlayBackdrop'; describe('OverlayBackdrop — internal scrim primitive', () => { it('renders a div with data-pxl-overlay-backdrop attribute', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]'); expect(el).toBeTruthy(); expect(el?.tagName).toBe('DIV'); }); it('defaults to fixed positioning, bg-retro-bg/80, backdrop-blur-sm', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; expect(el.className).toContain('fixed'); expect(el.className).toContain('inset-0'); expect(el.className).toContain('bg-retro-bg/80'); expect(el.className).toContain('backdrop-blur-sm'); // Must NOT use the buggy --retro-text token. expect(el.className).not.toContain('bg-retro-text'); }); it('position="absolute" switches positioning class', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; expect(el.className).toContain('absolute'); expect(el.className).not.toMatch(/\bfixed\b/); }); it('blur={false} omits the backdrop-blur class', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; expect(el.className).not.toContain('backdrop-blur-sm'); }); it('opacity={70} renders bg-retro-bg/70', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; expect(el.className).toContain('bg-retro-bg/70'); expect(el.className).not.toContain('bg-retro-bg/80'); }); it('opacity={90} renders bg-retro-bg/90', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; expect(el.className).toContain('bg-retro-bg/90'); }); it('opacity={60} renders bg-retro-bg/60', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; expect(el.className).toContain('bg-retro-bg/60'); }); it('fires onClick when clicked', () => { const onClick = vi.fn(); const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; fireEvent.click(el); expect(onClick).toHaveBeenCalledTimes(1); }); it('defaults aria-hidden to true', () => { const { container } = render(); const el = container.querySelector('[data-pxl-overlay-backdrop]') as HTMLElement; expect(el.getAttribute('aria-hidden')).toBe('true'); }); it('forwards extra props (e.g. data-* hooks) to the underlying div', () => { const { container } = render( , ); const el = container.querySelector('[data-pxl-drawer-overlay]') as HTMLElement; expect(el).toBeTruthy(); expect(el.getAttribute('data-pxl-overlay-backdrop')).toBe(''); }); it('exposes the expected displayName', () => { expect(OverlayBackdrop.displayName).toBe('OverlayBackdrop'); }); });