Коротка відповідь
middleТестування розділяю на unit, integration і end‑to‑end. Для unit використовую Jest з ts-jest, для інтеграції – Vitest + Testing Library, а E2E – Playwright. Перевага: Jest швидко компілює TS, Vitest має мініатюрний bundler, а Playwright підтримує багатоплатформені браузери і CI‑інтеграцію.
Повне пояснення
Що це і навіщо – Тестування забезпечує надійність коду, виявляє регресії і підтримує швидку розробку. Ключові принципи – ізоляція, повторюваність і швидкість виконання. Як це працює – unit‑тести перевіряють окремі функції, integration‑тести взаємодію між модулями, E2E – повний сценарій користувача. Практика – у TS проекті unit‑тести пишуться з Jest + ts-jest, інтеграційні – Vitest + React Testing Library (або Angular TestBed), E2E – Playwright з TypeScript. Тестування: Jest‑примірник:
import { sum } from './calc';
describe('sum', () => {
it('adds numbers', () => {
expect(sum(1,2)).toBe(3);
});
});
Vitest‑примірник:
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders welcome', () => {
render(<App />);
expect(screen.getByText(/welcome/i)).toBeInTheDocument();
});
Playwright‑примірник:
import { test, expect } from '@playwright/test';
test('homepage loads', async ({ page }) => {
await page.goto('http://localhost:3000');
expect(await page.title()).toBe('My App');
});
Дизайн‑рішення – використання TypeScript забезпечує типову безпеку, а бібліотеки з підтримкою TS мінімізують ручну конфігурацію. Производительность – Vitest компілює лише потрібні файли, Jest кешує результати. Безпека – Playwright із sandbox‑режимом запобігає небажаному доступу до системи. Оптимізація – паралельне виконання тестів у CI, використання --watch для швидкого feedback. Альтернативи – Mocha/Chai, Cypress (E2E), але Playwright має кращу підтримку багатоплатформності. Часті помилки – неправильне мокання, залежність від DOM‑структури, неочікувані асинхронні таймаути. Cheatsheet – Jest: describe/it, Vitest: test, Playwright: page.goto.