diff --git a/lighthouse-core/gather/gatherers/dobetterweb/response-compression.js b/lighthouse-core/gather/gatherers/dobetterweb/response-compression.js index c599f65465d3..65861cd31ac8 100644 --- a/lighthouse-core/gather/gatherers/dobetterweb/response-compression.js +++ b/lighthouse-core/gather/gatherers/dobetterweb/response-compression.js @@ -14,6 +14,7 @@ const Gatherer = require('../gatherer'); const gzip = require('zlib').gzip; const compressionTypes = ['gzip', 'br', 'deflate']; +const CHROME_EXTENSION_PROTOCOL = 'chrome-extension:'; class ResponseCompression extends Gatherer { /** @@ -25,7 +26,10 @@ class ResponseCompression extends Gatherer { networkRecords.forEach(record => { const isTextBasedResource = record.resourceType() && record.resourceType().isTextType(); - if (!isTextBasedResource || !record.resourceSize || !record.finished) { + const isChromeExtensionResource = record.url.startsWith(CHROME_EXTENSION_PROTOCOL); + + if (!isTextBasedResource || !record.resourceSize || !record.finished || + isChromeExtensionResource) { return; } diff --git a/lighthouse-core/test/gather/gatherers/dobetterweb/response-compression-test.js b/lighthouse-core/test/gather/gatherers/dobetterweb/response-compression-test.js index 21b6652c339f..a994c503fe4e 100644 --- a/lighthouse-core/test/gather/gatherers/dobetterweb/response-compression-test.js +++ b/lighthouse-core/test/gather/gatherers/dobetterweb/response-compression-test.js @@ -116,6 +116,43 @@ describe('Optimized responses', () => { }); }); + it('ignores responses from installed Chrome extensions', () => { + const traceData = { + networkRecords: [ + { + _url: 'chrome-extension://index.css', + _mimeType: 'text/css', + _requestId: 1, + _resourceSize: 10, + _resourceType: { + _isTextType: true, + }, + _responseHeaders: [], + content: 'aaaaaaaaaa', + finished: true, + }, + { + _url: 'http://google.com/chrome-extension.css', + _mimeType: 'text/css', + _requestId: 1, + _resourceSize: 123, + _resourceType: { + _isTextType: true, + }, + _responseHeaders: [], + content: 'aaaaaaaaaa', + finished: true, + } + ] + }; + + return responseCompression.afterPass(options, createNetworkRequests(traceData)) + .then(artifact => { + assert.equal(artifact.length, 1); + assert.equal(artifact[0].resourceSize, 123); + }); + }); + // Change into SDK.networkRequest when examples are ready function createNetworkRequests(traceData) { traceData.networkRecords = traceData.networkRecords.map(record => {