Playwright ❤️ throttle ?

В продолжение темы тротлинга CPU. Для того, чтобы сделать троттлинг по CPU предется сделать ход конем: дать команду хромиуму напрямую через CDP (chrome devtool protocol). Если это делать для тестов (прим. @playwright/test), то я бы предложил использовать fixtures `import { test as baseTest } from '@playwright/test'

const test = baseTest.extend({ useCPUThrottling: async ({ context, page }, use) => { const client = await context.newCDPSession(page) await use(async (rate) => { await client.send('Emulation.setCPUThrottlingRate', { rate }) }) await client.send('Emulation.setCPUThrottlingRate', { rate: 0 }) // optional await client.detach() }, })

И далее сам тест `import { test } from './fixture.ts'

test('Test with throttle CPU', ( { useCPUThrottling, page } ) => { useCPUThrottling(4) // 4x slow down page.goto('https://example.com') // // your test })

Плюсы: - фикстуры переиспользуемые - useCPUThrottling это функция, которую можно вызвать несколько раз в рамках одного теста - автоматически возвращает значение до обычного (это делает detatch, но если переживаете, то можете доп. отправить rate: 0) - позволяет посмотреть как выполняется сценарий на медленном железе

Минусы - работает только в chromium браузерах. Если у вас есть сценарий с firefox то придет его пропустить. благо есть дока о том, как пропускать тест

#ts #typescript #playwright #pw #chromium #chrome #tip_of_the_day @haradkou_sdet``