Ответ вслух Senior Тестирование обновлено

Стабильные E2E-тесты

Вопрос

E2E-тесты в RN-проекте падают через раз. Как сделать их стабильными?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Сначала собираю статистику: какие тесты и на каком шаге падают. Типичные причины: ожидание по времени вместо состояния, общий тестовый аккаунт, на котором тесты мешают друг другу, внешние сервисы и анимации.

Что должно прозвучать в ответе

  • Ожидание по состоянию, а не `sleep`: синхронизация Detox, ожидания Maestro

  • Изоляция данных: свой тестовый аккаунт и сброс состояния перед тестом

  • Подмена нестабильных внешних сервисов (оплата, push) на тестовые

  • Отключение анимаций и бесконечных таймеров в тестовой сборке

  • Стабильные селекторы: `testID` и роли

  • Повтор только как временная мера, сбор статистики нестабильности

Что могут спросить следом

  • Как тестировать сценарий с системным диалогом разрешений?
  • Где запускать E2E в CI?

Разбор

Образцовый ответ: «Сначала собираю статистику: какие тесты и на каком шаге падают. Типичные причины: ожидание по времени вместо состояния, общий тестовый аккаунт, на котором тесты мешают друг другу, внешние сервисы и анимации. Убираю sleep, полагаюсь на синхронизацию Detox или ожидания Maestro. Каждый тест создаёт свои данные через API и сбрасывает состояние приложения. Оплату и push подменяю тестовыми режимами. В тестовой сборке отключаю бесконечные анимации и опросы, которые мешают синхронизации. Селекторы только по testID и ролям. Разрешения выдаю заранее или обрабатываю системный диалог средствами инструмента. Автоматический повтор оставляю как временную меру и чиню причины»

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.