unLighthouse on GitHub Codespaces
What is unLighthouse?
It's a open source project/tool by Harlan Wilton that can scan your entire site with Google Lighthouse and then output an easy to read HTML report of scan and the Core Web Vitals sores.
What is GitHub Codespaces?
Codespaces is basically a Docker image on the fly for you to play in on the "cloud", with VScode as the UI. It's a VM (similar to Codesandbox, but already linked to your code on GitHub).
It's a terrific way to quickly play with code in a safe an temporary way. You can go to any project on GitHub and from the Code button start a new "Codespace" aka a Linux VM with the project's code already checked-out.
GitHub is very generous with this service and gives 120 "core hours" per month. Which on the smallest 2 core server is still about 2 hours a day - if you were to use it everyday. So a few hours every so often is perfect for a play around.
Run unLighthouse on GitHub Codespaces
The problem with VMs is they often restrict access to many services for security and performance reasons. One such service restriction that you'll hit when trying to run Unlighthouse is a suggestion to install Chromium using Snapd, which Codespaces doesn't allow. Here's a work-around I found reading through Puppeteer's documentation.
sudo apt-get update && sudo apt-get install -y wget gnupg && sudo wget -q -O - "https://dl-ssl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && sudo apt-get update && sudo apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends && sudo rm -rf /var/lib/apt/lists/*
The Chromium install commands are a cleanup of the Running Puppeteer in Docker install command.
Then you can run Unlighthouse with a command like:
PUPPETEER_SKIP_DOWNLOAD=true npx @unlighthouse/cli --site https://example.com/ --reporter jsonExpanded
See the Unlighthouse Documentation for more options.