diff --git a/test/e2e/address-book.spec.js b/test/e2e/address-book.spec.js index b9907c2ba..c0a05fc84 100644 --- a/test/e2e/address-book.spec.js +++ b/test/e2e/address-book.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, findElement, findElements, verboseReportOnFailure, diff --git a/test/e2e/ethereum-on.spec.js b/test/e2e/ethereum-on.spec.js index 5686146e0..fb74e5719 100644 --- a/test/e2e/ethereum-on.spec.js +++ b/test/e2e/ethereum-on.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, findElement, openNewPage, verboseReportOnFailure, diff --git a/test/e2e/from-import-ui.spec.js b/test/e2e/from-import-ui.spec.js index aa2a9f9e9..4ca3bd242 100644 --- a/test/e2e/from-import-ui.spec.js +++ b/test/e2e/from-import-ui.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, Key, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, verboseReportOnFailure, findElement, findElements, diff --git a/test/e2e/func.js b/test/e2e/func.js deleted file mode 100644 index 93ef9e283..000000000 --- a/test/e2e/func.js +++ /dev/null @@ -1,71 +0,0 @@ -require('chromedriver') -require('geckodriver') -const fs = require('fs-extra') -const os = require('os') -const path = require('path') -const webdriver = require('selenium-webdriver') -const Command = require('selenium-webdriver/lib/command').Command -const By = webdriver.By - -module.exports = { - delay, - buildChromeWebDriver, - buildFirefoxWebdriver, - installWebExt, - getExtensionIdChrome, - getExtensionIdFirefox, -} - -function delay (time) { - return new Promise(resolve => setTimeout(resolve, time)) -} - -function buildChromeWebDriver (extPath, opts = {}) { - const tmpProfile = fs.mkdtempSync(path.join(os.tmpdir(), 'mm-chrome-profile')) - const args = [ - `load-extension=${extPath}`, - `user-data-dir=${tmpProfile}`, - ] - if (opts.responsive) { - args.push('--auto-open-devtools-for-tabs') - } - return new webdriver.Builder() - .withCapabilities({ - chromeOptions: { - args, - binary: process.env.SELENIUM_CHROME_BINARY, - }, - }) - .build() -} - -function buildFirefoxWebdriver (opts = {}) { - const driver = new webdriver.Builder().build() - if (opts.responsive) { - driver.manage().window().setSize(320, 600) - } - return driver -} - -async function getExtensionIdChrome (driver) { - await driver.get('chrome://extensions') - const extensionId = await driver.executeScript('return document.querySelector("extensions-manager").shadowRoot.querySelector("extensions-item-list").shadowRoot.querySelector("extensions-item:nth-child(2)").getAttribute("id")') - return extensionId -} - -async function getExtensionIdFirefox (driver) { - await driver.get('about:debugging#addons') - const extensionId = await driver.wait(webdriver.until.elementLocated(By.xpath('//dl/div[contains(., \'Internal UUID\')]/dd')), 1000).getText() - return extensionId -} - -async function installWebExt (driver, extension) { - const cmd = await new Command('moz-install-web-ext') - .setParameter('path', path.resolve(extension)) - .setParameter('temporary', true) - - await driver.getExecutor() - .defineCommand(cmd.getName(), 'POST', '/session/:sessionId/moz/addon/install') - - return await driver.schedule(cmd, 'installWebExt(' + extension + ')') -} diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index 4be776aac..893aacd2f 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -3,16 +3,10 @@ const path = require('path') const mkdirp = require('mkdirp') const pify = require('pify') const assert = require('assert') +const os = require('os') +const { By, Builder, until } = require('selenium-webdriver') +const { Command } = require('selenium-webdriver/lib/command') -const { - delay, - getExtensionIdChrome, - getExtensionIdFirefox, - buildChromeWebDriver, - buildFirefoxWebdriver, - installWebExt, -} = require('./func') -const { until } = require('selenium-webdriver') const fetchMockResponses = require('./fetch-mocks.json') const tinyDelayMs = 200 @@ -23,6 +17,7 @@ module.exports = { assertElementNotPresent, checkBrowserForConsoleErrors, closeAllWindowHandlesExcept, + delay, findElement, findElements, openNewPage, @@ -109,6 +104,56 @@ async function setupFetchMocking (driver) { await driver.executeScript(`(${fetchMocking})(${fetchMockResponsesJson})`) } +function buildChromeWebDriver (extPath, opts = {}) { + const tmpProfile = fs.mkdtempSync(path.join(os.tmpdir(), 'mm-chrome-profile')) + const args = [ + `load-extension=${extPath}`, + `user-data-dir=${tmpProfile}`, + ] + if (opts.responsive) { + args.push('--auto-open-devtools-for-tabs') + } + return new Builder() + .withCapabilities({ + chromeOptions: { + args, + binary: process.env.SELENIUM_CHROME_BINARY, + }, + }) + .build() +} + +function buildFirefoxWebdriver (opts = {}) { + const driver = new Builder().build() + if (opts.responsive) { + driver.manage().window().setSize(320, 600) + } + return driver +} + +async function getExtensionIdChrome (driver) { + await driver.get('chrome://extensions') + const extensionId = await driver.executeScript('return document.querySelector("extensions-manager").shadowRoot.querySelector("extensions-item-list").shadowRoot.querySelector("extensions-item:nth-child(2)").getAttribute("id")') + return extensionId +} + +async function getExtensionIdFirefox (driver) { + await driver.get('about:debugging#addons') + const extensionId = await driver.wait(until.elementLocated(By.xpath('//dl/div[contains(., \'Internal UUID\')]/dd')), 1000).getText() + return extensionId +} + +async function installWebExt (driver, extension) { + const cmd = await new Command('moz-install-web-ext') + .setParameter('path', path.resolve(extension)) + .setParameter('temporary', true) + + await driver.getExecutor() + .defineCommand(cmd.getName(), 'POST', '/session/:sessionId/moz/addon/install') + + return await driver.schedule(cmd, 'installWebExt(' + extension + ')') +} + async function checkBrowserForConsoleErrors (driver) { const ignoredLogTypes = ['WARNING'] const ignoredErrorMessages = [ @@ -142,6 +187,10 @@ async function verboseReportOnFailure (driver, test) { await pify(fs.writeFile)(`${filepathBase}-dom.html`, htmlSource) } +function delay (time) { + return new Promise(resolve => setTimeout(resolve, time)) +} + async function findElement (driver, by, timeout = 10000) { return driver.wait(until.elementLocated(by), timeout) } diff --git a/test/e2e/incremental-security.spec.js b/test/e2e/incremental-security.spec.js index 027e881b6..635d85eec 100644 --- a/test/e2e/incremental-security.spec.js +++ b/test/e2e/incremental-security.spec.js @@ -1,12 +1,10 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, until } = webdriver -const { - delay, -} = require('./func') const { assertElementNotPresent, checkBrowserForConsoleErrors, + delay, findElement, findElements, openNewPage, diff --git a/test/e2e/metamask-responsive-ui.spec.js b/test/e2e/metamask-responsive-ui.spec.js index 3f4d6733b..1b3a0dec8 100644 --- a/test/e2e/metamask-responsive-ui.spec.js +++ b/test/e2e/metamask-responsive-ui.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, findElement, findElements, verboseReportOnFailure, diff --git a/test/e2e/metamask-ui.spec.js b/test/e2e/metamask-ui.spec.js index ea82eae1e..076c26069 100644 --- a/test/e2e/metamask-ui.spec.js +++ b/test/e2e/metamask-ui.spec.js @@ -1,13 +1,11 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, Key, until } = webdriver -const { - delay, -} = require('./func') const { assertElementNotPresent, checkBrowserForConsoleErrors, closeAllWindowHandlesExcept, + delay, findElement, findElements, openNewPage, diff --git a/test/e2e/permissions.spec.js b/test/e2e/permissions.spec.js index 4c346e86e..fbf87c44c 100644 --- a/test/e2e/permissions.spec.js +++ b/test/e2e/permissions.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, findElement, findElements, openNewPage, diff --git a/test/e2e/send-edit.spec.js b/test/e2e/send-edit.spec.js index 93b9357b9..0fc43dd95 100644 --- a/test/e2e/send-edit.spec.js +++ b/test/e2e/send-edit.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, Key, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, verboseReportOnFailure, findElement, findElements, diff --git a/test/e2e/signature-request.spec.js b/test/e2e/signature-request.spec.js index 46eba2ea8..fc6c62ca3 100644 --- a/test/e2e/signature-request.spec.js +++ b/test/e2e/signature-request.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, findElement, findElements, openNewPage, diff --git a/test/e2e/threebox.spec.js b/test/e2e/threebox.spec.js index b532afecc..083844e55 100644 --- a/test/e2e/threebox.spec.js +++ b/test/e2e/threebox.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By, until } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, findElement, findElements, verboseReportOnFailure, diff --git a/test/e2e/web3.spec.js b/test/e2e/web3.spec.js index 8c0853755..d2b0ad0a8 100644 --- a/test/e2e/web3.spec.js +++ b/test/e2e/web3.spec.js @@ -1,11 +1,9 @@ const assert = require('assert') const webdriver = require('selenium-webdriver') const { By } = webdriver -const { - delay, -} = require('./func') const { checkBrowserForConsoleErrors, + delay, findElement, findElements, openNewPage,