Перейти к основному содержимому

Как управлять быстродействием процессора

Обзор

warning

Данный рецепт работает только при использовании 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 прямо из коробки.