Skip to content

Releases: GoogleChrome/lighthouse

v2.0.0

05 Aug 00:49
Compare
Choose a tag to compare

Big changes

Brand new report


Everything is brand new UI. header footer, left nav, export, score gauges… screenshots! filmstrip . pass and failures seperated. Sparklines. Accessibility by section. Perf sections..


Chrome DevTools Integration

Take a look at the DevTools' Audit tab, where Lighthouse is now integrated

Lighthouse is much faster now

Overall the Operation Yaquina Bay (Issue #2146) effort made massive improvements to the total lighthouse runtime:

476e780 fix: remove afterPass throttling (#1901)
7d7bac6 perf: enable speedline fastMode (#2230)
f7ea935 perf(config): disable styles gatherer (#2153)
d99778b perf: consolidate DBW pass into defaultPass (#2160)
ff21a33 fix: only record a trace if needed by an audit (#2117)
740c2e9 perf(gather-runner): Clear cache selectively per-pass (#2156)
4c515cf block stylesheets and images on redirect pass (#2168)
d0cb646 perf(gatherers): skip optimization of cross origin images (#2154)
d99b5ad perf: make network quiet threshold configurable per pass (#2220)

New Contributors!

Huge thanks to who contributed 27 epic PRs.

@abacon - remove images from critical request chains
@benschwarz - Calibre and WPT to readme
@chrisdwheatley - add related projects section
@dandv - Mention where the documentation is
@dgozman - Add basic rendering to report generator v2
@ev1stensberg - math.round scores, firefox svg images, package.json correct folder
@jinjorge - Fix typo in readme
@jimthedev - readme instructions for running behind a login
@johnboxall - Total byte audit reports full URL
@mrbusche - Update outdated link for "Web App Install Banners" article
@maya - Fix "Installation" spelling mistake
@stramel - non-critical images, template literal linting, containerized trusty
@mikerhyssmith - Updated readme to add port number when testing a site with authentication
@sendilkumarn - handlebars precompiled (we'll pour one out), clearer iconography, helpText fixes.
@ZZhaoTireless - report <details> printing fix
@cedricbellet - handleJavascriptDialogs
@thearegee - Readme: Adding lighthouse-cron to Related Projects

Audits

Added the "is fast on 3g" audit
4c34e28 Fix service worker gatherer by waiting for active state (#1864)
bbe7f3b allow computed artifacts to request other computed artifacts (#2018)
ba01e2a Added audit for request compression (gzip & br) (#1513)
ef52025 feat(image-usage): add support for CSS images (#1868)
1708865 fix: default(.json -> .js). Disable css usage audit (#1911)
5034961 Collapse the 9 manifest PWA audits into 3 (#1847)
902585b feat: add OffscreenImages Audit (#1807)
bad5bda Add TTI < 10s audit for PWA (#1840)
d2cb5a2 feat: add consistently interactive audit (#2023)
d3a0692 DOMStat Audit: shadow roots don't have .classList (#2131)
691157f Add audit to check if start_url is cached by SW (#2040)
df2fae5 PWA Audits: add placeholders for rest of baseline checks. (#2248)
3c752a0 refactor: split optimized images into WebP and optimize audit (#2216)
c908e81 retire TTI (alpha) audit (#2266)

Metrics & Precision

ade2d88 Enable CPU throttling (4.5x) (#1778)
added the TTFI and TTCI metrics
f1aeb58 Fix screenshot capture bounds (#1839)
7b86c71 Enhance error wording around busy traces. (#2247)
008c5d9 add lighthouse execution time to json results (#2241)
f0e0dfa tests: exclude score checking and flaky link preload assertion. (#2202)
bd7f862 Update: Use array of non-critical resource types (#2191)
0549cca fix: always use navStart as speedline timeOrigin (#2114)
da8e097 NEW feat: add firstInteractive (#2013)
2212ca2 Update network throttling to simulate more realistic network conditions (#2238)
b5bf067 Remove images from critical request chains. (#2085)
0bf1744 fix: add more helpful error messages when fMP is missing (#1959)
ca2600a Improve reliability of finding navStart (#1895)
04579fe Ignore cache hits for "fast on 3g" check (#2143)
b1784d1 Ignore memory cache hits too. ref #2143
e84530e fix: bump jpeg quality for image optimization audit (#2354)
0d0e93f fix: do not flag blob urls as insecure (#2330)
782acc5 polish: do not fail loadfast4pwa for internal redirects (#2296)

Plots

b2eaa08 Plots: A/B screenshot viewer (#2026)
618d5f0 plots: metrics-per-site view (#2041)
c43eb09 plots: measure and visualize perf metrics (#1936)
3f7e5a1 Plots: make measure script more flexible (CLI args) (#2183)

CLI

Chrome launcher is a thing now.
2bb9c5b readme: tell developer to have yarn installed. ref #2072
65bec1b feat(cli): add support for custom trace categories (#1866)
b9bce62 Warn users if they have not yet generated the file. (#2176)

Testing

47ee1b8 travis: include node 8.0.0 (#2395)
Re-enable AppVeyor support #2380, #2382
d5854b6 test(smokehouse): add numeric comparisons (#2356)
8b47006 Smokehouse: log out the node command we spawn (#2074)
4f598c5 ci: save perf trace to S3 on failure (#2051)
5945332 Switch to containerized Trusty (#2234)
fb791e4 update eslint curly rule to google js style (#2263)

Misc

07e0aab Remove recordNetwork from config (#2102)
16b0b04 feat: support Config category and audit whitelisting (#1988)
b2ccdfc Allow opn & update-notifier CLI deps to be optional. (#2150)
283af87 dismiss any Javascript Dialogs automatically (#1939) (#2106)
e475bdb refactor(aggregations): switch usage of aggregations to categories (#1935)
48b72a8 fix: always ensure tracing is off before starting (#2279)
131df27 polish: listen for network idle after DCL (#2271)
d7e4d1b always construct networkRecords from devtoolsLog (#2133)
11a1db3 networkRecords => computed artifact. generate networkRecords during gather via the networkRecorder dispatcher breaking change: performanceLog => devtoolsLogs
fb3cfbd makes non-finished network records available (#2197)
d706429 extension: Fix formatting of bug reports (#2343)
9f5a8aa Add error to chrome extension when url is using the chrome protocol (#2346)

Docs

Many readme/contributing changes, related projects
e46f540 Architecture docs: add arch diagram and lingo updates (#2158)
af479e9 Architecture diagram
8047ef3 Add custom audit recipe (#2255)
6898d09 add CI gulp recipe (#1886)
909a463 add doc for testing site with authentication (#1906)
7c1c1c5 improve instructions for running behind a login (#2123)
fb86d50 Docs: add docs/readme (#2341)
d926f32 README: update CLI help with latest. Give common examples (#2182)
15c5ef1 add related projects section (#1835)

Deps

e46244d Bump axe-core (#2090)
638760e Migrate all dev scripts + docs from npm to yarn. (#2071, #2072, #2067)
d90bce3 fix: bump speedline to fix perceptual speed index (#2046)
3716658 Rev axe to address #2206 (#2335)

1.6.5

22 Apr 19:13
Compare
Choose a tag to compare

This is a maintenance release on the stable 1.6 branch.

Master branch (tagged at 2.0.0-alpha) is under some heavy refactors, so we're holding off on shipping a new version. Expect one by mid-May.
( Poke around recent PRs and issues if you're curious what we're up to ;)

In the meantime, only a few changes here in 1.6.5:

Audits

  • Improve HTTPS audit by using network records rather than Security domain, which is broken on Android.(original pr #1918) (#2054)
  • Disable unused css rules audit for now, as we want to revisit correctness later (#1912)

Report

  • Add legend to decipher iconography left to us by the ancient ones (#1841)
  • Print doesn't cut off expanded audit details (#1870)
  • Biggin icons for a11y (#1856)
  • Tweak report colors so that we are WCAG2AA valid.

CLI

  • support multiple output modes (#1813)
  • add update-notifier. (#1890)

Testing

  • smokehouse: fix flakiness of dom-size expectation (#1881)
  • include a normal CLI run in the travis build.

Misc

  • remove npm prepublish (#1889)

Thanks to @ebidel and @paulirish for merging this stuff back to stable branch.

1.6.0

04 Mar 02:16
Compare
Choose a tag to compare

1.6.0 (2017-03-03)

There were 44 PRs landed for this release. These are their stories.

New Contributors!

Huge thanks to @sendilkumarn, who contributed four epic PRs. Also welcome to @tommycli, @narendrashetty, @mohsen1 and @dentemple. Readme tweaks are how it all starts. ;)

Notable Changes

  • WebPageTest integration is in beta

    By popular demand, you will soon have a way to run Lighthouse on demand in the cloud. We've worked closely with WebPageTest to enable Lighthouse auditing and analysis from within a WPT run.
    Our contribution WPO-Foundation/webpagetest#825 was just merged and Lighthouse on WPT is currently in private beta.

lighthouse-webpagetest-beta

  • Lighthouse's CLI output has taken a chill pill - #1764

    While you can view all Lighthouse results on the command line, it hasn't scaled well. A few screenworths of report was generally dumped to stdout right as Lighthouse finished up. Now, to keep your terminal happy, you will no longer see the reams of results printed to stdout.
    The HTML report is saved to disk by default, and you can automatically open it with lighthouse --view.

lighthouse --view flag

If you still want the stdout output, use --output=pretty. Oh so pretty.

  • CI coverage for Windows via AppVeyor - #1280

Thanks to a large effort from @XhmikosR, we now have an eye in the sky on Lighthouse's Windows compatibility. Now, all PRs are tested on both Linux and Windows.

New audits

  • New audit: DOM stats (total nodes, depth, width). (#1673) Get flagged if the size or depth of your DOM is big enough to cause big slowdowns.
    image

  • New audit: Total byte weight audit (#1759). An extra check to make sure folks don't ship 5MB webpages.
    image

Improvements

  • CLI: Add --chrome-flags option to CLI. (#1761)
  • CLI: Add --disable-storage-reset flag to skip clearing cache and storage (#1675)
  • Report: Centralize perf audits within Performance section (#1724)
  • Report: Collapse sections when all audits pass (#1742)
  • Config: Allow extension of default config (#1731)
  • Config: Configurable blank page options (#1732)
  • Config: Configurable page timeout (#1672)
  • Disable throttling for non-performance passes (#1740)
  • Reduce build size by 33% (#1756)
  • Enhanced display URLs (#1793)

Bug Fixes

  • Improve reliability of TTI metric by extending trace (#1785)
  • Do not fail if chrome could not be killed (#1735)
  • Headless fix: reuse existing tab if creating new tab fails (#1760)
  • Fix code escaping (#1790)
  • Speculative fix for getCurrentTabURL (#1753)
  • Rewrite chrome:// URLs to compare them. (#1777)
  • Responsive image audit correctly handles SVG and duplicates (#1749)

Testing

  • Use download-chrome.sh to download Chrome on Windows too.
  • Add AppVeyor CI support for Windows testing.

Docs

  • Link to PWA Checklist (#1734)
  • Reorganization and new "Using programmatically" section (#1721)
  • fix typo in promise chain
  • minor yarn typo fix (#1736)
  • Fix typo s/console.err/console.error (#1772)

Refactor

  • DRY byte efficiency audits (#1635)
  • Add explicit strict null checks for TS. (#1763)
  • CSS consistency changes. (#1698)
  • Switch to two space indention. (#1693)
  • Refactor handlebar helpers into static methods

Report Improvements

  • Use ! for aggregation icon when some audits dont pass (#1789)
  • Clearer iconography in Perf metrics and Fancier Stuff (#1750)
  • Adopt the non-failure iconography for perf audits (#1812)
  • Reformat the critical chain details (#1647)
  • Reformat the usertiming details (#1810)
  • Adjust table em color val for WCAG2AA. (#1743)
  • Better colors. Still accessible (#1758)
  • Brand the header (#1797)
  • Quazzle the tardiplums for best quality fleekdrops.

Report Bug fixes

  • Fix table overflow with Firefox. (#1704)
  • Use pre instead of inline code for listener snippets. (#1786)
  • Use the same favicon as the viewer. (#1657)
  • Tweak colors so that we are WCAG2AA valid. (#1686)
  • CSS icon alignment for FF (#1796)
  • Clean up table styling (#1726)

1.5.2

15 Feb 21:26
Compare
Choose a tag to compare

1.5.2 (2017-02-15)

Bug Fixes

  • Remove superfluous handleRawError call from extension connection (#1697)

This release was deployed to CWS, but not published to NPM, as the only changes were exclusive to the Chrome extension.

1.5.1

10 Feb 21:23
Compare
Choose a tag to compare

1.5.1 (2017-02-10)

Bug Fixes

1.5.0

10 Feb 08:22
Compare
Choose a tag to compare

1.5.0 (2017-02-09)

There were 128 PRs landed for this release. These are their stories.

New Contributors!

@graph1994, @denar90, and @kiermasp

Notable Changes

  • Dropped support for Node earlier than v6 - #1519

    Node v6 became the Node long-term-support version in October 2016. After a suitable mourning period for v4 with a --harmony flag, Lighthouse has moved on and will only support v6+ going forward.

  • Improved selection of First Contentful and Meaningful Paint events from unusual traces - #1632, #1634

    Lighthouse has banished the dreaded -1 score that has long plagued runs for certain sites.

    image

    First Meaningful Paint is now detected much more robustly. While it is not yet a completely solved problem, a large class of these errors should be eliminated. Reporting on these errors has also improved over the ambiguous -1, clearly differentiating between an issue with Lighthouse and an issue with the page being tested.

  • Open local report in online report Viewer - #1179

    When viewing a Lighthouse HTML report generated locally—in the extension or from the command line—a new option is available in the "Export..." dropdown that allows you to upload to the Lighthouse Online Viewer.

    localreport

    viewer

    You can then use the Viewer share button to get a report URL that you can share freely.

    Behind the scenes, Viewer gets your permission via OAuth to create a GitHub secret gist and saves the report there. Since it's done as your gist, you maintain full control over the sharing of the report and you can delete it at any time. You can revoke the Viewer's permission to create gists under your GitHub settings.

  • Performance metrics are injected into trace saved with --save-assets for viewing in timeline - #1446

    Lighthouse metrics like "First meaningful paint", "Time to Interactive", etc are mocked out as User Timing measures and injected back into the trace taken by Lighthouse.

    image

    If you save a run's trace with --save-assets and then open it in DevTools or Timeline Viewer, you'll be able to see your key metrics in context with the full trace of the page load.

  • Throttling and emulation information in report - #1485, #1608, fc858ea

    screen shot 2017-02-09 at 22 43 27

    It's easy to forget what throttling and emulation settings were used for a particular Lighthouse run after some time has passed. The settings used are now saved in the raw JSON results and are printed at the top of the HTML report under the arrow dropdown.

  • UI to interactively block certain page resources and measure the load performance difference

    The first version of the Performance Experiment project is landing in 1.5.0. When Lighthouse is run with the --interactive flag, a special report is generated that allows interactive selection of costly page resources. The experiment server then reruns Lighthouse on that page with those resources blocked.

    screen shot 2017-02-09 at 23 45 34

    This lets you experiment with your page load performance, interactively testing the effects of blocking or delaying assets in your critical path.

New Audits

  • CSS usage - #1421, #1479, #1466, #1496, #1557

    Reports the number of unused style rules in your page and the byte/time savings of removing them:

    screen shot 2017-02-09 at 23 43 17
  • Image optimization - #1452, #1579

    Reports images that are unoptimized and the byte/time savings of optimizing them:

    screen shot 2017-02-09 at 23 43 49
  • Report Chrome's deprecated API warnings - #1470

    Lists console warnings from Chrome if your page is using deprecated APIs or features that have interventions:

    screen shot 2017-02-10 at 00 05 25
  • Responsive image sizing - #1497

    Reports images that are too big and the potential byte/time savings of sizing them correctly for the given device:

    screen shot 2017-02-09 at 23 44 23

Improvements

  • Audit: Catch more obsolete cases in no-old-flexbox audit - #1374
  • Audit: Add extended timing data to speed-index audit results - #1430, #1558
  • Audit: Base bytes- and time-saved estimates on mean throughput for that load - #1536
  • CLI: Disable more Chrome background features that may interfere with auditing - #1416
  • CLI: Close tab when Lighthouse is done with it - #1543, #1592
  • CLI: Use --output-path when saving artifacts and assets from run - #1601
  • CLI: Update --perf config to include latest perf audits - #1640
  • Extension: Move from a persistent background page to an event page - #1487
  • Extension: Option to disable other extensions during run for improved accuracy - #1492, #1604 (see #1689)
  • Gatherer: Issue all-event-listeners collection commands in parallel to improve performance - #1667
  • PerformanceExperiment: Create server to rerun Lighthouse with new options on POST request - #1393
  • PerformanceExperiment: Add UI for options to block asset loading on rerun - #1455, #1577
  • PerformanceExperiment: Add report sidebar to switch between multiple Lighthouse run results - #1477, #1597
  • Report: Expand audit <details> on print - #1468
  • Report: Add table formatter for audit details - #1505, #1538, #1546, #1547, #1545, #1622, #1636, #1678
  • Report: Reduce visual noise by auto-collapsing audit details and removing redundant info - #1561, #1598, #1606, #1617
  • Report: Remove 'Coming Soon' results from report - #1637
  • Report: Share save and export code in report and Viewer - #1594
  • Viewer: Make Viewer a PWA - #1554, #1571

Bug Fixes

  • Stop Lighthouse run if initial page request fails (404, domain not found, etc) - #1174, #1603, #1677
  • Audit: Check for proper mimetype in tags-that-block audit - #1432
  • Audit: Add proper parsing of meta viewport content - #1267
  • Audit: Ignore fragment in document URL comparison to correctly test offline loading - #1319, #1566
  • Audit: Filter out goog_* from user timings - #1563
  • Audit: Report proper first paint delay for blocking tags audits - #1555
  • Audit: Handle empty chain in critical-request-chains audit - #1620
  • Audit: Warn that geolocation-on-start gatherer cannot be run on insecure origins - #1679
  • CLI: Guard against launching multiple Chrome processes - #1436
  • CLI: Add support to find Chrome via LIGHTHOUSE_CHROMIUM_PATH variable on Windows - #1572
  • PerformanceExperiment: Fix various cross-browser report issues - #1593
  • Report: Improve filename eliding in audit details - #1437
  • Report: Various fixes for mobile and cross-browser issues - #1429, #1551, #1590, #1626
  • Report: Change generated HTML to be mostly valid; improve CSS consistency - #1575, #1627

Testing

  • Viewer: Add tests for file uploader - #1184
  • Update smokehouse to support deep comparisons of test expectations - #1450, #1457
  • Fix eslint base config, improve rules - #1462, #1440
  • Deal with Shop test site flakiness - #1491, #1493, #1654
  • Remove global installation of typescript on Travis - #1520
  • Use bash and node explicitly in npm scripts for cross-platform compatibility - #1510
  • Switch to a more concise unit test reporter - #1650

Docs

Refactor

  • Use json-stringify-safe only when necessary - #1435
  • Centralize console special characters for cross-platform compatibility - #1438, #1509
  • Add JS information to categories traced - #1442, #1444
  • Track enabled debugger domains for safe simultaneous use - #1474
  • Node v6+: switch to rest parameters, [].includes(), and default parameters - #1524, #1580, #1633
  • Introduce TraceOfTab computed artifact to centralize extraction of key trace events - #1549
  • Handle gatherer errors as native exceptions instead of -1 ad hoc system - #1560, #1623, #1641, #1624
  • Create audit error result to rid report of -1s and score more consistent...
Read more

1.4.1

05 Jan 03:10
Compare
Choose a tag to compare

1.4.1 (2017-01-04)

Bug Fixes

  • Don't subclass URL in url-shim so es5 transpilation is supported - #1407
  • Audit: Allow FMP trace event to appear slightly before the FCP - #1404

Docs

1.4.0

05 Jan 00:47
Compare
Choose a tag to compare

1.4.0 (2017-01-04)

New Contributors!

@dracos, @Lokson, and @AdrianoCahete

Improvements

  • Add URL blocking by pattern to driver - #1195
  • Extension: Add test URL to "Report Error" template - #1357
  • Extension: Keep Lighthouse extension popup active while running - #1185
  • Extension: Use live icon and badge text while running - #1367
  • Gather: Only run axe tests that we have audits for - #1257
  • Report: Only use markdown for injected HTML - #1226
  • Report: Style tweaks for DevTools report - 4a2f97a, 68ccb64
  • Report: Include total score in JSON and pretty output modes - #1356
  • Viewer: Add input for gist URL on mobile - #1341

Bug Fixes

  • Audit: Handle invalid URLs in external-anchors-use-rel-noopener audit - #1358
  • Audit: Handle invalid URLs in no-console-time and no-datenow audits - #1288
  • Audit: Make zero-length critical-request chains pass the test - #1303
  • Audit: Add "minimal-ui" as an allowed Manifest display value - #1268
  • Audit: Improved handling of invalid URLs in call site and event listener audits - #1390
  • Audit: Async stylesheet handling to limit false positives for stylesheets blocking first paint - #1389
  • CLI: Improve Windows console support - #1307
  • CLI: Ignore which failures when looking for Linux Chrome executable - #1395

Docs

  • Closure type check fixes - #1293

Refactor

  • Return artifacts from Runner (and move assets/artifacts saving to CLI) - #1163, #1400
  • PerformanceExperiment: Centralize more implementation in server.js - #1189

Dependencies

  • Only list mkdirp dependency once - #1284
  • Add marked - #1226

1.3.2

23 Dec 20:30
Compare
Choose a tag to compare

1.3.2 (2016-12-23)

Bug Fixes

  • Audit: handle Date.now uses with no call site URL in no-datenow audit - #1238

1.3.1

23 Dec 20:28
Compare
Choose a tag to compare

1.3.1 (2016-12-22)

New Contributor!

@XhmikosR

Improvements

  • Report: remove noreferrer from helpText links (#1190)
  • Viewer: add consolidated export button - #1182

Bug Fixes

  • Remove Node v7 URL parsing while bugs are being fixed - #1187
  • Fix driver.captureFunctionCallSites in the face of Error polyfills - #1218
  • Audit: handle anchor tags with no href in 'external-anchors-use-rel-noopener' audit - #1238
  • CLI: use exec, not spawn, to kill Chrome process on Windows - #1206
  • Viewer: don't check upload's file type, try to parse json file directly - #1234

Docs

  • readme: improve definition - #1216