diff --git a/projetos/@pulse-libs/core/tests/components.test.tsx b/projetos/@pulse-libs/core/tests/components.test.tsx new file mode 100644 index 0000000..1232677 --- /dev/null +++ b/projetos/@pulse-libs/core/tests/components.test.tsx @@ -0,0 +1,399 @@ +/** + * @pulse-libs/core — Component Tests (clean suite) + * @vitest-environment jsdom + * + * Acessa elementos exclusivamente via render().container.querySelector/querySelectorAll + * para evitar conflitos com o accessibility tree vazio do jsdom. + */ +import { vi, beforeEach } from 'vitest'; +import { render, fireEvent } from '@testing-library/react'; +import { + Button, Input, Alert, Card, CardHeader, CardTitle, CardBody, +} from '../src/components/index'; + +// ─ mocks globais ──────────────────────────────────────────────── +beforeEach(() => {}); +Object.defineProperty(global, 'matchMedia', { + value: vi.fn().mockReturnValue({ + matches: false, media: '', + addEventListener: vi.fn(), removeEventListener: vi.fn(), + }), + configurable: true, +}); + +// ═══════════════════════════════════════════════════════════════ +// Button +// ═══════════════════════════════════════════════════════════════ +describe('Button', () => { + it('renderiza ).container.querySelector('button')!; + expect(b.textContent).toBe('Clique'); + expect(b.disabled).toBe(false); + }); + + it('é ); + fireEvent.click(render().container.querySelector('button')!); + expect(fn).toHaveBeenCalledTimes(1); + }); + + it('NÃO chama onClick quando disabled', () => { + const fn = vi.fn(); + const b = render(