import { describe, it, expect } from 'vitest'; import { render, screen } from '@testing-library/react'; import Stepper from './Stepper'; const STEPS = [ { key: 'cost', title: 'بیمه و هزینه' }, { key: 'payment', title: 'پرداخت' }, { key: 'review', title: 'تأیید' }, ]; const items = () => screen.getAllByRole('listitem'); describe('Stepper', () => { it('همهٔ مراحل را با شمارهٔ خودشان نشان می‌دهد', () => { render(); expect(items()).toHaveLength(3); expect(items()[0].textContent).toBe('1بیمه و هزینه'); expect(items()[2].textContent).toBe('3تأیید'); }); it('مرحلهٔ جاری با aria-current اعلام می‌شود', () => { render(); // فقط یکی؛ وگرنه صفحه‌خوان دو «مرحلهٔ فعلی» می‌خواند. const marked = items().filter(li => li.getAttribute('aria-current') === 'step'); expect(marked).toHaveLength(1); expect(marked[0].textContent).toBe('2پرداخت'); }); it('نوار با برچسبِ داده‌شده قابل پیدا شدن است', () => { render(); expect(screen.getByRole('list', { name: 'مراحل قطعی کردن نوبت' })).toBeInTheDocument(); }); it('مرحلهٔ ناشناخته هیچ‌کدام را فعال نمی‌کند و خطا نمی‌دهد', () => { render(); expect(items().filter(li => li.getAttribute('aria-current') === 'step')).toHaveLength(0); }); });