Ответ
Тестирование смены ориентации экрана (portrait/landscape) включает следующие ключевые сценарии:
- Базовый функционал:
- Корректность отображения и адаптации UI-элементов (макет, шрифты, изображения).
- Сохранение состояния приложения (введенный текст, позиция прокрутки, активная вкладка).
- Поведение системы:
- Работа переключателя автоповорота (включено/выключено).
- Плавность и отсутствие артефактов анимации при повороте.
- Интеграционные сценарии:
- Поворот во время длительных операций: загрузка данных, потоковое видео, звонок.
- Поворот с активными всплывающими окнами (диалоги, клавиатура).
- Проверка всех экранов (Activity/Fragment) приложения на поддержку обеих ориентаций.
-
Пример автоматизации на Android (Kotlin + Espresso):
@Test fun testScreenRotationPreservesData() { // 1. Ввести текст в портретной ориентации onView(withId(R.id.editText)).perform(typeText("Sample Text")) // 2. Сменить ориентацию на ландшафтную activityTestRule.activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE // 3. Проверить, что текст сохранился onView(withId(R.id.editText)).check(matches(withText("Sample Text"))) }
Ответ 18+ 🔞
Да ты посмотри, какие, блядь, заморочки с этим поворотом экрана! Ну, в рот меня чих-пых, как будто мы в цирке, а не приложение тестируем. Слушай, сюда, сейчас разложу по полочкам, что за пиздопроебибна тут творится.
Первым делом, конечно, база. Перевернул ты свой телефон — и всё, сука, должно остаться на своих местах. Кнопки, текст, картинки — чтоб не разъехалось, не налезло друг на друга и не превратилось в кашу. И состояние, ёпта, сохранить! Ввёл ты в поле «Имя» — «Василий Пупкин», повернул — а там пусто? Да это же пиздец, а не тест. Прокрутил ленту до середины, перевернул — и тебя снова наверх швыряет? Волнение ебать, терпения ноль ебать.
Дальше — системные пляски. Вот эта штука, автоповорот, её же можно выключить, хитрая жопа. Надо проверить оба сценария: когда он включён и экран крутится за тобой, и когда выключен — и он стоит колом, как истукан, сколько ни верти устройство. И сама анимация поворота! Чтоб не дергалось, не моргало чёрными квадратами и не выглядело так, будто приложение на секунду сдохло.
А вот это, блядь, самое интересное — интеграционные сцены. Настоящий ад начинается тут. Представь: грузится у тебя гифка размером с овердохуища, ты её ждёшь, ждёшь, и тут — бац! — поворачиваешь телефон. Что будет? Упадёт? Зависнет? Или, ёперный театр, начнёт грузиться заново? То же самое с видео, которое в ландшафте должно на весь экран, или с звонком. Или, хуй с горы, открыл ты клавиатуру, пишешь сообщение, повернул — клава-то должна адекватно перестроиться, а не наехать на твой текст.
И самое главное — проверить надо ВСЕ экраны, блядь! Не только главный. Каждый фрагмент, каждую активность. А то получится: в одном месте всё летает, а зайдешь в настройки, повернёшь — и там пизда с ушами, интерфейс в тартарары провалился.
Ну и куда же без автоматизации, а? Чтобы не делать это всё вручную, как последний мудак. Вот, глянь, пример кода на котлине, который проверяет, что введённый текст не пропадает после поворота. Красота же!
@Test
fun testScreenRotationPreservesData() {
// 1. Ввести текст в портретной ориентации
onView(withId(R.id.editText)).perform(typeText("Sample Text"))
// 2. Сменить ориентацию на ландшафтную
activityTestRule.activity.requestedOrientation =
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
// 3. Проверить, что текст сохранился
onView(withId(R.id.editText)).check(matches(withText("Sample Text")))
}
Вот и вся магия. Сделал раз, запустил — и спи спокойно. А то вручную каждый экран крутить — это ж, ядрёна вошь, до пенсии тестировать.