aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Stacey <markjstacey@gmail.com>2019-07-16 04:10:46 +0800
committerGitHub <noreply@github.com>2019-07-16 04:10:46 +0800
commit32fffe53f5016b8fc4f2b78f4501fc271705b96d (patch)
tree4378f764047ddafaf9c30f0fd3fd05603164e802
parent45b3b5df5cf3bb52169ab9b9631e8315db63d559 (diff)
downloadtangerine-wallet-browser-32fffe53f5016b8fc4f2b78f4501fc271705b96d.tar.gz
tangerine-wallet-browser-32fffe53f5016b8fc4f2b78f4501fc271705b96d.tar.zst
tangerine-wallet-browser-32fffe53f5016b8fc4f2b78f4501fc271705b96d.zip
Remove Drizzle tests (#6855)
The Drizzle tests have not been used for some time. They were used to ensure compatibility with newer versions of `web3` v1. If we want to re-add tests to ensure compatibility with newer `web3` versions, we should find some way of doing that more reliably than was done here - these tests were somewhat flaky and unreliable.
-rw-r--r--.circleci/config.yml18
-rw-r--r--app/scripts/inpage.js2
-rw-r--r--package.json1
-rw-r--r--test/e2e/drizzle.spec.js286
-rwxr-xr-xtest/e2e/run-drizzle.sh31
5 files changed, 1 insertions, 337 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index a3cb6cd71..0074dadf9 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -26,10 +26,6 @@ workflows:
- test-e2e-firefox:
requires:
- prep-deps-npm
- # - test-e2e-beta-drizzle:
- # requires:
- # - prep-deps-npm
- # - prep-build
- test-unit:
requires:
- prep-deps-npm
@@ -52,7 +48,6 @@ workflows:
- test-mozilla-lint
- test-e2e-chrome
- test-e2e-firefox
- # - test-e2e-beta-drizzle
- test-integration-flat-chrome
- test-integration-flat-firefox
- job-publish-prerelease:
@@ -160,19 +155,6 @@ jobs:
name: npm audit
command: .circleci/scripts/npm-audit
- # test-e2e-beta-drizzle:
- # docker:
- # - image: circleci/node:8.11.3-browsers
- # steps:
- # - checkout
- # - attach_workspace:
- # at: .
- # - run:
- # name: test:e2e:drizzle:beta
- # command: npm run test:e2e:drizzle:beta
- # - store_artifacts:
- # path: test-artifacts
- # destination: test-artifacts
test-e2e-chrome:
docker:
- image: circleci/node:10.16-browsers
diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js
index 2a0a9ad18..a94787b05 100644
--- a/app/scripts/inpage.js
+++ b/app/scripts/inpage.js
@@ -134,7 +134,7 @@ inpageProvider._metamask = new Proxy({
})
// Work around for web3@1.0 deleting the bound `sendAsync` but not the unbound
-// `sendAsync` method on the prototype, causing `this` reference issues with drizzle
+// `sendAsync` method on the prototype, causing `this` reference issues
const proxiedInpageProvider = new Proxy(inpageProvider, {
// straight up lie that we deleted the property so that it doesnt
// throw an error in strict mode
diff --git a/package.json b/package.json
index 28ff0264e..359f0001b 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,6 @@
"test:single": "cross-env METAMASK_ENV=test mocha --require test/helper.js",
"test:integration": "npm run test:integration:build && npm run test:flat",
"test:integration:build": "gulp build:scss",
- "test:e2e:drizzle:beta": "SELENIUM_BROWSER=chrome test/e2e/run-drizzle.sh",
"test:e2e:chrome": "SELENIUM_BROWSER=chrome test/e2e/run-all.sh",
"test:web3:chrome": "SELENIUM_BROWSER=chrome test/e2e/run-web3.sh",
"test:web3:firefox": "SELENIUM_BROWSER=firefox test/e2e/run-web3.sh",
diff --git a/test/e2e/drizzle.spec.js b/test/e2e/drizzle.spec.js
deleted file mode 100644
index cda55cf01..000000000
--- a/test/e2e/drizzle.spec.js
+++ /dev/null
@@ -1,286 +0,0 @@
-const path = require('path')
-const assert = require('assert')
-const webdriver = require('selenium-webdriver')
-const { By, until } = webdriver
-const {
- delay,
- buildChromeWebDriver,
- buildFirefoxWebdriver,
- installWebExt,
- getExtensionIdChrome,
- getExtensionIdFirefox,
-} = require('./func')
-const {
- checkBrowserForConsoleErrors,
- closeAllWindowHandlesExcept,
- findElement,
- findElements,
- loadExtension,
- openNewPage,
- verboseReportOnFailure,
- waitUntilXWindowHandles,
- switchToWindowWithTitle,
-} = require('./helpers')
-
-describe('MetaMask', function () {
- let extensionId
- let driver
-
- const tinyDelayMs = 200
- const regularDelayMs = tinyDelayMs * 2
- const largeDelayMs = regularDelayMs * 2
-
- this.timeout(0)
- this.bail(true)
-
- before(async function () {
- switch (process.env.SELENIUM_BROWSER) {
- case 'chrome': {
- const extPath = path.resolve('dist/chrome')
- driver = buildChromeWebDriver(extPath)
- extensionId = await getExtensionIdChrome(driver)
- await driver.get(`chrome-extension://${extensionId}/popup.html`)
- break
- }
- case 'firefox': {
- const extPath = path.resolve('dist/firefox')
- driver = buildFirefoxWebdriver()
- await installWebExt(driver, extPath)
- await delay(700)
- extensionId = await getExtensionIdFirefox(driver)
- await driver.get(`moz-extension://${extensionId}/popup.html`)
- }
- }
- })
-
- afterEach(async function () {
- if (process.env.SELENIUM_BROWSER === 'chrome') {
- const errors = await checkBrowserForConsoleErrors(driver)
- if (errors.length) {
- const errorReports = errors.map(err => err.message)
- const errorMessage = `Errors found in browser console:\n${errorReports.join('\n')}`
- console.error(new Error(errorMessage))
- }
- }
- if (this.currentTest.state === 'failed') {
- await verboseReportOnFailure(driver, this.currentTest)
- }
- })
-
- after(async function () {
- await driver.quit()
- })
-
-
- describe('New UI setup', async function () {
- it('switches to first tab', async function () {
- await delay(tinyDelayMs)
- const [firstTab] = await driver.getAllWindowHandles()
- await driver.switchTo().window(firstTab)
- await delay(regularDelayMs)
- })
-
- it('selects the new UI option', async () => {
- // Close all other tabs
- const [tab0, tab1, tab2] = await driver.getAllWindowHandles()
- await driver.switchTo().window(tab0)
- await delay(tinyDelayMs)
-
- let selectedUrl = await driver.getCurrentUrl()
- await delay(tinyDelayMs)
- if (tab0 && selectedUrl.match(/popup.html/)) {
- await closeAllWindowHandlesExcept(driver, tab0)
- } else if (tab1) {
- await driver.switchTo().window(tab1)
- selectedUrl = await driver.getCurrentUrl()
- await delay(tinyDelayMs)
- if (selectedUrl.match(/popup.html/)) {
- await closeAllWindowHandlesExcept(driver, tab1)
- } else if (tab2) {
- await driver.switchTo().window(tab2)
- selectedUrl = await driver.getCurrentUrl()
- selectedUrl.match(/popup.html/) && await closeAllWindowHandlesExcept(driver, tab2)
- }
- } else {
- throw new Error('popup.html not found')
- }
- await delay(regularDelayMs)
- const [appTab] = await driver.getAllWindowHandles()
- await driver.switchTo().window(appTab)
- await delay(tinyDelayMs)
-
- await loadExtension(driver, extensionId)
- await delay(regularDelayMs)
-
- const continueBtn = await findElement(driver, By.css('.first-time-flow__button'))
- await continueBtn.click()
- await delay(regularDelayMs)
- })
- })
-
- describe('Going through the first time flow', () => {
- it('accepts a secure password', async () => {
- const passwordBox = await findElement(driver, By.css('.first-time-flow__form #create-password'))
- const passwordBoxConfirm = await findElement(driver, By.css('.first-time-flow__form #confirm-password'))
- const button = await findElement(driver, By.css('.first-time-flow__form button'))
-
- await passwordBox.sendKeys('correct horse battery staple')
- await passwordBoxConfirm.sendKeys('correct horse battery staple')
- await button.click()
- await delay(regularDelayMs)
- })
-
- it('clicks through the unique image screen', async () => {
- await findElement(driver, By.css('.first-time-flow__unique-image'))
- const nextScreen = await findElement(driver, By.css('button.first-time-flow__button'))
- await nextScreen.click()
- await delay(regularDelayMs)
- })
-
- it('clicks through the ToS', async () => {
- // terms of use
- await findElement(driver, By.css('.first-time-flow__markdown'))
- const canClickThrough = await driver.findElement(By.css('button.first-time-flow__button')).isEnabled()
- assert.equal(canClickThrough, false, 'disabled continue button')
- const bottomOfTos = await findElement(driver, By.linkText('Attributions'))
- await driver.executeScript('arguments[0].scrollIntoView(true)', bottomOfTos)
- await delay(regularDelayMs)
- const acceptTos = await findElement(driver, By.css('button.first-time-flow__button'))
- driver.wait(until.elementIsEnabled(acceptTos))
- await acceptTos.click()
- await delay(regularDelayMs)
- })
-
- it('clicks through the privacy notice', async () => {
- // privacy notice
- const nextScreen = await findElement(driver, By.css('button.first-time-flow__button'))
- await nextScreen.click()
- await delay(regularDelayMs)
- })
-
- it('clicks through the phishing notice', async () => {
- // phishing notice
- const noticeElement = await driver.findElement(By.css('.first-time-flow__markdown'))
- await driver.executeScript('arguments[0].scrollTop = arguments[0].scrollHeight', noticeElement)
- await delay(regularDelayMs)
- const nextScreen = await findElement(driver, By.css('button.first-time-flow__button'))
- await nextScreen.click()
- await delay(regularDelayMs)
- })
-
- let seedPhrase
-
- it('reveals the seed phrase', async () => {
- const byRevealButton = By.css('.reveal-seed-phrase__secret-blocker .reveal-seed-phrase__reveal-button')
- await driver.wait(until.elementLocated(byRevealButton, 10000))
- const revealSeedPhraseButton = await findElement(driver, byRevealButton, 10000)
- await revealSeedPhraseButton.click()
- await delay(regularDelayMs)
-
- seedPhrase = await driver.findElement(By.css('.reveal-seed-phrase__secret-words')).getText()
- assert.equal(seedPhrase.split(' ').length, 12)
- await delay(regularDelayMs)
-
- const nextScreen = await findElement(driver, By.css('button.first-time-flow__button'))
- await nextScreen.click()
- await delay(regularDelayMs)
- })
-
- async function clickWordAndWait (word) {
- const xpath = `//div[contains(@class, 'confirm-seed-phrase__seed-word--shuffled') and not(contains(@class, 'confirm-seed-phrase__seed-word--selected')) and contains(text(), '${word}')]`
- const word0 = await findElement(driver, By.xpath(xpath), 10000)
-
- await word0.click()
- await delay(tinyDelayMs)
- }
-
- async function retypeSeedPhrase (words, wasReloaded, count = 0) {
- try {
- if (wasReloaded) {
- const byRevealButton = By.css('.reveal-seed-phrase__secret-blocker .reveal-seed-phrase__reveal-button')
- await driver.wait(until.elementLocated(byRevealButton, 10000))
- const revealSeedPhraseButton = await findElement(driver, byRevealButton, 10000)
- await revealSeedPhraseButton.click()
- await delay(regularDelayMs)
-
- const nextScreen = await findElement(driver, By.css('button.first-time-flow__button'))
- await nextScreen.click()
- await delay(regularDelayMs)
- }
-
- for (let i = 0; i < 12; i++) {
- await clickWordAndWait(words[i])
- }
- } catch (e) {
- if (count > 2) {
- throw e
- } else {
- await loadExtension(driver, extensionId)
- await retypeSeedPhrase(words, true, count + 1)
- }
- }
- }
-
- it('can retype the seed phrase', async () => {
- const words = seedPhrase.split(' ')
-
- await retypeSeedPhrase(words)
-
- const confirm = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
- await confirm.click()
- await delay(regularDelayMs)
- })
-
- it('clicks through the deposit modal', async () => {
- const byBuyModal = By.css('span .modal')
- const buyModal = await driver.wait(until.elementLocated(byBuyModal))
- const closeModal = await findElement(driver, By.css('.page-container__header-close'))
- await closeModal.click()
- await driver.wait(until.stalenessOf(buyModal))
- await delay(regularDelayMs)
- })
-
- it('switches to localhost', async () => {
- const networkDropdown = await findElement(driver, By.css('.network-name'))
- await networkDropdown.click()
- await delay(regularDelayMs)
-
- const [localhost] = await findElements(driver, By.xpath(`//span[contains(text(), 'Localhost')]`))
- await localhost.click()
- await delay(largeDelayMs * 2)
- })
- })
-
- describe('Drizzle', () => {
- let windowHandles
- let extension
- let popup
- let dapp
-
- it('should be able to connect the account', async () => {
- await openNewPage(driver, 'http://127.0.0.1:3000/')
- await delay(regularDelayMs)
-
- await waitUntilXWindowHandles(driver, 3)
- windowHandles = await driver.getAllWindowHandles()
-
- extension = windowHandles[0]
- popup = await switchToWindowWithTitle(driver, 'MetaMask Notification', windowHandles)
- dapp = windowHandles.find(handle => handle !== extension && handle !== popup)
-
- await delay(regularDelayMs)
- const approveButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Connect')]`))
- await approveButton.click()
- })
-
- it('should be able to detect our eth address', async () => {
- // Check if address exposed
- await driver.switchTo().window(dapp)
- await delay(regularDelayMs)
-
- const addressElement = await findElement(driver, By.css(`.pure-u-1-1 h4`))
- const addressText = await addressElement.getText()
- assert(addressText.match(/^0x[a-fA-F0-9]{40}$/))
- })
- })
-})
diff --git a/test/e2e/run-drizzle.sh b/test/e2e/run-drizzle.sh
deleted file mode 100755
index f3db2638a..000000000
--- a/test/e2e/run-drizzle.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -u
-set -o pipefail
-
-npm run ganache:start -- -b 2 >> /dev/null 2>&1 &
-npm_run_ganache_start_pid=$!
-sleep 5
-
-pushd "$(mktemp -d)"
-npm install --no-package-lock truffle
-truffle="$(npm bin)/truffle"
-$truffle unbox drizzle
-echo "Deploying contracts for Drizzle test..."
-$truffle compile
-$truffle migrate
-
-BROWSER=none npm start >> /dev/null 2>&1 &
-npm_start_pid=$!
-
-popd
-if ! mocha test/e2e/drizzle.spec
-then
- test_status=1
-fi
-
-! kill -15 $npm_run_ganache_start_pid
-! kill -15 $npm_start_pid
-! wait $npm_run_ganache_start_pid $npm_start_pid
-exit ${test_status:-}