1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Consolidate E2E test helper functions into helper.js (#7684)

E2E test helper functions were split between `helper.js` and `func.js`.
They've now all been moved to `helper.js`.
This commit is contained in:
Mark Stacey 2019-12-10 15:23:25 -04:00 committed by GitHub
parent 885d30f90a
commit 958ac69ba1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 69 additions and 113 deletions

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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 + ')')
}

View File

@ -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)
}

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,