Приходилось ли работать с эмуляцией мобильных устройств в веб UI тестах
Что проверяют
Понимаете ли вы границу между эмуляцией и реальным устройством. Вопрос на честность: эмуляция дешёвая и быстрая, но покрывает совсем не то, что от неё обычно ждут.
Как отвечать
Скажите, что и как настраивали.
- В Selenium мобильная эмуляция включается опцией браузера: либо готовое имя устройства, либо свои метрики, ширина, высота, плотность пикселей, плюс подменённый user agent.
- В Playwright это контекст, собранный из описания устройства: размер окна, user agent,
deviceScaleFactor, флагиisMobileиhasTouch. - В Cypress и подобных инструментах меняется только размер окна. Это уже не эмуляция устройства, а проверка адаптивной вёрстки.
Дальше главное: что этим действительно проверяется. Раскладка на узком экране, размер элементов под палец, переключение на мобильную версию по user agent, касания вместо наведения, поворот экрана. И что не проверяется: движок остаётся десктопным, поэтому особенности мобильного Safari, настоящая экранная клавиатура, схлопывающаяся адресная строка, память и качество сети устройства остаются за кадром. Отсюда вывод для интервью: эмуляция для быстрой регрессии на каждый коммит, реальные устройства или ферма перед выпуском.
Где спотыкаются
Выдают эмуляцию за проверку на iOS. Страницу рисует тот же движок, что и на десктопе, так что самые дорогие баги, отличия движка, как раз и остаются незамеченными.
Меняют что-то одно. Только размер окна: сервер отдаёт десктопную вёрстку, потому что user agent прежний. Или только user agent: приходит мобильная вёрстка в широкое окно, и тест падает на элементе, которого там быть не должно.
Строят на эмуляции скриншотное сравнение и получают вечно красный прогон. Плотность пикселей, шрифты и анимации на машине разработчика и в CI различаются, эталоны разъезжаются, а команда привыкает игнорировать падения.