diff --git a/packages/cli/src/lib/renderer.js b/packages/cli/src/lib/renderer.js index 030255b6a..2433b3bda 100644 --- a/packages/cli/src/lib/renderer.js +++ b/packages/cli/src/lib/renderer.js @@ -16,6 +16,7 @@ class Renderer { async serialize(requestUrl) { const page = await this.browser.newPage(); + let response = null; // Page may reload when setting isMobile // https://github.com/GoogleChrome/puppeteer/blob/v1.10.0/docs/api.md#pagesetviewportviewport @@ -23,7 +24,20 @@ class Renderer { page.evaluateOnNewDocument('ShadyDOM = {force: true}'); page.evaluateOnNewDocument('ShadyCSS = {shimcssproperties: true}'); - let response = null; + await page.setRequestInterception(true); + + page.on('request', interceptedRequest => { + const interceptedRequestUrl = interceptedRequest.url(); + + if ( + interceptedRequestUrl.indexOf('bundle.js') >= 0 || // webpack bundles, webcomponents-bundle.js + interceptedRequestUrl === requestUrl // pages / routes + ) { + interceptedRequest.continue(); + } else { + interceptedRequest.abort(); + } + }); // Capture main frame response. This is used in the case that rendering // times out, which results in puppeteer throwing an error. This allows us diff --git a/packages/plugin-google-analytics/test/cases/default/default.spec.js b/packages/plugin-google-analytics/test/cases/default/default.spec.js index 043d3ae60..8a55c1755 100644 --- a/packages/plugin-google-analytics/test/cases/default/default.spec.js +++ b/packages/plugin-google-analytics/test/cases/default/default.spec.js @@ -48,7 +48,8 @@ describe('Build Greenwood With: ', async function() { runSmokeTest(['public', 'index', 'not-found', 'hello'], LABEL); describe('Initialization script at the end of the tag', function() { - let inlineScript; + let inlineScript = []; + let scriptSrcTags = []; beforeEach(async function() { const dom = await JSDOM.fromFile(path.resolve(this.context.publicDir, 'index.html')); @@ -58,6 +59,10 @@ describe('Build Greenwood With: ', async function() { return !script.src; }); + scriptSrcTags = Array.prototype.slice.call(scriptTags).filter(script => { + return script.src && script.src.indexOf('google') >= 0; + }); + }); it('should be one inline