From 971b8559c287b921836e730f1907b18b9d17f1ab Mon Sep 17 00:00:00 2001 From: Patrick Hulce Date: Fri, 16 Mar 2018 10:08:38 -0700 Subject: [PATCH 1/5] report: eliminate cards and list details --- .../audits/accessibility/axe-audit.js | 27 +- .../audits/dobetterweb/dom-size.js | 51 +- .../password-inputs-can-be-pasted-into.js | 20 +- lighthouse-core/audits/is-on-https.js | 14 +- .../report/v2/renderer/details-renderer.js | 71 - lighthouse-core/report/v2/report-styles.css | 51 - .../scripts/update-report-fixture.sh | 13 + .../test/audits/dobetterweb/dom-size-test.js | 16 +- .../v2/renderer/details-renderer-test.js | 43 - lighthouse-core/test/results/sample_v2.json | 1818 ++++++++++------- 10 files changed, 1129 insertions(+), 995 deletions(-) create mode 100755 lighthouse-core/scripts/update-report-fixture.sh diff --git a/lighthouse-core/audits/accessibility/axe-audit.js b/lighthouse-core/audits/accessibility/axe-audit.js index 14182df4c3b1..8718dcd44907 100644 --- a/lighthouse-core/audits/accessibility/axe-audit.js +++ b/lighthouse-core/audits/accessibility/axe-audit.js @@ -34,29 +34,28 @@ class AxeAudit extends Audit { const violations = artifacts.Accessibility.violations || []; const rule = violations.find(result => result.id === this.meta.name); - let nodeDetails = []; + let items = []; if (rule && rule.nodes) { - nodeDetails = rule.nodes.map(node => ({ - type: 'node', - selector: Array.isArray(node.target) ? node.target.join(' ') : '', - path: node.path, - snippet: node.snippet, + items = rule.nodes.map(node => ({ + node: { + type: 'node', + selector: Array.isArray(node.target) ? node.target.join(' ') : '', + path: node.path, + snippet: node.snippet, + }, })); } + const headings = [ + {key: 'node', itemType: 'node', text: 'Failing Elements'}, + ]; + return { rawValue: typeof rule === 'undefined', extendedInfo: { value: rule, }, - details: { - type: 'list', - header: { - type: 'text', - text: 'View failing elements', - }, - items: nodeDetails, - }, + details: Audit.makeTableDetails(headings, items), }; } } diff --git a/lighthouse-core/audits/dobetterweb/dom-size.js b/lighthouse-core/audits/dobetterweb/dom-size.js index 5e7dcaa0a9a8..b423ebf3cc64 100644 --- a/lighthouse-core/audits/dobetterweb/dom-size.js +++ b/lighthouse-core/audits/dobetterweb/dom-size.js @@ -47,24 +47,15 @@ class DOMSize extends Audit { }; } + /** * @param {!Artifacts} artifacts * @return {!AuditResult} */ static audit(artifacts) { const stats = artifacts.DOMStats; - - /** - * html > - * body > - * div > - * span - */ - const depthSnippet = stats.depth.pathToElement.reduce((str, curr, i) => { - return `${str}\n` + ' '.repeat(i) + `${curr} >`; - }, '').replace(/>$/g, '').trim(); - const widthSnippet = 'Element with most children:\n' + - stats.width.pathToElement[stats.width.pathToElement.length - 1]; + const depthSnippet = stats.depth.pathToElement.join(' > '); + const widthSnippet = stats.width.pathToElement.join(' > '); // Use the CDF of a log-normal distribution for scoring. // <= 1500: score≈1 @@ -76,34 +67,28 @@ class DOMSize extends Audit { SCORING_MEDIAN ); - const cards = [{ - title: 'Total DOM Nodes', - value: Util.formatNumber(stats.totalDOMNodes), - target: `< ${Util.formatNumber(MAX_DOM_NODES)} nodes`, - }, { - title: 'DOM Depth', - value: Util.formatNumber(stats.depth.max), - snippet: depthSnippet, - target: `< ${Util.formatNumber(MAX_DOM_TREE_DEPTH)}`, - }, { - title: 'Maximum Children', - value: Util.formatNumber(stats.width.max), - snippet: widthSnippet, - target: `< ${Util.formatNumber(MAX_DOM_TREE_WIDTH)} nodes`, - }]; + const headings = [ + {key: 'totalNodes', itemType: 'text', text: 'Total DOM Nodes'}, + {key: 'depth', itemType: 'text', text: 'DOM Depth'}, + {key: 'width', itemType: 'text', text: 'Maximum Children'}, + ]; + + const items = [ + { + totalNodes: Util.formatNumber(stats.totalDOMNodes), + depth: `${Util.formatNumber(stats.depth.max)} (${depthSnippet})`, + width: `${Util.formatNumber(stats.width.max)} (${widthSnippet})`, + }, + ]; return { score, rawValue: stats.totalDOMNodes, displayValue: `${Util.formatNumber(stats.totalDOMNodes)} nodes`, extendedInfo: { - value: cards, - }, - details: { - type: 'cards', - header: {type: 'text', text: 'View details'}, - items: cards, + value: items, }, + details: Audit.makeTableDetails(headings, items), }; } } diff --git a/lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js b/lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js index 1affd909acc7..e4d1ded4e348 100644 --- a/lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js +++ b/lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js @@ -29,22 +29,20 @@ class PasswordInputsCanBePastedIntoAudit extends Audit { static audit(artifacts) { const passwordInputsWithPreventedPaste = artifacts.PasswordInputsWithPreventedPaste; + const items = passwordInputsWithPreventedPaste.map(input => ({ + node: {type: 'node', snippet: input.snippet}, + })); + + const headings = [ + {key: 'node', itemType: 'node', text: 'Failing Elements'}, + ]; + return { rawValue: passwordInputsWithPreventedPaste.length === 0, extendedInfo: { value: passwordInputsWithPreventedPaste, }, - details: { - type: 'list', - header: { - type: 'text', - value: 'Password inputs that prevent pasting into', - }, - items: passwordInputsWithPreventedPaste.map(input => ({ - type: 'text', - value: input.snippet, - })), - }, + details: Audit.makeTableDetails(headings, items), }; } } diff --git a/lighthouse-core/audits/is-on-https.js b/lighthouse-core/audits/is-on-https.js index 58abc2f2fdb2..4221ac99351f 100644 --- a/lighthouse-core/audits/is-on-https.js +++ b/lighthouse-core/audits/is-on-https.js @@ -58,17 +58,21 @@ class HTTPS extends Audit { displayValue = `${insecureRecords.length} insecure request found`; } + const items = insecureRecords.map(record => ({ + url: record.url, + })); + + const headings = [ + {key: 'url', itemType: 'url', text: 'Insecure URL'}, + ]; + return { rawValue: insecureRecords.length === 0, displayValue, extendedInfo: { value: insecureRecords, }, - details: { - type: 'list', - header: {type: 'text', text: 'Insecure URLs:'}, - items: insecureRecords.map(record => ({type: 'url', value: record.url})), - }, + details: Audit.makeTableDetails(headings, items), }; }); } diff --git a/lighthouse-core/report/v2/renderer/details-renderer.js b/lighthouse-core/report/v2/renderer/details-renderer.js index bbc714102136..98a476191346 100644 --- a/lighthouse-core/report/v2/renderer/details-renderer.js +++ b/lighthouse-core/report/v2/renderer/details-renderer.js @@ -46,8 +46,6 @@ class DetailsRenderer { return this._renderThumbnail(/** @type {!DetailsRenderer.ThumbnailDetails} */ (details)); case 'filmstrip': return this._renderFilmstrip(/** @type {!DetailsRenderer.FilmstripDetails} */ (details)); - case 'cards': - return this._renderCards(/** @type {!DetailsRenderer.CardsDetailsJSON} */ (details)); case 'table': return this._renderTable(/** @type {!DetailsRenderer.TableDetailsJSON} */ (details)); case 'code': @@ -57,8 +55,6 @@ class DetailsRenderer { case 'criticalrequestchain': return CriticalRequestChainRenderer.render(this._dom, this._templateContext, /** @type {!CriticalRequestChainRenderer.CRCDetailsJSON} */ (details)); - case 'list': - return this._renderList(/** @type {!DetailsRenderer.ListDetailsJSON} */ (details)); default: { throw new Error(`Unknown type: ${details.type}`); } @@ -177,24 +173,6 @@ class DetailsRenderer { return element; } - /** - * @param {!DetailsRenderer.ListDetailsJSON} list - * @return {!Element} - */ - _renderList(list) { - if (!list.items.length) return this._dom.createElement('span'); - - const element = this._dom.createElement('details', 'lh-details'); - element.open = true; - - const itemsElem = this._dom.createChildOf(element, 'div', 'lh-list__items'); - for (const item of list.items) { - const itemElem = this._dom.createChildOf(itemsElem, 'span', 'lh-list__item'); - itemElem.appendChild(this.render(item)); - } - return element; - } - /** * @param {!DetailsRenderer.TableDetailsJSON} details * @return {!Element} @@ -266,37 +244,6 @@ class DetailsRenderer { return element; } - /** - * @param {!DetailsRenderer.CardsDetailsJSON} details - * @return {!Element} - */ - _renderCards(details) { - const element = this._dom.createElement('details', 'lh-details'); - element.open = true; - if (details.header) { - element.appendChild(this._dom.createElement('summary')).textContent = details.header.text; - } - - const cardsParent = this._dom.createElement('div', 'lh-scorecards'); - for (const item of details.items) { - const card = cardsParent.appendChild( - this._dom.createElement('div', 'lh-scorecard', {title: item.snippet})); - const titleEl = this._dom.createElement('div', 'lh-scorecard__title'); - const valueEl = this._dom.createElement('div', 'lh-scorecard__value'); - const targetEl = this._dom.createElement('div', 'lh-scorecard__target'); - - card.appendChild(titleEl).textContent = item.title; - card.appendChild(valueEl).textContent = item.value; - - if (item.target) { - card.appendChild(targetEl).textContent = `target: ${item.target}`; - } - } - - element.appendChild(cardsParent); - return element; - } - /** * @param {!DetailsRenderer.FilmstripDetails} details * @return {!Element} @@ -354,16 +301,6 @@ if (typeof module !== 'undefined' && module.exports) { */ DetailsRenderer.DetailsJSON; // eslint-disable-line no-unused-expressions -/** - * @typedef {{ - * type: string, - * header: ({text: string}|undefined), - * items: !Array - * }} - */ -DetailsRenderer.ListDetailsJSON; // eslint-disable-line no-unused-expressions - - /** * @typedef {{ * type: string, @@ -395,14 +332,6 @@ DetailsRenderer.NumericUnitDetailsJSON; // eslint-disable-line no-unused-express */ DetailsRenderer.NodeDetailsJSON; // eslint-disable-line no-unused-expressions -/** @typedef {{ - * type: string, - * header: ({text: string}|undefined), - * items: !Array<{title: string, value: string, snippet: (string|undefined), target: string}> - * }} - */ -DetailsRenderer.CardsDetailsJSON; // eslint-disable-line no-unused-expressions - /** * @typedef {{ * itemType: string, diff --git a/lighthouse-core/report/v2/report-styles.css b/lighthouse-core/report/v2/report-styles.css index bdb85b941fc6..cde7b628d4a0 100644 --- a/lighthouse-core/report/v2/report-styles.css +++ b/lighthouse-core/report/v2/report-styles.css @@ -167,20 +167,6 @@ summary { background-image: url('data:image/svg+xml;utf8,'); } -/* List */ -.lh-list { - font-size: smaller; - margin-top: var(--default-padding); -} - -.lh-list__items { - padding-left: var(--default-padding); -} - -.lh-list__item { - margin-bottom: 2px; -} - /* Node */ .lh-node { display: block; @@ -193,43 +179,6 @@ span.lh-node:hover { border-radius: 2px; } -/* Card */ -.lh-scorecards { - display: flex; - flex-wrap: wrap; -} -.lh-scorecard { - display: flex; - align-items: center; - justify-content: center; - flex: 0 0 calc(12 * var(--body-font-size)); - flex-direction: column; - padding: var(--default-padding); - padding-top: calc(32px + var(--default-padding)); - border-radius: 3px; - margin-right: var(--default-padding); - position: relative; - line-height: inherit; - border: 1px solid #ebebeb; -} -.lh-scorecard__title { - background-color: #eee; - position: absolute; - top: 0; - right: 0; - left: 0; - display: flex; - justify-content: center; - align-items: center; - padding: calc(var(--default-padding) / 2); -} -.lh-scorecard__value { - font-size: calc(1.6 * var(--body-font-size)); -} -.lh-scorecard__target { - margin-top: calc(var(--default-padding) / 2); -} - /* Score */ .lh-score { diff --git a/lighthouse-core/scripts/update-report-fixture.sh b/lighthouse-core/scripts/update-report-fixture.sh new file mode 100755 index 000000000000..8ced3b8e52e5 --- /dev/null +++ b/lighthouse-core/scripts/update-report-fixture.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +## +# @license Copyright 2018 Google Inc. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +## + +node lighthouse-cli/test/fixtures/static-server.js & + +node lighthouse-cli/index.js --output=json http://localhost:10200/dobetterweb/dbw_tester.html > ./lighthouse-core/test/results/sample_v2.json + +kill $(jobs -p) diff --git a/lighthouse-core/test/audits/dobetterweb/dom-size-test.js b/lighthouse-core/test/audits/dobetterweb/dom-size-test.js index bc7e4b2c0a2c..dcd1b2004ed5 100644 --- a/lighthouse-core/test/audits/dobetterweb/dom-size-test.js +++ b/lighthouse-core/test/audits/dobetterweb/dom-size-test.js @@ -20,23 +20,15 @@ describe('Num DOM nodes audit', () => { }, }; - const snippet = 'html >\n' + - ' body >\n' + - ' div >\n' + - ' span'; - + const snippet = ''; it('calculates score hitting top of distribution', () => { const auditResult = DOMSize.audit(artifact); assert.equal(auditResult.score, 1); assert.equal(auditResult.rawValue, numNodes); assert.equal(auditResult.displayValue, `${numNodes.toLocaleString()} nodes`); - assert.equal(auditResult.details.items[0].title, 'Total DOM Nodes'); - assert.equal(auditResult.details.items[0].value, numNodes.toLocaleString()); - assert.equal(auditResult.details.items[1].title, 'DOM Depth'); - assert.equal(auditResult.details.items[1].value, 1); - assert.equal(auditResult.details.items[1].snippet, snippet, 'generates snippet'); - assert.equal(auditResult.details.items[2].title, 'Maximum Children'); - assert.equal(auditResult.details.items[2].value, 2); + assert.equal(auditResult.details.items[0].totalNodes, numNodes.toLocaleString()); + assert.equal(auditResult.details.items[0].depth, `1 (html > body > div > span)`); + assert.equal(auditResult.details.items[0].width, `2 (html > body)`); }); it('calculates score hitting mid distribution', () => { diff --git a/lighthouse-core/test/report/v2/renderer/details-renderer-test.js b/lighthouse-core/test/report/v2/renderer/details-renderer-test.js index 732127cd5bbe..167b266cc2de 100644 --- a/lighthouse-core/test/report/v2/renderer/details-renderer-test.js +++ b/lighthouse-core/test/report/v2/renderer/details-renderer-test.js @@ -40,49 +40,6 @@ describe('DetailsRenderer', () => { assert.ok(el.classList.contains('lh-text'), 'adds classes'); }); - it('renders lists without headers', () => { - const el = renderer.render({ - type: 'list', - items: [ - {type: 'text', value: 'content 1'}, - {type: 'text', value: 'content 2'}, - {type: 'text', value: 'content 3'}, - ], - }); - - const header = el.querySelector('.lh-list__header'); - assert.ok(!header, 'rendered header'); - - const items = el.querySelector('.lh-list__items'); - assert.equal(items.children.length, 3, 'did not render children'); - }); - - it('renders cards', () => { - const list = { - header: {type: 'text', value: 'View details'}, - items: [ - {title: 'Total DOM Nodes', value: 3500, target: '1,500 nodes'}, - {title: 'DOM Depth', value: 10, snippet: 'snippet'}, - {title: 'Maximum Children', value: 20, snippet: 'snippet2', target: 20}, - ], - }; - - const details = renderer._renderCards(list); - - const cards = details.querySelectorAll('.lh-scorecards > .lh-scorecard'); - assert.ok(cards.length, list.items.length, `renders ${list.items.length} cards`); - assert.equal(cards[0].hasAttribute('title'), false, - 'does not add title attr if snippet is missing'); - assert.equal(cards[0].querySelector('.lh-scorecard__title').textContent, - 'Total DOM Nodes', 'fills title'); - assert.equal(cards[0].querySelector('.lh-scorecard__value').textContent, - '3500', 'fills value'); - assert.equal(cards[0].querySelector('.lh-scorecard__target').textContent, - 'target: 1,500 nodes', 'fills target'); - assert.equal(cards[1].getAttribute('title'), 'snippet', 'adds title attribute for snippet'); - assert.ok(!cards[1].querySelector('.lh-scorecard__target'), 'handles missing target'); - }); - it('renders code', () => { const el = renderer.render({ type: 'code', diff --git a/lighthouse-core/test/results/sample_v2.json b/lighthouse-core/test/results/sample_v2.json index 2e662d3c0332..64bad57fd54b 100644 --- a/lighthouse-core/test/results/sample_v2.json +++ b/lighthouse-core/test/results/sample_v2.json @@ -1,7 +1,7 @@ { - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3358.0 Safari/537.36", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3372.0 Safari/537.36", "lighthouseVersion": "2.9.1", - "generatedTime": "2018-03-13T00:55:45.840Z", + "generatedTime": "2018-03-16T17:04:52.815Z", "initialUrl": "http://localhost:10200/dobetterweb/dbw_tester.html", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "runWarnings": [], @@ -22,15 +22,17 @@ "description": "Does not use HTTPS", "helpText": "All sites should be protected with HTTPS, even ones that don't handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/https).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "Insecure URLs:" - }, + "type": "table", + "headings": [ + { + "key": "url", + "itemType": "url", + "text": "Insecure URL" + } + ], "items": [ { - "type": "url", - "value": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" + "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" } ] } @@ -82,24 +84,24 @@ "helpText": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/no-js)." }, "first-meaningful-paint": { - "score": 0.51, - "displayValue": "3,970 ms", - "rawValue": 3969.1, + "score": 0.1, + "displayValue": "7,740 ms", + "rawValue": 7736.9, "extendedInfo": { "value": { "timestamps": { - "navStart": 185603319912, - "fCP": 185607289047, - "fMP": 185607289048, - "onLoad": 185608244374, - "endOfTrace": 185613601189 + "navStart": 69537868780, + "fCP": 69545605636, + "fMP": 69545605638, + "onLoad": 69545785554, + "endOfTrace": 69551132891 }, "timings": { "navStart": 0, - "fCP": 3969.135, - "fMP": 3969.136, - "onLoad": 4924.462, - "endOfTrace": 10281.277 + "fCP": 7736.856, + "fMP": 7736.858, + "onLoad": 7916.774, + "endOfTrace": 13264.111 }, "fmpFellBack": false } @@ -119,15 +121,15 @@ "firstRequestLatencies": [ { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "latency": "570.56" + "latency": "569.47" }, { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "latency": "564.12" + "latency": "567.39" } ], "isFast": true, - "timeToFirstInteractive": 4927.278 + "timeToFirstInteractive": 7897.14 } }, "scoreDisplayMode": "binary", @@ -136,38 +138,106 @@ "helpText": "A fast page load over a 3G network ensures a good mobile user experience. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." }, "speed-index-metric": { - "score": 0.6, - "displayValue": "4,565", - "rawValue": 4565, + "score": 0.31, + "displayValue": "7,749", + "rawValue": 7749, "extendedInfo": { "value": { "timings": { - "firstVisualChange": 3969, - "visuallyReady": 4791.470999985933, - "visuallyComplete": 4791, - "perceptualSpeedIndex": 4565.36406660484 + "firstVisualChange": 7737, + "visuallyReady": 7737.127000004053, + "visuallyComplete": 8328, + "perceptualSpeedIndex": 7748.725056065035 }, "timestamps": { - "firstVisualChange": 185607288912, - "visuallyReady": 185608111383, - "visuallyComplete": 185608110912, - "perceptualSpeedIndex": 185607885276.0666 + "firstVisualChange": 69545605780, + "visuallyReady": 69545605907, + "visuallyComplete": 69546196780, + "perceptualSpeedIndex": 69545617505.05606 }, "frames": [ { - "timestamp": 185603319.912, + "timestamp": 69537868.78, "progress": 0 }, { - "timestamp": 185607289.343, - "progress": 20.35111741380658 + "timestamp": 69545605.907, + "progress": 97.35563351923574 + }, + { + "timestamp": 69545784.627, + "progress": 98.13008913742254 + }, + { + "timestamp": 69545912.044, + "progress": 98.13008913742254 + }, + { + "timestamp": 69545928.545, + "progress": 98.13008913742254 + }, + { + "timestamp": 69545945.141, + "progress": 98.29282205785145 + }, + { + "timestamp": 69545961.946, + "progress": 98.29282205785145 + }, + { + "timestamp": 69545979.422, + "progress": 98.29282205785145 + }, + { + "timestamp": 69545995.83, + "progress": 98.29282205785145 + }, + { + "timestamp": 69546011.96, + "progress": 98.29282205785145 + }, + { + "timestamp": 69546029.656, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546045.409, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546062.047, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546078.839, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546095.459, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546112.141, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546129.622, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546145.499, + "progress": 98.55310825554655 }, { - "timestamp": 185607891.18, - "progress": 47.059476427932246 + "timestamp": 69546162.823, + "progress": 98.55310825554655 }, { - "timestamp": 185608111.383, + "timestamp": 69546178.771, + "progress": 98.55310825554655 + }, + { + "timestamp": 69546197.447, "progress": 100 } ] @@ -189,57 +259,57 @@ "helpText": "This is what the load of your site looked like.", "details": { "type": "filmstrip", - "scale": 4927.278, + "scale": 8328, "items": [ { - "timing": 493, - "timestamp": 185603812639.80002, + "timing": 833, + "timestamp": 69538701580, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 985, - "timestamp": 185604305367.6, + "timing": 1666, + "timestamp": 69539534380, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 1478, - "timestamp": 185604798095.4, + "timing": 2498, + "timestamp": 69540367180, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 1971, - "timestamp": 185605290823.19998, + "timing": 3331, + "timestamp": 69541199980, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 2464, - "timestamp": 185605783551, + "timing": 4164, + "timestamp": 69542032780, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 2956, - "timestamp": 185606276278.80002, + "timing": 4997, + "timestamp": 69542865580, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 3449, - "timestamp": 185606769006.6, + "timing": 5830, + "timestamp": 69543698380, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 3942, - "timestamp": 185607261734.4, + "timing": 6662, + "timestamp": 69544531180, "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 4435, - "timestamp": 185607754462.19998, - "data": "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BcA634e/BXxh8PvH95cW2neCm8I6rFpcr2kQmSTRJbRDGYbOIxFJE2BQjl4yrMzFDnZQBy2jfs1ePdG8N6Bp4n8OvPpGh+KNNjLXc5jlfUbhZrVyBbj5RtAkGeAfl30AdX47+Bvijxl8XtE8YIuhWUNrqeg3lygupWldbFdSMuP3OC2+/UKDjKxkkqTtoA7/AOAHgTUvhf8ABXwb4S1h7STU9G06OymewkaSBig27kJVTg46FQR0oA7+gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9k=" + "timing": 7495, + "timestamp": 69545363980, + "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z" }, { - "timing": 4927, - "timestamp": 185608247190, - "data": "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" + "timing": 8328, + "timestamp": 69546196780, + "data": "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" } ] } @@ -264,11 +334,11 @@ }, { "percentile": 0.99, - "time": 92.83829500000138 + "time": 121.00946999999996 }, { "percentile": 1, - "time": 138.53700000000208 + "time": 176.28200000000015 } ] }, @@ -280,7 +350,7 @@ "errors-in-console": { "score": 0, "displayValue": "", - "rawValue": 5, + "rawValue": 6, "scoreDisplayMode": "binary", "name": "errors-in-console", "description": "Browser errors were logged to the console", @@ -310,6 +380,11 @@ "description": "Failed to load resource: the server responded with a status of 404 (Not Found)", "url": "http://localhost:10200/dobetterweb/unknown404.css?delay=200" }, + { + "source": "network", + "description": "Failed to load resource: the server responded with a status of 404 (Not Found)", + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000" + }, { "source": "network", "description": "Failed to load resource: the server responded with a status of 404 (Not Found)", @@ -322,7 +397,7 @@ }, { "source": "Runtime.exception", - "description": "Error: An error\n at http://localhost:10200/dobetterweb/dbw_tester.html:42:38", + "description": "Error: An error\n at http://localhost:10200/dobetterweb/dbw_tester.html:55:38", "url": "http://localhost:10200/dobetterweb/dbw_tester.html" } ] @@ -331,10 +406,10 @@ "time-to-first-byte": { "score": 1, "displayValue": "", - "rawValue": 570.5630000000001, + "rawValue": 569.467, "extendedInfo": { "value": { - "wastedMs": -29.436999999999898 + "wastedMs": -30.533000000000015 } }, "scoreDisplayMode": "binary", @@ -344,18 +419,18 @@ "helpText": "Time To First Byte identifies the time at which your server sends a response. [Learn more](https://developers.google.com/web/tools/chrome-devtools/network-performance/issues).", "details": { "summary": { - "wastedMs": -29.436999999999898 + "wastedMs": -30.533000000000015 } } }, "first-interactive": { - "score": 0.82, - "displayValue": "4,930 ms", - "rawValue": 4927.278, + "score": 0.62, + "displayValue": "7,900 ms", + "rawValue": 7897.14, "extendedInfo": { "value": { - "timeInMs": 4927.278, - "timestamp": 185608247190 + "timeInMs": 7897.14, + "timestamp": 69545765920 } }, "scoreDisplayMode": "numeric", @@ -364,33 +439,33 @@ "helpText": "First Interactive marks the time at which the page is minimally interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." }, "consistently-interactive": { - "score": 0.82, - "displayValue": "4,930 ms", - "rawValue": 4927.278, + "score": 0.62, + "displayValue": "7,900 ms", + "rawValue": 7897.14, "extendedInfo": { "value": { "cpuQuietPeriod": { - "start": 185608247.19, - "end": 185613601.189 + "start": 69545765.92, + "end": 69551132.891 }, "networkQuietPeriod": { - "start": 185607537.382, - "end": 185613601.189 + "start": 69542077.81, + "end": 69551132.891 }, "cpuQuietPeriods": [ { - "start": 185608247.19, - "end": 185613601.189 + "start": 69545765.92, + "end": 69551132.891 } ], "networkQuietPeriods": [ { - "start": 185607537.382, - "end": 185613601.189 + "start": 69542077.81, + "end": 69551132.891 } ], - "timestamp": 185608247190, - "timeInMs": 4927.278 + "timestamp": 69545765920, + "timeInMs": 7897.14 } }, "scoreDisplayMode": "numeric", @@ -418,167 +493,187 @@ }, "critical-request-chains": { "score": 0, - "displayValue": "13 chains found", + "displayValue": "15 chains found", "rawValue": false, "extendedInfo": { "value": { "chains": { - "F3B687683512E0F003DD41EB23E2091A": { + "7E0AE67C5F1E37BDA26699E0187C3C95": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "startTime": 185603.321221, - "endTime": 185603.961376, - "responseReceivedTime": 185603.89718499998, - "transferSize": 12640 + "startTime": 69537.870034, + "endTime": 69538.508807, + "responseReceivedTime": 69538.44553400001, + "transferSize": 13472 }, "children": { - "75994.2": { + "27253.2": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", - "startTime": 185603.951516, - "endTime": 185605.956256, - "responseReceivedTime": 185605.955291, + "startTime": 69538.497172, + "endTime": 69540.503818, + "responseReceivedTime": 69540.503266, "transferSize": 821 }, "children": {} }, - "75994.3": { + "27253.3": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=100", - "startTime": 185603.956717, - "endTime": 185604.52588, - "responseReceivedTime": 185604.52470399998, + "startTime": 69538.500293, + "endTime": 69539.065737, + "responseReceivedTime": 69539.06485600001, "transferSize": 821 }, "children": {} }, - "75994.4": { + "27253.4": { "request": { "url": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", - "startTime": 185603.957861, - "endTime": 185604.534512, - "responseReceivedTime": 185604.532778, + "startTime": 69538.500908, + "endTime": 69539.075685, + "responseReceivedTime": 69539.072925, "transferSize": 139 }, "children": {} }, - "75994.5": { + "27253.5": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", - "startTime": 185603.959225, - "endTime": 185606.170588, - "responseReceivedTime": 185606.169761, + "startTime": 69538.502032, + "endTime": 69540.710825, + "responseReceivedTime": 69540.710063, "transferSize": 821 }, "children": {} }, - "75994.6": { + "27253.6": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_disabled.css?delay=200&isdisabled", - "startTime": 185603.960011, - "endTime": 185604.541262, - "responseReceivedTime": 185604.54052399998, + "startTime": 69538.502605, + "endTime": 69539.081622, + "responseReceivedTime": 69539.080737, "transferSize": 1108 }, "children": {} }, - "75994.7": { + "27253.7": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_partial_a.html?delay=200", - "startTime": 185603.961819, - "endTime": 185604.549739, - "responseReceivedTime": 185604.54903999998, + "startTime": 69538.502908, + "endTime": 69539.645752, + "responseReceivedTime": 69539.645053, "transferSize": 736 }, "children": {} }, - "75994.8": { + "27253.8": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_partial_b.html?delay=200&isasync", - "startTime": 185603.962566, - "endTime": 185605.097653, - "responseReceivedTime": 185605.096858, + "startTime": 69538.503487, + "endTime": 69539.654011, + "responseReceivedTime": 69539.65335899999, "transferSize": 733 }, "children": {} }, - "75994.9": { + "27253.9": { + "request": { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "startTime": 69538.504426, + "endTime": 69541.513443, + "responseReceivedTime": 69541.512785, + "transferSize": 821 + }, + "children": {} + }, + "27253.10": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", - "startTime": 185603.964089, - "endTime": 185607.537382, - "responseReceivedTime": 185607.53660999998, + "startTime": 69538.506767, + "endTime": 69542.07781, + "responseReceivedTime": 69542.07672499999, "transferSize": 821 }, "children": {} }, - "75994.10": { + "27253.11": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", - "startTime": 185603.965303, - "endTime": 185605.113307, - "responseReceivedTime": 185605.104776, + "startTime": 69538.507788, + "endTime": 69540.217233, + "responseReceivedTime": 69540.209208, "transferSize": 1703 }, "children": {} }, - "75994.11": { + "27253.12": { "request": { "url": "http://localhost:10200/dobetterweb/empty_module.js?delay=500", - "startTime": 185603.96675, - "endTime": 185604.557407, - "responseReceivedTime": 185604.556719, + "startTime": 69538.509168, + "endTime": 69539.08977, + "responseReceivedTime": 69539.089191, "transferSize": 144 }, "children": {} }, - "75994.21": { + "27253.21": { + "request": { + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000", + "startTime": 69538.5236, + "endTime": 69544.661326, + "responseReceivedTime": 69544.659696, + "transferSize": 146 + }, + "children": {} + }, + "27253.24": { "request": { "url": "http://localhost:10200/zone.js", - "startTime": 185606.170955, - "endTime": 185607.28227, - "responseReceivedTime": 185606.742005, + "startTime": 69542.077757, + "endTime": 69543.015221, + "responseReceivedTime": 69542.640956, "transferSize": 71654 }, "children": {} }, - "75994.22": { + "27253.25": { "request": { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "startTime": 185607.195975, - "endTime": 185608.117509, - "responseReceivedTime": 185607.822806, - "transferSize": 30174 + "startTime": 69543.015459, + "endTime": 69543.810384, + "responseReceivedTime": 69543.65044900001, + "transferSize": 31042 }, "children": {} }, - "75994.28": { + "27253.35": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?scriptActivated&delay=200", - "startTime": 185606.245562, - "endTime": 185607.285454, - "responseReceivedTime": 185606.82147599998, + "startTime": 69544.69469, + "endTime": 69545.565849, + "responseReceivedTime": 69545.263582, "transferSize": 821 }, "children": {} } } }, - "75994.33": { + "27253.40": { "request": { "url": "http://localhost:10200/favicon.ico", - "startTime": 185608.288594, - "endTime": 185608.857719, - "responseReceivedTime": 185608.85586200003, - "transferSize": 221 + "startTime": 69545.825269, + "endTime": 69546.393194, + "responseReceivedTime": 69546.392092, + "transferSize": 225 }, "children": {} } }, "longestChain": { - "duration": 5536.498000001302, + "duration": 8523.159999997006, "length": 1, - "transferSize": 221 + "transferSize": 225 } } }, @@ -594,162 +689,182 @@ "text": "View critical network waterfall:" }, "chains": { - "F3B687683512E0F003DD41EB23E2091A": { + "7E0AE67C5F1E37BDA26699E0187C3C95": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "startTime": 185603.321221, - "endTime": 185603.961376, - "responseReceivedTime": 185603.89718499998, - "transferSize": 12640 + "startTime": 69537.870034, + "endTime": 69538.508807, + "responseReceivedTime": 69538.44553400001, + "transferSize": 13472 }, "children": { - "75994.2": { + "27253.2": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", - "startTime": 185603.951516, - "endTime": 185605.956256, - "responseReceivedTime": 185605.955291, + "startTime": 69538.497172, + "endTime": 69540.503818, + "responseReceivedTime": 69540.503266, "transferSize": 821 }, "children": {} }, - "75994.3": { + "27253.3": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=100", - "startTime": 185603.956717, - "endTime": 185604.52588, - "responseReceivedTime": 185604.52470399998, + "startTime": 69538.500293, + "endTime": 69539.065737, + "responseReceivedTime": 69539.06485600001, "transferSize": 821 }, "children": {} }, - "75994.4": { + "27253.4": { "request": { "url": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", - "startTime": 185603.957861, - "endTime": 185604.534512, - "responseReceivedTime": 185604.532778, + "startTime": 69538.500908, + "endTime": 69539.075685, + "responseReceivedTime": 69539.072925, "transferSize": 139 }, "children": {} }, - "75994.5": { + "27253.5": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", - "startTime": 185603.959225, - "endTime": 185606.170588, - "responseReceivedTime": 185606.169761, + "startTime": 69538.502032, + "endTime": 69540.710825, + "responseReceivedTime": 69540.710063, "transferSize": 821 }, "children": {} }, - "75994.6": { + "27253.6": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_disabled.css?delay=200&isdisabled", - "startTime": 185603.960011, - "endTime": 185604.541262, - "responseReceivedTime": 185604.54052399998, + "startTime": 69538.502605, + "endTime": 69539.081622, + "responseReceivedTime": 69539.080737, "transferSize": 1108 }, "children": {} }, - "75994.7": { + "27253.7": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_partial_a.html?delay=200", - "startTime": 185603.961819, - "endTime": 185604.549739, - "responseReceivedTime": 185604.54903999998, + "startTime": 69538.502908, + "endTime": 69539.645752, + "responseReceivedTime": 69539.645053, "transferSize": 736 }, "children": {} }, - "75994.8": { + "27253.8": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_partial_b.html?delay=200&isasync", - "startTime": 185603.962566, - "endTime": 185605.097653, - "responseReceivedTime": 185605.096858, + "startTime": 69538.503487, + "endTime": 69539.654011, + "responseReceivedTime": 69539.65335899999, "transferSize": 733 }, "children": {} }, - "75994.9": { + "27253.9": { + "request": { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "startTime": 69538.504426, + "endTime": 69541.513443, + "responseReceivedTime": 69541.512785, + "transferSize": 821 + }, + "children": {} + }, + "27253.10": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", - "startTime": 185603.964089, - "endTime": 185607.537382, - "responseReceivedTime": 185607.53660999998, + "startTime": 69538.506767, + "endTime": 69542.07781, + "responseReceivedTime": 69542.07672499999, "transferSize": 821 }, "children": {} }, - "75994.10": { + "27253.11": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", - "startTime": 185603.965303, - "endTime": 185605.113307, - "responseReceivedTime": 185605.104776, + "startTime": 69538.507788, + "endTime": 69540.217233, + "responseReceivedTime": 69540.209208, "transferSize": 1703 }, "children": {} }, - "75994.11": { + "27253.12": { "request": { "url": "http://localhost:10200/dobetterweb/empty_module.js?delay=500", - "startTime": 185603.96675, - "endTime": 185604.557407, - "responseReceivedTime": 185604.556719, + "startTime": 69538.509168, + "endTime": 69539.08977, + "responseReceivedTime": 69539.089191, "transferSize": 144 }, "children": {} }, - "75994.21": { + "27253.21": { + "request": { + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000", + "startTime": 69538.5236, + "endTime": 69544.661326, + "responseReceivedTime": 69544.659696, + "transferSize": 146 + }, + "children": {} + }, + "27253.24": { "request": { "url": "http://localhost:10200/zone.js", - "startTime": 185606.170955, - "endTime": 185607.28227, - "responseReceivedTime": 185606.742005, + "startTime": 69542.077757, + "endTime": 69543.015221, + "responseReceivedTime": 69542.640956, "transferSize": 71654 }, "children": {} }, - "75994.22": { + "27253.25": { "request": { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "startTime": 185607.195975, - "endTime": 185608.117509, - "responseReceivedTime": 185607.822806, - "transferSize": 30174 + "startTime": 69543.015459, + "endTime": 69543.810384, + "responseReceivedTime": 69543.65044900001, + "transferSize": 31042 }, "children": {} }, - "75994.28": { + "27253.35": { "request": { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?scriptActivated&delay=200", - "startTime": 185606.245562, - "endTime": 185607.285454, - "responseReceivedTime": 185606.82147599998, + "startTime": 69544.69469, + "endTime": 69545.565849, + "responseReceivedTime": 69545.263582, "transferSize": 821 }, "children": {} } } }, - "75994.33": { + "27253.40": { "request": { "url": "http://localhost:10200/favicon.ico", - "startTime": 185608.288594, - "endTime": 185608.857719, - "responseReceivedTime": 185608.85586200003, - "transferSize": 221 + "startTime": 69545.825269, + "endTime": 69546.393194, + "responseReceivedTime": 69546.392092, + "transferSize": 225 }, "children": {} } }, "longestChain": { - "duration": 5536.498000001302, + "duration": 8523.159999997006, "length": 1, - "transferSize": 221 + "transferSize": 225 } } }, @@ -920,13 +1035,13 @@ "value": "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "source": "deprecation", - "lineNumber": 322 + "lineNumber": 338 }, { "value": "'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "source": "deprecation", - "lineNumber": 325 + "lineNumber": 341 }, { "value": "/deep/ combinator is no longer supported in CSS dynamic profile.It is now effectively no-op, acting as if it were a descendant combinator. /deep/ combinator will be removed, and will be invalid at M65. You should remove it. See https://www.chromestatus.com/features/4964279606312960 for more details.", @@ -963,13 +1078,13 @@ "value": "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "source": "deprecation", - "lineNumber": 322 + "lineNumber": 338 }, { "value": "'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "source": "deprecation", - "lineNumber": 325 + "lineNumber": 341 }, { "value": "/deep/ combinator is no longer supported in CSS dynamic profile.It is now effectively no-op, acting as if it were a descendant combinator. /deep/ combinator will be removed, and will be invalid at M65. You should remove it. See https://www.chromestatus.com/features/4964279606312960 for more details.", @@ -981,24 +1096,24 @@ }, "mainthread-work-breakdown": { "score": 1, - "displayValue": "1,360 ms", - "rawValue": 1359.7759999930859, + "displayValue": "1,160 ms", + "rawValue": 1163.3910000175238, "extendedInfo": { "value": { - "Evaluate Script": 1121.2470000088215, - "Layout": 89.00499999523163, - "Parse HTML": 63.04200002551079, - "Recalculate Style": 32.57899996638298, - "Minor GC": 19.94599997997284, - "Compile Script": 7.7519999742507935, - "Run Microtasks": 6.680999994277954, - "DOM GC": 6.252999991178513, - "Paint": 4.94200000166893, - "Update Layer Tree": 4.238999992609024, - "Composite Layers": 2.732000023126602, - "Parse Stylesheet": 1.3200000524520874, - "XHR Ready State Change": 0.026999980211257935, - "XHR Load": 0.011000007390975952 + "Evaluate Script": 939.8869999498129, + "Layout": 61.90600000321865, + "Parse HTML": 53.60399992763996, + "Compile Script": 37.25700005888939, + "Recalculate Style": 29.290000021457672, + "Minor GC": 17.5990000218153, + "DOM GC": 9.77199999988079, + "Run Microtasks": 6.877000004053116, + "Update Layer Tree": 2.3990000039339066, + "Paint": 2.3740000128746033, + "Composite Layers": 1.3600000143051147, + "Parse Stylesheet": 1.0259999930858612, + "XHR Ready State Change": 0.020999997854232788, + "XHR Load": 0.019000008702278137 } }, "scoreDisplayMode": "binary", @@ -1029,7 +1144,7 @@ { "category": "Evaluate Script", "group": "Script Evaluation", - "duration": "1,121 ms" + "duration": "940 ms" }, { "category": "Run Microtasks", @@ -1049,80 +1164,79 @@ { "category": "Layout", "group": "Style & Layout", - "duration": "89 ms" + "duration": "62 ms" }, { "category": "Recalculate Style", "group": "Style & Layout", - "duration": "33 ms" + "duration": "29 ms" }, { "category": "Parse HTML", "group": "Parsing HTML & CSS", - "duration": "63 ms" + "duration": "54 ms" }, { "category": "Parse Stylesheet", "group": "Parsing HTML & CSS", "duration": "1 ms" }, + { + "category": "Compile Script", + "group": "Script Parsing & Compile", + "duration": "37 ms" + }, { "category": "Minor GC", "group": "Garbage collection", - "duration": "20 ms" + "duration": "18 ms" }, { "category": "DOM GC", "group": "Garbage collection", - "duration": "6 ms" - }, - { - "category": "Compile Script", - "group": "Script Parsing & Compile", - "duration": "8 ms" + "duration": "10 ms" }, { "category": "Update Layer Tree", "group": "Compositing", - "duration": "4 ms" + "duration": "2 ms" }, { "category": "Composite Layers", "group": "Compositing", - "duration": "3 ms" + "duration": "1 ms" }, { "category": "Paint", "group": "Paint", - "duration": "5 ms" + "duration": "2 ms" } ] } }, "bootup-time": { "score": 1, - "displayValue": "1,300 ms", - "rawValue": 1302.3579999804497, + "displayValue": "1,110 ms", + "rawValue": 1109.8969999551773, "extendedInfo": { "value": { "http://localhost:10200/dobetterweb/dbw_tester.html": { - "Script Evaluation": 954.5010000169277, - "Style & Layout": 116.7219999730587, - "Parsing HTML & CSS": 63.04200002551079, - "Script Parsing & Compile": 2.776999980211258 + "Script Evaluation": 811.5409999638796, + "Style & Layout": 87.37100000679493, + "Parsing HTML & CSS": 53.60399992763996, + "Script Parsing & Compile": 2.572000041604042 }, "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js": { - "Script Evaluation": 80.03200000524521, - "Script Parsing & Compile": 1.2049999833106995, - "Style & Layout": 0.03799998760223389 + "Script Evaluation": 62.46500001847744, + "Script Parsing & Compile": 22.175999999046326 }, "http://localhost:10200/zone.js": { - "Script Evaluation": 76.56400001049042, - "Script Parsing & Compile": 1.6739999949932098 + "Script Evaluation": 56.17499999701977, + "Script Parsing & Compile": 10.458000004291534 }, "http://localhost:10200/dobetterweb/dbw_tester.js": { - "Script Evaluation": 3.79899999499321, - "Script Parsing & Compile": 2.0040000081062317 + "Script Evaluation": 2.3419999927282333, + "Script Parsing & Compile": 1.193000003695488 } } }, @@ -1152,25 +1266,25 @@ "items": [ { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "sum": 957.277999997139, - "scripting": "955 ms", + "sum": 814.1130000054836, + "scripting": "812 ms", "scriptParseCompile": "3 ms" }, { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "sum": 81.23699998855591, - "scripting": "80 ms", - "scriptParseCompile": "1 ms" + "sum": 84.64100001752377, + "scripting": "62 ms", + "scriptParseCompile": "22 ms" }, { "url": "http://localhost:10200/zone.js", - "sum": 78.23800000548363, - "scripting": "77 ms", - "scriptParseCompile": "2 ms" + "sum": 66.6330000013113, + "scripting": "56 ms", + "scriptParseCompile": "10 ms" } ], "summary": { - "wastedMs": 1302.3579999804497 + "wastedMs": 1109.8969999551773 } } }, @@ -1212,134 +1326,188 @@ "network-requests": { "score": 1, "displayValue": "", - "rawValue": 18, + "rawValue": 20, "extendedInfo": { "value": [ { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "startTime": 0, - "endTime": 640.1550000009593, - "transferSize": 12640, - "statusCode": 200 + "endTime": 638.7729999987641, + "transferSize": 13472, + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "document" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", - "startTime": 630.2950000099372, - "endTime": 2635.035000013886, + "startTime": 627.1379999961937, + "endTime": 2633.7839999905555, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=100", - "startTime": 635.496000002604, - "endTime": 1204.6590000099968, + "startTime": 630.2589999977499, + "endTime": 1195.702999990317, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", - "startTime": 636.6400000115391, - "endTime": 1213.2910000218544, + "startTime": 630.8739999949466, + "endTime": 1205.6509999965783, "transferSize": 139, - "statusCode": 404 + "statusCode": 404, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", - "startTime": 638.0040000076406, - "endTime": 2849.3670000170823, + "startTime": 631.997999997111, + "endTime": 2840.790999995079, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_disabled.css?delay=200&isdisabled", - "startTime": 638.7899999972433, - "endTime": 1220.04100002232, + "startTime": 632.5709999946412, + "endTime": 1211.5879999910248, "transferSize": 1108, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_partial_a.html?delay=200", - "startTime": 640.5979999981355, - "endTime": 1228.5180000180844, + "startTime": 632.8739999880781, + "endTime": 1775.7179999898653, "transferSize": 736, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "document" }, { "url": "http://localhost:10200/dobetterweb/dbw_partial_b.html?delay=200&isasync", - "startTime": 641.3450000109151, - "endTime": 1776.4320000133011, + "startTime": 633.4529999876395, + "endTime": 1783.9769999991404, "transferSize": 733, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "document" + }, + { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "startTime": 634.3919999926584, + "endTime": 3643.408999996609, + "transferSize": 821, + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", - "startTime": 642.8679999953602, - "endTime": 4216.161000018474, + "startTime": 636.7329999920912, + "endTime": 4207.775999995647, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", - "startTime": 644.0820000134408, - "endTime": 1792.0860000012908, + "startTime": 637.7539999957662, + "endTime": 2347.1989999961806, "transferSize": 1703, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://localhost:10200/dobetterweb/empty_module.js?delay=500", - "startTime": 645.529000001261, - "endTime": 1236.1859999946319, + "startTime": 639.1339999972843, + "endTime": 1219.7359999991022, "transferSize": 144, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" + }, + { + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000", + "startTime": 653.5659999935888, + "endTime": 6791.291999994428, + "transferSize": 146, + "statusCode": 404, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://localhost:10200/dobetterweb/lighthouse-480x318.jpg", - "startTime": 3951.6250000160653, - "endTime": 4779.641000000993, + "startTime": 5940.625999995973, + "endTime": 6639.505999992252, "transferSize": 24741, - "statusCode": 200 + "statusCode": 200, + "mimeType": "image/jpeg", + "resourceType": "image" }, { "url": "http://localhost:10200/zone.js", - "startTime": 2849.7340000176337, - "endTime": 3961.049000005005, + "startTime": 4207.7229999995325, + "endTime": 5145.186999987345, "transferSize": 71654, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "startTime": 3874.7540000185836, - "endTime": 4796.288000012282, - "transferSize": 30174, - "statusCode": 200 + "startTime": 5145.424999995157, + "endTime": 5940.349999989849, + "transferSize": 31042, + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?scriptActivated&delay=200", - "startTime": 2924.34100000537, - "endTime": 3964.233000006061, + "startTime": 6824.655999997049, + "endTime": 7695.814999999129, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "startTime": 3066.252999997232, - "endTime": 3772.7560000203084, - "transferSize": 12640, - "statusCode": 200 + "startTime": 6931.382999988273, + "endTime": 7560.9499999991385, + "transferSize": 13472, + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "xhr" }, { - "url": "blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277", - "startTime": 3829.6360000094865, - "endTime": 3968.59800000675, + "url": "blob:http://localhost:10200/0aaa0d4b-ccab-41ed-a3ad-6ce11479fcff", + "startTime": 7598.065999991377, + "endTime": 7895.954999999958, "transferSize": 0, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/plain", + "resourceType": "image" }, { "url": "http://localhost:10200/favicon.ico", - "startTime": 4967.373000021325, - "endTime": 5536.498000001302, - "transferSize": 221, - "statusCode": 404 + "startTime": 7955.234999986715, + "endTime": 8523.159999997006, + "transferSize": 225, + "statusCode": 404, + "mimeType": "text/plain", + "resourceType": "other" } ] }, @@ -1379,134 +1547,198 @@ "key": "statusCode", "itemType": "text", "text": "Status Code" + }, + { + "key": "mimeType", + "itemType": "text", + "text": "MIME Type" + }, + { + "key": "resourceType", + "itemType": "text", + "text": "Resource Type" } ], "items": [ { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "startTime": 0, - "endTime": 640.1550000009593, - "transferSize": 12640, - "statusCode": 200 + "endTime": 638.7729999987641, + "transferSize": 13472, + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "document" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", - "startTime": 630.2950000099372, - "endTime": 2635.035000013886, + "startTime": 627.1379999961937, + "endTime": 2633.7839999905555, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=100", - "startTime": 635.496000002604, - "endTime": 1204.6590000099968, + "startTime": 630.2589999977499, + "endTime": 1195.702999990317, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", - "startTime": 636.6400000115391, - "endTime": 1213.2910000218544, + "startTime": 630.8739999949466, + "endTime": 1205.6509999965783, "transferSize": 139, - "statusCode": 404 + "statusCode": 404, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", - "startTime": 638.0040000076406, - "endTime": 2849.3670000170823, + "startTime": 631.997999997111, + "endTime": 2840.790999995079, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_disabled.css?delay=200&isdisabled", - "startTime": 638.7899999972433, - "endTime": 1220.04100002232, + "startTime": 632.5709999946412, + "endTime": 1211.5879999910248, "transferSize": 1108, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_partial_a.html?delay=200", - "startTime": 640.5979999981355, - "endTime": 1228.5180000180844, + "startTime": 632.8739999880781, + "endTime": 1775.7179999898653, "transferSize": 736, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "document" }, { "url": "http://localhost:10200/dobetterweb/dbw_partial_b.html?delay=200&isasync", - "startTime": 641.3450000109151, - "endTime": 1776.4320000133011, + "startTime": 633.4529999876395, + "endTime": 1783.9769999991404, "transferSize": 733, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "document" + }, + { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "startTime": 634.3919999926584, + "endTime": 3643.408999996609, + "transferSize": 821, + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", - "startTime": 642.8679999953602, - "endTime": 4216.161000018474, + "startTime": 636.7329999920912, + "endTime": 4207.775999995647, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", - "startTime": 644.0820000134408, - "endTime": 1792.0860000012908, + "startTime": 637.7539999957662, + "endTime": 2347.1989999961806, "transferSize": 1703, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://localhost:10200/dobetterweb/empty_module.js?delay=500", - "startTime": 645.529000001261, - "endTime": 1236.1859999946319, + "startTime": 639.1339999972843, + "endTime": 1219.7359999991022, "transferSize": 144, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" + }, + { + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000", + "startTime": 653.5659999935888, + "endTime": 6791.291999994428, + "transferSize": 146, + "statusCode": 404, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://localhost:10200/dobetterweb/lighthouse-480x318.jpg", - "startTime": 3951.6250000160653, - "endTime": 4779.641000000993, + "startTime": 5940.625999995973, + "endTime": 6639.505999992252, "transferSize": 24741, - "statusCode": 200 + "statusCode": 200, + "mimeType": "image/jpeg", + "resourceType": "image" }, { "url": "http://localhost:10200/zone.js", - "startTime": 2849.7340000176337, - "endTime": 3961.049000005005, + "startTime": 4207.7229999995325, + "endTime": 5145.186999987345, "transferSize": 71654, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "startTime": 3874.7540000185836, - "endTime": 4796.288000012282, - "transferSize": 30174, - "statusCode": 200 + "startTime": 5145.424999995157, + "endTime": 5940.349999989849, + "transferSize": 31042, + "statusCode": 200, + "mimeType": "text/javascript", + "resourceType": "script" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?scriptActivated&delay=200", - "startTime": 2924.34100000537, - "endTime": 3964.233000006061, + "startTime": 6824.655999997049, + "endTime": 7695.814999999129, "transferSize": 821, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/css", + "resourceType": "stylesheet" }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "startTime": 3066.252999997232, - "endTime": 3772.7560000203084, - "transferSize": 12640, - "statusCode": 200 + "startTime": 6931.382999988273, + "endTime": 7560.9499999991385, + "transferSize": 13472, + "statusCode": 200, + "mimeType": "text/html", + "resourceType": "xhr" }, { - "url": "blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277", - "startTime": 3829.6360000094865, - "endTime": 3968.59800000675, + "url": "blob:http://localhost:10200/0aaa0d4b-ccab-41ed-a3ad-6ce11479fcff", + "startTime": 7598.065999991377, + "endTime": 7895.954999999958, "transferSize": 0, - "statusCode": 200 + "statusCode": 200, + "mimeType": "text/plain", + "resourceType": "image" }, { "url": "http://localhost:10200/favicon.ico", - "startTime": 4967.373000021325, - "endTime": 5536.498000001302, - "transferSize": 221, - "statusCode": 404 + "startTime": 7955.234999986715, + "endTime": 8523.159999997006, + "transferSize": 225, + "statusCode": 404, + "mimeType": "text/plain", + "resourceType": "other" } ] } @@ -1664,11 +1896,8 @@ "description": "The page contains a heading, skip link, or landmark region", "helpText": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more](https://dequeuniversity.com/rules/axe/2.2/bypass?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -1687,13 +1916,13 @@ ], "description": "Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds", "help": "Elements must have sufficient color contrast", - "helpUrl": "https://dequeuniversity.com/rules/axe/2.6/color-contrast?application=axeAPI", + "helpUrl": "https://dequeuniversity.com/rules/axe/3.0/color-contrast?application=axeAPI", "nodes": [ { "impact": "serious", "html": "

Do better web tester page

", "target": [ - "div > h2" + "h2" ], "failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.32 (foreground color: #ffc0cb, background color: #eeeeee, font size: 18.0pt, font weight: bold). Expected contrast ratio of 3:1", "path": "3,HTML,1,BODY,0,DIV,0,H2", @@ -1703,7 +1932,7 @@ "impact": "serious", "html": "Hi there!", "target": [ - "div > span" + "span" ], "failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.32 (foreground color: #ffc0cb, background color: #eeeeee, font size: 12.0pt, font weight: normal). Expected contrast ratio of 4.5:1", "path": "3,HTML,1,BODY,0,DIV,1,SPAN", @@ -1717,23 +1946,30 @@ "description": "Background and foreground colors do not have a sufficient contrast ratio.", "helpText": "Low-contrast text is difficult or impossible for many users to read. [Learn more](https://dequeuniversity.com/rules/axe/2.2/color-contrast?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "div > h2", - "path": "3,HTML,1,BODY,0,DIV,0,H2", - "snippet": "

" + "node": { + "type": "node", + "selector": "h2", + "path": "3,HTML,1,BODY,0,DIV,0,H2", + "snippet": "

" + } }, { - "type": "node", - "selector": "div > span", - "path": "3,HTML,1,BODY,0,DIV,1,SPAN", - "snippet": "" + "node": { + "type": "node", + "selector": "span", + "path": "3,HTML,1,BODY,0,DIV,1,SPAN", + "snippet": "" + } } ] } @@ -1770,11 +2006,8 @@ "description": "Document has a `` element", "helpText": "The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/title).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -1788,11 +2021,8 @@ "description": "`[id]` attributes on the page are unique", "helpText": "The value of an id attribute must be unique to prevent other instances from being overlooked by assistive technologies. [Learn more](https://dequeuniversity.com/rules/axe/2.2/duplicate-id?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -1822,7 +2052,7 @@ ], "description": "Ensures every HTML document has a lang attribute", "help": "<html> element must have a lang attribute", - "helpUrl": "https://dequeuniversity.com/rules/axe/2.6/html-has-lang?application=axeAPI", + "helpUrl": "https://dequeuniversity.com/rules/axe/3.0/html-has-lang?application=axeAPI", "nodes": [ { "impact": "serious", @@ -1842,17 +2072,22 @@ "description": "`<html>` element does not have a `[lang]` attribute", "helpText": "If a page doesn't specify a lang attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more](https://dequeuniversity.com/rules/axe/2.2/html-lang?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "html", - "path": "3,HTML", - "snippet": "<html manifest=\"clock.appcache\">" + "node": { + "type": "node", + "selector": "html", + "path": "3,HTML", + "snippet": "<html manifest=\"clock.appcache\">" + } } ] } @@ -1885,13 +2120,13 @@ ], "description": "Ensures <img> elements have alternate text or a role of none or presentation", "help": "Images must have alternate text", - "helpUrl": "https://dequeuniversity.com/rules/axe/2.6/image-alt?application=axeAPI", + "helpUrl": "https://dequeuniversity.com/rules/axe/3.0/image-alt?application=axeAPI", "nodes": [ { "impact": "critical", "html": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"57\">", "target": [ - "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(5)" + "img[height=\"\\35 7\"]" ], "failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Element has no title attribute or the title attribute is empty\n Element's default semantics were not overridden with role=\"presentation\"\n Element's default semantics were not overridden with role=\"none\"", "path": "3,HTML,1,BODY,5,IMG", @@ -1901,7 +2136,7 @@ "impact": "critical", "html": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"318\">", "target": [ - "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(6)" + "img[height=\"\\33 18\"]" ], "failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Element has no title attribute or the title attribute is empty\n Element's default semantics were not overridden with role=\"presentation\"\n Element's default semantics were not overridden with role=\"none\"", "path": "3,HTML,1,BODY,7,IMG", @@ -1909,13 +2144,13 @@ }, { "impact": "critical", - "html": "<img src=\"blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277\">", + "html": "<img src=\"blob:http://localhost:10200/0aaa0d4b-ccab-41ed-a3ad-6ce11479fcff\">", "target": [ - "body > img:nth-child(20)" + "img:nth-child(20)" ], "failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Element has no title attribute or the title attribute is empty\n Element's default semantics were not overridden with role=\"presentation\"\n Element's default semantics were not overridden with role=\"none\"", "path": "3,HTML,1,BODY,36,IMG", - "snippet": "<img src=\"blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277\">" + "snippet": "<img src=\"blob:http://localhost:10200/0aaa0d4b-ccab-41ed-a3ad-6ce11479fcff\">" } ] } @@ -1925,29 +2160,38 @@ "description": "Image elements do not have `[alt]` attributes", "helpText": "Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute.[Learn more](https://dequeuniversity.com/rules/axe/2.2/image-alt?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(5)", - "path": "3,HTML,1,BODY,5,IMG", - "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"57\">" + "node": { + "type": "node", + "selector": "img[height=\"\\35 7\"]", + "path": "3,HTML,1,BODY,5,IMG", + "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"57\">" + } }, { - "type": "node", - "selector": "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(6)", - "path": "3,HTML,1,BODY,7,IMG", - "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"318\">" + "node": { + "type": "node", + "selector": "img[height=\"\\33 18\"]", + "path": "3,HTML,1,BODY,7,IMG", + "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"318\">" + } }, { - "type": "node", - "selector": "body > img:nth-child(20)", - "path": "3,HTML,1,BODY,36,IMG", - "snippet": "<img src=\"blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277\">" + "node": { + "type": "node", + "selector": "img:nth-child(20)", + "path": "3,HTML,1,BODY,36,IMG", + "snippet": "<img src=\"blob:http://localhost:10200/0aaa0d4b-ccab-41ed-a3ad-6ce11479fcff\">" + } } ] } @@ -1981,13 +2225,13 @@ ], "description": "Ensures every form element has a label", "help": "Form elements must have labels", - "helpUrl": "https://dequeuniversity.com/rules/axe/2.6/label?application=axeAPI", + "helpUrl": "https://dequeuniversity.com/rules/axe/3.0/label?application=axeAPI", "nodes": [ { "impact": "critical", "html": "<input type=\"password\" onpaste=\"event.preventDefault();\">", "target": [ - "body > input[type=\"password\"]:nth-child(17)" + "input[onpaste=\"event\\.preventDefault\\(\\)\\;\"]" ], "failureSummary": "Fix any of the following:\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Form element does not have an implicit (wrapped) <label>\n Form element does not have an explicit <label>\n Element has no title attribute or the title attribute is empty", "path": "3,HTML,1,BODY,31,INPUT", @@ -1997,7 +2241,7 @@ "impact": "critical", "html": "<input type=\"password\">", "target": [ - "body > input[type=\"password\"]:nth-child(18)" + "input:nth-child(18)" ], "failureSummary": "Fix any of the following:\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Form element does not have an implicit (wrapped) <label>\n Form element does not have an explicit <label>\n Element has no title attribute or the title attribute is empty", "path": "3,HTML,1,BODY,33,INPUT", @@ -2007,7 +2251,7 @@ "impact": "critical", "html": "<input type=\"password\" onpaste=\"return false;\">", "target": [ - "body > input[type=\"password\"]:nth-child(19)" + "input[onpaste=\"return\\ false\\;\"]" ], "failureSummary": "Fix any of the following:\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Form element does not have an implicit (wrapped) <label>\n Form element does not have an explicit <label>\n Element has no title attribute or the title attribute is empty", "path": "3,HTML,1,BODY,35,INPUT", @@ -2021,29 +2265,38 @@ "description": "Form elements do not have associated labels", "helpText": "Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more](https://dequeuniversity.com/rules/axe/2.2/label?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "body > input[type=\"password\"]:nth-child(17)", - "path": "3,HTML,1,BODY,31,INPUT", - "snippet": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + "node": { + "type": "node", + "selector": "input[onpaste=\"event\\.preventDefault\\(\\)\\;\"]", + "path": "3,HTML,1,BODY,31,INPUT", + "snippet": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + } }, { - "type": "node", - "selector": "body > input[type=\"password\"]:nth-child(18)", - "path": "3,HTML,1,BODY,33,INPUT", - "snippet": "<input type=\"password\">" + "node": { + "type": "node", + "selector": "input:nth-child(18)", + "path": "3,HTML,1,BODY,33,INPUT", + "snippet": "<input type=\"password\">" + } }, { - "type": "node", - "selector": "body > input[type=\"password\"]:nth-child(19)", - "path": "3,HTML,1,BODY,35,INPUT", - "snippet": "<input type=\"password\" onpaste=\"return false;\">" + "node": { + "type": "node", + "selector": "input[onpaste=\"return\\ false\\;\"]", + "path": "3,HTML,1,BODY,35,INPUT", + "snippet": "<input type=\"password\" onpaste=\"return false;\">" + } } ] } @@ -2078,13 +2331,13 @@ ], "description": "Ensures links have discernible text", "help": "Links must have discernible text", - "helpUrl": "https://dequeuniversity.com/rules/axe/2.6/link-name?application=axeAPI", + "helpUrl": "https://dequeuniversity.com/rules/axe/3.0/link-name?application=axeAPI", "nodes": [ { "impact": "serious", "html": "<a href=\"javascript:void(0)\" target=\"_blank\"></a>", "target": [ - "body > a:nth-child(15)" + ":root" ], "failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Element's default semantics were not overridden with role=\"presentation\"\n Element's default semantics were not overridden with role=\"none\"", "path": "3,HTML,1,BODY,27,A", @@ -2094,7 +2347,7 @@ "impact": "serious", "html": "<a href=\"mailto:inbox@email.com\" target=\"_blank\"></a>", "target": [ - "body > a[href$=\"mailto:inbox@email.com\"]" + "a[href$=\"mailto:inbox@email.com\"]" ], "failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible\n Element's default semantics were not overridden with role=\"presentation\"\n Element's default semantics were not overridden with role=\"none\"", "path": "3,HTML,1,BODY,29,A", @@ -2108,23 +2361,30 @@ "description": "Links do not have a discernible name", "helpText": "Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn more](https://dequeuniversity.com/rules/axe/2.2/link-name?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "body > a:nth-child(15)", - "path": "3,HTML,1,BODY,27,A", - "snippet": "<a href=\"javascript:void(0)\" target=\"_blank\">" + "node": { + "type": "node", + "selector": ":root", + "path": "3,HTML,1,BODY,27,A", + "snippet": "<a href=\"javascript:void(0)\" target=\"_blank\">" + } }, { - "type": "node", - "selector": "body > a[href$=\"mailto:inbox@email.com\"]", - "path": "3,HTML,1,BODY,29,A", - "snippet": "<a href=\"mailto:inbox@email.com\" target=\"_blank\">" + "node": { + "type": "node", + "selector": "a[href$=\"mailto:inbox@email.com\"]", + "path": "3,HTML,1,BODY,29,A", + "snippet": "<a href=\"mailto:inbox@email.com\" target=\"_blank\">" + } } ] } @@ -2172,11 +2432,8 @@ "description": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5.", "helpText": "Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more](https://dequeuniversity.com/rules/axe/2.2/meta-viewport?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -2369,8 +2626,8 @@ }, "uses-long-cache-ttl": { "score": 0.91, - "displayValue": "11 assets found", - "rawValue": 103455, + "displayValue": "12 assets found", + "rawValue": 104276, "extendedInfo": { "value": { "results": [ @@ -2406,6 +2663,14 @@ "totalBytes": 1108, "wastedBytes": 1108 }, + { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "cacheControl": null, + "cacheLifetimeInSeconds": 0, + "cacheHitProbability": 0, + "totalBytes": 821, + "wastedBytes": 821 + }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", "cacheControl": null, @@ -2455,7 +2720,7 @@ "wastedBytes": 144 }, { - "url": "blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277", + "url": "blob:http://localhost:10200/0aaa0d4b-ccab-41ed-a3ad-6ce11479fcff", "cacheControl": null, "cacheLifetimeInSeconds": 0, "cacheHitProbability": 0, @@ -2463,7 +2728,7 @@ "wastedBytes": 0 } ], - "queryStringCount": 7 + "queryStringCount": 8 } }, "scoreDisplayMode": "numeric", @@ -2525,6 +2790,14 @@ "totalBytes": 1108, "wastedBytes": 1108 }, + { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "cacheControl": null, + "cacheLifetimeInSeconds": 0, + "cacheHitProbability": 0, + "totalBytes": 821, + "wastedBytes": 821 + }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", "cacheControl": null, @@ -2574,7 +2847,7 @@ "wastedBytes": 144 }, { - "url": "blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277", + "url": "blob:http://localhost:10200/0aaa0d4b-ccab-41ed-a3ad-6ce11479fcff", "cacheControl": null, "cacheLifetimeInSeconds": 0, "cacheHitProbability": 0, @@ -2583,69 +2856,69 @@ } ], "summary": { - "wastedBytes": 103455 + "wastedBytes": 104276 } } }, "total-byte-weight": { "score": 1, - "displayValue": "Total size was 157 KB", - "rawValue": 160738, + "displayValue": "Total size was 160 KB", + "rawValue": 164241, "extendedInfo": { "value": { "results": [ { "url": "http://localhost:10200/zone.js", "totalBytes": 71654, - "totalMs": 409.9376550703614 + "totalMs": 456.04234272746305 }, { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "totalBytes": 30174, - "totalMs": 172.62761051850677 + "totalBytes": 31042, + "totalMs": 197.56700816347876 }, { "url": "http://localhost:10200/dobetterweb/lighthouse-480x318.jpg", "totalBytes": 24741, - "totalMs": 141.54502922510693 + "totalMs": 157.46425323666736 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "totalBytes": 12640, - "totalMs": 72.31434337356418 + "totalBytes": 13472, + "totalMs": 85.74263043548696 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "totalBytes": 12640, - "totalMs": 72.31434337356418 + "totalBytes": 13472, + "totalMs": 85.74263043548696 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "totalBytes": 1703, - "totalMs": 9.74298471243511 + "totalMs": 10.83875442633865 }, { "url": "http://localhost:10200/dobetterweb/dbw_disabled.css?delay=200&isdisabled", "totalBytes": 1108, - "totalMs": 6.338947188125721 + "totalMs": 7.051873108856855 }, { - "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", "totalBytes": 821, - "totalMs": 4.696999676400015 + "totalMs": 5.225259767483283 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", "totalBytes": 821, - "totalMs": 4.696999676400015 + "totalMs": 5.225259767483283 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", "totalBytes": 821, - "totalMs": 4.696999676400015 + "totalMs": 5.225259767483283 } ], - "totalCompletedRequests": 18 + "totalCompletedRequests": 20 } }, "scoreDisplayMode": "numeric", @@ -2677,52 +2950,52 @@ { "url": "http://localhost:10200/zone.js", "totalBytes": 71654, - "totalMs": 409.9376550703614 + "totalMs": 456.04234272746305 }, { "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", - "totalBytes": 30174, - "totalMs": 172.62761051850677 + "totalBytes": 31042, + "totalMs": 197.56700816347876 }, { "url": "http://localhost:10200/dobetterweb/lighthouse-480x318.jpg", "totalBytes": 24741, - "totalMs": 141.54502922510693 + "totalMs": 157.46425323666736 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "totalBytes": 12640, - "totalMs": 72.31434337356418 + "totalBytes": 13472, + "totalMs": 85.74263043548696 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "totalBytes": 12640, - "totalMs": 72.31434337356418 + "totalBytes": 13472, + "totalMs": 85.74263043548696 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "totalBytes": 1703, - "totalMs": 9.74298471243511 + "totalMs": 10.83875442633865 }, { "url": "http://localhost:10200/dobetterweb/dbw_disabled.css?delay=200&isdisabled", "totalBytes": 1108, - "totalMs": 6.338947188125721 + "totalMs": 7.051873108856855 }, { - "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", "totalBytes": 821, - "totalMs": 4.696999676400015 + "totalMs": 5.225259767483283 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true", "totalBytes": 821, - "totalMs": 4.696999676400015 + "totalMs": 5.225259767483283 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", "totalBytes": 821, - "totalMs": 4.696999676400015 + "totalMs": 5.225259767483283 } ] } @@ -2867,19 +3140,19 @@ }, "uses-webp-images": { "score": 1, - "displayValue": "Potential savings of 8526 bytes", + "displayValue": "Potential savings of 9088 bytes", "rawValue": 0, "extendedInfo": { "value": { "wastedMs": 0, - "wastedKb": 8, + "wastedKb": 9, "results": [ { "url": "http://localhost:10200/dobetterweb/lighthouse-480x318.jpg", "fromProtocol": true, "isCrossOrigin": false, "totalBytes": 24620, - "wastedBytes": 8526 + "wastedBytes": 9088 } ] } @@ -2923,12 +3196,12 @@ "fromProtocol": true, "isCrossOrigin": false, "totalBytes": 24620, - "wastedBytes": 8526 + "wastedBytes": 9088 } ], "summary": { "wastedMs": 0, - "wastedBytes": 8526 + "wastedBytes": 9088 } } }, @@ -2960,12 +3233,12 @@ }, "uses-text-compression": { "score": 0.9, - "displayValue": "Potential savings of 64646 bytes", + "displayValue": "Potential savings of 65132 bytes", "rawValue": 150, "extendedInfo": { "value": { "wastedMs": 150, - "wastedKb": 63, + "wastedKb": 64, "results": [ { "url": "http://localhost:10200/zone.js", @@ -2974,8 +3247,8 @@ }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "totalBytes": 12519, - "wastedBytes": 8442 + "totalBytes": 13351, + "wastedBytes": 8928 } ] } @@ -3016,13 +3289,13 @@ }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "totalBytes": 12519, - "wastedBytes": 8442 + "totalBytes": 13351, + "wastedBytes": 8928 } ], "summary": { "wastedMs": 150, - "wastedBytes": 64646 + "wastedBytes": 65132 } } }, @@ -3064,26 +3337,14 @@ }, "dom-size": { "score": 1, - "displayValue": "53 nodes", - "rawValue": 53, + "displayValue": "56 nodes", + "rawValue": 56, "extendedInfo": { "value": [ { - "title": "Total DOM Nodes", - "value": "53", - "target": "< 1,500 nodes" - }, - { - "title": "DOM Depth", - "value": "4", - "snippet": "html >\n body >\n div >\n h2", - "target": "< 32" - }, - { - "title": "Maximum Children", - "value": "22", - "snippet": "Element with most children:\nbody", - "target": "< 60 nodes" + "totalNodes": "56", + "depth": "4 (html > body > div > h2)", + "width": "23 (html > head)" } ] }, @@ -3092,28 +3353,29 @@ "description": "Avoids an excessive DOM size", "helpText": "Browser engineers recommend pages contain fewer than ~1,500 DOM nodes. The sweet spot is a tree depth < 32 elements and fewer than 60 children/parent element. A large DOM can increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://developers.google.com/web/fundamentals/performance/rendering/).", "details": { - "type": "cards", - "header": { - "type": "text", - "text": "View details" - }, - "items": [ + "type": "table", + "headings": [ { - "title": "Total DOM Nodes", - "value": "53", - "target": "< 1,500 nodes" + "key": "totalNodes", + "itemType": "text", + "text": "Total DOM Nodes" }, { - "title": "DOM Depth", - "value": "4", - "snippet": "html >\n body >\n div >\n h2", - "target": "< 32" + "key": "depth", + "itemType": "text", + "text": "DOM Depth" }, { - "title": "Maximum Children", - "value": "22", - "snippet": "Element with most children:\nbody", - "target": "< 60 nodes" + "key": "width", + "itemType": "text", + "text": "Maximum Children" + } + ], + "items": [ + { + "totalNodes": "56", + "depth": "4 (html > body > div > h2)", + "width": "23 (html > head)" } ] } @@ -3197,54 +3459,54 @@ "extendedInfo": { "value": [ { - "label": "line: 277", + "label": "line: 293", "source": "violation", "level": "verbose", "text": "Only request geolocation information in response to a user gesture.", - "timestamp": 1519974785839.5, + "timestamp": 1521219881311.89, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 277, + "lineNumber": 293, "stackTrace": { "callFrames": [ { "functionName": "geolocationOnStartTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 277, + "lineNumber": 293, "columnNumber": 24 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 345, + "lineNumber": 361, "columnNumber": 2 } ] } }, { - "label": "line: 281", + "label": "line: 297", "source": "violation", "level": "verbose", "text": "Only request geolocation information in response to a user gesture.", - "timestamp": 1519974785840.8, + "timestamp": 1521219881313.21, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 281, + "lineNumber": 297, "stackTrace": { "callFrames": [ { "functionName": "geolocationOnStartTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 281, + "lineNumber": 297, "columnNumber": 40 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 345, + "lineNumber": 361, "columnNumber": 2 } ] @@ -3272,54 +3534,54 @@ ], "items": [ { - "label": "line: 277", + "label": "line: 293", "source": "violation", "level": "verbose", "text": "Only request geolocation information in response to a user gesture.", - "timestamp": 1519974785839.5, + "timestamp": 1521219881311.89, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 277, + "lineNumber": 293, "stackTrace": { "callFrames": [ { "functionName": "geolocationOnStartTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 277, + "lineNumber": 293, "columnNumber": 24 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 345, + "lineNumber": 361, "columnNumber": 2 } ] } }, { - "label": "line: 281", + "label": "line: 297", "source": "violation", "level": "verbose", "text": "Only request geolocation information in response to a user gesture.", - "timestamp": 1519974785840.8, + "timestamp": 1521219881313.21, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 281, + "lineNumber": 297, "stackTrace": { "callFrames": [ { "functionName": "geolocationOnStartTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 281, + "lineNumber": 297, "columnNumber": 40 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 345, + "lineNumber": 361, "columnNumber": 2 } ] @@ -3330,30 +3592,35 @@ }, "link-blocking-first-paint": { "score": 0, - "displayValue": "4 resources delayed first paint by 2,214 ms", - "rawValue": 2214, + "displayValue": "5 resources delayed first paint by 2,211 ms", + "rawValue": 2211, "extendedInfo": { "value": { "results": [ { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", "totalBytes": 821, - "wastedMs": 2213.8710000144783 + "wastedMs": 2210.531999997329 + }, + { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "totalBytes": 821, + "wastedMs": 1517.5140000064857 }, { "url": "http://localhost:10200/dobetterweb/dbw_partial_a.html?delay=200", "totalBytes": 736, - "wastedMs": 593.0220000154804 + "wastedMs": 1145.4589999921154 }, { "url": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", "totalBytes": 139, - "wastedMs": 577.7950000192504 + "wastedMs": 575.3919999988284 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=100", "totalBytes": 821, - "wastedMs": 569.1630000073928 + "wastedMs": 565.4439999925671 } ] } @@ -3389,26 +3656,31 @@ { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2200", "totalBytes": 821, - "wastedMs": 2213.8710000144783 + "wastedMs": 2210.531999997329 + }, + { + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped", + "totalBytes": 821, + "wastedMs": 1517.5140000064857 }, { "url": "http://localhost:10200/dobetterweb/dbw_partial_a.html?delay=200", "totalBytes": 736, - "wastedMs": 593.0220000154804 + "wastedMs": 1145.4589999921154 }, { "url": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", "totalBytes": 139, - "wastedMs": 577.7950000192504 + "wastedMs": 575.3919999988284 }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=100", "totalBytes": 821, - "wastedMs": 569.1630000073928 + "wastedMs": 565.4439999925671 } ], "summary": { - "wastedMs": 2214 + "wastedMs": 2211 } } }, @@ -3419,81 +3691,81 @@ "extendedInfo": { "value": [ { - "label": "line: 178", + "label": "line: 194", "source": "violation", "level": "verbose", "text": "Avoid using document.write().", - "timestamp": 1519974785808.58, + "timestamp": 1521219881289.64, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 178, + "lineNumber": 194, "stackTrace": { "callFrames": [ { "functionName": "documentWriteTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 178, + "lineNumber": 194, "columnNumber": 11 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 339, + "lineNumber": 355, "columnNumber": 2 } ] } }, { - "label": "line: 179", + "label": "line: 195", "source": "violation", "level": "verbose", "text": "Avoid using document.write().", - "timestamp": 1519974785809.4, + "timestamp": 1521219881290.13, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 179, + "lineNumber": 195, "stackTrace": { "callFrames": [ { "functionName": "documentWriteTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 179, + "lineNumber": 195, "columnNumber": 11 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 339, + "lineNumber": 355, "columnNumber": 2 } ] } }, { - "label": "line: 180", + "label": "line: 196", "source": "violation", "level": "verbose", "text": "Avoid using document.write().", - "timestamp": 1519974785810.25, + "timestamp": 1521219881290.67, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 180, + "lineNumber": 196, "stackTrace": { "callFrames": [ { "functionName": "documentWriteTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 180, + "lineNumber": 196, "columnNumber": 11 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 339, + "lineNumber": 355, "columnNumber": 2 } ] @@ -3521,81 +3793,81 @@ ], "items": [ { - "label": "line: 178", + "label": "line: 194", "source": "violation", "level": "verbose", "text": "Avoid using document.write().", - "timestamp": 1519974785808.58, + "timestamp": 1521219881289.64, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 178, + "lineNumber": 194, "stackTrace": { "callFrames": [ { "functionName": "documentWriteTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 178, + "lineNumber": 194, "columnNumber": 11 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 339, + "lineNumber": 355, "columnNumber": 2 } ] } }, { - "label": "line: 179", + "label": "line: 195", "source": "violation", "level": "verbose", "text": "Avoid using document.write().", - "timestamp": 1519974785809.4, + "timestamp": 1521219881290.13, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 179, + "lineNumber": 195, "stackTrace": { "callFrames": [ { "functionName": "documentWriteTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 179, + "lineNumber": 195, "columnNumber": 11 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 339, + "lineNumber": 355, "columnNumber": 2 } ] } }, { - "label": "line: 180", + "label": "line: 196", "source": "violation", "level": "verbose", "text": "Avoid using document.write().", - "timestamp": 1519974785810.25, + "timestamp": 1521219881290.67, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 180, + "lineNumber": 196, "stackTrace": { "callFrames": [ { "functionName": "documentWriteTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 180, + "lineNumber": 196, "columnNumber": 11 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 339, + "lineNumber": 355, "columnNumber": 2 } ] @@ -3612,20 +3884,20 @@ "value": { "results": [ { - "line": 206, + "line": 222, "col": 50, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "section#touchmove-section.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted on element');\n })\n\n", - "label": "line: 206, col: 50" + "label": "line: 222, col: 50" }, { - "line": 200, + "line": 216, "col": 61, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "body.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted');\n })\n\n", - "label": "line: 200, col: 61" + "label": "line: 216, col: 61" }, { "line": 20, @@ -3636,28 +3908,28 @@ "label": "line: 20, col: 56" }, { - "line": 190, + "line": 206, "col": 56, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "document.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted');\n })\n\n", - "label": "line: 190, col: 56" + "label": "line: 206, col: 56" }, { - "line": 195, + "line": 211, "col": 55, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeRemoved", "pre": "document.addEventListener('DOMNodeRemoved', function(e) {\n console.log('DOMNodeRemoved');\n })\n\n", - "label": "line: 195, col: 55" + "label": "line: 211, col: 55" }, { - "line": 211, + "line": 227, "col": 54, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "window.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted');\n })\n\n", - "label": "line: 211, col: 54" + "label": "line: 227, col: 54" } ] } @@ -3697,20 +3969,20 @@ ], "items": [ { - "line": 206, + "line": 222, "col": 50, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "section#touchmove-section.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted on element');\n })\n\n", - "label": "line: 206, col: 50" + "label": "line: 222, col: 50" }, { - "line": 200, + "line": 216, "col": 61, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "body.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted');\n })\n\n", - "label": "line: 200, col: 61" + "label": "line: 216, col: 61" }, { "line": 20, @@ -3721,28 +3993,28 @@ "label": "line: 20, col: 56" }, { - "line": 190, + "line": 206, "col": 56, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "document.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted');\n })\n\n", - "label": "line: 190, col: 56" + "label": "line: 206, col: 56" }, { - "line": 195, + "line": 211, "col": 55, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeRemoved", "pre": "document.addEventListener('DOMNodeRemoved', function(e) {\n console.log('DOMNodeRemoved');\n })\n\n", - "label": "line: 195, col: 55" + "label": "line: 211, col: 55" }, { - "line": 211, + "line": 227, "col": 54, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", "type": "DOMNodeInserted", "pre": "window.addEventListener('DOMNodeInserted', function(e) {\n console.log('DOMNodeInserted');\n })\n\n", - "label": "line: 211, col: 54" + "label": "line: 227, col: 54" } ] } @@ -3883,27 +4155,27 @@ "extendedInfo": { "value": [ { - "label": "line: 287", + "label": "line: 303", "source": "violation", "level": "verbose", "text": "Only request notification permission in response to a user gesture.", - "timestamp": 1519974785841.72, + "timestamp": 1521219881314.32, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 287, + "lineNumber": 303, "stackTrace": { "callFrames": [ { "functionName": "notificationOnStartTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 287, + "lineNumber": 303, "columnNumber": 15 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 346, + "lineNumber": 362, "columnNumber": 2 } ] @@ -3931,27 +4203,27 @@ ], "items": [ { - "label": "line: 287", + "label": "line: 303", "source": "violation", "level": "verbose", "text": "Only request notification permission in response to a user gesture.", - "timestamp": 1519974785841.72, + "timestamp": 1521219881314.32, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 287, + "lineNumber": 303, "stackTrace": { "callFrames": [ { "functionName": "notificationOnStartTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 287, + "lineNumber": 303, "columnNumber": 15 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 346, + "lineNumber": 362, "columnNumber": 2 } ] @@ -3979,34 +4251,46 @@ "description": "Prevents users to paste into password fields", "helpText": "Preventing password pasting undermines good security policy. [Learn more](https://www.ncsc.gov.uk/blog-post/let-them-paste-passwords)", "details": { - "type": "list", - "header": { - "type": "text", - "value": "Password inputs that prevent pasting into" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "text", - "value": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + "node": { + "type": "node", + "snippet": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + } }, { - "type": "text", - "value": "<input type=\"password\" onpaste=\"return false;\">" + "node": { + "type": "node", + "snippet": "<input type=\"password\" onpaste=\"return false;\">" + } } ] } }, "script-blocking-first-paint": { "score": 0, - "displayValue": "1 resource delayed first paint by 1,148 ms", - "rawValue": 1148, + "displayValue": "2 resources delayed first paint by 6,154 ms", + "rawValue": 6154, "extendedInfo": { "value": { "results": [ + { + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000", + "totalBytes": 146, + "wastedMs": 6153.537999998662 + }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "totalBytes": 1703, - "wastedMs": 1148.00399998785 + "wastedMs": 1709.4450000004144 } ] } @@ -4039,20 +4323,25 @@ } ], "items": [ + { + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000", + "totalBytes": 146, + "wastedMs": 6153.537999998662 + }, { "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "totalBytes": 1703, - "wastedMs": 1148.00399998785 + "wastedMs": 1709.4450000004144 } ], "summary": { - "wastedMs": 1148 + "wastedMs": 6154 } } }, "uses-http2": { "score": 0, - "displayValue": "16 requests were not handled over HTTP/2", + "displayValue": "18 requests were not handled over HTTP/2", "rawValue": false, "extendedInfo": { "value": { @@ -4089,6 +4378,10 @@ "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/dbw_partial_b.html?delay=200&isasync" }, + { + "protocol": "http/1.1", + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped" + }, { "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true" @@ -4101,6 +4394,10 @@ "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/empty_module.js?delay=500" }, + { + "protocol": "http/1.1", + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000" + }, { "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/lighthouse-480x318.jpg" @@ -4175,6 +4472,10 @@ "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/dbw_partial_b.html?delay=200&isasync" }, + { + "protocol": "http/1.1", + "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&capped" + }, { "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=3000&async=true" @@ -4187,6 +4488,10 @@ "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/empty_module.js?delay=500" }, + { + "protocol": "http/1.1", + "url": "http://localhost:10200/dobetterweb/fcp-delayer.js?delay=5000" + }, { "protocol": "http/1.1", "url": "http://localhost:10200/dobetterweb/lighthouse-480x318.jpg" @@ -4221,21 +4526,21 @@ "source": "violation", "level": "verbose", "text": "Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952", - "timestamp": 1519974785779.5, + "timestamp": 1521219877338.55, "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "lineNumber": 26, "stackTrace": { "callFrames": [ { "functionName": "", - "scriptId": "25", + "scriptId": "26", "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "lineNumber": 26, "columnNumber": 11 }, { "functionName": "", - "scriptId": "25", + "scriptId": "26", "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "lineNumber": 39, "columnNumber": 2 @@ -4244,54 +4549,54 @@ } }, { - "label": "line: 222", + "label": "line: 238", "source": "violation", "level": "verbose", "text": "Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952", - "timestamp": 1519974785837.14, + "timestamp": 1521219881310.36, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 222, + "lineNumber": 238, "stackTrace": { "callFrames": [ { "functionName": "passiveEventsListenerTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 222, + "lineNumber": 238, "columnNumber": 9 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 344, + "lineNumber": 360, "columnNumber": 2 } ] } }, { - "label": "line: 248", + "label": "line: 264", "source": "violation", "level": "verbose", "text": "Added non-passive event listener to a scroll-blocking 'touchmove' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952", - "timestamp": 1519974785837.83, + "timestamp": 1521219881311.05, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 248, + "lineNumber": 264, "stackTrace": { "callFrames": [ { "functionName": "passiveEventsListenerTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 248, + "lineNumber": 264, "columnNumber": 5 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 344, + "lineNumber": 360, "columnNumber": 2 } ] @@ -4323,21 +4628,21 @@ "source": "violation", "level": "verbose", "text": "Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952", - "timestamp": 1519974785779.5, + "timestamp": 1521219877338.55, "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "lineNumber": 26, "stackTrace": { "callFrames": [ { "functionName": "", - "scriptId": "25", + "scriptId": "26", "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "lineNumber": 26, "columnNumber": 11 }, { "functionName": "", - "scriptId": "25", + "scriptId": "26", "url": "http://localhost:10200/dobetterweb/dbw_tester.js", "lineNumber": 39, "columnNumber": 2 @@ -4346,54 +4651,54 @@ } }, { - "label": "line: 222", + "label": "line: 238", "source": "violation", "level": "verbose", "text": "Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952", - "timestamp": 1519974785837.14, + "timestamp": 1521219881310.36, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 222, + "lineNumber": 238, "stackTrace": { "callFrames": [ { "functionName": "passiveEventsListenerTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 222, + "lineNumber": 238, "columnNumber": 9 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 344, + "lineNumber": 360, "columnNumber": 2 } ] } }, { - "label": "line: 248", + "label": "line: 264", "source": "violation", "level": "verbose", "text": "Added non-passive event listener to a scroll-blocking 'touchmove' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952", - "timestamp": 1519974785837.83, + "timestamp": 1521219881311.05, "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 248, + "lineNumber": 264, "stackTrace": { "callFrames": [ { "functionName": "passiveEventsListenerTest", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 248, + "lineNumber": 264, "columnNumber": 5 }, { "functionName": "", - "scriptId": "29", + "scriptId": "30", "url": "http://localhost:10200/dobetterweb/dbw_tester.html", - "lineNumber": 344, + "lineNumber": 360, "columnNumber": 2 } ] @@ -4478,15 +4783,18 @@ } }, "is-crawlable": { - "score": 0, + "score": 1, "displayValue": "", - "rawValue": null, - "error": true, - "debugString": "Audit error: Required RobotsTxt gatherer did not run.", + "rawValue": true, "scoreDisplayMode": "binary", "name": "is-crawlable", - "description": "Page is blocked from indexing", - "helpText": "Search engines are unable to include your pages in search results if they don't have permission to crawl them. [Learn more](https://developers.google.com/lighthouse/audits/indexing)." + "description": "Page isn’t blocked from indexing", + "helpText": "Search engines are unable to include your pages in search results if they don't have permission to crawl them. [Learn more](https://developers.google.com/lighthouse/audits/indexing).", + "details": { + "type": "table", + "headings": [], + "items": [] + } }, "hreflang": { "score": 1, @@ -4716,7 +5024,7 @@ } ], "id": "performance", - "score": 0.73 + "score": 0.47 }, { "name": "Progressive Web App", @@ -5156,7 +5464,7 @@ } ], "id": "seo", - "score": 0.78 + "score": 0.89 } ], "reportGroups": { @@ -5230,6 +5538,6 @@ } }, "timing": { - "total": 1117 + "total": 19418 } } From c9cc2a55ee819b659e691c6bf0fe96defefda6fd Mon Sep 17 00:00:00 2001 From: Patrick Hulce <patrick.hulce@gmail.com> Date: Fri, 16 Mar 2018 14:03:32 -0700 Subject: [PATCH 2/5] remove extra dom size tests --- .../test/fixtures/dobetterweb/domtester.html | 103 ------------------ .../dobetterweb/dbw-expectations.js | 88 --------------- .../test/audits/dobetterweb/dom-size-test.js | 1 - 3 files changed, 192 deletions(-) delete mode 100644 lighthouse-cli/test/fixtures/dobetterweb/domtester.html diff --git a/lighthouse-cli/test/fixtures/dobetterweb/domtester.html b/lighthouse-cli/test/fixtures/dobetterweb/domtester.html deleted file mode 100644 index dbbf2694e0d4..000000000000 --- a/lighthouse-cli/test/fixtures/dobetterweb/domtester.html +++ /dev/null @@ -1,103 +0,0 @@ -<!doctype html> -<!-- - * Copyright 2017 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ---> -<html> -<head> - <title>DoBetterWeb - DOM size tester - - - - -
-
-
-
6
-
-
-
-
7
-
-
-
- -
-
-
-
-
4
-
5
-
3
-
-
-
-
-
- - - \ No newline at end of file diff --git a/lighthouse-cli/test/smokehouse/dobetterweb/dbw-expectations.js b/lighthouse-cli/test/smokehouse/dobetterweb/dbw-expectations.js index 69c346a7e828..897cdabfe772 100644 --- a/lighthouse-cli/test/smokehouse/dobetterweb/dbw-expectations.js +++ b/lighthouse-cli/test/smokehouse/dobetterweb/dbw-expectations.js @@ -186,94 +186,6 @@ module.exports = [ }, }, }, - }, { - initialUrl: 'http://localhost:10200/dobetterweb/domtester.html?smallDOM', - url: 'http://localhost:10200/dobetterweb/domtester.html?smallDOM', - audits: { - 'dom-size': { - score: 1, - extendedInfo: { - value: { - 0: {value: '1,324'}, - 1: {value: '7'}, - 2: {value: '1,303'}, - }, - }, - details: { - items: { - 0: {value: '1,324'}, - 1: {value: '7'}, - 2: {value: '1,303'}, - }, - }, - }, - }, - }, { - initialUrl: 'http://localhost:10200/dobetterweb/domtester.html?largeDOM&withShadowDOM', - url: 'http://localhost:10200/dobetterweb/domtester.html?largeDOM&withShadowDOM', - audits: { - 'dom-size': { - score: 0, - extendedInfo: { - value: { - 0: {value: '6,037'}, - 1: {value: '9'}, - 2: {value: '6,003'}, - }, - }, - details: { - items: { - 0: {value: '6,037'}, - 1: {value: '9'}, - 2: {value: '6,003'}, - }, - }, - }, - }, - }, { - initialUrl: 'http://localhost:10200/dobetterweb/domtester.html?withShadowDOM', - url: 'http://localhost:10200/dobetterweb/domtester.html?withShadowDOM', - audits: { - 'dom-size': { - score: 1, - extendedInfo: { - value: { - 0: {value: '37'}, - 1: {value: '9'}, - 2: {value: '9'}, - }, - }, - details: { - items: { - 0: {value: '37'}, - 1: {value: '9'}, - 2: {value: '9'}, - }, - }, - }, - }, - }, { - initialUrl: 'http://localhost:10200/dobetterweb/domtester.html?ShadowRootWithManyChildren', - url: 'http://localhost:10200/dobetterweb/domtester.html?ShadowRootWithManyChildren', - audits: { - 'dom-size': { - score: 1, - extendedInfo: { - value: { - 0: {value: '33'}, - 1: {value: '7'}, - 2: {value: '9'}, - }, - }, - details: { - items: { - 0: {value: '33'}, - 1: {value: '7'}, - 2: {value: '9'}, - }, - }, - }, - }, }, { initialUrl: 'http://localhost:10200/online-only.html', url: 'http://localhost:10200/online-only.html', diff --git a/lighthouse-core/test/audits/dobetterweb/dom-size-test.js b/lighthouse-core/test/audits/dobetterweb/dom-size-test.js index dcd1b2004ed5..3adca6c6ecfe 100644 --- a/lighthouse-core/test/audits/dobetterweb/dom-size-test.js +++ b/lighthouse-core/test/audits/dobetterweb/dom-size-test.js @@ -20,7 +20,6 @@ describe('Num DOM nodes audit', () => { }, }; - const snippet = ''; it('calculates score hitting top of distribution', () => { const auditResult = DOMSize.audit(artifact); assert.equal(auditResult.score, 1); From aa2827895bcb38d4c2eb77372a809b35efbcb072 Mon Sep 17 00:00:00 2001 From: Patrick Hulce Date: Fri, 16 Mar 2018 17:16:24 -0700 Subject: [PATCH 3/5] feedback --- lighthouse-core/audits/dobetterweb/dom-size.js | 13 ++++++++----- .../gather/gatherers/dobetterweb/domstats.js | 14 ++++++++++++++ .../test/audits/dobetterweb/dom-size-test.js | 4 ++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lighthouse-core/audits/dobetterweb/dom-size.js b/lighthouse-core/audits/dobetterweb/dom-size.js index b423ebf3cc64..6499ee118c43 100644 --- a/lighthouse-core/audits/dobetterweb/dom-size.js +++ b/lighthouse-core/audits/dobetterweb/dom-size.js @@ -54,8 +54,6 @@ class DOMSize extends Audit { */ static audit(artifacts) { const stats = artifacts.DOMStats; - const depthSnippet = stats.depth.pathToElement.join(' > '); - const widthSnippet = stats.width.pathToElement.join(' > '); // Use the CDF of a log-normal distribution for scoring. // <= 1500: score≈1 @@ -69,15 +67,20 @@ class DOMSize extends Audit { const headings = [ {key: 'totalNodes', itemType: 'text', text: 'Total DOM Nodes'}, - {key: 'depth', itemType: 'text', text: 'DOM Depth'}, + {key: 'depth', itemType: 'text', text: 'Maximum DOM Depth'}, {key: 'width', itemType: 'text', text: 'Maximum Children'}, ]; const items = [ { totalNodes: Util.formatNumber(stats.totalDOMNodes), - depth: `${Util.formatNumber(stats.depth.max)} (${depthSnippet})`, - width: `${Util.formatNumber(stats.width.max)} (${widthSnippet})`, + depth: Util.formatNumber(stats.depth.max), + width: Util.formatNumber(stats.width.max), + }, + { + totalNodes: '', + depth: stats.depth.snippet, + width: stats.width.snippet, }, ]; diff --git a/lighthouse-core/gather/gatherers/dobetterweb/domstats.js b/lighthouse-core/gather/gatherers/dobetterweb/domstats.js index 9778bdd24ca5..8068ec2606f4 100644 --- a/lighthouse-core/gather/gatherers/dobetterweb/domstats.js +++ b/lighthouse-core/gather/gatherers/dobetterweb/domstats.js @@ -15,6 +15,17 @@ const Gatherer = require('../gatherer'); +/** + * Gets the opening tag text of the given node. + * @param {!Node} + * @return {string} + */ +function getOuterHTMLSnippet(node) { + const reOpeningTag = /^.*?>/; + const match = node.outerHTML.match(reOpeningTag); + return match && match[0]; +} + /** * Constructs a pretty label from element's selectors. For example, given *
, returns 'div#myid.myclass'. @@ -118,10 +129,12 @@ function getDOMStats(element, deep=true) { depth: { max: result.maxDepth, pathToElement: elementPathInDOM(deepestNode), + snippet: getOuterHTMLSnippet(deepestNode), }, width: { max: result.maxWidth, pathToElement: elementPathInDOM(parentWithMostChildren), + snippet: getOuterHTMLSnippet(parentWithMostChildren), }, }; } @@ -133,6 +146,7 @@ class DOMStats extends Gatherer { */ afterPass(options) { const expression = `(function() { + ${getOuterHTMLSnippet.toString()}; ${createSelectorsLabel.toString()}; ${elementPathInDOM.toString()}; return (${getDOMStats.toString()}(document.documentElement)); diff --git a/lighthouse-core/test/audits/dobetterweb/dom-size-test.js b/lighthouse-core/test/audits/dobetterweb/dom-size-test.js index 3adca6c6ecfe..a0eb9572c889 100644 --- a/lighthouse-core/test/audits/dobetterweb/dom-size-test.js +++ b/lighthouse-core/test/audits/dobetterweb/dom-size-test.js @@ -26,8 +26,8 @@ describe('Num DOM nodes audit', () => { assert.equal(auditResult.rawValue, numNodes); assert.equal(auditResult.displayValue, `${numNodes.toLocaleString()} nodes`); assert.equal(auditResult.details.items[0].totalNodes, numNodes.toLocaleString()); - assert.equal(auditResult.details.items[0].depth, `1 (html > body > div > span)`); - assert.equal(auditResult.details.items[0].width, `2 (html > body)`); + assert.equal(auditResult.details.items[0].depth, '1'); + assert.equal(auditResult.details.items[0].width, '2'); }); it('calculates score hitting mid distribution', () => { From 0941df8631a2ad7563559a8d968e2ebeb411620a Mon Sep 17 00:00:00 2001 From: Patrick Hulce Date: Wed, 21 Mar 2018 13:32:43 -0700 Subject: [PATCH 4/5] rebase fixtures --- lighthouse-core/test/results/sample_v2.json | 305 +++++++++++--------- 1 file changed, 167 insertions(+), 138 deletions(-) diff --git a/lighthouse-core/test/results/sample_v2.json b/lighthouse-core/test/results/sample_v2.json index 65124d657ac0..e9268ecb279b 100644 --- a/lighthouse-core/test/results/sample_v2.json +++ b/lighthouse-core/test/results/sample_v2.json @@ -23,15 +23,17 @@ "description": "Does not use HTTPS", "helpText": "All sites should be protected with HTTPS, even ones that don't handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/https).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "Insecure URLs:" - }, + "type": "table", + "headings": [ + { + "key": "url", + "itemType": "url", + "text": "Insecure URL" + } + ], "items": [ { - "type": "url", - "value": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" + "url": "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" } ] } @@ -1746,11 +1748,8 @@ "description": "The page contains a heading, skip link, or landmark region", "helpText": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more](https://dequeuniversity.com/rules/axe/2.2/bypass?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -1799,23 +1798,30 @@ "description": "Background and foreground colors do not have a sufficient contrast ratio.", "helpText": "Low-contrast text is difficult or impossible for many users to read. [Learn more](https://dequeuniversity.com/rules/axe/2.2/color-contrast?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "div > h2", - "path": "3,HTML,1,BODY,0,DIV,0,H2", - "snippet": "

" + "node": { + "type": "node", + "selector": "div > h2", + "path": "3,HTML,1,BODY,0,DIV,0,H2", + "snippet": "

" + } }, { - "type": "node", - "selector": "div > span", - "path": "3,HTML,1,BODY,0,DIV,1,SPAN", - "snippet": "" + "node": { + "type": "node", + "selector": "div > span", + "path": "3,HTML,1,BODY,0,DIV,1,SPAN", + "snippet": "" + } } ] } @@ -1852,11 +1858,8 @@ "description": "Document has a `` element", "helpText": "The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/title).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -1870,11 +1873,8 @@ "description": "`[id]` attributes on the page are unique", "helpText": "The value of an id attribute must be unique to prevent other instances from being overlooked by assistive technologies. [Learn more](https://dequeuniversity.com/rules/axe/2.2/duplicate-id?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -1924,17 +1924,22 @@ "description": "`<html>` element does not have a `[lang]` attribute", "helpText": "If a page doesn't specify a lang attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more](https://dequeuniversity.com/rules/axe/2.2/html-lang?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "html", - "path": "3,HTML", - "snippet": "<html manifest=\"clock.appcache\">" + "node": { + "type": "node", + "selector": "html", + "path": "3,HTML", + "snippet": "<html manifest=\"clock.appcache\">" + } } ] } @@ -2007,29 +2012,38 @@ "description": "Image elements do not have `[alt]` attributes", "helpText": "Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute.[Learn more](https://dequeuniversity.com/rules/axe/2.2/image-alt?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(5)", - "path": "3,HTML,1,BODY,5,IMG", - "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"57\">" + "node": { + "type": "node", + "selector": "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(5)", + "path": "3,HTML,1,BODY,5,IMG", + "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"57\">" + } }, { - "type": "node", - "selector": "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(6)", - "path": "3,HTML,1,BODY,7,IMG", - "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"318\">" + "node": { + "type": "node", + "selector": "body > img[src$=\"lighthouse-480x318.jpg\"]:nth-child(6)", + "path": "3,HTML,1,BODY,7,IMG", + "snippet": "<img src=\"lighthouse-480x318.jpg\" width=\"480\" height=\"318\">" + } }, { - "type": "node", - "selector": "body > img:nth-child(20)", - "path": "3,HTML,1,BODY,36,IMG", - "snippet": "<img src=\"blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277\">" + "node": { + "type": "node", + "selector": "body > img:nth-child(20)", + "path": "3,HTML,1,BODY,36,IMG", + "snippet": "<img src=\"blob:http://localhost:10200/ae0eac03-ab9b-4a6a-b299-f5212153e277\">" + } } ] } @@ -2103,29 +2117,38 @@ "description": "Form elements do not have associated labels", "helpText": "Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more](https://dequeuniversity.com/rules/axe/2.2/label?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "body > input[type=\"password\"]:nth-child(17)", - "path": "3,HTML,1,BODY,31,INPUT", - "snippet": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + "node": { + "type": "node", + "selector": "body > input[type=\"password\"]:nth-child(17)", + "path": "3,HTML,1,BODY,31,INPUT", + "snippet": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + } }, { - "type": "node", - "selector": "body > input[type=\"password\"]:nth-child(18)", - "path": "3,HTML,1,BODY,33,INPUT", - "snippet": "<input type=\"password\">" + "node": { + "type": "node", + "selector": "body > input[type=\"password\"]:nth-child(18)", + "path": "3,HTML,1,BODY,33,INPUT", + "snippet": "<input type=\"password\">" + } }, { - "type": "node", - "selector": "body > input[type=\"password\"]:nth-child(19)", - "path": "3,HTML,1,BODY,35,INPUT", - "snippet": "<input type=\"password\" onpaste=\"return false;\">" + "node": { + "type": "node", + "selector": "body > input[type=\"password\"]:nth-child(19)", + "path": "3,HTML,1,BODY,35,INPUT", + "snippet": "<input type=\"password\" onpaste=\"return false;\">" + } } ] } @@ -2190,23 +2213,30 @@ "description": "Links do not have a discernible name", "helpText": "Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn more](https://dequeuniversity.com/rules/axe/2.2/link-name?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "node", - "selector": "body > a:nth-child(15)", - "path": "3,HTML,1,BODY,27,A", - "snippet": "<a href=\"javascript:void(0)\" target=\"_blank\">" + "node": { + "type": "node", + "selector": "body > a:nth-child(15)", + "path": "3,HTML,1,BODY,27,A", + "snippet": "<a href=\"javascript:void(0)\" target=\"_blank\">" + } }, { - "type": "node", - "selector": "body > a[href$=\"mailto:inbox@email.com\"]", - "path": "3,HTML,1,BODY,29,A", - "snippet": "<a href=\"mailto:inbox@email.com\" target=\"_blank\">" + "node": { + "type": "node", + "selector": "body > a[href$=\"mailto:inbox@email.com\"]", + "path": "3,HTML,1,BODY,29,A", + "snippet": "<a href=\"mailto:inbox@email.com\" target=\"_blank\">" + } } ] } @@ -2254,11 +2284,8 @@ "description": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5.", "helpText": "Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more](https://dequeuniversity.com/rules/axe/2.2/meta-viewport?application=lighthouse).", "details": { - "type": "list", - "header": { - "type": "text", - "text": "View failing elements" - }, + "type": "table", + "headings": [], "items": [] } }, @@ -3151,21 +3178,12 @@ "extendedInfo": { "value": [ { - "title": "Total DOM Nodes", - "value": "53", - "target": "< 1,500 nodes" + "totalNodes": "53", + "depth": "4", + "width": "22" }, { - "title": "DOM Depth", - "value": "4", - "snippet": "html >\n body >\n div >\n h2", - "target": "< 32" - }, - { - "title": "Maximum Children", - "value": "22", - "snippet": "Element with most children:\nbody", - "target": "< 60 nodes" + "totalNodes": "" } ] }, @@ -3174,28 +3192,32 @@ "description": "Avoids an excessive DOM size", "helpText": "Browser engineers recommend pages contain fewer than ~1,500 DOM nodes. The sweet spot is a tree depth < 32 elements and fewer than 60 children/parent element. A large DOM can increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://developers.google.com/web/fundamentals/performance/rendering/).", "details": { - "type": "cards", - "header": { - "type": "text", - "text": "View details" - }, - "items": [ + "type": "table", + "headings": [ { - "title": "Total DOM Nodes", - "value": "53", - "target": "< 1,500 nodes" + "key": "totalNodes", + "itemType": "text", + "text": "Total DOM Nodes" }, { - "title": "DOM Depth", - "value": "4", - "snippet": "html >\n body >\n div >\n h2", - "target": "< 32" + "key": "depth", + "itemType": "text", + "text": "Maximum DOM Depth" }, { - "title": "Maximum Children", - "value": "22", - "snippet": "Element with most children:\nbody", - "target": "< 60 nodes" + "key": "width", + "itemType": "text", + "text": "Maximum Children" + } + ], + "items": [ + { + "totalNodes": "53", + "depth": "4", + "width": "22" + }, + { + "totalNodes": "" } ] } @@ -4061,19 +4083,26 @@ "description": "Prevents users to paste into password fields", "helpText": "Preventing password pasting undermines good security policy. [Learn more](https://www.ncsc.gov.uk/blog-post/let-them-paste-passwords)", "details": { - "type": "list", - "header": { - "type": "text", - "value": "Password inputs that prevent pasting into" - }, + "type": "table", + "headings": [ + { + "key": "node", + "itemType": "node", + "text": "Failing Elements" + } + ], "items": [ { - "type": "text", - "value": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + "node": { + "type": "node", + "snippet": "<input type=\"password\" onpaste=\"event.preventDefault();\">" + } }, { - "type": "text", - "value": "<input type=\"password\" onpaste=\"return false;\">" + "node": { + "type": "node", + "snippet": "<input type=\"password\" onpaste=\"return false;\">" + } } ] } @@ -4509,7 +4538,7 @@ "scoreDisplayMode": "binary", "name": "font-size", "description": "Document uses legible font sizes", - "helpText": "Font sizes less than 12px are too small to be legible and require mobile visitors to “pinch to zoom” in order to read. Strive to have >60% of page text ≥12px. [Learn more](https://developers.google.com/web/fundamentals/design-and-ux/responsive/#optimize_text_for_reading).", + "helpText": "Font sizes less than 12px are too small to be legible and require mobile visitors to “pinch to zoom” in order to read. Strive to have >60% of page text ≥12px. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/font-sizes).", "details": { "type": "table", "headings": [ @@ -4551,7 +4580,7 @@ "scoreDisplayMode": "binary", "name": "link-text", "description": "Links have descriptive text", - "helpText": "Descriptive link text helps search engines understand your content. [Learn more](https://webmasters.googleblog.com/2008/10/importance-of-link-architecture.html).", + "helpText": "Descriptive link text helps search engines understand your content. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/descriptive-link-text).", "details": { "type": "table", "headings": [], @@ -5312,6 +5341,6 @@ } }, "timing": { - "total": 1098 + "total": 1227 } } \ No newline at end of file From 5ad028483a777d006091ff3dc6911af2647287e3 Mon Sep 17 00:00:00 2001 From: Patrick Hulce <patrick.hulce@gmail.com> Date: Wed, 21 Mar 2018 13:33:32 -0700 Subject: [PATCH 5/5] delete shell scriptg --- lighthouse-core/scripts/update-report-fixture.sh | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100755 lighthouse-core/scripts/update-report-fixture.sh diff --git a/lighthouse-core/scripts/update-report-fixture.sh b/lighthouse-core/scripts/update-report-fixture.sh deleted file mode 100755 index 8ced3b8e52e5..000000000000 --- a/lighthouse-core/scripts/update-report-fixture.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -## -# @license Copyright 2018 Google Inc. All Rights Reserved. -# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -## - -node lighthouse-cli/test/fixtures/static-server.js & - -node lighthouse-cli/index.js --output=json http://localhost:10200/dobetterweb/dbw_tester.html > ./lighthouse-core/test/results/sample_v2.json - -kill $(jobs -p)