From 0fa90149868d5c21bca75e318a392e1ecb77c6f0 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Jun 2018 09:37:08 -0700 Subject: test - e2e - reduce browser-specific code --- test/e2e/metamask.spec.js | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index a08a34d96..f993f3fca 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -8,31 +8,33 @@ const { By, Key } = webdriver const { delay, buildChromeWebDriver, buildFirefoxWebdriver, installWebExt, getExtensionIdChrome, getExtensionIdFirefox } = require('./func') describe('Metamask popup page', function () { - let driver, accountAddress, tokenAddress, extensionId + const browser = process.env.SELENIUM_BROWSER + let driver, accountAddress, tokenAddress, extensionId, extensionUri this.timeout(0) before(async function () { - if (process.env.SELENIUM_BROWSER === 'chrome') { - const extPath = path.resolve('dist/chrome') + const extPath = path.resolve(`dist/${browser}`) + if (browser === 'chrome') { driver = buildChromeWebDriver(extPath) extensionId = await getExtensionIdChrome(driver) - await driver.get(`chrome-extension://${extensionId}/popup.html`) - - } else if (process.env.SELENIUM_BROWSER === 'firefox') { - const extPath = path.resolve('dist/firefox') + extensionUri = `chrome-extension://${extensionId}/popup.html` + } else if (browser === 'firefox') { driver = buildFirefoxWebdriver() await installWebExt(driver, extPath) await delay(700) extensionId = await getExtensionIdFirefox(driver) - await driver.get(`moz-extension://${extensionId}/popup.html`) + extensionUri = `moz-extension://${extensionId}/popup.html` + } else { + throw new Error(`Unknown Browser "${browser}"`) } + await driver.get(extensionUri) }) afterEach(async function () { // logs command not supported in firefox // https://github.com/SeleniumHQ/selenium/issues/2910 - if (process.env.SELENIUM_BROWSER === 'chrome') { + if (browser === 'chrome') { // check for console errors const errors = await checkBrowserForConsoleErrors() if (errors.length) { @@ -272,11 +274,7 @@ describe('Metamask popup page', function () { }) it('navigates back to MetaMask popup in the tab', async function () { - if (process.env.SELENIUM_BROWSER === 'chrome') { - await driver.get(`chrome-extension://${extensionId}/popup.html`) - } else if (process.env.SELENIUM_BROWSER === 'firefox') { - await driver.get(`moz-extension://${extensionId}/popup.html`) - } + await driver.get(extensionUri) await delay(700) }) }) @@ -340,12 +338,7 @@ describe('Metamask popup page', function () { } async function verboseReportOnFailure (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 artifactDir = `./test-artifacts/${browser}/${test.title}` const filepathBase = `${artifactDir}/test-failure` await pify(mkdirp)(artifactDir) // capture screenshot -- cgit From 02f5502e16fefc8d92392e614861e3f672c4f909 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Jun 2018 11:04:28 -0700 Subject: test - e2e - inject metamask config to point at localhost --- test/e2e/metamask.spec.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index f993f3fca..06c13b3d0 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -1,8 +1,9 @@ -const fs = require('fs') +const fs = require('fs-extra') const mkdirp = require('mkdirp') const path = require('path') const assert = require('assert') const pify = require('pify') +const prependFile = pify(require('prepend-file')) const webdriver = require('selenium-webdriver') const { By, Key } = webdriver const { delay, buildChromeWebDriver, buildFirefoxWebdriver, installWebExt, getExtensionIdChrome, getExtensionIdFirefox } = require('./func') @@ -14,7 +15,13 @@ describe('Metamask popup page', function () { this.timeout(0) before(async function () { - const extPath = path.resolve(`dist/${browser}`) + const srcPath = path.resolve(`dist/${browser}`) + const extPath = path.resolve(`test-builds/${browser}`) + await fs.ensureDir(extPath) + await fs.copy(srcPath, extPath) + const config = { NetworkController: { provider: { type: 'localhost' } } } + await prependFile(`${extPath}/background.js`, `window.METAMASK_CONFIG=${JSON.stringify(config)};\n`) + if (browser === 'chrome') { driver = buildChromeWebDriver(extPath) extensionId = await getExtensionIdChrome(driver) @@ -46,6 +53,7 @@ describe('Metamask popup page', function () { // gather extra data if test failed if (this.currentTest.state === 'failed') { await verboseReportOnFailure(this.currentTest) + await delay(1000000) } }) @@ -61,11 +69,6 @@ describe('Metamask popup page', function () { await driver.switchTo().window(windowHandles[0]) }) - it('sets provider type to localhost', async function () { - await delay(300) - await setProviderType('localhost') - }) - }) describe('Account Creation', () => { @@ -313,10 +316,6 @@ describe('Metamask popup page', function () { }) }) - async function setProviderType (type) { - await driver.executeScript('window.metamask.setProviderType(arguments[0])', type) - } - async function checkBrowserForConsoleErrors() { const ignoredLogTypes = ['WARNING'] const ignoredErrorMessages = [ -- cgit From ebb9447593a877cd299e701ddfcb217070068fac Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Jun 2018 14:25:49 -0700 Subject: test - e2e - factor out setup phase + rename METAMASK_CONFIG to METAMASK_TEST_CONFIG --- test/e2e/metamask.spec.js | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 06c13b3d0..0d6ab9b35 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -3,10 +3,8 @@ const mkdirp = require('mkdirp') const path = require('path') const assert = require('assert') const pify = require('pify') -const prependFile = pify(require('prepend-file')) -const webdriver = require('selenium-webdriver') -const { By, Key } = webdriver -const { delay, buildChromeWebDriver, buildFirefoxWebdriver, installWebExt, getExtensionIdChrome, getExtensionIdFirefox } = require('./func') +const { By, Key } = require('selenium-webdriver') +const { delay, createModifiedTestBuild, setupBrowserAndExtension } = require('./func') describe('Metamask popup page', function () { const browser = process.env.SELENIUM_BROWSER @@ -16,25 +14,11 @@ describe('Metamask popup page', function () { before(async function () { const srcPath = path.resolve(`dist/${browser}`) - const extPath = path.resolve(`test-builds/${browser}`) - await fs.ensureDir(extPath) - await fs.copy(srcPath, extPath) - const config = { NetworkController: { provider: { type: 'localhost' } } } - await prependFile(`${extPath}/background.js`, `window.METAMASK_CONFIG=${JSON.stringify(config)};\n`) + const { extPath } = await createModifiedTestBuild({ browser, srcPath }) + const installResult = await setupBrowserAndExtension({ browser, extPath }) + driver = installResult.driver + extensionUri = installResult.extensionUri - if (browser === 'chrome') { - driver = buildChromeWebDriver(extPath) - extensionId = await getExtensionIdChrome(driver) - extensionUri = `chrome-extension://${extensionId}/popup.html` - } else if (browser === 'firefox') { - driver = buildFirefoxWebdriver() - await installWebExt(driver, extPath) - await delay(700) - extensionId = await getExtensionIdFirefox(driver) - extensionUri = `moz-extension://${extensionId}/popup.html` - } else { - throw new Error(`Unknown Browser "${browser}"`) - } await driver.get(extensionUri) }) @@ -53,7 +37,6 @@ describe('Metamask popup page', function () { // gather extra data if test failed if (this.currentTest.state === 'failed') { await verboseReportOnFailure(this.currentTest) - await delay(1000000) } }) -- cgit From 8a0961b4a8bd7eef50b8d8e45d73390f43795a14 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Jun 2018 14:46:45 -0700 Subject: test - e2e - more factoring of test setup --- test/e2e/metamask.spec.js | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 0d6ab9b35..5153c0ee5 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -4,7 +4,7 @@ const path = require('path') const assert = require('assert') const pify = require('pify') const { By, Key } = require('selenium-webdriver') -const { delay, createModifiedTestBuild, setupBrowserAndExtension } = require('./func') +const { delay, createModifiedTestBuild, setupBrowserAndExtension, verboseReportOnFailure } = require('./func') describe('Metamask popup page', function () { const browser = process.env.SELENIUM_BROWSER @@ -36,7 +36,7 @@ describe('Metamask popup page', function () { } // gather extra data if test failed if (this.currentTest.state === 'failed') { - await verboseReportOnFailure(this.currentTest) + await verboseReportOnFailure({ browser, driver, title: this.currentTest.title }) } }) @@ -319,16 +319,4 @@ describe('Metamask popup page', function () { return matchedErrorObjects } - async function verboseReportOnFailure (test) { - const artifactDir = `./test-artifacts/${browser}/${test.title}` - const filepathBase = `${artifactDir}/test-failure` - await pify(mkdirp)(artifactDir) - // capture screenshot - const screenshot = await driver.takeScreenshot() - await pify(fs.writeFile)(`${filepathBase}-screenshot.png`, screenshot, { encoding: 'base64' }) - // capture dom source - const htmlSource = await driver.getPageSource() - await pify(fs.writeFile)(`${filepathBase}-dom.html`, htmlSource) - } - }) -- cgit From ab0e60e802b500460d919825971deb7c5ef4bc1b Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Jun 2018 15:34:54 -0700 Subject: test - e2e - fix incomplete setup phase --- test/e2e/metamask.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 5153c0ee5..6243bf8d6 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -20,6 +20,7 @@ describe('Metamask popup page', function () { extensionUri = installResult.extensionUri await driver.get(extensionUri) + await delay(300) }) afterEach(async function () { @@ -47,7 +48,6 @@ describe('Metamask popup page', function () { describe('Setup', function () { it('switches to Chrome extensions list', async function () { - await delay(300) const windowHandles = await driver.getAllWindowHandles() await driver.switchTo().window(windowHandles[0]) }) -- cgit From 93a2e287058205dbc14448d2c50e3ba4dab005c7 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Jun 2018 16:45:29 -0700 Subject: test - e2e - remove usage of extensionId from tests --- test/e2e/metamask.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 6243bf8d6..30b077cde 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -8,7 +8,7 @@ const { delay, createModifiedTestBuild, setupBrowserAndExtension, verboseReportO describe('Metamask popup page', function () { const browser = process.env.SELENIUM_BROWSER - let driver, accountAddress, tokenAddress, extensionId, extensionUri + let driver, accountAddress, tokenAddress, extensionUri this.timeout(0) -- cgit From 9f11042d72c15b1725fb5f4b6484cc9d9583b34b Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 2 Jul 2018 16:03:53 -0700 Subject: test - e2e - move timings --- test/e2e/metamask.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index d80fc9430..2d0da46f0 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -79,6 +79,7 @@ describe('Metamask popup page', function () { it('allows the button to be clicked when scrolled to the bottom of TOU', async () => { const button = await driver.findElement(By.css('#app-content > div > div.app-primary.from-right > div > div.flex-column.flex-center.flex-grow > button')) await button.click() + await delay(300) }) it('shows privacy notice', async () => { @@ -89,7 +90,6 @@ describe('Metamask popup page', function () { }) it('shows phishing notice', async () => { - await delay(300) const noticeHeader = await driver.findElement(By.css('.terms-header')).getText() assert.equal(noticeHeader, 'PHISHING WARNING', 'shows phishing warning') const element = await driver.findElement(By.css('.markdown')) -- cgit From b75abfac60c1fa1d023237e7e3609580cce1a2d3 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 2 Jul 2018 23:54:18 -0700 Subject: test - e2e - fix missing import --- test/e2e/metamask.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 2d0da46f0..9a277b453 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -3,7 +3,7 @@ const mkdirp = require('mkdirp') const path = require('path') const assert = require('assert') const pify = require('pify') -const { By, Key } = require('selenium-webdriver') +const { By, Key, until } = require('selenium-webdriver') const { delay, createModifiedTestBuild, setupBrowserAndExtension, verboseReportOnFailure } = require('./func') describe('Metamask popup page', function () { -- cgit From 9ffed5fd18761fdbad841c89defe20b9eb2b4548 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 14 Aug 2018 11:29:43 -0700 Subject: E2E - Dont error on browser errors --- test/e2e/metamask.spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index c59983c79..38246a044 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -29,7 +29,8 @@ describe('Metamask popup page', function () { if (errors.length) { const errorReports = errors.map(err => err.message) const errorMessage = `Errors found in browser console:\n${errorReports.join('\n')}` - this.test.error(new Error(errorMessage)) + console.error(new Error(errorMessage)) + } } // gather extra data if test failed -- cgit From 88b5f82e1360ab7dd9873a5d7105fbbe1130d839 Mon Sep 17 00:00:00 2001 From: Paul Bouchon Date: Wed, 26 Sep 2018 00:16:01 -0400 Subject: Bugfix: Upgrade json-rpc-engine (#5348) * Bugfix: bump version of json-rpc-engine * Increase delay * Update lockfile * deps - json-rpc-engine@3.7.4 --- test/e2e/metamask.spec.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'test/e2e/metamask.spec.js') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 38246a044..13af6cb22 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -201,17 +201,17 @@ describe('Metamask popup page', function () { }) it('balance renders', async function () { - await delay(200) + await delay(500) const balance = await driver.findElement(By.css('#app-content > div > div.app-primary.from-right > div > div > div.flex-row > div.ether-balance.ether-balance-amount > div > div > div:nth-child(1) > div:nth-child(1)')) assert.equal(await balance.getText(), '100.000') await delay(200) }) it('sends transaction', async function () { - const sendButton = await driver.findElement(By.css('#app-content > div > div.app-primary.from-right > div > div > div.flex-row > button:nth-child(4)')) - assert.equal(await sendButton.getText(), 'SEND') - await sendButton.click() - await delay(200) + const sendButton = await driver.findElement(By.css('#app-content > div > div.app-primary.from-right > div > div > div.flex-row > button:nth-child(4)')) + assert.equal(await sendButton.getText(), 'SEND') + await sendButton.click() + await delay(200) }) it('adds recipient address and amount', async function () { -- cgit