QA The Other WayОбеспечение качества в эпоху тестов, написанных искусственным интеллектом. QA The Other Way.
Практическое QA

Разрешённая геолокация - только один тестовый случай.

Разделите разрешение браузера, заданные координаты и резервный путь приложения перед заявлением о покрытии.

6 мин. чтенияQA The Other Way
Авторская схема разрешения и координат с отдельным ручным вводом при недоступности.
Авторская редакционная иллюстрация.
Иллюстративное видео к этой статье. английский экранный текст; выберите субтитры для этого языка.

Переведенное издание. Технические идентификаторы остаются в своей первоначальной форме.

Разделите разрешение браузера, заданные координаты и резервный путь приложения перед заявлением о покрытии.
Локальный пример с вымышленными данными, не интерфейс клиента или поставщика.

Страница с геолокацией работает в тесте, потому что разрешение всегда выдано. Набор знает удобную среду, а не весь опыт пользователя. Без доступной позиции человек может остаться в ожидании или потерять ручной ввод. Успешное чтение координат не доказывает эти резервные пути.

Руководство использует документацию эмуляции Playwright и BrowserContext для вымышленного локального считывателя. Координаты контролируемые, не текущая позиция человека. Нет картографического сервиса, заказа или аккаунта. Разделены разрешение, позиция и ответ интерфейса при недоступности.

Разрешение и позиция - разные входы

Разрешение геолокации не задаёт координаты. Заданные координаты не разрешают их чтение. Настройте оба параметра в одноразовом контексте и ограничьте разрешение известным источником страницы.

const context = await browser.newContext({
  geolocation: { latitude: 0, longitude: 0 }
});
await context.grantPermissions(['geolocation'], {
  origin: 'http://localhost:4179'
});
const page = await context.newPage();
await page.goto('http://localhost:4179/');
await page.getByRole('button', { name: 'Read demo location' }).click();
await expect(page.getByRole('status')).toHaveText('Demo coordinates: 0, 0');
await context.close();

Пример требует локального сервера по этому адресу и фикстур browser и expect Playwright. Нули явно обозначают тестовые данные, а не рекомендуемый адрес доставки. Страница выводит полученные числа без вывода о месте, зоне обслуживания или физической точности.

Документация предупреждает, что разрешения различаются между браузерами и версиями. Проверьте конкретный движок. Результат Chromium не сертифицирует другой движок, мобильную систему или физическое устройство.

Сделайте недоступность наблюдаемой

API описывает setGeolocation(null) как эмуляцию недоступной позиции. В отдельном случае задайте это значение и покажите через обработчик ошибки состояние Позиция недоступна и ручное поле. В примере ожидание ограничено.

Проверьте видимость и доступность резервного ввода, а не только вызов обработчика. Локальный тест вводит Invented area. Это доказывает пригодность поля после ошибки, но не принятие зоны реальным сервисом.

Не называйте это отказом пользователя. Выданное разрешение при недоступной позиции - другая настройка. Запрос разрешения, ограничение политики, недоступный датчик и тайм-аут могут давать похожий интерфейс по разным причинам. При необходимости добавьте явный отказ через поддерживаемую и проверенную конфигурацию.

Сбрасывайте контекст, а не смысл случая

Переопределения разрешений принадлежат контексту. clearPermissions() очищает их, но не доказывает отказ человека. Для независимых сценариев используйте свежие контексты и описывайте их входы.

Укажите реальный origin локального примера. Без него разрешение шире необходимого. Не переносите локальные настройки на другой сайт или общий авторизованный браузер. Одноразовый контекст упрощает проверку границ.

Реальный продукт может хранить последнюю позицию или предложить ручной ввод до разрешения. Согласуйте ожидания с командой. Положительное чтение не покрывает устаревшие координаты, пороги точности или последующие обновления.

Проверяйте резервный путь как продуктовый сценарий

Назовите случаи разрешения, недоступности и отдельно проверенного отказа. Укажите следующее действие для каждого состояния. Если обещан ручной ввод, проверьте метку поля и принятие разрешённых тестовых данных следующим шагом.

AnyTest описывает исследование приложений и тесты для человеческой проверки. Спросите о разрешении, координатах и резервном пути. Здесь не заявлены API разрешений AnyTest или проверка физических устройств. Полезное покрытие начинается с явной среды и полноценного резервного сценария.

Общие вопросы

Даёт ли разрешение геолокации реальную позицию?

Нет. Разрешение и заданная позиция являются отдельными входами; пример не определяет реальное физическое место.

Равна ли недоступная позиция отказу пользователя?

Нет. Проверяйте и называйте причины отдельно. Очистка переопределений не доказывает явный отказ.

Источники