Files
carmanagement/apps/homepage/tests/unit/components/forms.test.tsx
T
root d7fb7b7a7b
Build & Deploy / Build & Push Docker Image (push) Failing after 47s
Build & Deploy / Deploy to VPS (push) Has been skipped
Test / API Unit Tests (push) Failing after 5m4s
Test / Marketplace Unit Tests (push) Failing after 4m55s
Test / Admin Unit Tests (push) Successful in 9m37s
Test / Dashboard Unit Tests (push) Successful in 9m37s
Test / API Integration Tests (push) Successful in 9m54s
redesign the homepage
2026-06-26 16:27:21 -04:00

42 lines
1.3 KiB
TypeScript

import { ErrorSummary } from '@/components/forms/ErrorSummary';
import { FormField } from '@/components/forms/FormField';
import { TextInput } from '@/components/forms/TextInput';
import { render, screen } from '@testing-library/react';
import { describe, expect, it } from 'vitest';
describe('form primitives', () => {
it('associates labels, help, required state, and errors', () => {
render(
<FormField
id="work-email"
label="Work email"
required
supportingText="Use work email"
error="Enter a valid address"
>
<TextInput
id="work-email"
type="email"
required
invalid
describedBy="work-email-help work-email-error"
/>
</FormField>,
);
const input = screen.getByLabelText(/Work email/);
expect(input).toHaveAttribute('required');
expect(input).toHaveAttribute('aria-invalid', 'true');
expect(input).toHaveAccessibleDescription('Use work email Enter a valid address');
});
it('links summary errors back to fields', () => {
render(
<ErrorSummary
title="Correct the fields"
errors={[{ fieldId: 'work-email', message: 'Enter a valid address' }]}
/>,
);
expect(screen.getByRole('alert').querySelector('a')).toHaveAttribute('href', '#work-email');
});
});