Ответ
Тестирование смены ориентации (портрет ↔ ландшафт) направлено на проверку адаптивности UI и сохранности состояния приложения.
Основные тест-кейсы:
- Базовая функциональность: Все элементы интерфейса и функции доступны и работают в обеих ориентациях.
- Сохранение состояния и данных: Введённый текст, выбранные элементы, позиция прокрутки, состояние медиаплеера (пауза/воспроизведение) не должны сбрасываться при повороте.
- Целостность UI: Элементы не накладываются, не обрезаются, сохраняют читаемость и пропорции. Проверяются все экраны и диалоги.
- Производительность: Поворот экрана не должен вызывать заметных лагов или падений FPS.
- Обработка фиксированной ориентации: Если приложение или отдельный экран поддерживает только одну ориентацию, проверяется, что автоповорот заблокирован.
- Особые случаи: Поворот во время анимации, загрузки данных или отображения клавиатуры.
Пример теста на Android (Espresso):
@Test
fun testInputPersistsOnOrientationChange() {
// 1. Ввести текст в портретной ориентации
onView(withId(R.id.editText)).perform(typeText("Test Input"))
// 2. Сменить ориентацию на ландшафтную
activityScenario.onActivity { activity ->
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
// 3. Проверить, что текст сохранился
onView(withId(R.id.editText)).check(matches(withText("Test Input")))
} Ответ 18+ 🔞
А, ну это ж классика, блядь! Тестирование поворота экрана — это как проверять, не развалится ли твой табурет, если на него сесть с другой стороны, ёпта. Вроде мелочь, а потом бац — и ты уже на полу с разбитой жопой, потому что какой-то дизайнер забыл, что в ландшафте кнопка «Сохранить» уезжает под клавиатуру, сука.
Смотри, в чём суть, блядь. Ты крутишь телефон, а приложение не должно сходить с ума, как мартышлюшка на банане. Вот на что смотреть надо, чтоб не облажаться:
- Всё ли на месте и кликается? Это же очевидно, блядь! Кнопки, поля, меню — всё должно быть доступно и в портрете, и когда ты положил девайс набок. Если после поворота половина интерфейса уехала за экран — это пиздец, а не релиз.
- Не забыло ли оно, чем ты занимался? Вот представь: ты пишешь гениальное сообщение, поворачиваешь экран, а там — пустое поле, блядь! Или смотрел видосик, повернул, а он с начала начал. Это же волнение ебать! Текст, выбор в чекбоксах, позиция в списке, пауза в видео — всё должно остаться, как было. Состояние — святое!
- Не превратилось ли всё в кашу? Элементы не должны налезать друг на друга, как пьяные в маршрутке. Шрифты читаемые, картинки не расплющенные. Каждый экран, каждое всплывающее окно — всё на проверку, блядь.
- Не тормозит ли? Поворот — это не повод для приложения уйти в раздумья на пять секунд. Если после смены ориентации интерфейс дёргается или виснет — пидарас шерстяной, оптимизацию проёбывают.
- А если нельзя крутить? Бывает же, что какая-то хрень должна быть только вертикальной или только горизонтальной. Ну так проверь, что автоповорот там реально не работает, а не просто дизайн кривой!
- Ловим момент, сука! Самые интересные баги вылезают, когда ты делаешь поворот во время чего-то: в середине анимации, когда грузятся данные или когда клавиатура торчит. Вот тут-то и проявляется вся криворукость кода, блядь.
Ну и чтобы не быть голословным, вот тебе кусок кода, как это примерно проверяют на Андроиде. Смотри, тут вся магия:
@Test
fun testInputPersistsOnOrientationChange() {
// 1. Ввести текст в портретной ориентации
onView(withId(R.id.editText)).perform(typeText("Test Input"))
// 2. Сменить ориентацию на ландшафтную
activityScenario.onActivity { activity ->
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
// 3. Проверить, что текст сохранился
onView(withId(R.id.editText)).check(matches(withText("Test Input")))
}
Вот и весь сказ, блядь. Казалось бы, ерунда. Но если на этом сэкономить, пользователь получит опыт уровня «в рот меня чих-пых», когда его любимое приложение обнуляет все его труды от одного неловкого движения рукой. А нам такое не надо, правда?