aboutsummaryrefslogtreecommitdiffstats
path: root/test/e2e/beta/helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/e2e/beta/helpers.js')
-rw-r--r--test/e2e/beta/helpers.js167
1 files changed, 0 insertions, 167 deletions
diff --git a/test/e2e/beta/helpers.js b/test/e2e/beta/helpers.js
deleted file mode 100644
index b6fc35e08..000000000
--- a/test/e2e/beta/helpers.js
+++ /dev/null
@@ -1,167 +0,0 @@
-const fs = require('fs')
-const mkdirp = require('mkdirp')
-const pify = require('pify')
-const assert = require('assert')
-const { delay } = require('../func')
-const { until } = require('selenium-webdriver')
-
-module.exports = {
- assertElementNotPresent,
- checkBrowserForConsoleErrors,
- closeAllWindowHandlesExcept,
- findElement,
- findElements,
- loadExtension,
- openNewPage,
- switchToWindowWithTitle,
- switchToWindowWithUrlThatMatches,
- verboseReportOnFailure,
- waitUntilXWindowHandles,
-}
-
-async function loadExtension (driver, extensionId) {
- switch (process.env.SELENIUM_BROWSER) {
- case 'chrome': {
- await driver.get(`chrome-extension://${extensionId}/home.html`)
- break
- }
- case 'firefox': {
- await driver.get(`moz-extension://${extensionId}/home.html`)
- break
- }
- }
-}
-
-async function checkBrowserForConsoleErrors (driver) {
- const ignoredLogTypes = ['WARNING']
- const ignoredErrorMessages = [
- // React throws error warnings on "dataset", but still sets the data-* properties correctly
- 'Warning: Unknown prop `dataset` on ',
- // Third-party Favicon 404s show up as errors
- 'favicon.ico - Failed to load resource: the server responded with a status of 404 (Not Found)',
- // React Development build - known issue blocked by test build sys
- 'Warning: It looks like you\'re using a minified copy of the development build of React.',
- // Redux Development build - known issue blocked by test build sys
- 'This means that you are running a slower development build of Redux.',
- ]
- const browserLogs = await driver.manage().logs().get('browser')
- const errorEntries = browserLogs.filter(entry => !ignoredLogTypes.includes(entry.level.toString()))
- const errorObjects = errorEntries.map(entry => entry.toJSON())
- return errorObjects.filter(entry => !ignoredErrorMessages.some(message => entry.message.includes(message)))
-}
-
-async function verboseReportOnFailure (driver, test) {
- let artifactDir
- if (process.env.SELENIUM_BROWSER === 'chrome') {
- artifactDir = `./test-artifacts/chrome/${test.title}`
- } else if (process.env.SELENIUM_BROWSER === 'firefox') {
- artifactDir = `./test-artifacts/firefox/${test.title}`
- }
- const filepathBase = `${artifactDir}/test-failure`
- await pify(mkdirp)(artifactDir)
- const screenshot = await driver.takeScreenshot()
- await pify(fs.writeFile)(`${filepathBase}-screenshot.png`, screenshot, { encoding: 'base64' })
- const htmlSource = await driver.getPageSource()
- await pify(fs.writeFile)(`${filepathBase}-dom.html`, htmlSource)
-}
-
-async function findElement (driver, by, timeout = 10000) {
- return driver.wait(until.elementLocated(by), timeout)
-}
-
-async function findElements (driver, by, timeout = 10000) {
- return driver.wait(until.elementsLocated(by), timeout)
-}
-
-async function openNewPage (driver, url) {
- await driver.executeScript('window.open()')
- await delay(1000)
-
- const handles = await driver.getAllWindowHandles()
- const lastHandle = handles[handles.length - 1]
- await driver.switchTo().window(lastHandle)
-
- await driver.get(url)
- await delay(1000)
-}
-
-async function waitUntilXWindowHandles (driver, x, delayStep = 1000, timeout = 5000) {
- let timeElapsed = 0
- async function _pollWindowHandles () {
- const windowHandles = await driver.getAllWindowHandles()
- if (windowHandles.length === x) {
- return
- }
- await delay(delayStep)
- timeElapsed += delayStep
- if (timeElapsed > timeout) {
- throw new Error('waitUntilXWindowHandles timed out polling window handles')
- } else {
- await _pollWindowHandles()
- }
- }
- return await _pollWindowHandles()
-}
-
-async function switchToWindowWithTitle (driver, title, windowHandles) {
- if (!windowHandles) {
- windowHandles = await driver.getAllWindowHandles()
- } else if (windowHandles.length === 0) {
- throw new Error('No window with title: ' + title)
- }
- const firstHandle = windowHandles[0]
- await driver.switchTo().window(firstHandle)
- const handleTitle = await driver.getTitle()
-
- if (handleTitle === title) {
- return firstHandle
- } else {
- return await switchToWindowWithTitle(driver, title, windowHandles.slice(1))
- }
-}
-
-/**
- * Closes all windows except those in the given list of exceptions
- * @param {object} driver the WebDriver instance
- * @param {string|Array<string>} exceptions the list of window handle exceptions
- * @param {Array?} windowHandles the full list of window handles
- * @returns {Promise<void>}
- */
-async function closeAllWindowHandlesExcept (driver, exceptions, windowHandles) {
- exceptions = typeof exceptions === 'string' ? [ exceptions ] : exceptions
- windowHandles = windowHandles || await driver.getAllWindowHandles()
- const lastWindowHandle = windowHandles.pop()
- if (!exceptions.includes(lastWindowHandle)) {
- await driver.switchTo().window(lastWindowHandle)
- await delay(1000)
- await driver.close()
- await delay(1000)
- }
- return windowHandles.length && await closeAllWindowHandlesExcept(driver, exceptions, windowHandles)
-}
-
-async function assertElementNotPresent (webdriver, driver, by) {
- let dataTab
- try {
- dataTab = await findElement(driver, by, 4000)
- } catch (err) {
- assert(err instanceof webdriver.error.NoSuchElementError || err instanceof webdriver.error.TimeoutError)
- }
- assert.ok(!dataTab, 'Found element that should not be present')
-}
-
-async function switchToWindowWithUrlThatMatches (driver, regexp, windowHandles) {
- if (!windowHandles) {
- windowHandles = await driver.getAllWindowHandles()
- } else if (windowHandles.length === 0) {
- throw new Error('No window that matches: ' + regexp)
- }
- const firstHandle = windowHandles[0]
- await driver.switchTo().window(firstHandle)
- const windowUrl = await driver.getCurrentUrl()
- if (windowUrl.match(regexp)) {
- return firstHandle
- } else {
- return await switchToWindowWithUrlThatMatches(driver, regexp, windowHandles.slice(1))
- }
-}