Puppeteer предоставляет возможность управлять сетевыми условиями браузера, что позволяет эмулировать различные сценарии работы веб-приложений. Это важно для тестирования производительности, проверки поведения при медленном соединении, симуляции оффлайн-режима и анализа реакций приложения на нестабильные сети.
Puppeteer позволяет:
Для работы с сетевыми условиями используется объект page, а
также методы DevTools Protocol через page._client().
Сетевое замедление помогает тестировать загрузку страниц при различных типах соединений: 3G, 4G, медленный Wi-Fi.
Пример настройки сети для медленного 3G:
const puppeteer = require(&
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const client = await page.target().createCDPSession();
// Включение сетевого замедления
await client.send('Network.enable');
await client.send('Network.emulateNetworkConditions', {
offline: false,
downloadThroughput: 500 * 1024 / 8, // 500 Кбит/с
uploadThroughput: 500 * 1024 / 8, // 500 Кбит/с
latency: 200 // Задержка 200 мс
});
await page.goto('https://example.com');
await browser.close();
})();
Ключевые параметры
emulateNetworkConditions:
offline – true/false, переключение в оффлайн-режим.
latency – задержка в миллисекундах.
downloadThroughput – скорость скачивания в байтах/с.
uploadThroughput – скорость загрузки в байтах/с.
Эти параметры позволяют имитировать реальные условия мобильного интернета и проверять устойчивость интерфейса к медленным соединениям.
Оффлайн-тестирование необходимо для проверки PWA-приложений и кеширования.
await client.send('Network.emulateNetworkConditions', {
offline: true,
downloadThroughput: 0,
uploadThroughput: 0,
latency: 0
});
После этого все сетевые запросы будут падать с ошибкой, как при реальной потере соединения. Это помогает убедиться, что приложение корректно обрабатывает отсутствие интернета.
Puppeteer позволяет перехватывать запросы и изменять их параметры, например, подменять ответы API или блокировать сторонние ресурсы.
await page.setRequestInterception(true);
page.on('request', request => {
if (request.url().includes('analytics')) {
request.abort(); // блокировка трекинга
} else {
request.continue();
}
});
Эта функциональность полезна для тестирования работы приложения без внешних зависимостей или имитации ошибок сервера.
Отслеживание сетевых событий позволяет анализировать время загрузки ресурсов, выявлять узкие места и оптимизировать производительность.
page.on('request', request => {
console.log('Запрос:', request.url());
});
page.on('response', response => {
console.log('Ответ:', response.url(), 'Статус:', response.status());
});
Использование этих событий в связке с
emulateNetworkConditions позволяет создавать реалистичные
сценарии тестирования при различных сетевых условиях.
Эффективное использование сетевых возможностей Puppeteer позволяет создавать реалистичные тестовые сценарии, выявлять ошибки, недоступные при обычной локальной разработке, и повышать качество веб-приложений.