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/beta/metamask-beta-ui.spec.js | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index ceeea31a5..8960e7e79 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -4,11 +4,8 @@ const webdriver = require('selenium-webdriver') const { By, Key, until } = webdriver const { delay, - buildChromeWebDriver, - buildFirefoxWebdriver, - installWebExt, - getExtensionIdChrome, - getExtensionIdFirefox, + createModifiedTestBuild, + setupBrowserAndExtension, } = require('../func') const { findElement, @@ -19,6 +16,7 @@ const { } = require('./helpers') describe('MetaMask', function () { + const browser = process.env.SELENIUM_BROWSER let extensionId let driver let tokenAddress @@ -33,27 +31,15 @@ describe('MetaMask', function () { 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`) - } - } + const srcPath = path.resolve(`dist/${browser}`) + const { extPath } = await createModifiedTestBuild({ browser, srcPath }) + const installResult = await setupBrowserAndExtension({ browser, extPath }) + driver = installResult.driver + extensionUri = installResult.extensionUri }) afterEach(async function () { - if (process.env.SELENIUM_BROWSER === 'chrome') { + if (browser === 'chrome') { const errors = await checkBrowserForConsoleErrors(driver) if (errors.length) { const errorReports = errors.map(err => err.message) -- 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/beta/metamask-beta-ui.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 8960e7e79..14ea5b0a5 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -6,13 +6,13 @@ const { delay, createModifiedTestBuild, setupBrowserAndExtension, + verboseReportOnFailure, } = require('../func') const { findElement, findElements, checkBrowserForConsoleErrors, loadExtension, - verboseReportOnFailure, } = require('./helpers') describe('MetaMask', function () { @@ -48,7 +48,7 @@ describe('MetaMask', function () { } } if (this.currentTest.state === 'failed') { - await verboseReportOnFailure(this.currentTest) + await verboseReportOnFailure({ browser, driver, title: this.currentTest.tile }) } }) -- 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/beta/metamask-beta-ui.spec.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 14ea5b0a5..3cc9f6a2a 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -36,6 +36,9 @@ describe('MetaMask', function () { const installResult = await setupBrowserAndExtension({ browser, extPath }) driver = installResult.driver extensionUri = installResult.extensionUri + + await driver.get(extensionUri) + await delay(tinyDelayMs) }) afterEach(async function () { @@ -48,7 +51,7 @@ describe('MetaMask', function () { } } if (this.currentTest.state === 'failed') { - await verboseReportOnFailure({ browser, driver, title: this.currentTest.tile }) + await verboseReportOnFailure({ browser, driver, title: this.currentTest.title }) } }) -- 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/beta/metamask-beta-ui.spec.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 3cc9f6a2a..efd116c97 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -12,13 +12,12 @@ const { findElement, findElements, checkBrowserForConsoleErrors, - loadExtension, } = require('./helpers') describe('MetaMask', function () { const browser = process.env.SELENIUM_BROWSER - let extensionId let driver + let extensionUri let tokenAddress const testSeedPhrase = 'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent' @@ -361,7 +360,7 @@ describe('MetaMask', function () { await delay(regularDelayMs) await driver.switchTo().window(extension) - await loadExtension(driver, extensionId) + await driver.get(extensionUri) await delay(regularDelayMs) const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`), 14000) @@ -374,7 +373,7 @@ describe('MetaMask', function () { await delay(regularDelayMs) await driver.switchTo().window(extension) await delay(regularDelayMs) - await loadExtension(driver, extensionId) + await driver.get(extensionUri) await delay(regularDelayMs) }) }) @@ -437,7 +436,7 @@ describe('MetaMask', function () { await delay(regularDelayMs) await driver.switchTo().window(extension) - await loadExtension(driver, extensionId) + await driver.get(extensionUri) await delay(regularDelayMs) const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`)) @@ -450,7 +449,7 @@ describe('MetaMask', function () { tokenAddress = await tokenContactAddress.getText() await driver.close() await driver.switchTo().window(extension) - await loadExtension(driver, extensionId) + await driver.get(extensionUri) await delay(regularDelayMs) }) -- cgit From 9d1b4cc1d720335855c2b53f01df8366a018d99c Mon Sep 17 00:00:00 2001 From: kumavis Date: Tue, 12 Jun 2018 08:19:57 -0700 Subject: test - e2e - beta - dont select localhost as it is already set --- test/e2e/beta/metamask-beta-ui.spec.js | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index efd116c97..afd0e9496 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -51,6 +51,7 @@ describe('MetaMask', function () { } if (this.currentTest.state === 'failed') { await verboseReportOnFailure({ browser, driver, title: this.currentTest.title }) + await delay(1000000) } }) @@ -65,16 +66,6 @@ describe('MetaMask', function () { await delay(regularDelayMs) }) - it('use the local network', async function () { - const networkSelector = await findElement(driver, By.css('#network_component')) - await networkSelector.click() - await delay(regularDelayMs) - - const localhost = await findElement(driver, By.xpath(`//li[contains(text(), 'Localhost')]`)) - await localhost.click() - await delay(regularDelayMs) - }) - it('selects the new UI option', async () => { const button = await findElement(driver, By.xpath("//p[contains(text(), 'Try Beta Version')]")) await button.click() -- cgit From 0ada37ead77ca4506b216b961896342e6af94eac Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 2 Jul 2018 15:46:33 -0700 Subject: test - e2e-beta - update some api calls --- test/e2e/beta/metamask-beta-ui.spec.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 50998fd5d..ad7eda0f5 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -12,8 +12,6 @@ const { findElement, findElements, checkBrowserForConsoleErrors, - loadExtension, - verboseReportOnFailure, openNewPage, } = require('./helpers') @@ -53,7 +51,7 @@ describe('MetaMask', function () { } } if (this.currentTest.state === 'failed') { - await verboseReportOnFailure(driver, this.currentTest) + await verboseReportOnFailure({ browser, driver, title: this.currentTest.title }) } }) @@ -70,7 +68,7 @@ describe('MetaMask', function () { try { networkSelector = await findElement(driver, By.css('#network_component')) } catch (e) { - await loadExtension(driver, extensionId) + await driver.get(extensionUri) } await delay(regularDelayMs) }) @@ -240,7 +238,7 @@ describe('MetaMask', function () { await word11.click() await delay(tinyDelayMs) } catch (e) { - await loadExtension(driver, extensionId) + await driver.get(extensionUri) await retypeSeedPhrase(words) } } @@ -597,7 +595,7 @@ describe('MetaMask', function () { await driver.close() await driver.switchTo().window(extension) - await loadExtension(driver, extensionId) + await driver.get(extensionUri) await driver.switchTo().window(extension) await delay(regularDelayMs) -- cgit From 66120c627f2aeebf369efdb47963eaa9c3569752 Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 8 Aug 2018 18:04:48 -0700 Subject: confirms a deplay contract tx in the popup --- test/e2e/beta/metamask-beta-ui.spec.js | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index ef83b69c6..99f95f7aa 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -511,6 +511,15 @@ describe('MetaMask', function () { await delay(regularDelayMs) }) + it('confirms a deploy contract transaction in the popup', async () => { + const windowHandles = await driver.getAllWindowHandles() + extension = windowHandles[0] + const popup = windowHandles[2] + await driver.switchTo().window(popup) + const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`)) + await confirmButton.click() + }) + it('calls and confirms a contract method where ETH is sent', async () => { await driver.switchTo().window(dapp) await delay(regularDelayMs) -- cgit From de6f8b68115929f11114a05fcf830b50e683880f Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 8 Aug 2018 21:06:08 -0700 Subject: Delay --- test/e2e/beta/metamask-beta-ui.spec.js | 1 + 1 file changed, 1 insertion(+) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 99f95f7aa..66369fcb5 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -518,6 +518,7 @@ describe('MetaMask', function () { await driver.switchTo().window(popup) const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`)) await confirmButton.click() + await delay(regularDelayMs) }) it('calls and confirms a contract method where ETH is sent', async () => { -- cgit From 7918240833871648dea6f9787519ba20f1e51899 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 13 Aug 2018 10:31:07 -0700 Subject: Confirms new contract token in the popup --- test/e2e/beta/metamask-beta-ui.spec.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 66369fcb5..807282411 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -513,7 +513,6 @@ describe('MetaMask', function () { it('confirms a deploy contract transaction in the popup', async () => { const windowHandles = await driver.getAllWindowHandles() - extension = windowHandles[0] const popup = windowHandles[2] await driver.switchTo().window(popup) const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`)) @@ -622,20 +621,21 @@ describe('MetaMask', function () { describe('Add a custom token from a dapp', () => { it('creates a new token', async () => { - const windowHandles = await driver.getAllWindowHandles() + let windowHandles = await driver.getAllWindowHandles() const extension = windowHandles[0] const dapp = windowHandles[1] await delay(regularDelayMs * 2) await driver.switchTo().window(dapp) - await delay(regularDelayMs) + await delay(regularDelayMs * 2) const createToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Create Token')]`)) await createToken.click() - await delay(regularDelayMs) + await delay(largeDelayMs) - await driver.switchTo().window(extension) - await loadExtension(driver, extensionId) + windowHandles = await driver.getAllWindowHandles() + const popup = windowHandles[2] + await driver.switchTo().window(popup) await delay(regularDelayMs) const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`)) -- cgit From a59e47e7b0e862b5d490a77a4433093e299f8105 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Tue, 14 Aug 2018 12:38:25 -0230 Subject: Add missing awaits and/or missing wait timeouts in test/e2e/beta/metamask-beta-ui.spec.js --- test/e2e/beta/metamask-beta-ui.spec.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 3ad5c2d61..75e220c7f 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -345,8 +345,8 @@ describe('MetaMask', function () { const passwordInputs = await driver.findElements(By.css('input')) await delay(regularDelayMs) - passwordInputs[0].sendKeys('correct horse battery staple') - passwordInputs[1].sendKeys('correct horse battery staple') + await passwordInputs[0].sendKeys('correct horse battery staple') + await passwordInputs[1].sendKeys('correct horse battery staple') await driver.findElement(By.css('.first-time-flow__button')).click() await delay(regularDelayMs) }) @@ -438,7 +438,7 @@ describe('MetaMask', function () { await driver.switchTo().window(windowHandles[2]) await delay(regularDelayMs) - assertElementNotPresent(webdriver, driver, By.xpath(`//li[contains(text(), 'Data')]`)) + await assertElementNotPresent(webdriver, driver, By.xpath(`//li[contains(text(), 'Data')]`)) const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`), 10000) await confirmButton.click() @@ -515,15 +515,15 @@ describe('MetaMask', function () { await driver.switchTo().window(dapp) await delay(regularDelayMs) - let contractStatus = await driver.findElement(By.css('#contractStatus')) - await driver.wait(until.elementTextMatches(contractStatus, /Deployed/)) + let contractStatus = await findElement(driver, By.css('#contractStatus')) + await driver.wait(until.elementTextMatches(contractStatus, /Deployed/), 10000) const depositButton = await findElement(driver, By.css('#depositButton')) await depositButton.click() await delay(largeDelayMs) - contractStatus = await driver.findElement(By.css('#contractStatus')) - await driver.wait(until.elementTextMatches(contractStatus, /Deposit\sinitiated/)) + contractStatus = await findElement(driver, By.css('#contractStatus')) + await driver.wait(until.elementTextMatches(contractStatus, /Deposit\sinitiated/), 10000) await driver.switchTo().window(extension) await delay(largeDelayMs) @@ -539,8 +539,8 @@ describe('MetaMask', function () { await configureGas.click() await delay(regularDelayMs) - const gasModal = await driver.findElement(By.css('span .modal')) - await driver.wait(until.elementLocated(By.css('.customize-gas__title'))) + const gasModal = await findElement(driver, By.css('span .modal')) + await driver.wait(until.elementLocated(By.css('.customize-gas__title')), 10000) const [gasPriceInput, gasLimitInput] = await findElements(driver, By.css('.customize-gas-input')) await gasPriceInput.clear() -- cgit From 42256cfbd2d2acb709981e6bdb9718163b6a3270 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Tue, 14 Aug 2018 16:28:04 -0230 Subject: Increase timeout on wait for contract status update in metamask-beta-ui-spec --- test/e2e/beta/metamask-beta-ui.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 75e220c7f..6121878ba 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -516,7 +516,7 @@ describe('MetaMask', function () { await delay(regularDelayMs) let contractStatus = await findElement(driver, By.css('#contractStatus')) - await driver.wait(until.elementTextMatches(contractStatus, /Deployed/), 10000) + await driver.wait(until.elementTextMatches(contractStatus, /Deployed/), 15000) const depositButton = await findElement(driver, By.css('#depositButton')) await depositButton.click() -- cgit From c4fe6aa9cfeddab231587359ef55ad80aa13efa0 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Tue, 14 Aug 2018 16:45:07 -0230 Subject: Reload e2e beta test browser if initial screen doesn't load. --- test/e2e/beta/metamask-beta-ui.spec.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 6121878ba..20040505a 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -88,7 +88,14 @@ describe('MetaMask', function () { await driver.wait(until.stalenessOf(overlay)) } catch (e) {} - const button = await findElement(driver, By.xpath("//button[contains(text(), 'Try it now')]")) + let button + try { + button = await findElement(driver, By.xpath("//button[contains(text(), 'Try it now')]")) + } catch (e) { + await loadExtension(driver, extensionId) + await delay(largeDelayMs) + button = await findElement(driver, By.xpath("//button[contains(text(), 'Try it now')]")) + } await button.click() await delay(regularDelayMs) -- cgit From ff7242349172bc3bedabdb4da3f1fae97c8edadf Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Tue, 14 Aug 2018 17:30:43 -0230 Subject: Add explicit waits for submitted status for some txs initiated from test dapp. --- test/e2e/beta/metamask-beta-ui.spec.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'test/e2e/beta/metamask-beta-ui.spec.js') diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 20040505a..43300bda6 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -460,6 +460,11 @@ describe('MetaMask', function () { const transactions = await findElements(driver, By.css('.tx-list-item')) assert.equal(transactions.length, 2) + await findElement(driver, By.xpath(`//span[contains(text(), 'Submitted')]`)) + + const txStatuses = await findElements(driver, By.css('.tx-list-status')) + await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed/)) + const txValues = await findElement(driver, By.css('.tx-list-value')) await driver.wait(until.elementTextMatches(txValues, /3\sETH/), 10000) }) @@ -510,6 +515,8 @@ describe('MetaMask', function () { await confirmButton.click() await delay(regularDelayMs) + await findElement(driver, By.xpath(`//span[contains(text(), 'Submitted')]`)) + const txStatuses = await findElements(driver, By.css('.tx-list-status')) await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed/)) -- cgit