Тестирование offline режима веб-приложений является неотъемлемой частью обеспечения качества, особенно для тех приложений, которые должны работать без постоянного интернет-соединения. С помощью Playwright можно легко эмулировать условия работы без сети, проверяя, как веб-приложение функционирует в таких условиях.
Playwright предоставляет удобные методы для имитации различных сетевых условий, включая работу в offline режиме. Это позволяет убедиться, что веб-приложение корректно обрабатывает сценарии, когда интернет-соединение отсутствует.
Для того чтобы эмулировать отключение сети, используется метод
context.setOfflineMode(true). Этот метод позволяет
переключить состояние контекста браузера на offline, что фактически
имитирует потерю соединения.
Пример:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
// Включаем offline режим
await context.setOfflineMode(true);
const page = await context.newPage();
// Переход на страницу
await page.goto('https://example.com');
// Выполнение тестов
// Проверяем, что приложение работает корректно в оффлайн-режиме
const errorMessage = await page.innerText('body');
console.log(errorMessage); // Ожидаем увидеть сообщение об ошибке или индикатор работы в оффлайн
// Закрытие браузера
await browser.close();
})();
Этот код создает новый контекст браузера, переводит его в offline режим, а затем выполняет переход на веб-страницу. После этого можно проверять, как приложение ведет себя в условиях отсутствия сети.
При тестировании offline режима особое внимание следует уделить проверке кэширования и механизма работы с локальными ресурсами. Для приложений, которые используют Service Workers или другие методы кэширования, важно убедиться, что нужные ресурсы кэшируются правильно и могут быть загружены, даже если интернет-соединение отсутствует.
Для выполнения этих проверок в Playwright необходимо симулировать загрузку страницы в offline режиме и убедиться, что кэшированные ресурсы доступны. Проверка может включать в себя:
Пример проверки кэширования:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
// Включаем offline режим
await context.setOfflineMode(true);
const page = await context.newPage();
// Переход на страницу
await page.goto('https://example.com');
// Проверка, что элементы, которые должны быть закэшированы, доступны
const cachedData = await page.evaluate(() => {
return localStorage.getItem('user-data'); // Пример использования localStorage
});
if (cachedData) {
console.log('Данные успешно загружены из кэша');
} else {
console.log('Ошибка: данные не найдены в кэше');
}
// Закрытие браузера
await browser.close();
})();
Этот код проверяет, что данные, кэшированные с использованием
localStorage, доступны даже при отключении сети.
Еще одна важная часть тестирования offline режима — это проверка интерфейса пользователя. Когда приложение работает без подключения к интернету, важно, чтобы пользователь был уведомлен о проблемах с подключением или работой с данными.
Playwright позволяет проверять наличие элементов на странице, которые могут указывать на состояние приложения в offline режиме (например, уведомления, индикаторы ошибки или другие UI-компоненты).
Пример:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
// Включаем offline режим
await context.setOfflineMode(true);
const page = await context.newPage();
// Переход на страницу
await page.goto('https://example.com');
// Проверка наличия уведомления о потере соединения
const offlineNotification = await page.$('text=You are offline');
if (offlineNotification) {
console.log('UI отображает уведомление о потере соединения');
} else {
console.log('UI не отображает уведомление о потере соединения');
}
// Закрытие браузера
await browser.close();
})();
Этот код проверяет, что на странице отображается уведомление о том, что пользователь находится в offline режиме, что является важным аспектом пользовательского опыта.
Также необходимо проверять поведение приложения после восстановления сети. Важно убедиться, что приложение корректно восстанавливает подключение, синхронизирует данные и отображает обновления.
Playwright позволяет легко переключаться между состояниями сети, что упрощает тестирование сценариев восстановления.
Пример:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
// Включаем offline режим
await context.setOfflineMode(true);
const page = await context.newPage();
// Переход на страницу в offline режиме
await page.goto('https://example.com');
// Проверяем поведение в offline
await page.waitForSelector('text=You are offline');
// Включаем режим онлайн
await context.setOfflineMode(false);
// Проверка восстановления соединения
await page.reload(); // Перезагружаем страницу
await page.waitForSelector('text=You are online');
console.log('Состояние сети восстановлено, приложение обновилось.');
// Закрытие браузера
await browser.close();
})();
Этот код проверяет, как приложение восстанавливает работу после возвращения сети.
Playwright предоставляет мощные инструменты для тестирования offline режима веб-приложений, включая эмуляцию отключения сети, проверку работы с кэшированными данными, а также валидацию пользовательского интерфейса и поведения при восстановлении сети. Эти возможности позволяют создавать качественные тесты для современных приложений, требующих работы в условиях нестабильного или отсутствующего интернета.