import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { Button } from '../../src/marketing/Button.tsx'; describe('Button', () => { it('renders a link with its label and destination', () => { render(); expect(screen.getByRole('link', { name: 'Get started' })).toHaveAttribute('href', '/signup'); }); it('is the primary (inverse) pill by default', () => { render(); expect(screen.getByRole('link', { name: 'Get started' })).toHaveClass('btn', 'btn-primary', 'btn-md'); }); it('supports the ghost and secondary variants and the large size', () => { const { rerender } = render(); expect(screen.getByRole('link', { name: 'See how it works' })).toHaveClass('btn-ghost', 'btn-lg'); rerender(); expect(screen.getByRole('link', { name: 'How approval works' })).toHaveClass('btn-secondary'); }); it('supports a light variant for use on the dark panel', () => { render(); expect(screen.getByRole('link', { name: 'Get started' })).toHaveClass('btn-light'); }); it('can end with an arrow that is not announced', () => { render(); const link = screen.getByRole('link', { name: 'See how it works' }); expect(link.querySelector('.icon')).toHaveAttribute('aria-hidden', 'true'); }); });