From 5834c13769a4c84fc89f2c4bd2480f3fe58b5100 Mon Sep 17 00:00:00 2001 From: kumavis Date: Wed, 28 Mar 2018 13:37:02 -0700 Subject: ui - change window title 'MetaMask Plugin' to 'MetaMask' --- test/e2e/metamask.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/e2e') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index c73ba2b41..e81e0a8df 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -33,7 +33,7 @@ describe('Metamask popup page', function () { it('should match title', async () => { const title = await driver.getTitle() - assert.equal(title, 'MetaMask Plugin', 'title matches MetaMask Plugin') + assert.equal(title, 'MetaMask', 'title matches MetaMask') }) it('should show privacy notice', async () => { -- cgit v1.2.3 From 830b232cb967ee986706e39aed50ef9a6d729a1e Mon Sep 17 00:00:00 2001 From: kumavis Date: Thu, 29 Mar 2018 11:59:13 -0700 Subject: test - e2e - prefer css selectors over xpath --- test/e2e/metamask.spec.js | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'test/e2e') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index c73ba2b41..a7d0a0efd 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -14,7 +14,7 @@ describe('Metamask popup page', function () { const extPath = path.resolve('dist/chrome') driver = buildWebDriver(extPath) await driver.get('chrome://extensions-frame') - const elems = await driver.findElements(By.className('extension-list-item-wrapper')) + const elems = await driver.findElements(By.css('.extension-list-item-wrapper')) const extensionId = await elems[1].getAttribute('id') await driver.get(`chrome-extension://${extensionId}/popup.html`) await delay(500) @@ -37,9 +37,7 @@ describe('Metamask popup page', function () { }) it('should show privacy notice', async () => { - const privacy = await driver.findElement(By.className( - 'terms-header' - )).getText() + const privacy = await driver.findElement(By.css('.terms-header')).getText() assert.equal(privacy, 'PRIVACY NOTICE', 'shows privacy notice') driver.findElement(By.css( 'button' @@ -48,9 +46,7 @@ describe('Metamask popup page', function () { it('should show terms of use', async () => { await delay(300) - const terms = await driver.findElement(By.className( - 'terms-header' - )).getText() + const terms = await driver.findElement(By.css('.terms-header')).getText() assert.equal(terms, 'TERMS OF USE', 'shows terms of use') }) @@ -87,16 +83,16 @@ describe('Metamask popup page', function () { it('should show value was created and seed phrase', async () => { await delay(700) - this.seedPhase = await driver.findElement(By.className('twelve-word-phrase')).getText() + this.seedPhase = await driver.findElement(By.css('.twelve-word-phrase')).getText() const continueAfterSeedPhrase = await driver.findElement(By.css('button')) await continueAfterSeedPhrase.click() }) it('should show lock account', async () => { await delay(300) - await driver.findElement(By.className('sandwich-expando')).click() + await driver.findElement(By.css('.sandwich-expando')).click() await delay(500) - await driver.findElement(By.xpath('//*[@id="app-content"]/div/div[3]/span/div/li[2]')).click() + await driver.findElement(By.css('#app-content > div > div > div:nth-child(3) > span > div > li:nth-child(3)')).click() }) it('should accept account password after lock', async () => { @@ -106,16 +102,16 @@ describe('Metamask popup page', function () { await delay(500) }) - it('should show QR code', async () => { + it('should show QR code option', async () => { await delay(300) - await driver.findElement(By.className('fa-ellipsis-h')).click() - await driver.findElement(By.xpath('//*[@id="app-content"]/div/div[4]/div/div/div[1]/flex-column/div[1]/div/span/i/div/div/li[2]')).click() + await driver.findElement(By.css('.fa-ellipsis-h')).click() + await driver.findElement(By.css('#app-content > div > div.app-primary.from-right > div > div > div:nth-child(1) > flex-column > div.name-label > div > span > i > div > div > li:nth-child(3)')).click() await delay(300) }) it('should show the account address', async () => { - this.accountAddress = await driver.findElement(By.className('ellip-address')).getText() - await driver.findElement(By.className('fa-arrow-left')).click() + this.accountAddress = await driver.findElement(By.css('.ellip-address')).getText() + await driver.findElement(By.css('.fa-arrow-left')).click() await delay(500) }) }) -- cgit v1.2.3 From 53172f1b5568e327782bde8cd34d963a8396782d Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 29 Mar 2018 12:06:23 -0700 Subject: Better delays and fix logout css selector --- test/e2e/metamask.spec.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'test/e2e') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index a7d0a0efd..b254d9a3c 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -42,12 +42,14 @@ describe('Metamask popup page', function () { driver.findElement(By.css( 'button' )).click() + await delay(300) }) it('should show terms of use', async () => { await delay(300) const terms = await driver.findElement(By.css('.terms-header')).getText() assert.equal(terms, 'TERMS OF USE', 'shows terms of use') + await delay(300) }) it('should be unable to continue without scolling throught the terms of use', async () => { @@ -59,6 +61,7 @@ describe('Metamask popup page', function () { 'Attributions' )) await driver.executeScript('arguments[0].scrollIntoView(true)', element) + await delay(300) }) it('should be able to continue when scrolled to the bottom of terms of use', async () => { @@ -67,10 +70,10 @@ describe('Metamask popup page', function () { await delay(500) assert.equal(buttonEnabled, true, 'enabled continue button') await button.click() + await delay(300) }) it('should accept password with length of eight', async () => { - await delay(300) const passwordBox = await driver.findElement(By.id('password-box')) const passwordBoxConfirm = await driver.findElement(By.id('password-box-confirm')) const button = driver.findElement(By.css('button')) @@ -86,13 +89,13 @@ describe('Metamask popup page', function () { this.seedPhase = await driver.findElement(By.css('.twelve-word-phrase')).getText() const continueAfterSeedPhrase = await driver.findElement(By.css('button')) await continueAfterSeedPhrase.click() + await delay(300) }) it('should show lock account', async () => { - await delay(300) await driver.findElement(By.css('.sandwich-expando')).click() await delay(500) - await driver.findElement(By.css('#app-content > div > div > div:nth-child(3) > span > div > li:nth-child(3)')).click() + await driver.findElement(By.css('#app-content > div > div:nth-child(3) > span > div > li:nth-child(3)')).click() }) it('should accept account password after lock', async () => { -- cgit v1.2.3 From 2328b120da60e97ec5a636fd3a743a12a3309b96 Mon Sep 17 00:00:00 2001 From: kumavis Date: Thu, 29 Mar 2018 13:49:54 -0700 Subject: test - e2e - generate artifacts on test failure --- test/e2e/metamask.spec.js | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'test/e2e') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index a7d0a0efd..88a695adf 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -1,5 +1,8 @@ +const fs = require('fs') +const mkdirp = require('mkdirp') const path = require('path') const assert = require('assert') +const pify = require('pify') const webdriver = require('selenium-webdriver') const By = webdriver.By const { delay, buildWebDriver } = require('./func') @@ -20,6 +23,12 @@ describe('Metamask popup page', function () { await delay(500) }) + afterEach(async function () { + if (this.currentTest.state === 'failed') { + await verboseReportOnFailure(this.currentTest) + } + }) + after(async function () { await driver.quit() }) @@ -39,9 +48,7 @@ describe('Metamask popup page', function () { it('should show privacy notice', async () => { const privacy = await driver.findElement(By.css('.terms-header')).getText() assert.equal(privacy, 'PRIVACY NOTICE', 'shows privacy notice') - driver.findElement(By.css( - 'button' - )).click() + driver.findElement(By.css('button')).click() }) it('should show terms of use', async () => { @@ -51,9 +58,7 @@ describe('Metamask popup page', function () { }) it('should be unable to continue without scolling throught the terms of use', async () => { - const button = await driver.findElement(By.css( - 'button' - )).isEnabled() + const button = await driver.findElement(By.css('button')).isEnabled() assert.equal(button, false, 'disabled continue button') const element = driver.findElement(By.linkText( 'Attributions' @@ -115,4 +120,17 @@ describe('Metamask popup page', function () { await delay(500) }) }) + + async function verboseReportOnFailure(test) { + const artifactDir = `./test-artifacts/${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 v1.2.3 From 552fb1fabecd2f2de0c500aeee2fe633e69e7f5a Mon Sep 17 00:00:00 2001 From: kumavis Date: Thu, 29 Mar 2018 13:54:01 -0700 Subject: test - e2e - fix selector with extra div (?) --- test/e2e/metamask.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/e2e') diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js index 88a695adf..1ea8ffdf3 100644 --- a/test/e2e/metamask.spec.js +++ b/test/e2e/metamask.spec.js @@ -97,7 +97,7 @@ describe('Metamask popup page', function () { await delay(300) await driver.findElement(By.css('.sandwich-expando')).click() await delay(500) - await driver.findElement(By.css('#app-content > div > div > div:nth-child(3) > span > div > li:nth-child(3)')).click() + await driver.findElement(By.css('#app-content > div > div:nth-child(3) > span > div > li:nth-child(3)')).click() }) it('should accept account password after lock', async () => { -- cgit v1.2.3