Как управлять быстродействием процессора
Обзор
Данный рецепт работает только при использовании Chrome DevTools Protocol (CDP).
Читайте подробности в разделе «Как использовать CDP в Testplane»
Скорость работы процессора на мобильных устройствах сильно уступает скорости на компьютерах. Поэтому для эмуляции скорости CPU в puppeteer существует метод emulateCPUThrottling.
Пример: замедляем скорость процессора в 8 раз
Воспользуемся этим методом, чтобы замедлить скорость процессора в 8 раз:
it("should open yandex.ru with emulation 8x slower CPU", async function () {
// Получаем инстанс puppeteer'а
const puppeteer = await this.browser.getPuppeteer();
// Получаем первую открытую страницу (считаем, что она активная в данный момент)
const [page] = await puppeteer.pages();
// Замедляем скорость процессора в 8 раз
await page.emulateCPUThrottling(8);
await this.browser.url("https://yandex.ru");
});
Небольшая история об одном обходном пути
Изначально в webdriverio не было поддержки метода page.emulateCPUThrottling
, так как в webdriverio использовалась версия puppeteer-core@9.1.0, а не puppeteer-core@10.1.0, в которой этот метод был поддержан.
Однако это ограничение можно было обойти с помощью метода puppeteer CDPSession.send(), отправив браузеру команду Emulation.setCPUThrottlingRate по CDP:
it("should open yandex.ru with emulation 8x slower CPU", async function () {
// Получаем инстанс puppeteer'а
const puppeteer = await this.browser.getPuppeteer();
// Получаем первую открытую страницу (считаем, что она активная в данный момент)
const [page] = await puppeteer.pages();
// Создаем CDP-сессию
const client = await page.target().createCDPSession();
// Замедляем скорость процессора в 8 раз
await client.send("Emulation.setCPUThrottlingRate", { rate: 8 });
await this.browser.url("https://yandex.ru");
});
Позже мы донесли в webdriverio необходимый пулл-реквест с апдейтом версии puppeteer-core и теперь метод emulateCPUThrottling доступен в testplane прямо из коробки.