Oh Dear is the all-in-one monitoring tool for your entire website. We monitor uptime, SSL certificates, broken links, scheduled tasks and more. You'll get a notifications for us when something's wrong. All that paired with a developer friendly API and kick-ass documentation. O, and you'll also be able to create a public status page under a minute. Start monitoring using our free trial now.

A package to run Google Lighthouse using PHP

Original – by Freek Van der Herten – 5 minute read

Google Lighthouse is an open-source, automated tool for improving the quality of web pages. It has audits for performance, accessibility, progressive web apps, SEO, and more.

Our newest package, spatie/lighthouse-php makes it easy to run Lighthouse using PHP. In this blog post, I'd like to tell you all about it.

Introducing Google Lighthouse

Lighthouse is an open-source tool created by Google. It can audit any website.

The report Lighthouse generates detailed information and suggestions for improving the performance and quality of a website. It can be used to audit a wide range of factors, including the speed at which a page loads, the accessibility of the page for users with disabilities, and the security of the page.

One of the key benefits of using Google Lighthouse is that it provides specific, actionable suggestions for improving the quality of a website. For example, if Lighthouse identifies that a page is slow to load, it may suggest optimizing images or minifying JavaScript to improve performance. By implementing these suggestions, a website can become faster, more accessible, and more secure, improving its ranking in search engine results.

A Lighthouse report also contains interesting metrics that allow webmasters and developers to understand the current state of a website and track progress over time. These numbers can help identify areas of a website that need the most attention and monitor the effectiveness of any changes made.

Here's what such a report looks like.

The report contains many tips on how to improve your site.

The Lighthouse extension Chrome allows you to quickly generate a report for any website you are visiting. But you can also run it from the command line and as a node module.

Running Lighthouse using PHP

Our newest package, spatie/lighthouse-php allows you to run Lighthouse using PHP.

The package makes running Lighthouse a one-liner:

$result = Lighthouse::url('https://example.com')->run();

Be aware that Lighthouse needs some time to run. In my tests, it averaged between 30 and 40 seconds.

That result is an instance of Spatie\Lighthouse\LighthouseResult, containing many handy functions to grab interesting things from the result. In the following example, we will get the scores for the five major Lighthouse categories.

$result->scores(); // returns an array like this one:
/*
 * [
 *    'performance' => 98,
 *    'accessibility' => 83,
 *    'best-practices' => 90,
 *    'seo' => 92,
 *    'pwa' => 43,  
 * ]
 */

Here's how to get the results of a specific audit.

$result->audit('first-contentful-paint') // returns this array

/*
 * [
 *     'id' => 'first-contentful-paint'
 *     'title' => 'First Contentful Paint'
 *     'score' => 0.98
 *     'scoreDisplayMode' => 'numeric'
 *     'numericValue' => 1262.95
 *     'numericUnit' => 'millisecond'
 *     'displayValue' => '1.3 s'
 * ]
 */

Lighthouse can generate a nicely formatted HTML report with the scores and results of all audits.

use Spatie\Lighthouse\Lighthouse;

Lighthouse::url('https://example.com')
    ->run()
    ->saveHtml($pathToFile);

This is how that report looks in the browser.

The spatie/lighthouse-php package has more options, so be sure to take a look at our extensive docs.

Continuous monitoring of Lighthouse results

Oh Dear is a monitoring service that not only monitors the uptime of your homepage, but it crawls your entire website and sends notifications when it detects broken links. It also offers advanced checks, such as scheduled jobs monitoring and application health monitoring.

One of the new checks I'm working on is the Lighthouse check. This check will regularly run Lighthouse against your site, and Oh Dear will show the most important metrics and their evolution.

And you can even see the entire HTML report.

This information will also be available through our API.

We'll also notify you when Lighthouse detects issues. In the settings, you can customize when you want to be notified.

At the moment, we are beta testing this new check. It will be available for each Oh Dear subscriber in the January - February 2023 timeframe.

If you're not using Oh Dear already, you can register to start your ten day free trial.

In closing

Google Lighthouse is a handy tool that can help you improve your website. Our spatie/lighthouse-php makes it easy to create a Lighthouse report using PHP. Read the extensive documentation to learn all the options and possibilities.

This isn't the first package that we have published. On the Spatie website, check out all our open-source packages in this long list. If you want to support us, consider picking up any of our paid products.

Stay up to date with all things Laravel, PHP, and JavaScript.

Follow me on Twitter. I regularly tweet out programming tips, and what I myself have learned in ongoing projects.

Every month I send out a newsletter containing lots of interesting stuff for the modern PHP developer.

Expect quick tips & tricks, interesting tutorials, opinions and packages. Because I work with Laravel every day there is an emphasis on that framework.

Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes.

Comments

What are your thoughts on "A package to run Google Lighthouse using PHP"?

Comments powered by Laravel Comments
Want to join the conversation? Log in or create an account to post a comment.