Серві с Lighthouse
Сервіс WebdriverIO, який дозволяє вам запускати тести доступності та продуктивності за допомогою Google Lighthouse.
Примітка: цей сервіс наразі підтримує лише тести, що виконуються на Google Chrome або Chromium! Зважаючи на те, що більшість хмарних постачальників не надають доступ до Chrome DevTools Protocol, цей сервіс зазвичай працює лише при локальному запуску тестів або через Selenium Grid версії 4 або вище.
Встановлення
Найпростіший спосіб — тримати @wdio/lighthouse-service
як dev-залежність у вашому package.json
, через:
npm install @wdio/lighthouse-service --save-dev
Інструкції щодо встановлення WebdriverIO
можна знайти тут.
Конфігурація
Щоб використовувати сервіс, вам просто потрібно додати сервіс до списку сервісів у вашому wdio.conf.js
, наприклад:
// wdio.conf.js
export const config = {
// ...
services: ['lighthouse'],
// ...
};
Використання
@wdio/lighthouse-service
дозволяє запускати тести доступності та продуктивності Google Lighthouse через WebdriverIO.
Тестування продуктивності
Сервіс Lighthouse дозволяє збирати дані про продуктивність кожного завантаження сторінки або переходу на сторінку, викликаного кліком. Щоб увімкнути його, викличте browser.enablePerformanceAudits(<options>)
. Після завершення збору всіх необхідних даних про продуктивність вимкніть його, щоб повернути налаштування обмеження, наприклад:
import assert from 'node:assert'
describe('JSON.org page', () => {
before(async () => {
await browser.enablePerformanceAudits()
})
it('should load within performance budget', async () => {
/**
* this page load will take a bit longer as the DevTools service will
* capture all metrics in the background
*/
await browser.url('http://json.org')
let metrics = await browser.getMetrics()
assert.ok(metrics.speedIndex < 1500) // check that speedIndex is below 1.5ms
let score = await browser.getPerformanceScore() // get Lighthouse Performance score
assert.ok(score >= .99) // Lighthouse Performance score is at 99% or higher
$('=Esperanto').click()
metrics = await browser.getMetrics()
assert.ok(metrics.speedIndex < 1500)
score = await browser.getPerformanceScore()
assert.ok(score >= .99)
})
after(async () => {
await browser.disablePerformanceAudits()
})
})
Доступні наступні команди з їхніми результатами:
getMetrics
Отримує найчастіше використовувані показники продуктивності, наприклад:
console.log(await browser.getMetrics())
/**
* { timeToFirstByte: 566,
* serverResponseTime: 566,
* domContentLoaded: 3397,
* firstVisualChange: 2610,
* firstPaint: 2822,
* firstContentfulPaint: 2822,
* firstMeaningfulPaint: 2822,
* largestContentfulPaint: 2822,
* lastVisualChange: 15572,
* interactive: 6135,
* load: 8429,
* speedIndex: 3259,
* totalBlockingTime: 31,
* maxPotentialFID: 161,
* cumulativeLayoutShift: 2822 }
*/