Chcek Website Performance with Lighthouse CI
Introduction
Recently, I added Lighthouse CI to this blog for web performance testing. Previously, I relied on manual tools like PageSpeed Insights for testing, but this approach has several drawbacks:
- Unstable results from single tests
- Time-consuming manual testing
- Not good to team development
I hope to automate performance checks so that I don’t have to wait a long time to know if a page has performance or accessibility issues, allowing for timely fixes when problems arise.
Lighthouse CI
Step 1: Create a Configuration File
You can create a Lighthouse CI configuration file at the root of your project, supporting various file formats. For my blog, I use .lighthouserc.yml
for configuration:
ci: collect: numberOfRuns: 3
assert: preset: 'lighthouse:no-pwa' assertions: csp-xss: 'warn' total-byte-weight: 'off' # TODO: enable this when this bug is fixed: https://github.com/GoogleChrome/lighthouse-ci/issues/1001 identical-links-same-purpose: 'off'
upload: target: 'temporary-public-storage' # upload options here
server: # server options here
wizard: # wizard options here
You can refer to the Lighthouse CI configuration file for how to set up performance testing, such as how many times to test, the depth of the test folder, and where to store the results, etc. Currently, my configuration disables some unnecessary checks, PWA validation, and sets the number of tests per page to 3. By default, it will detect all pages in the dist
folder of my project.
Step 2: Generate Test Reports
After creating the configuration file, you can run Lighthouse CI to generate test reports. My approach is to download the package @lhci/cli
and add a command in package.json
to run it locally:
"scripts": { "lighthouse": "lhci autorun"}
Once the existing issues are fixed locally, you can move the entire process to CI. Here, I use GitHub Action to run Lighthouse CI:
- name: Build run: pnpm build- name: Lighthouse run: pnpm lhci autorun
Summary
In just under 3 steps, I easily added Lighthouse CI to my website to check web performance. There’s no need to manually test each page; performance issues can be automatically detected with every code submission. This approach is a great performance testing tool for team development and allows developers to fix issues more quickly. You can refer to this PR to understand how I added Lighthouse CI to my blog.