diff options
test - e2e - generate artifacts on test failure
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | test/e2e/metamask.spec.js | 30 |
2 files changed, 26 insertions, 6 deletions
diff --git a/.gitignore b/.gitignore index f2a678777..dee5ec220 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,8 @@ test/background.js test/bundle.js test/test-bundle.js +test-artifacts + #ignore css output and sourcemaps ui/app/css/output/ 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) + } + }) |