9.6.7 • Published 1 year ago
performance-leaderboard-pagespeed-insights v9.6.7
performance-leaderboard-pagespeed-insights
A plugin to run Lighthouse (on PageSpeed Insights) against a set of urls to see which site is the fastest.
- See also:
performance-leaderboard
(which runs Lighthouse locally)
Installation
npm install performance-leaderboard-pagespeed-insights
Features
- This plugin only runs one test against the PageSpeed Insights API per URL. In contrast,
performance-leaderboard
offers a configurable number of runs per URL and selects the median.
Usage
- Create a test file, say
sample.js
:
const PerfLeaderboard = require("performance-leaderboard-pagespeed-insights");
(async function() {
let urls = [
"https://www.gatsbyjs.org/",
"https://nextjs.org/",
"https://www.11ty.dev/",
"https://vuejs.org/",
"https://reactjs.org/",
"https://jekyllrb.com/",
"https://nuxtjs.org/",
"https://gohugo.io/",
];
// Create the options object (not required)
const options = {
axePuppeteerTimeout: 30000, // 30 seconds
writeLogs: true, // Store audit data
logDirectory: '.log', // Default audit data files stored at `.log`
readFromLogDirectory: false, // Skip tests with existing logs
}
console.log( await PerfLeaderboard(urls) );
})();
- Run
node sample.js
.
[
{
url: 'https://www.11ty.dev/',
requestedUrl: 'https://www.11ty.dev/',
timestamp: 1623525988492,
ranks: { hundos: 1, performance: 1, accessibility: 1, cumulative: 1 },
lighthouse: {
version: '8.0.0',
performance: 1,
accessibility: 1,
bestPractices: 1,
seo: 1,
total: 400
},
firstContentfulPaint: 1152.3029999999999,
firstMeaningfulPaint: 1152.3029999999999,
speedIndex: 1152.3029999999999,
largestContentfulPaint: 1152.3029999999999,
totalBlockingTime: 36,
cumulativeLayoutShift: 0.02153049045138889,
timeToInteractive: 1238.3029999999999,
maxPotentialFirstInputDelay: 97,
timeToFirstByte: 54.63900000000001,
weight: {
summary: '14 requests • 178 KiB',
total: 182145,
image: 124327,
imageCount: 10,
script: 7824,
scriptCount: 1,
document: 30431,
font: 15649,
fontCount: 1,
stylesheet: 3914,
stylesheetCount: 1,
thirdParty: 15649,
thirdPartyCount: 1
},
run: { number: 2, total: 3 },
axe: { passes: 850, violations: 0 },
}
]
Rankings
In the return object you’ll see a ranks
object listing how this site compares to the other sites in the set. There are a bunch of different scoring algorithms you can choose from:
ranks.performance
The highest Lighthouse performance score. Tiebreaker given to the lower SpeedIndex score.ranks.accessibility
The highest Lighthouse accessibility score. Tiebreaker given to lower Axe violations. * Second tiebreaker given to highest Axe passes (warning: each instance of an Axe rule passing is treated separately so this will weigh heavily in favor of larger pages)ranks.hundos
The sum of all four Lighthouse scores. Tiebreaker given to the lower Speed Index / Total Page Weight ratio.ranks.cumulative
(the same ashundos
but with an Axe tiebreaker) The sum of all four Lighthouse scores. Tiebreaker given to the lower Axe violations. * Second tiebreaker given to the lower Speed Index / Total Page Weight ratio.
Changelog
v9.6.6
Initial release.