From cc768b0e4e055d22e3ad2cedf8f04cb0924e99c5 Mon Sep 17 00:00:00 2001 From: Dave Vandyke Date: Sat, 7 May 2022 16:54:47 +0100 Subject: [PATCH] Run the integration tests in headless Chrome Puppeteer recently added headless support for running Chrome extensions[1], so let's make use of that. Also, let's take care to properly wait for the extension's background page to load. 1 - https://github.com/puppeteer/puppeteer/pull/8260 --- integration-test/helpers/harness.js | 29 ++++++++----------- package-lock.json | 43 +++++++---------------------- package.json | 2 +- 3 files changed, 22 insertions(+), 52 deletions(-) diff --git a/integration-test/helpers/harness.js b/integration-test/helpers/harness.js index 9ad82ed9f4..72977eac8d 100644 --- a/integration-test/helpers/harness.js +++ b/integration-test/helpers/harness.js @@ -21,7 +21,7 @@ const setup = async (ops) => { args: [ `--user-data-dir=${dataDir}` ], - headless: false + headless: 'chrome' } if (loadExtension) { @@ -53,23 +53,16 @@ const setup = async (ops) => { const requests = [] if (loadExtension) { - // grab a handle on the background page for the extension - // we can't use the long ID as it could possibly change - for (const t of await browser.targets()) { - // for some reason we need to init a blank page - // before the extension is initialized - await browser.newPage() - - const title = t._targetInfo.title - - if (title === 'DuckDuckGo Privacy Essentials') { - bgPage = await t.page() - break - } - } - - if (!bgPage) { - throw new Error('couldn\'t get background page') + // Grab a handle on the background page for the extension. + try { + const backgroundPageTarget = + await browser.waitForTarget( + target => target.type() === 'background_page', + { timeout: 2000 } + ) + bgPage = await backgroundPageTarget.page() + } catch (e) { + throw new Error('Couldn\'t find background page.') } bgPage.on('request', (req) => { requests.push(req.url()) }) diff --git a/package-lock.json b/package-lock.json index 8f9a489fca..1372f00c31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,7 +61,7 @@ "karma-source-map-support": "1.4.0", "load-grunt-tasks": "5.1.0", "node-fetch": "^3.2.3", - "puppeteer": "13.6.0", + "puppeteer": "13.7.0", "sass": "^1.50.1", "standard": "17.0.0", "timekeeper": "^2.1.1", @@ -12139,9 +12139,9 @@ } }, "node_modules/puppeteer": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.6.0.tgz", - "integrity": "sha512-EJXhTyY5bXNPLFXPGcY9JaF6EKJIX8ll8cGG3WUK+553Jx96oDf1cB+lkFOro9p0X16tY+9xx7zYWl+vnWgW2g==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", + "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -12149,7 +12149,7 @@ "debug": "4.3.4", "devtools-protocol": "0.0.981744", "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", + "https-proxy-agent": "5.0.1", "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", @@ -12175,19 +12175,6 @@ "node": ">=8" } }, - "node_modules/puppeteer/node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/puppeteer/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -18071,7 +18058,7 @@ "asana": { "version": "git+ssh://git@github.com/Asana/node-asana.git#0847653c98660e6f3e07c1487224e3583723f8ca", "dev": true, - "from": "asana@https://github.com/Asana/node-asana", + "from": "asana@github:Asana/node-asana", "requires": { "bluebird": "^3.7.2", "browser-request": "^0.3.2", @@ -25218,16 +25205,16 @@ } }, "puppeteer": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.6.0.tgz", - "integrity": "sha512-EJXhTyY5bXNPLFXPGcY9JaF6EKJIX8ll8cGG3WUK+553Jx96oDf1cB+lkFOro9p0X16tY+9xx7zYWl+vnWgW2g==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", + "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", "dev": true, "requires": { "cross-fetch": "3.1.5", "debug": "4.3.4", "devtools-protocol": "0.0.981744", "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", + "https-proxy-agent": "5.0.1", "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", @@ -25247,16 +25234,6 @@ "path-exists": "^4.0.0" } }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", diff --git a/package.json b/package.json index dd90567417..ab2ecefa71 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "karma-source-map-support": "1.4.0", "load-grunt-tasks": "5.1.0", "node-fetch": "^3.2.3", - "puppeteer": "13.6.0", + "puppeteer": "13.7.0", "sass": "^1.50.1", "standard": "17.0.0", "timekeeper": "^2.1.1",