Что такое WebView и как тестировать приложения с WebView
Что проверяют
Понимаете ли вы, что внутри мобильного приложения живёт встроенный браузер, и умеете ли тестировать стык нативной и веб-части. Дефекты прячутся именно там: по отдельности и приложение, и сайт работают.
Как отвечать
WebView это нативный компонент, который показывает веб-страницу внутри экрана приложения: на Android системный компонент на движке Chromium, на iOS WKWebView. Через него отдают часто меняющийся контент, оплату, документы, иногда целые разделы.
План проверки:
- переключение контекста в автотестах, без него драйвер видит вместо страницы один непрозрачный контейнер;
driver.context("WEBVIEW_com.example.app"); // назад: driver.context("NATIVE_APP")- мост между JS и нативом: вызовы наружу, передача токена, ссылки, которые должны открыться в системном браузере или на другом экране;
- сессия и куки: вход в нативной части и авторизованность внутри WebView, выход, смена аккаунта, очистка данных;
- отладка через инспектор браузера, подключённый к устройству, и логи консоли, иначе дефект выглядит как «просто белый экран»;
- устройства и версии: системный WebView обновляется отдельно от системы, поэтому на одной версии Android встречаются разные движки.
Где спотыкаются
Ищут элементы страницы в нативном контексте, не находят и переходят на клики по координатам. Такие тесты разваливаются при первом изменении вёрстки или на другом разрешении экрана.
Считают, что достаточно проверить сайт в настольном браузере. У WebView свой движок и своя версия, другой user-agent, отдельное хранилище кук, часть возможностей выключена настройками компонента, и дефекты появляются именно на этих отличиях.
Проверяют только счастливый путь. Обрыв сети посреди загрузки, ошибка сертификата, которую приложение не должно молча проглатывать, системная кнопка «назад», возврат из фона, старый кеш после релиза и запросы доступа к камере или файлам дают находок больше, чем прогон формы по основному сценарию.