Releases: GoogleChrome/lighthouse
1.5.1
1.5.0
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.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.
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 - #1446Lighthouse 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.
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
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.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:
-
Image optimization - #1452, #1579
Reports images that are unoptimized and the byte/time savings of optimizing them:
-
Report Chrome's deprecated API warnings - #1470
Lists console warnings from Chrome if your page is using deprecated APIs or features that have interventions:
-
Responsive image sizing - #1497
Reports images that are too big and the potential byte/time savings of sizing them correctly for the given device:
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
andnode
explicitly in npm scripts for cross-platform compatibility - #1510 - Switch to a more concise unit test reporter - #1650
Docs
- Add Chrome webstore extension screenshots - #1481, #1531, #1526
- Various JSDoc, markdown, and capitalization fixes - #1441, #1494, #1503, #1533, #1523, #1553, #1565
- Audit: Change messaging for uses-h2 audit - #1445
- Report: Add help text (with links to docs) to manifest and a11y audits - #1428, #1589
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
-1
s and score more consistent...
1.4.1
1.4.0
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
andno-datenow
audits - #1288 - Audit: Make zero-length critical-request chains pass the test - #1303
- Audit: Add
"minimal-ui"
as an allowed Manifestdisplay
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
1.3.2
1.3.1
1.3.1 (2016-12-22)
New Contributor!
Improvements
- Report: remove
noreferrer
fromhelpText
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
1.3.0
1.3.0 (2016-12-19)
New Contributors!
@Janpot, @robdodson, and @WeiweiAtGit
Major Changes
Improvements
- Use
whatwg-url
to parse URLs - #997 - Use
firstMeaningfulPaint
trace event directly - #1066 - Remove whitespace and comments from traceviewer-js - #1095, #1103
- Audit: Remove browser-generated
paintNonDefaultBackgroundColor
event fromuser-timings
- #1077 - Audit: Handle where
tracingStartedInPage
doesn't precedenavStart
in trace - #1152, 9c8d13e - Audit: Add new required attr and attr-value accessibility audits - #1156
- CLI: Add improved search for Chrome executable on Linux - #856
- CLI: Add check that TypeScript files have been compiled before running - #1113
- CLI: Add
--view
flag which serves generated report after Lighthouse run - #1130, f6afd22 - Driver: Return meaningful errors from page context when
evaluateAsync
rejects - #1037 - Report: Create "Fancier Stuff" section for newer (but not necessarily better) APIs - #1087
- Report: Convert
helpText
toggle to pure CSS - #1104 - Report: Stick header to top of page - #1121, #1132, #1133
- Report: Make mobile-friendly and responsive - #1134
- Report: Don't emit script tags in devtools report - #1105
- Report: Use same favicon throughout all reports - #1172
- Viewer: Move share button to core report - #1117
- Viewer: Add support for copy and paste of report JSON - #1126, #1128
- Viewer: Concat CSS files - #1153
Bug Fixes
- Unmute some smoke test failures - #1081
- CLI: Make
rimraf
async for deleting Chrome temp profile - #1127 - CLI: Eliminate errors from calling
ChromeLauncher.kill()
twice - #1131 - CLI: Fix html
reportContext
when generated by the CLI - #1171 - Driver: Fix
evaluateAsync
when page has overridden native Promise - #1037, #1178 - Report: Fix for formatting with unknown time zone - #1086
- Report: Fix report color issues in Safari - #1114
- Report: Fix print styling - #1180
- Testing: Handle critical-request-chains audit promise rejections - #1100
- Testing: Fix failing lint test - aa6d38b
- Viewer: Disable sharing button if gist is already saved - #1118
Testing
- Don't run Closure type checking on Travis - 558a26
- Update
eslint
andeslint-config-google
to latest - #1136, #1159, #1160 - Audit: Add tests for
notification-on-start
- #1089 - CLI: Add test for obsolete CLI flags - #1168
- Viewer: Add analytics #1120, #1162
- Viewer: Add build of viewer to CI test suite - #1160
Docs
- Update jsconfig for intellisense - 835ae98
- Audit: Fix type in
no-console-time
helpText
- #1142 - Audit: Add links to DoBetterWeb
helpText
docs - #1161 - readme: Add Viewer to readme - #1164
Refactor
- Audit: Add check for an audit's
requiredArtifacts
before running - #1088 - Audit: Centralize auditing of
axe-core
results - #1167 - CLI: Unify
bin.ts
execution and error-handling paths - #1141 - Gatherer: Gatherers now return artifacts directly rather than setting
this.artifact
- #1122 - Viewer: Split code into modules - #1116
- Viewer: Use
tsc
to es3ify viewer code - #1150
Dependencies
1.2.2
1.2.2 (2016-11-29)
New Contributor!
Improvements
- Extension: remove "tabs" extension permission - #1032
Bug Fixes
- Ensure
driver.captureFunctionCallSites
resolves to an array - #1036 - Handle call sites in
eval
'd code indriver.captureFunctionCallSites
- #1073 - Audit: identify
noopener
when in list of link types inrel
- #1035 - CLI: explicitly close outfile and errfile in chrome launcher - #1057
- Extension: set minimum supported Chrome to m54 - #1027
- Extension: better error message if user attempts to audit the Chrome Web Store - #1025
- Report: work around unsupported timezones when pretty printing dates - #1067
- Report: fix coloring by score - #1070
Docs
1.2.1
1.2.1 (2016-11-22)
Improvements
- Audit: add DBW audit for
<script>
elements in head that block first paint - #965 - Extension: Add error description to title of auto-generated github issues - #992
Bug Fixes
- fix typo in default config file - f9f7c25
- Audit: treat non-strings as an error in
without-javascript
gatherer and audit - #971 - Audit: catch driver errors (and set on
artifact.debugString
) in geolocation gatherer - #999 - Audit: fix property name used for error value in
all-event-listeners
gatherer - #1013 - CLI: fix implicit-any-typed
_
in chrome launcher - #981 - Extension: fix aggregation category filtering based on selection in options panel - #973
- Report: escape </script> tags when embedding raw results in the html page - #1003
Testing
- Force
npm install
(for now) on Travis after their change to prefer yarn - #994
Docs
- readme: new report screenshot - cb2ebfd
Refactor
- Unify CLI and extension implementations of debugger protocol error handling - #977
1.2.0
1.2.0 (2016-11-17)
New Contributors!
@Bassoon08, @karanjthakkar, @chowse, @hsingh23, @olingern, and @patrickhulce
Major Changes
- Launch DoBetterWeb (DBW) audits and gatherers as part of default Lighthouse run - #917
- Report: Lighthouse report refactor and refresh - #926, #935
Improvements
- Log errors in red, warnings in yellow - #860, #915
- Audit: Add DBW audit for Mutation Events - #786
- Audit: Add DBW audit for
<link>
elements in head that block first paint - #892 - Audit: Add DBW audit for
rel=noopener
on external links - #912 - Audit: Make geolocation audit return error if permission already granted - #925
- CLI: Handle
--quiet
logging as silent - #881 - Extension: Add integrated 'Report Error' button with pre-populated data - #944
- Gatherer: Add support for collecting event listeners across all DOM nodes - #930
- Report: Remove excessive EIL percentiles from report - #851
- Report: Update TTI scoring label to 5000ms to match guidance - #947
- Report: Cleanup of event listener extended info display - #952
- Report: Group event listener extended info by call site location - #960
Bug Fixes
- Restore log's status event payload - #883
- Ignore protocol error from defensive
DOM.disable
call - #895, #907 - Remove cache-contents gatherer from default config since currently no audit requires it - #900
- Enforce audit naming consistency in the config file and filenames - #914
- Audit: Handle error case from htmlwithoutjs gatherer and audit - #891
- Audit: Prevent attempts to parse script URLs when no URL was found - #893
- Audit: Don't include disabled
<link>
s in link-blocking-first-paint audit - #911 - Audit: Handle undefined Accessibility violations array - #942
- Audit: Only create a manifest display debugString when there is an error - #954
- Audit: Look for non-async
<link>
s and fix unit of time in link-blocking-first-paint audit - #963 - CLI: Add
main
field to CLI's package.json - #875 - CLI: Disable Chrome's Google Translate service during Lighthouse run - #897
- CLI: Disable Chrome's default Apps during Lighthouse run - #918
- Driver: Dedupe function call site entries on location, not stack trace - #958
- Extension: Properly filter the audits to run - #946
- Gatherer: Handle CSS parse errors in stylesheet gatherer - #906
- Report: Move
gt
handlebars helper to accessibility formatter - #929 - Report: Fix handlebars
and
helper to showdisplayValue
in reports - #938
Testing
- Add DBW to smokehouse tests - #843, #901
- Add script for bumping Travis to restart timing-out test runs - #913
- Fix Travis timeouts by rerunning with random Chrome debug ports - #922
Docs
- Audit: Update EQT/EIL design doc links to latest docs - #923
- Audit: Fix no-datenow
helpText
typo - #955 - Audit: Update uses-passive-event-listeners `description text - #956
- readme: Add DBW to readme - #863
- readme: Update development section with TypeScript info - #859
- readme: Document yarn install command - #939
Refactor
- Audit: Rewrite geolocation-on-start audit to use DBW tooling and testing - #903
- CLI: Migrate
chrome-debug
binary to use internal Chrome launcher - #898 - Report: Refactor report generation to be blob based and simpler - #908
Dependencies
- Yarn lock file cleanup - 3e9e88c