Workbox предоставляет мощный набор инструментов для управления кэшированием ресурсов и организации офлайн-режима в веб-приложениях. Тестирование офлайн-режима требует понимания взаимодействия между сервис-воркерами, стратегиями кэширования и сетью.
Браузеры, такие как Chrome и Edge, имеют встроенные средства для эмуляции отсутствия сети:
F12 или
Ctrl+Shift+I.Workbox поддерживает несколько стратегий кэширования, каждая из которых влияет на поведение приложения в офлайн-режиме:
Тестирование должно включать сценарии:
Для детального анализа работы сервис-воркеров и кэша включается логирование:
import { setLogLevel } from 'workbox-core';
setLogLevel('debug');
Это позволяет отслеживать:
Помимо ручной проверки через DevTools, возможно использовать инструменты для автоматизированного тестирования:
workbox-recipes и workbox-core могут быть
замоканы для проверки логики кэширования без реальной сети.Пример использования workbox-strategies в тесте:
import { CacheFirst } from 'workbox-strategies';
import { setupWorker } from 'msw';
const cacheStrategy = new CacheFirst();
const worker = setupWorker();
test('отдача кэшированного ресурса при офлайн', async () => {
worker.use(
rest.get('/api/data', (req, res, ctx) => res.networkError('Failed'))
);
const response = await cacheStrategy.handle({ request: new Request('/api/data') });
expect(response).not.toBeNull();
});
Важный аспект офлайн-тестирования — корректная работа
fallback-страниц и fallback-контента. Workbox позволяет использовать
registerRoute с обработчиком, возвращающим статический файл
в случае ошибки сети:
workbox.routing.registerRoute(
({ request }) => request.destination === 'document',
async ({ event }) => {
try {
return await fetch(event.request);
} catch (error) {
return caches.match('/offline.html');
}
}
);
Тестирование включает сценарии:
Для долгосрочного контроля офлайн-режима полезны:
Эти методы помогают выявить узкие места и проверить, что приложение корректно обрабатывает сценарии отсутствия сети.