profile
viewpoint

GoogleChrome/lighthouse 19053

Automated auditing, performance metrics, and best practices for the web.

aFarkas/html5shiv 9632

This script is the defacto way to enable use of HTML5 sectioning elements in legacy Internet Explorer.

google/ios-webkit-debug-proxy 4726

A DevTools proxy (Chrome Remote Debugging Protocol) for iOS devices (Safari Remote Web Inspector).

ChromeDevTools/awesome-chrome-devtools 3972

Awesome tooling and resources in the Chrome DevTools & DevTools Protocol ecosystem

GoogleChrome/lighthouse-ci 2409

Automate running Lighthouse for every commit, viewing the changes, and preventing regressions

csnover/TraceKit 817

Attempts to create stack traces for unhandled JavaScript exceptions in all major browsers.

borismus/device.js 764

Semantic client-side device detection with Media Queries

GoogleChrome/devtools-docs 596

The legacy documentation for Chrome DevTools.

GoogleChrome/chrome-launcher 566

Launch Google Chrome with ease from node.

benschwarz/metaquery 328

A declarative responsive web design syntax. Breakpoints, defined in `<meta>`

Pull request review commentGoogleChrome/lighthouse

build(firehouse): bundle smoke test runner

   },   "scripts": {     "build-all": "npm-run-posix-or-windows build-all:task",-    "build-all:task": "(yarn build-cdt-lib & yarn build-extension & yarn build-devtools & yarn build-lr & yarn build-viewer & wait) && yarn build-pack",-    "build-all:task:windows": "yarn build-cdt-lib && yarn build-extension && yarn build-devtools && yarn build-lr && yarn build-viewer",+    "build-all:task": "(yarn build-cdt-lib & yarn build-extension & yarn build-devtools & yarn build-lr & yarn build-viewer & yarn build-firehouse & wait) && yarn build-pack",+    "build-all:task:windows": "yarn build-cdt-lib && yarn build-extension && yarn build-devtools && yarn build-lr && yarn build-viewer && yarn build-firehouse",     "build-cdt-lib": "node ./build/build-cdt-lib.js",     "build-extension": "node ./build/build-extension.js",     "build-devtools": "yarn link && yarn link lighthouse && node ./build/build-bundle.js clients/devtools-entry.js dist/lighthouse-dt-bundle.js && node ./build/build-dt-report-resources.js",+    "build-firehouse": "node ./build/build-firehouse.js",

that sounds great

connorjclark

comment created time in 4 hours

pull request commentGoogleChrome/lighthouse

new_audit: add charset declaration audit

🎉 🎉 🎉

Beytoven

comment created time in 4 hours

push eventGoogleChrome/lighthouse

Michael Blasingame

commit sha ce529a1a281ce8bf69d42110b522deed1b1e0391

new_audit: add charset declaration audit (#10284)

view details

push time in 4 hours

delete branch GoogleChrome/lighthouse

delete branch : charset_header

delete time in 4 hours

PR merged GoogleChrome/lighthouse

new_audit: add charset declaration audit cla: yes new_audit

We want to add an audit that checks whether or not the character encoding for a page is properly declared. The audit will pass if any of the following are true:

  1. Charset is declared in a meta tag on the page.
  2. Charset is declared as part of the content-type metadata.
  3. The page has a Byte Order Mark (BOM) set.

image

image

Addresses #10023

+332 -1

4 comments

11 changed files

Beytoven

pr closed time in 4 hours

Pull request review commentGoogleChrome/lighthouse

build(firehouse): bundle smoke test runner

   },   "scripts": {     "build-all": "npm-run-posix-or-windows build-all:task",-    "build-all:task": "(yarn build-cdt-lib & yarn build-extension & yarn build-devtools & yarn build-lr & yarn build-viewer & wait) && yarn build-pack",-    "build-all:task:windows": "yarn build-cdt-lib && yarn build-extension && yarn build-devtools && yarn build-lr && yarn build-viewer",+    "build-all:task": "(yarn build-cdt-lib & yarn build-extension & yarn build-devtools & yarn build-lr & yarn build-viewer & yarn build-firehouse & wait) && yarn build-pack",+    "build-all:task:windows": "yarn build-cdt-lib && yarn build-extension && yarn build-devtools && yarn build-lr && yarn build-viewer && yarn build-firehouse",     "build-cdt-lib": "node ./build/build-cdt-lib.js",     "build-extension": "node ./build/build-extension.js",     "build-devtools": "yarn link && yarn link lighthouse && node ./build/build-bundle.js clients/devtools-entry.js dist/lighthouse-dt-bundle.js && node ./build/build-dt-report-resources.js",+    "build-firehouse": "node ./build/build-firehouse.js",

can we rename firehouse to something else? :) i forget what it is pretty much everytime i read it. sorry.

i'm hoping we can have something that makes sense within https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-cli/test/smokehouse/readme.md#pipeline (which also will need an update in this PR)

does frontends/bundled.js or frontends/browserified.js work?
build-bundled-smokehouse i suppose?

connorjclark

comment created time in 5 hours

Pull request review commentGoogleChrome/lighthouse

core: add charset declaration audit

+/**+ * @license Copyright 2020 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.+ */++/**+ * @fileoverview Audits a page to ensure charset it configured properly.+ * It must be defined within the first 1024 bytes of the HTML document, defined in the HTTP header, or the document source starts with a BOM.+ *+ * TODO: It doesn't yet validate the encoding is a valid IANA charset name. https://www.iana.org/assignments/character-sets/character-sets.xhtml+ *+ * @see: https://github.com/GoogleChrome/lighthouse/issues/10023+ */+'use strict';++const Audit = require('../audit.js');+const i18n = require('../../lib/i18n/i18n.js');+const MainResource = require('../../computed/main-resource.js');++const UIStrings = {+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset is defined correctly. Charset defines the character encoding (eg UTF-8) of the page content. */+  title: 'Properly defines charset',+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset meta tag is missing or defined too late in the page. */+  failureTitle: 'Charset declaration is missing or occurs too late in the HTML',+  /** Description of a Lighthouse audit that tells the user why the charset needs to be defined early on. */+  description: 'A character encoding declaration is required. It can be done with a <meta> tag' ++    'in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. ' ++    '[Learn more](https://www.w3.org/International/questions/qa-html-encoding-declarations).',+};++const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);++const CONTENT_TYPE_HEADER = 'content-type';+// /^[a-zA-Z0-9-_:.()]{2,}$/ matches all known IANA charset names+const IANA_REGEX = /^[a-zA-Z0-9-_:.()]{2,}$/;+const CHARSET_HTML_REGEX = /<meta[^>]+charset[^<]+>/;+const CHARSET_HTTP_REGEX = /charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/;++class CharsetDefined extends Audit {+  /**+   * @return {LH.Audit.Meta}+   */+  static get meta() {+    return {+      id: 'charset',+      title: str_(UIStrings.title),+      failureTitle: str_(UIStrings.failureTitle),+      description: str_(UIStrings.description),+      requiredArtifacts: ['MainDocumentContent', 'URL', 'devtoolsLogs', 'MetaElements'],+    };+  }++  /**+   * @param {LH.Artifacts} artifacts+   * @param {LH.Audit.Context} context+   * @return {Promise<LH.Audit.Product>}+   */+  static async audit(artifacts, context) {+    const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS];+    const mainResource = await MainResource.request({devtoolsLog, URL: artifacts.URL}, context);+    let isCharsetSet = false;+    // Check the http header 'content-type' to see if charset is defined there+    if (mainResource.responseHeaders) {+      const contentTypeHeader = mainResource.responseHeaders+        .find(header => header.name.toLowerCase() === CONTENT_TYPE_HEADER);++      if (contentTypeHeader) {+        isCharsetSet = CHARSET_HTTP_REGEX.test(contentTypeHeader.value);+      }+    }++    // Check if there is a BOM byte marker+    const BOM_FIRSTCHAR = 65279;+    isCharsetSet = isCharsetSet || artifacts.MainDocumentContent.charCodeAt(0) === BOM_FIRSTCHAR;++    // Check if charset-ish meta tag is defined within the first 1024 characters(~1024 bytes) of the HTML document+    if (artifacts.MainDocumentContent.slice(0, 1024).match(CHARSET_HTML_REGEX) !== null) {+      // If so, double-check the DOM attributes, considering both legacy http-equiv and html5 charset styles.+      isCharsetSet = isCharsetSet || artifacts.MetaElements.some(meta => {+        return (meta.charset && meta.charset.match(IANA_REGEX)) ||+          (meta.httpEquiv === 'content-type' &&+          meta.content &&+          meta.content.match(CHARSET_HTTP_REGEX));
Beytoven

comment created time in 6 hours

Pull request review commentGoogleChrome/lighthouse

core: add charset declaration audit

+/**+ * @license Copyright 2020 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.+ */++/**+ * @fileoverview Audits a page to ensure charset it configured properly.+ * It must be defined within the first 1024 bytes of the HTML document, defined in the HTTP header, or the document source starts with a BOM.+ *+ * TODO: It doesn't yet validate the encoding is a valid IANA charset name. https://www.iana.org/assignments/character-sets/character-sets.xhtml+ *+ * @see: https://github.com/GoogleChrome/lighthouse/issues/10023+ */+'use strict';++const Audit = require('../audit.js');+const i18n = require('../../lib/i18n/i18n.js');+const MainResource = require('../../computed/main-resource.js');++const UIStrings = {+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset is defined correctly. Charset defines the character encoding (eg UTF-8) of the page content. */+  title: 'Properly defines charset',+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset meta tag is missing or defined too late in the page. */+  failureTitle: 'Charset declaration is missing or occurs too late in the HTML',+  /** Description of a Lighthouse audit that tells the user why the charset needs to be defined early on. */+  description: 'A character encoding declaration is required. It can be done with a <meta> tag' ++    'in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. ' ++    '[Learn more](https://www.w3.org/International/questions/qa-html-encoding-declarations).',+};++const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);++const CONTENT_TYPE_HEADER = 'content-type';+// /^[a-zA-Z0-9-_:.()]{2,}$/ matches all known IANA charset names+const IANA_REGEX = /^[a-zA-Z0-9-_:.()]{2,}$/;+const CHARSET_HTML_REGEX = /<meta[^>]+charset[^<]+>/;+const CHARSET_HTTP_REGEX = /charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/;++class CharsetDefined extends Audit {+  /**+   * @return {LH.Audit.Meta}+   */+  static get meta() {+    return {+      id: 'charset',+      title: str_(UIStrings.title),+      failureTitle: str_(UIStrings.failureTitle),+      description: str_(UIStrings.description),+      requiredArtifacts: ['MainDocumentContent', 'URL', 'devtoolsLogs', 'MetaElements'],+    };+  }++  /**+   * @param {LH.Artifacts} artifacts+   * @param {LH.Audit.Context} context+   * @return {Promise<LH.Audit.Product>}+   */+  static async audit(artifacts, context) {+    const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS];+    const mainResource = await MainResource.request({devtoolsLog, URL: artifacts.URL}, context);+    let isCharsetSet = false;+    // Check the http header 'content-type' to see if charset is defined there+    if (mainResource.responseHeaders) {+      const contentTypeHeader = mainResource.responseHeaders+        .find(header => header.name.toLowerCase() === CONTENT_TYPE_HEADER);++      if (contentTypeHeader) {+        isCharsetSet = CHARSET_HTTP_REGEX.test(contentTypeHeader.value);+      }+    }++    // Check if there is a BOM byte marker+    const BOM_FIRSTCHAR = 65279;+    isCharsetSet = isCharsetSet || artifacts.MainDocumentContent.charCodeAt(0) === BOM_FIRSTCHAR;++    // Check if charset-ish meta tag is defined within the first 1024 characters(~1024 bytes) of the HTML document+    if (artifacts.MainDocumentContent.slice(0, 1024).match(CHARSET_HTML_REGEX) !== null) {
Beytoven

comment created time in 6 hours

Pull request review commentGoogleChrome/lighthouse

core: add charset declaration audit

+/**+ * @license Copyright 2020 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.+ */++/**+ * @fileoverview Audits a page to ensure charset it configured properly.+ * It must be defined within the first 1024 bytes of the HTML document, defined in the HTTP header, or the document source starts with a BOM.+ *+ * TODO: It doesn't yet validate the encoding is a valid IANA charset name. https://www.iana.org/assignments/character-sets/character-sets.xhtml

it does now. at least for the html5 meta case. :)

you can drop this line but move the link down to L35

Beytoven

comment created time in 6 hours

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 5c20e31266c8c255927cfe6d036559d3143c347b

update readme

view details

Paul Irish

commit sha 6b54005146e07bc3095a75e2d24ae63c24d756cf

update readme and homepage. small tweaks

view details

Paul Irish

commit sha d0c9915961448c1abc916cb7185e331424d1669b

generate service-worker

view details

Paul Irish

commit sha 6edc9f8e6ff09f0accd371f9ef603e7ae8e43d36

generate service-worker

view details

push time in 8 hours

delete branch ChromeDevTools/timeline-viewer

delete branch : dependabot/npm_and_yarn/lodash.template-4.5.0

delete time in 9 hours

push eventChromeDevTools/timeline-viewer

dependabot[bot]

commit sha a11bfff40351539315b24572e2c235e2b7eca359

Bump lodash.template from 4.4.0 to 4.5.0 (#70) Bumps [lodash.template](https://github.com/lodash/lodash) from 4.4.0 to 4.5.0. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.4.0...4.5.0) Signed-off-by: dependabot[bot] <support@github.com>

view details

push time in 9 hours

PR merged ChromeDevTools/timeline-viewer

Bump lodash.template from 4.4.0 to 4.5.0 dependencies

Bumps lodash.template from 4.4.0 to 4.5.0. <details> <summary>Commits</summary>

  • ab73503 Bump to v4.5.0.
  • a4f7d4c Rebuild lodash and docs.
  • cca5ac6 Fix npm-test by removing the call to test-docs.
  • 9f7f9fc Adjust heading order. [ci skip]
  • 6e2fb92 Remove unused baseArity.
  • 4f702e2 Specify utf8 encoding.
  • b188f90 Add fp tests for iteratee shorthands.
  • 7b93dc9 Ensure clone methods clone expando properties of boolean, number, & string ob...
  • 664d66a Make string tests more consistent.
  • d9dc0e6 Add _.invertBy tests.
  • Additional commits viewable in compare view </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+10 -7

0 comment

1 changed file

dependabot[bot]

pr closed time in 9 hours

delete branch ChromeDevTools/timeline-viewer

delete branch : dependabot/npm_and_yarn/sshpk-1.16.1

delete time in 9 hours

push eventChromeDevTools/timeline-viewer

dependabot[bot]

commit sha 706f84b51d1d2f152e036359ae0550a16c15fc11

Bump sshpk from 1.13.0 to 1.16.1 (#68) Bumps [sshpk](https://github.com/joyent/node-sshpk) from 1.13.0 to 1.16.1. - [Release notes](https://github.com/joyent/node-sshpk/releases) - [Commits](https://github.com/joyent/node-sshpk/compare/v1.13.0...v1.16.1) Signed-off-by: dependabot[bot] <support@github.com>

view details

push time in 9 hours

PR merged ChromeDevTools/timeline-viewer

Bump sshpk from 1.13.0 to 1.16.1 dependencies

Bumps sshpk from 1.13.0 to 1.16.1. <details> <summary>Release notes</summary>

Sourced from sshpk's releases.

v1.16.1

  • Fixes for #60 (correctly encoding certificates with expiry dates >=2050), #62 (accepting PKCS#8 EC private keys with missing public key parts)

v1.16.0

  • Add support for SPKI fingerprints, PuTTY PPK format (public-key only for now), PKCS#8 PBKDF2 encrypted private keys
  • Fix for #48

v1.15.2

  • New API for accessing x509 extensions in certificates
  • Fixes for #52, #50

v1.14.1

  • Remove all remaining usage of jodid25519 (abandoned dep)
  • Add support for DNSSEC key format
  • Add support for Ed25519 keys in PEM format (according to draft-curdle-pkix)
  • Fixes for X.509 encoding issues (asn.1 NULLs in RSA certs, cert string type mangling)
  • Performance issues parsing long SSH public keys </details> <details> <summary>Commits</summary>

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+24 -19

0 comment

1 changed file

dependabot[bot]

pr closed time in 9 hours

delete branch ChromeDevTools/timeline-viewer

delete branch : eslintbump

delete time in 9 hours

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 1aaee9ef7661fd81201b9b09ccfd913e5321f13d

bump eslint, eslitn-config-google. add plugin-cypress

view details

Paul Irish

commit sha 8a6b86f5f0a75d4b9cc16ae1606787a9dadfe17f

use cypress plugin. tweak some eslint config

view details

Paul Irish

commit sha 124aa61955e862380123976c29f377061d1a6647

apply lint fixes

view details

Paul Irish

commit sha f3e7ce081667e9607ac1d924ca876ab83b3bc9f6

Merge pull request #74 from ChromeDevTools/eslintbump linting updates.

view details

push time in 9 hours

PR merged ChromeDevTools/timeline-viewer

linting updates.
  • bump eslint
  • bump eslint-config-google.
  • add eslint-plugin-cypress

etc.

+427 -327

0 comment

8 changed files

paulirish

pr closed time in 9 hours

PR opened ChromeDevTools/timeline-viewer

linting updates.
  • bump eslint
  • bump eslint-config-google.
  • add eslint-plugin-cypress

etc.

+427 -327

0 comment

8 changed files

pr created time in 9 hours

create barnchChromeDevTools/timeline-viewer

branch : eslintbump

created branch time in 9 hours

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 91fb5cc4d559938b1a1a2a47e3ccc5997ca2aef3

opn bump followup: fix cli invocation

view details

push time in 9 hours

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha cc3bd47996f4cdf1bea0a21de1204e36edac3aba

generate service-worker

view details

Paul Irish

commit sha 1449df0192d85381d55077458da3a1fd6e7c0791

deps: upgrade http-server and opn

view details

push time in 9 hours

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 5b10d1b6f40e006056674e99c48a7cb7af8a78e5

lint

view details

push time in 9 hours

fork paulirish/aoe2techtree

Age of Empires II Tech Tree

fork in 3 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 72b030061835ed70ddb3d384fa9032a0b5bdcce0

fix infinite loop with a hack :D

view details

Paul Irish

commit sha 068d9cf5c71a153887419c0e80c37715463501f1

generate service-worker

view details

push time in 5 days

delete branch ChromeDevTools/timeline-viewer

delete branch : bumpcypress

delete time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 68b82239811c0df7c8b4769a24a99d25b7940219

bump cypress to latest (#71)

view details

push time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 964ca4b7fe7197d46c82da3d774d5618110e4616

cyrpress binary error

view details

push time in 5 days

issue commentChromeDevTools/timeline-viewer

Timeline Viewer Breaks on Chrome 80

and thanks for trying to fix it yourself. brave of you!

unfortunately the way this app is put together is pretty unorthodox so it was going to be a pretty rough learning curve. :)

cheers man. happy v day

seanenright

comment created time in 5 days

issue commentChromeDevTools/timeline-viewer

Timeline Viewer Breaks on Chrome 80

thanks for reporting @seanenright

i fixed it ;)

seanenright

comment created time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 2691211212b851edfab7841f9a8b70b281a4d50f

fix lint

view details

Paul Irish

commit sha 8e25bf1ac83fd88d11fd8e516cca58ee49f91c32

generate service-worker

view details

Paul Irish

commit sha 20251e250adda36ad9a28404630223ccc7bac734

bump cypress to latest

view details

push time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 8e25bf1ac83fd88d11fd8e516cca58ee49f91c32

generate service-worker

view details

push time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha c0df88727f394f2005942ebe223789dd5ebf73d7

generate service-worker

view details

Paul Irish

commit sha 2691211212b851edfab7841f9a8b70b281a4d50f

fix lint

view details

push time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha b6a23bb0d46d92be6cadda9338c130146c83d6c9

bump sw-precache

view details

Paul Irish

commit sha ddb6c03f8fc9788996fcdc1ca9981c48d499f657

fix lint

view details

Paul Irish

commit sha c0df88727f394f2005942ebe223789dd5ebf73d7

generate service-worker

view details

Paul Irish

commit sha 1417b8beebf37f8c7a18081a0538554c7f677595

bump cypress to latest

view details

push time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha ddb6c03f8fc9788996fcdc1ca9981c48d499f657

fix lint

view details

push time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha b6a23bb0d46d92be6cadda9338c130146c83d6c9

bump sw-precache

view details

push time in 5 days

create barnchChromeDevTools/timeline-viewer

branch : bumpcypress

created branch time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 73516e565791ce3763f2dfd40328ac1df73e68df

generate service-worker

view details

push time in 5 days

push eventChromeDevTools/timeline-viewer

Diego Fernández Santos

commit sha 06fa19548462882e1cb1a936460b2cdf24e96b30

Allow loadTimelineFromURL to the same domain (#61)

view details

push time in 5 days

PR merged ChromeDevTools/timeline-viewer

Allow loadTimelineFromURL to the same domain

Hello,

I would like to use you app to visualize private timelines reports.

The timeline-viewer and the timelines reports are in the same domain but now it doesn't work fine because the app thinks that is a local resouce and forward the request to the original one.

+1 -1

6 comments

1 changed file

diego-fernandez-santos

pr closed time in 5 days

delete branch ChromeDevTools/timeline-viewer

delete branch : fixbrokenm80

delete time in 5 days

push eventChromeDevTools/timeline-viewer

Paul Irish

commit sha 16400cc52f77d38a5fa188e68d4172e123456a30

bump devtools version to m78. and document compat story

view details

Paul Irish

commit sha 7b0e2668b5e1c46bc2c3edeed33f75c2c7ff596f

tweak the toolbar UI and clean up the view

view details

Paul Irish

commit sha cdd09eb091a75bf82fe3daea679a4810a4044706

drive URLs need drive:// prefix

view details

Paul Irish

commit sha 835da00258f1be5b92a470c94506f1c0702a071a

generate service-worker

view details

Paul Irish

commit sha dd59252052b20c6e2e18a28a7a19161b8e170b01

Merge pull request #65 from ChromeDevTools/fixbrokenm80 fix broken app

view details

push time in 5 days

PR merged ChromeDevTools/timeline-viewer

fix broken app

all part of the custom elements deprecation. :)

fixes #64

+42 -39

0 comment

5 changed files

paulirish

pr closed time in 5 days

issue closedChromeDevTools/timeline-viewer

Timeline Viewer Breaks on Chrome 80

Issue: With the chrome 80 release the timeline viewer no longer works.

things i've tried to fix I've attempted to debug and fix locally but haven't had any luck (yet). The version of shelljs and dev_tools_app.js are outdated and use native methods that were dropped with the release of v80.

So far I've attempted updating the hash on line 74 and 75 in docs/index.html here . and the createSetting methods in docs/dev_tools.js but haven't had any success yet.

I'm happy to keep hacking on this, but would <3 some help or direction.

Relevant logs from the console: shell.js:3123 Uncaught TypeError: document.registerElement is not a function at Object.UI.registerCustomElement (shell.js:3123) at shell.js:3135 at shell.js:3137 devtools_app.js:2 Uncaught ReferenceError: SDK is not defined at devtools_app.js:2 treeoutlineTriangles_2x.png:1 Failed to load resource: the server responded with a status of 404 () ?loadTimelineFromURL=https://gist.github.com/paulirish/f83d30384954937dc3a1fae970a4ae52/raw/b25b27741c652d3091a316dfd8b58bf72f14aa74/twitch.json:1 A cookie associated with a cross-site resource at https://accounts.google.com/ was set without theSameSiteattribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set withSameSite=NoneandSecure. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032. ?loadTimelineFromURL=https://gist.github.com/paulirish/f83d30384954937dc3a1fae970a4ae52/raw/b25b27741c652d3091a316dfd8b58bf72f14aa74/twitch.json:1 A cookie associated with a cross-site resource at http://google.com/ was set without theSameSiteattribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set withSameSite=NoneandSecure. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032. ?loadTimelineFromURL=https://gist.github.com/paulirish/f83d30384954937dc3a1fae970a4ae52/raw/b25b27741c652d3091a316dfd8b58bf72f14aa74/twitch.json:1 A cookie associated with a cross-site resource at https://google.com/ was set without theSameSiteattribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set withSameSite=NoneandSecure. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032. dev_tools.js:59 Uncaught TypeError: Cannot read property 'createSetting' of undefined at dev_tools.js:59

closed time in 5 days

seanenright

PR opened ChromeDevTools/timeline-viewer

fix broken app

all part of the custom elements deprecation. :)

fixes #64

+42 -39

0 comment

5 changed files

pr created time in 5 days

create barnchChromeDevTools/timeline-viewer

branch : fixbrokenm80

created branch time in 5 days

Pull request review commentGoogleChrome/lighthouse

core: add charset declaration audit

+/**+ * @license Copyright 2020 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.+ */++/**+ * @fileoverview Audits a page to ensure charset it configured properly.+ * It must be defined within the first 1024 bytes of the HTML document, defined in the HTTP header, or the document source starts with a BOM.+ *+ * TODO: It doesn't yet validate the encoding is a valid IANA charset name. https://www.iana.org/assignments/character-sets/character-sets.xhtml+ *+ * @see: https://github.com/GoogleChrome/lighthouse/issues/10023+ */+'use strict';++const Audit = require('../audit.js');+const i18n = require('../../lib/i18n/i18n.js');+const MainResource = require('../../computed/main-resource.js');++const UIStrings = {+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset is defined correctly. Charset defines the character encoding (eg UTF-8) of the page content. */+  title: 'Properly defines charset',+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset meta tag is missing or defined too late in the page. */+  failureTitle: 'Charset declaration is missing or occurs too late in the HTML',+  /** Description of a Lighthouse audit that tells the user why the charset needs to be defined early on. */+  description: 'A character encoding declaration is required. It can be done with a <meta> tag' ++    'in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. ' ++    '[Learn more](https://www.w3.org/International/questions/qa-html-encoding-declarations).',+};++const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);++const CONTENT_TYPE_HEADER = 'content-type';+// /^[a-zA-Z0-9-_:.()]{2,}$/ matches all known IANA charset names+const IANA_REGEX = /^[a-zA-Z0-9-_:.()]{2,}$/;+const CHARSET_HTML_REGEX = /<meta[^>]+charset[^<]+>/;+const CHARSET_HTTP_REGEX = /charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/;++class CharsetDefined extends Audit {+  /**+   * @return {LH.Audit.Meta}+   */+  static get meta() {+    return {+      id: 'charset',+      title: str_(UIStrings.title),+      failureTitle: str_(UIStrings.failureTitle),+      description: str_(UIStrings.description),+      requiredArtifacts: ['MainDocumentContent', 'URL', 'devtoolsLogs', 'MetaElements'],+    };+  }++  /**+   * @param {LH.Artifacts} artifacts+   * @param {LH.Audit.Context} context+   * @return {Promise<LH.Audit.Product>}+   */+  static async audit(artifacts, context) {+    const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS];+    const mainResource = await MainResource.request({devtoolsLog, URL: artifacts.URL}, context);+    let isCharsetSet = false;+    // Check the http header 'content-type' to see if charset is defined there+    if (mainResource.responseHeaders) {+      const contentTypeHeader = mainResource.responseHeaders+        .find(header => header.name.toLowerCase() === CONTENT_TYPE_HEADER);++      if (contentTypeHeader) {+        isCharsetSet = contentTypeHeader.value.match(CHARSET_HTTP_REGEX) !== null;

super js nit but i prefer regex.test(str) vs str.match(regex) when you just need the boolean result

Beytoven

comment created time in 5 days

Pull request review commentGoogleChrome/lighthouse

core: add charset declaration audit

+/**+ * @license Copyright 2020 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.+ */++/**+ * @fileoverview Audits a page to ensure charset it configured properly.+ * It must be defined within the first 1024 bytes of the HTML document, defined in the HTTP header, or the document source starts with a BOM.+ *+ * TODO: It doesn't yet validate the encoding is a valid IANA charset name. https://www.iana.org/assignments/character-sets/character-sets.xhtml+ *+ * @see: https://github.com/GoogleChrome/lighthouse/issues/10023+ */+'use strict';++const Audit = require('../audit.js');+const i18n = require('../../lib/i18n/i18n.js');+const MainResource = require('../../computed/main-resource.js');++const UIStrings = {+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset is defined correctly. Charset defines the character encoding (eg UTF-8) of the page content. */+  title: 'Properly defines charset',+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset meta tag is missing or defined too late in the page. */+  failureTitle: 'Charset declaration is missing or occurs too late in the HTML',+  /** Description of a Lighthouse audit that tells the user why the charset needs to be defined early on. */+  description: 'A character encoding declaration is required. It can be done with a <meta> tag' ++    'in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. ' ++    '[Learn more](https://www.w3.org/International/questions/qa-html-encoding-declarations).',+};++const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);++const CONTENT_TYPE_HEADER = 'content-type';+// /^[a-zA-Z0-9-_:.()]{2,}$/ matches all known IANA charset names+const IANA_REGEX = /^[a-zA-Z0-9-_:.()]{2,}$/;+const CHARSET_HTML_REGEX = /<meta[^>]+charset[^<]+>/;+const CHARSET_HTTP_REGEX = /charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/;++class CharsetDefined extends Audit {+  /**+   * @return {LH.Audit.Meta}+   */+  static get meta() {+    return {+      id: 'charset',+      title: str_(UIStrings.title),+      failureTitle: str_(UIStrings.failureTitle),+      description: str_(UIStrings.description),+      requiredArtifacts: ['MainDocumentContent', 'URL', 'devtoolsLogs', 'MetaElements'],+    };+  }++  /**+   * @param {LH.Artifacts} artifacts+   * @param {LH.Audit.Context} context+   * @return {Promise<LH.Audit.Product>}+   */+  static async audit(artifacts, context) {+    const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS];+    const mainResource = await MainResource.request({devtoolsLog, URL: artifacts.URL}, context);+    let isCharsetSet = false;+    // Check the http header 'content-type' to see if charset is defined there+    if (mainResource.responseHeaders) {+      const contentTypeHeader = mainResource.responseHeaders+        .find(header => header.name.toLowerCase() === CONTENT_TYPE_HEADER);++      if (contentTypeHeader) {+        isCharsetSet = contentTypeHeader.value.match(CHARSET_HTTP_REGEX) !== null;+      }+    }++    // Check if there is a BOM byte marker+    const BOM_FIRSTCHAR = 65279;+    isCharsetSet = isCharsetSet || artifacts.MainDocumentContent.charCodeAt(0) === BOM_FIRSTCHAR;++    // Check if charset is defined within the first 1024 characters(~1024 bytes) of the HTML document
    // Check if charset-ish meta tag is defined within the first 1024 characters(~1024 bytes) of the HTML document
Beytoven

comment created time in 5 days

Pull request review commentGoogleChrome/lighthouse

core: add charset declaration audit

+/**+ * @license Copyright 2020 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.+ */++/**+ * @fileoverview Audits a page to ensure charset it configured properly.+ * It must be defined within the first 1024 bytes of the HTML document, defined in the HTTP header, or the document source starts with a BOM.+ *+ * TODO: It doesn't yet validate the encoding is a valid IANA charset name. https://www.iana.org/assignments/character-sets/character-sets.xhtml+ *+ * @see: https://github.com/GoogleChrome/lighthouse/issues/10023+ */+'use strict';++const Audit = require('../audit.js');+const i18n = require('../../lib/i18n/i18n.js');+const MainResource = require('../../computed/main-resource.js');++const UIStrings = {+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset is defined correctly. Charset defines the character encoding (eg UTF-8) of the page content. */+  title: 'Properly defines charset',+  /** Title of a Lighthouse audit that provides detail on if the charset is set properly for a page. This title is shown when the charset meta tag is missing or defined too late in the page. */+  failureTitle: 'Charset declaration is missing or occurs too late in the HTML',+  /** Description of a Lighthouse audit that tells the user why the charset needs to be defined early on. */+  description: 'A character encoding declaration is required. It can be done with a <meta> tag' ++    'in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. ' ++    '[Learn more](https://www.w3.org/International/questions/qa-html-encoding-declarations).',+};++const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);++const CONTENT_TYPE_HEADER = 'content-type';+// /^[a-zA-Z0-9-_:.()]{2,}$/ matches all known IANA charset names+const IANA_REGEX = /^[a-zA-Z0-9-_:.()]{2,}$/;+const CHARSET_HTML_REGEX = /<meta[^>]+charset[^<]+>/;+const CHARSET_HTTP_REGEX = /charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/;++class CharsetDefined extends Audit {+  /**+   * @return {LH.Audit.Meta}+   */+  static get meta() {+    return {+      id: 'charset',+      title: str_(UIStrings.title),+      failureTitle: str_(UIStrings.failureTitle),+      description: str_(UIStrings.description),+      requiredArtifacts: ['MainDocumentContent', 'URL', 'devtoolsLogs', 'MetaElements'],+    };+  }++  /**+   * @param {LH.Artifacts} artifacts+   * @param {LH.Audit.Context} context+   * @return {Promise<LH.Audit.Product>}+   */+  static async audit(artifacts, context) {+    const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS];+    const mainResource = await MainResource.request({devtoolsLog, URL: artifacts.URL}, context);+    let isCharsetSet = false;+    // Check the http header 'content-type' to see if charset is defined there+    if (mainResource.responseHeaders) {+      const contentTypeHeader = mainResource.responseHeaders+        .find(header => header.name.toLowerCase() === CONTENT_TYPE_HEADER);++      if (contentTypeHeader) {+        isCharsetSet = contentTypeHeader.value.match(CHARSET_HTTP_REGEX) !== null;+      }+    }++    // Check if there is a BOM byte marker+    const BOM_FIRSTCHAR = 65279;+    isCharsetSet = isCharsetSet || artifacts.MainDocumentContent.charCodeAt(0) === BOM_FIRSTCHAR;++    // Check if charset is defined within the first 1024 characters(~1024 bytes) of the HTML document+    if (artifacts.MainDocumentContent.slice(0, 1024).match(CHARSET_HTML_REGEX) !== null) {+      isCharsetSet = isCharsetSet || artifacts.MetaElements.some(meta => {
      // If so, double-check the DOM attributes, considering both legacy http-equiv and html5 charset styles.
      isCharsetSet = isCharsetSet || artifacts.MetaElements.some(meta => {
Beytoven

comment created time in 5 days

Pull request review commentGoogleChrome/lighthouse

core: add charset declaration audit

+/**+ * @license Copyright 2020 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.+ */+'use strict';++const CharsetDefinedAudit = require('../../../audits/dobetterweb/charset.js');+const assert = require('assert');+const networkRecordsToDevtoolsLog = require('../../network-records-to-devtools-log.js');++/* eslint-env jest */++const HTML_PRE = '<!doctype html><head>';+const HTML_POST = '</head><body><h1>hello';++function generateArtifacts(htmlContent, contentTypeValue = 'text/html') {+  const finalUrl = 'https://example.com/';+  const mainResource = {+    url: finalUrl,+    responseHeaders: [+      {name: 'content-type', value: contentTypeValue},+    ],+  };+  const devtoolsLog = networkRecordsToDevtoolsLog([mainResource]);+  const context = {computedCache: new Map()};+  return [{+    devtoolsLogs: {[CharsetDefinedAudit.DEFAULT_PASS]: devtoolsLog},+    URL: {finalUrl},+    MainDocumentContent: htmlContent,+    MetaElements: [],+  }, context];+}++describe('Charset defined audit', () => {+  it('succeeds where the page contains the charset meta tag', async () => {+    const htmlContent = HTML_PRE + '<meta charset="utf-8" >' + HTML_POST;+    const [artifacts, context] = generateArtifacts(htmlContent);+    artifacts.MetaElements = [{name: 'charset', content: 'utf-8'}];+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 1);+  });++  it('succeeds when the page has the charset defined in the content-type meta tag', async () => {+    const htmlContent = HTML_PRE ++      '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />' + HTML_POST;+    const [artifacts, context] = generateArtifacts(htmlContent);+    artifacts.MetaElements = [{name: 'content-type', content: 'text/html; charset=utf-8'}];+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 1);+  });++  it('succeeds when the page has the charset defined in the content-type http header', async () => {+    const htmlContent = HTML_PRE ++      '<meta http-equiv="Content-type" content="text/html" />' + HTML_POST;+    const contentTypeVal = 'text/html; charset=UTF-8';+    const [artifacts, context] = generateArtifacts(htmlContent, contentTypeVal);+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 1);+  });++  it('succeeds when the page has the charset defined via BOM', async () => {+    const htmlContent = '\ufeff' + HTML_PRE ++      '<meta http-equiv="Content-type" content="text/html" />' + HTML_POST;+    const [artifacts, context] = generateArtifacts(htmlContent);+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 1);+  });++  it('fails when the page does not have charset defined', async () => {+    const htmlContent = HTML_PRE + '<meta http-equiv="Content-type" content="text/html" />';+    const [artifacts, context] = generateArtifacts(htmlContent);+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 0);+  });++  it('fails when the page has charset defined too late in the page', async () => {+    const bigString = new Array(1024).fill(' ').join('');+    const htmlContent = HTML_PRE + bigString + '<meta charset="utf-8" />' + HTML_POST;+    const [artifacts, context] = generateArtifacts(htmlContent);+    artifacts.MetaElements = [{name: 'charset', content: 'utf-8'}];+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 0);+  });++  it('passes when the page has charset defined almost too late in the page', async () => {+    const bigString = new Array(900).fill(' ').join('');+    const htmlContent = HTML_PRE + bigString + '<meta charset="utf-8" />' + HTML_POST;+    const [artifacts, context] = generateArtifacts(htmlContent);+    artifacts.MetaElements = [{name: 'charset', content: 'utf-8'}];+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 1);+  });++  it('fails when charset only partially defined in the first 1024 bytes of the page', async () => {+    const charsetHTML = '<meta charset="utf-8" />';+    // 1024 bytes should be halfway through the meta tag+    const bigString = new Array(1024 - HTML_PRE.length - charsetHTML.length / 2).fill(' ').join('');+    const htmlContent = HTML_PRE + bigString + charsetHTML + HTML_POST;+    const [artifacts, context] = generateArtifacts(htmlContent);+    artifacts.MetaElements = [{name: 'charset', content: 'utf-8'}];+    const auditResult = await CharsetDefinedAudit.audit(artifacts, context);+    assert.equal(auditResult.score, 0);+  });+});++describe('Charset regex check', () => {+  const HTML_REGEX = CharsetDefinedAudit.CHARSET_HTML_REGEX;+  const HTTP_REGEX = CharsetDefinedAudit.CHARSET_HTTP_REGEX;+  const IANA_REGEX = CharsetDefinedAudit.IANA_REGEX;++  it('handles html correctly', () => {+    // Positive cases+    assert.equal(HTML_REGEX.test('<meta charset=utf-8 />'), true);+    assert.equal(HTML_REGEX.test(`<!doctype html><meta charset=utf-8 /><body>`), true);+    assert.equal(HTML_REGEX.test(`<!doctype html><meta   charset=utf-8  /><body>`), true);+    assert.equal(HTML_REGEX.test(`<!doctype html><meta charset=utf-8><body>`), true);+    assert.equal(HTML_REGEX.test(`<!doctype html><meta charset=UTF-8><body>`), true);+    assert.equal(HTML_REGEX.test(+      `<!doctype html><meta http-equiv="Content-type" content="text/html; charset=utf-8"/><body>'`),+      true);+    assert.equal(HTML_REGEX.test(+      `<!doctype html><meta content="text/html; charset=utf-8" http-equiv="Content-type"/><body>'`),+      true);++    // Negative cases+    assert.equal(HTML_REGEX.test(`<!doctype html><meta description=hello><body>`), false);+    assert.equal(HTML_REGEX.test(`<!doctype html><meta charset=utf-8<body>`), false);+    assert.equal(HTML_REGEX.test(+      `<!doctype html><meta http-equiv="Content-type" content="text/html; nope-tf8" /><body>'`),+      false);+    assert.equal(HTML_REGEX.test(+      `<!doctype html><meta http-equiv="Content-type" content="text/html; charset=utf-8" <body>'`),+      false);+  });++  it('handles http header correctly', () => {+    // Positive cases+    assert.equal(HTTP_REGEX.test('text/html; charset=UTF-8'), true);+    assert.equal(HTTP_REGEX.test('text/html; charset = UTF-8'), true);++    // Negative cases+    assert.equal(HTTP_REGEX.test('text/html; charset='), false);+    assert.equal(HTTP_REGEX.test('text/html; charset=x'), false);+    assert.equal(HTTP_REGEX.test('text/html; charset=  '), false);+  });++  it('handles charset name validation correctly', () => {

supa hot 🔥

Beytoven

comment created time in 5 days

CommitCommentEvent
CommitCommentEvent

Pull request review commentGoogleChrome/lighthouse

core(driver): use window.location for finalUrl

 class Driver {     // Bring `Page.navigate` errors back into the promise chain. See https://github.com/GoogleChrome/lighthouse/pull/6739.     await waitforPageNavigateCmd; -    return this._endNetworkStatusMonitoring();+    const finalUrlViaNetwork = this._endNetworkStatusMonitoring();+    const finalUrlViaScript = await this.evaluateAsync('window.location.href', {useIsolation: true})

this can include #hashes which aren't in the networkUrl. first inclination is to strip out the hash, but i'm not sure

also this will be influenced by pushState/replaceState

patrickhulce

comment created time in 5 days

Pull request review commentGoogleChrome/lighthouse

core(driver): use window.location for finalUrl

 function _resolveIcuMessageInstanceId(icuMessageInstanceId, locale) {   const [_, icuMessageId, icuMessageInstanceIndex] = matches;   const icuMessageInstances = _icuMessageInstanceMap.get(icuMessageId) || [];   const icuMessageInstance = icuMessageInstances[Number(icuMessageInstanceIndex)];+  if (!icuMessageInstance) {

thank you!!

patrickhulce

comment created time in 5 days

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha b517976d2f7c8954f8435f5a3c172e4a3d059881

Updates

view details

push time in 6 days

issue closedGoogleChrome/lighthouse

Disabled compression on the dev server

Hi, we at Oppia want to create our custom Lighthouse CI that would run Lighthouse for all of our PRs, check the scores and check the audits.

The problem is that since we use App Engine and can't afford to deploy the server for all of our PRs we need to check the Lighthouse score on the dev server, but the dev server doesn't compress the served data, that means that all the metrics have very bad numbers, we can check just the audits (except for the compression) and skip the metrics but then we are missing quite a lot of info.

I know that this is mostly a problem with the App Engine dev server but I wanted to ask if there would be a possibility to solve this by some configuration/changes in the Lighthouse end.

closed time in 6 days

vojtechjelinek

push eventGoogleChrome/web.dev

Paul Irish

commit sha ae9d65249072e5d029dd66a551b26c3c27c72a1e

updated

view details

push time in 6 days

create barnchGoogleChrome/web.dev

branch : paulirish-patch-1

created branch time in 6 days

issue commentGoogleChrome/web.dev

Reenable PWA category

Cooool! Can you share the design?

paulirish

comment created time in 6 days

issue commentGoogleChrome/lighthouse

add a input field, to load a report by url

On the one hand... we totally could do what you said and it'd make it easier for folks.

But we're also balancing that with our product positioning. We don't want to create another resource that people go to, when they can already do the same at other tools we already own. :)

its fun

staabm

comment created time in 6 days

pull request commentGoogleChrome/lighthouse

[DRAFT] Move away from lastNavStart as timeOrigin

Patrick proposing:

  • we do the JS redirect warning in 6.0
  • Land trace-processor changes (for non-lantern runs) after 6.0's release. Make default for 7.0 after testing and evaluating.
patrickhulce

comment created time in 6 days

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha 834b43ce94421c0745f2bc3b028444f15bd77a34

Updates

view details

push time in 7 days

Pull request review commentGoogleChrome/lighthouse

clients(devtools): use the same desktop throttling as lightrider

 const lighthouse = require('../lighthouse-core/index.js'); const RawProtocol = require('../lighthouse-core/gather/connections/raw.js'); const log = require('lighthouse-logger'); const {registerLocaleData, lookupLocale} = require('../lighthouse-core/lib/i18n/i18n.js');+const desktopDense4G = require('../lighthouse-core/config/constants.js').throttling.desktopDense4G;  /** @typedef {import('../lighthouse-core/gather/connections/connection.js')} Connection */  /**- * Return a version of the default config, filtered to only run the specified- * categories. If `lighthouse-plugin-publisher-ads` is in the list of+ * Returns a config, which runs only certain categories.+ * Varies the config to use based on device.+ * If `lighthouse-plugin-publisher-ads` is in the list of  * `categoryIDs` the plugin will also be run.  * @param {Array<string>} categoryIDs+ * @param {string} device  * @return {LH.Config.Json}  */-function getDefaultConfigForCategories(categoryIDs) {+function createConfig(categoryIDs, device) {+  /** @type {LH.SharedFlagsSettings} */+  const settings = {+    onlyCategories: categoryIDs,+  };+  if (device === 'desktop') {+    settings.throttling = desktopDense4G;

feels a little weird to manage half the configuration here and half in devtools.

heh we were discussing this point yesterday. :)

but which half in devtools are you talking about?

connorjclark

comment created time in 7 days

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha 5ea03394d9eb429f4b2f49351639a0b4ccafbc71

Updates

view details

push time in 7 days

push eventGoogleChrome/lighthouse

Paul Irish

commit sha 1e5220442106e230eaf2c6e86ce1fc2fd566bb41

unitless

view details

push time in 8 days

Pull request review commentGoogleChrome/lighthouse

new_audit: add cumulative layout shift metric

 declare global {       /** A numeric value that has a meaning specific to the audit, e.g. the number of nodes in the DOM or the timestamp of a specific load event. More information can be found in the audit details, if present. */       numericValue: number;       /** The unit of `numericValue`, used when the consumer wishes to convert numericValue to a display string. A superset of https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier */-      numericUnit: 'byte'|'millisecond'|'element';+      numericUnit: 'byte'|'millisecond'|'element'|'shiftarinos';

unitless

paulirish

comment created time in 8 days

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha 3c6fa62b5ee7b4e9980500ee04b73492e3d0624b

Updates

view details

push time in 8 days

PR opened thedaviddias/Front-End-Performance-Checklist

remove 'length of css classes' recommendation

Short description of what this resolves:

As it says on the tin. :)

There is definitely zero runtime perf difference when it comes to the length of the CSS classes. The linked JSPerf is full of issues, as well.

Recommending BEM/etc seems cool, but that's a maintainability thing rather than perf.

+0 -10

0 comment

1 changed file

pr created time in 9 days

push eventpaulirish/Front-End-Performance-Checklist

Paul Irish

commit sha 1fff2384c8f27707dcc3d1ed52da69a36d19410c

remove 'length of css classes' recommendation

view details

push time in 9 days

PR opened thedaviddias/Front-End-Performance-Checklist

nix html comments & attributes removal

Short description of what this resolves:

HTML minification will take care of comments removal and dropping unnecessary attributes. So calling those out separately seems like a distraction.

(Similarly we wouldn't recommend using short javascript variable names or removing comments from JS.)

+1 -33

0 comment

1 changed file

pr created time in 9 days

push eventpaulirish/Front-End-Performance-Checklist

Paul Irish

commit sha d3982743fe35bc1c1001975146f2eeac83a67f31

nix html comments & attributes removal

view details

push time in 9 days

fork paulirish/Front-End-Performance-Checklist

🎮 The only Front-End Performance Checklist that runs faster than the others

fork in 9 days

push eventGoogleChrome/lighthouse

Connor Clark

commit sha 0c0a05be1f47e9116fc4c40a904610d9e8abf73a

viewer(css): adding grayscale & wait cursor while loading (#10305)

view details

push time in 9 days

delete branch GoogleChrome/lighthouse

delete branch : viewer-loading-styles

delete time in 9 days

PR merged GoogleChrome/lighthouse

viewer(css): adding grayscale & wait cursor while loading cla: yes waiting4reviewer

fixes https://github.com/GoogleChrome/lighthouse/issues/10010

+3 -1

0 comment

1 changed file

connorjclark

pr closed time in 9 days

issue closedGoogleChrome/lighthouse

Blurred Lighthouse Report Viewer box when launching Chrome extension

The message in the loading page after launching Lighthouse via the Chrome extension has blurred styling (filter: blur(2px)) that makes the text difficult to read. It's not immediately clear why.

Element reads:

Lighthouse Report Viewer

To view a report: Paste its json or a Gist URL. You can also drag 'n drop the file or click here to select it.

Element selector:

 .viewer-placeholder-inner.lh-loading {
    filter: blur(2px);
}

See screenshot below for how it displays:

Screenshot

This styling persists for the duration of Lighthouse waiting for the results (whilst LH is loading); the result page renders correctly.

The blurring is clearly intended to signify 'loading', and the content of the window is clearly meant to be disabled as a results (as a page has already been selected, and Lighthouse is waiting on the results) but the currently styling seems somewhat non-intuitive.

I would suggest that it would make more sense greying out the content (rather than blurring) and adding an appropriate cursor (e.g. cursor: not-allowed or cursor: wait).

The element is still interactive too, despite being blurred, which could add further confusion. Perhaps adding pointer-events: none too would avoid potential conflicts using the extension.

Provide the steps to reproduce

  1. Click Lighthouse extension icon in Chrome (v100.0.0, Windows 10. Chrome 78)
  2. Click 'Generate report' button
  3. Message displayed in main window whilst waiting for results is blurred

What is the current behavior?

The introductory banner loads with blurred styling

What is the expected behavior?

For the box to not be blurred, and instead be fully legible and/or greyed out (and, if disabled, disable interactivity appropriately)

Environment Information

  • Affected Channels: Extension
  • Lighthouse version: 100.0.0.0
  • Chrome version: 78.0.3904.97 (64-bit)
  • Node.js version: n/a
  • Operating System: Windows 10

closed time in 9 days

awdltd

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha 655253c102f35c67d4c8d7e1e92ae653e6dfc1cd

Updates

view details

push time in 12 days

issue commentGoogleChrome/lighthouse

Lighthouse cannot audit SAP UI5 applications

@xiaowang03 this is interesting. thanks for all the info.

unfortunately we can't debug the situation much more from devtools, but we can from the Lighthouse CLI.

https://github.com/GoogleChrome/lighthouse#using-the-node-cli

basically. you need node installed, then you can run this command:

lighthouse https://sapui5.hana.ondemand.com/test-resources/sap/m/demokit/cart/webapp/index.html --only-categories=performance --emulated-form-factor=desktop --gather-mode

this will only collect necessary data from the browser, but not evaluate, so it shouldn't throw an error. but the collected data is saved to a local ./latest-run folder. I'm interested in the contents of those files. So perhaps you could zip them up and share them to me.

There shouldn't be anything personally identifying in there, especially since it's using a completely brand new chrome profile.

if you dont want to post the zip in github you can email it to me (paulirish @ google)

this is a bit of work, but i appreciate you debugging this with me. :) thanks!

xiaowang03

comment created time in 12 days

issue commentGoogleChrome/lighthouse

Lighthouse cannot audit SAP UI5 applications

@xiaowang03 okay thanks for that information. :)

i'm on mac.

image

I tested with both Chrome 79 and Chrome 80 and both look good here.

xiaowang03

comment created time in 12 days

startedyou-dont-need/You-Dont-Need-Momentjs

started time in 12 days

issue commentGoogleChrome/lighthouse

Lighthouse cannot audit SAP UI5 applications

I ran lighthouse against https://sapui5.hana.ondemand.com/test-resources/sap/m/demokit/cart/webapp/index.html and didn't get a NO_FCP error.

Do you get an error when testing this page?

Also note that you can't change tabs while lighthouse is running. it needs to stay in the foreground.

xiaowang03

comment created time in 12 days

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha 3d4b2589fd5d004c89d435f32748df6eff2a67fb

Updates

view details

push time in 13 days

push eventGoogleChrome/lighthouse

Paul Irish

commit sha cc7b13774ae4b3215a9ef7049bf22134e5126bb3

eslint

view details

Paul Irish

commit sha 96da782917f9990e95543fe0650dce1031930a27

drop mkdirp

view details

push time in 13 days

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha e466bda2add69670524d32974f7e33cc679b2cf5

Updates

view details

push time in 13 days

push eventChromeDevTools/devtools-protocol

devtools-bot

commit sha 5d6c6308c7777f7de0b657f03f257723369c4b58

Updates

view details

push time in 13 days

push eventGoogleChrome/lighthouse

Paul Irish

commit sha 05ab2e55e42758709e520d634d2f01d454041c75

exclude key by default

view details

push time in 14 days

PR opened Treee/aoe-tech-tree-widget

readme: fix links

mostly removing /build/ from the link. ;)

but also dropping index.html since its not needed

and correcting the fadeout one


also is it me or can you not trigger all the civ techs from the URL? seems like you need the websocket.

regardless.. it's looking great. nice updates. :)

+3 -3

0 comment

1 changed file

pr created time in 14 days

push eventpaulirish/aoe-tech-tree-widget

Paul Irish

commit sha b7fdb9c7a2b8d7db294aa8c71636612eeccb7829

readme: fix links

view details

push time in 14 days

push eventGoogleChrome/lighthouse

Paul Irish

commit sha 2dad8a85866a29b20604b0951110a2d2922d88c9

numericUnit === 'shiftarinos'. also considering: gigashifts, megamoves. :)

view details

push time in 14 days

CommitCommentEvent

push eventGoogleChrome/lighthouse

Snyk bot

commit sha e72547f70890606a9d29bf95b4724e40c052ddad

deps(snyk): update snyk snapshot (#9965)

view details

Paul Irish

commit sha 83b079069bcb7436de602f20d73f4059d573f50a

core(emulation): bump emulated chrome UA to m80 (#9967)

view details

Patrick Hulce

commit sha fad5983732e786c34bde57d359ad605b4a29bf1e

misc: fix lhci to 0.3.x (#9972)

view details

Tim Giles Jr

commit sha 026b1538c14c3f3d8db12f3e4c3a8e8ae74ce137

docs: add auto-lighthouse entry to 'related projects' (#9954)

view details

Paul Irish

commit sha 648248e270deeef33e1b16b3420b43cc97230a97

core: add settings.internalDisableDeviceScreenEmulation (#9377)

view details

Connor Clark

commit sha 567971889f1a80903f05ce7f6eb0ce302d2d49aa

docs(readme): add link to official lighthoues ci (#9984)

view details

Connor Clark

commit sha d564a69edc23c4ab86247b49aa0ec6d256f0ef3c

clients(extension): use new settings when form updates (#9988)

view details

Connor Clark

commit sha ee171d77707a8c2d6af2bee3a6f6682d4b620ac5

docs(releasing): update procedure for extension (#9989)

view details

Connor Clark

commit sha c53d3d7d4fa1b1a3016e41c98805b6fd9ec695f8

report: source-location for linkifying (#9354)

view details

YeonJuan

commit sha e402c91dfb619037ff34ded958e624c0b2da3e9a

report: fix flicker in normal case report (#9955)

view details

Connor Clark

commit sha fd9292dca3d64debc55752670858b8f9ebd36733

viewer: use new logo (#9991)

view details

Patrick Hulce

commit sha eeb1842364f1d4bd82acce538fd6e338cab3bd39

cli: allow extraHeaders as object (#9962)

view details

Connor Clark

commit sha 508abc5bd73b791e0b500d5e494e24ac33143b64

docs(plugins): update recipe, suggest NODE_ENV=.. hack (#9997)

view details

Connor Clark

commit sha 0f56c853a161520922eaec6d82c2f945d94263cc

docs(integration-tests): using Lighthouse with Jest; verify in our CI (#9722)

view details

Roelf-Jan de Vries

commit sha d2683812f774014a336b3b835a3c5f3d7ab5ec85

core(artifacts): add property attribute to MetaElements (#9978)

view details

Connor Clark

commit sha 18e3a55e137459346729490b63851b4f71271e07

clients(viewer): tweak line height (#9999)

view details

Connor Clark

commit sha 83d9d9ce13ee8729c0a35be37cd09f12b22f0e9a

misc: bump-versions.js release script (#9998)

view details

Connor Clark

commit sha ee3a9dfd665135b9dc03c18c9758b27464df07e0

clients(viewer): update manifest icons (#10002)

view details

ruxin

commit sha 0f600e0cd3b6f1bd8be10d5b4ede9edcfc4940fb

clients(devtools): split up runLighthouseInWorker and expose t… (#10005) Co-authored-by: Paul Irish <paulirish@google.com>

view details

Alex Tkachuk

commit sha 9be09dac968216baacdab6a69de7fffacc937ff4

docs(readme): add PageSpeed Green to related projects (#10018)

view details

push time in 15 days

push eventGoogleChrome/lighthouse

Paul Irish

commit sha cd81deb00579d998f0751cb41c03e61259de68b4

update smoketest

view details

push time in 15 days

push eventGoogleChrome/lighthouse

Connor Clark

commit sha d50ef9e3c9caee2e73221c7a03d6aabdeb32ef9b

misc(build): minify report javascript for lightrider report generator (#9823)

view details

Connor Clark

commit sha 8cfd64b82211ec548267696190ac240017b83b0c

core(driver): fix error handling for Runtime.evaluate (#9831)

view details

Connor Clark

commit sha da4e851bddee55a6f4e8b25e3517c8c0e0678877

clients(lr): don't include html report assets in bundle (#9828)

view details

Connor Clark

commit sha 5cc3990d468f9ee80c30732f463a9167b5269911

core: rename Element to LHElement (#9832)

view details

Patrick Hulce

commit sha 2a3cc4ceefa3824d71c1814038aa8607b43fc23c

misc(errors-in-console): warn on use of unrecognized audit options (#9829)

view details

Patrick Hulce

commit sha 85b8a92980595ebae5381e14b19161039a45f85a

core(tracehouse): allow child to start <1ms before parent (#9786)

view details

Houssein Djirdeh

commit sha 21c8d2f4f3d0bfc63e22d96bdaac73dad71019fd

core(stack-packs): add angular, react, amp, and magento packs (#9797)

view details

Shane Exterkamp

commit sha ba2f21b7274f8ee517fc00e42d4183d57ceb9a27

i18n(import): web.dev links and small corrections (#9846)

view details

Brendan Kenny

commit sha d9e6499a91d203e40488926d43a74ddcccfea076

core(gather): add new MainDocumentContent public artifact (#9781)

view details

Patrick Hulce

commit sha 1f07249f3f8653d66766815fb5ff4f125878cc28

deps: update third-party-web to 0.11.0 (#9849)

view details

Connor Clark

commit sha e3fcd6eba3b99b6e2314b20f3be8cd2261f9d59c

tests(smokehouse): fix tmp directory creation (#9855)

view details

Connor Clark

commit sha 848b54397bd062f83d00ac8a87608df8011cf8f1

5.6.0 (#9856)

view details

Brendan Kenny

commit sha 14b6ec4af07c70c5bb736fa0bd57f71b88fe3582

deps: remove mkdirp and make-dir for fs.mkdir (#9858)

view details

Kayce Basques

commit sha 5d42745d31f1c99a1e414c63d71a2d0ca5a35540

core(total-blocking-time): add description link to docs (#9850)

view details

Connor Clark

commit sha 43d5d5a61155b05fe7d8640ba253b07438a135e3

misc: add chrome version field to bug report template (#9866)

view details

Brendan Kenny

commit sha 2b0058848879a790ab330fc096be9c43ec0b458e

tests(i18n): add locale-file rough-correctness check (#9847)

view details

Katie Hempenius

commit sha dab020167000860c2b8fc43ee76963eb83d63a94

core(lightwallet): adds computed/timing-summary.js (refactor) (#9814)

view details

Connor Clark

commit sha 4e11bd297010a3957a6f76a8e25abddc7ed5a716

tests(viewer): don't override puppeteer's chromium (#9877)

view details

Brendan Kenny

commit sha c1a5ff51e4f40de07fd0531fc8d1c3a7bb7a3e5e

new_audit: add new accessibility audits (#9798)

view details

Patrick Hulce

commit sha 9d78ca0c305a9188d49cf0fc3ae4fa7ffb5c80fc

misc: upgrade lhci dogfood script (#9879)

view details

push time in 15 days

Pull request review commentGoogleChrome/lighthouse

misc(collect-timings): report metrics, add gather/audit modes, etc.

 function collect() {  /**  * @param {string} name+ * @param {string} resultType  */-function aggregateResults(name) {+function aggregateResults(name, resultType = 'timings') {   const outputDir = dir(name);    // `${url}@@@${entry.name}` -> duration   /** @type {Map<string, number[]>} */   const durationsMap = new Map();-  const measureFilter = argv.measureFilter ? new RegExp(argv.measureFilter, 'i') : null;+  const includeFilter = argv.filter ? new RegExp(argv.filter, 'i') : null; -  for (const lhrPath of fs.readdirSync(outputDir)) {-    const lhrJson = fs.readFileSync(`${outputDir}/${lhrPath}`, 'utf-8');+  for (const lhrPath of glob.sync(`${outputDir}/*.json`)) {+    const lhrJson = fs.readFileSync(lhrPath, 'utf-8');     /** @type {LH.Result} */     const lhr = JSON.parse(lhrJson);      // Group the durations of each entry of the same name.     /** @type {Record<string, number[]>} */     const durationsByName = {};-    for (const entry of lhr.timing.entries) {-      if (measureFilter && !measureFilter.test(entry.name)) {++    const metrics = /** @type {!LH.Audit.Details.Table} */ (lhr.audits.metrics.details).items[0];+    const entries = resultType === 'metrics' ?+        Object.entries(metrics).filter(([name]) => !name.endsWith('Ts')) :+        lhr.timing.entries.map(entry => ([entry.name, entry.duration]));++    for (const [name, timimg] of entries) {+      if (includeFilter && !includeFilter.test(String(name))) {         continue;       } -      const durations = durationsByName[entry.name] = durationsByName[entry.name] || [];-      durations.push(entry.duration);+      const durations = durationsByName[name] = durationsByName[name] || [];+      durations.push(Number(timimg));

ah thx. renaming to duration anyway.

paulirish

comment created time in 15 days

Pull request review commentGoogleChrome/lighthouse

misc(collect-timings): report metrics, add gather/audit modes, etc.

 function filter(results) { }  /**- * @param {number=} value+ * @param {number|string|undefined} value  * @return {value is number}  */ function exists(value) {   return typeof value !== 'undefined'; }  function summarize() {-  const results = aggregateResults(argv.name);-  filter(results);-  print(results);+  for (const resultType of ['timings', 'metrics']) { 

k done and documented.

paulirish

comment created time in 15 days

Pull request review commentGoogleChrome/lighthouse

misc(collect-timings): report metrics, add gather/audit modes, etc.

 function filter(results) { }  /**- * @param {number=} value+ * @param {number|string|undefined} value

i do like using typeof number tho. did that.

paulirish

comment created time in 15 days

more