Open bonkalol opened 3 years ago
https://playwright.dev/docs/api/class-cdpsession
С браузером можно общаться на более низком уровне через cdp сессию. Методы которые предоставляет браузер могут позволить включить CPU тротлинг, получить трасировку, включить тротлинг сети, посмотреть потребление памяти
С помощью этих методов можно вытаскивать ценную информацию (перерисовки, лонгтаски etc) и эмулировать различные ситуации
https://chromedevtools.github.io/devtools-protocol/tot/Tracing/ https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-emulateNetworkConditions https://chromedevtools.github.io/devtools-protocol/tot/Profiler/ https://chromedevtools.github.io/devtools-protocol/tot/Emulation/#method-setCPUThrottlingRate
Из подвижок:
Заресерчил момент запуска тестов в webview в android, получилось оч круто, удалось подружить PW и приложение, то есть например (для тех кто в контексте) получилось запустить поисковое вебвью в приложении и делать с ним любые действия (через API pw, точно такое же как мы и используем в тестах), я попробовал ввести молоко в поисковую строку и начать CDP сессию с целью снять метрики - все это увенчалось успехом.
Вывод:
Для perf тестов нужно будет делать поддержку разных движков (android приложение + вебвью, локально хром). Надо будет зарефакторить модуль тестов чтобы он умел запускать тесты в приложении андроида
TBD
Расчёт метрик
На основе
core/perf
создать API для сбора и расчёта детальных метрик по компонентам.Требования
iInput
)core/perf
для расчёта различных метрик. Напримерperf.start('b-button, [render, repaint, provider])
Это API будет использоваться тестами, чтобы получить данные и сравнить их с предыдущим снэпшотом, чтобы понять, как изменилась быстродействие компонентов
Запуск тестов
Запуск всех performance тестов и сравнение их с эталонным snapshot
Запуск какого-то performance теста и сравнение его с эталонным
Снятие и сохранение снэшпота с результатами
Команда должна запускать
performance
тесты и сохранять результатЗапуск всех performance тестов
Запуск какого-то performance теста
Описание
Хром имеет trace API, стоит обратить внимание на этот инструмент
https://playwright.dev/docs/api/class-chromiumbrowser#chromiumbrowserstarttracingpage-optionsUPD Видимо, теперь это https://playwright.dev/docs/api/class-tracingТак же можно рассмотреть возможность запуска perf тестов для сборки, такие тесты будут полезными в момент миграции с одного лоадера на другой, добавление лоадеров, переезд с вебпака на новый вебпак etc.
Примеры базовых тест кейсов
Рендер обыкновенного компнента
Рендер функционального компнента
Рендер композитного компнента
Рендер 10 обыкновенных компонентов
Рендер 10 функциональных компонентов
Рендер 10 композитных компонентов
Примеры продвинутых кейсов
createElement
до отрисовки первого чанкаb-virtual-scroll