API tests — это контрактные тесты типов, которые гарантируют стабильность публичного API React-компонентов на уровне TypeScript.
- зафиксировать публичный контракт компонента;
- предотвратить случайные breaking changes;
- задокументировать допустимые и недопустимые комбинации пропсов;
- проверить корректность union, generic, conditional и overload-типов.
- TypeScript
- vitest — как тест-раннер
- expect-type — для проверок типов
- // @ts-expect-error — для негативных кейсов
import { describe, it } from 'vitest';
import { expectTypeOf } from 'expect-type';Все тесты лежат внутри пакета utils/api-tests.
Имя файла:
<ComponentName>.api.test.tsxПример:
Combobox.api.test.tsx;type ComboboxProps = ComponentProps<typeof Combobox>;❌ Нельзя тестировать внутренние типы напрямую ✅ Только публичный API компонента
Рекомендуемая структура:
describe('Basics', () => {});
describe('Unions', () => {});
describe('Generics', () => {});
describe('Examples', () => {});- новый публичный компонент
- новый публичный проп
- изменение union / conditional types
- добавление generic-поведения