Я включил strict mode в тест-проекте на 500+ тестов. TypeScript нашёл 23 реальные ошибки, которые мы не замечали.

Не потенциальные проблемы — реальные баги в тестовой логике. После этого я перестал отключать strict в тест-проектах.

Вот что конкретно ловит каждый флаг:

strictNullChecks // ❌ Без strict: молчит const user = users.find(u => u.id === targetId); await page.fill('#name', user.name); // user может быть undefined

// ✅ Со strict: ошибка компиляции const user = users.find(u => u.id === targetId); if (!user) throw new Error(User ${targetId} not found in fixtures); await page.fill('#name', user.name);

Тест с undefined в фикстурах упадёт с непонятной ошибкой в рантайме. Со strict это не скомпилируется.

noImplicitAny // ❌ Данные из API — чёрный ящик async function getOrderData(response) { // any return response.json(); }

// ✅ Явная типизация = самодокументируемые тесты interface OrderResponse { id: string; status: 'pending' | 'shipped' | 'delivered'; total: number; } async function getOrderData(response: APIResponse): Promise { return response.json(); }

Как включить постепенно в существующем проекте: // tsconfig.json — начните с этого { "compilerOptions": { "strict": true } }

Получили 200 ошибок? Не паникуйте. Добавляйте // @ts-strict-ignore к файлам, которые не готовы, и фиксите по одному файлу в неделю. За месяц проект станет чистым.

Мой путь: включил strict → зафиксил ошибки за 3 спринта → теперь новые тесты пишутся качественнее с первого раза. Экономия на разборе падений окупила вложения.

Используете strict mode в тест-проектах или считаете это излишним? Мне интересно, есть ли аргументы против — я готов поменять мнение.

#typescript #sdet #testing #qa_automation #playwright #automation @haradkou_sdet