This commit is contained in:
dennistikhomirov 2018-10-16 20:13:19 -07:00
parent c662ab5713
commit b94ef72831
1 changed files with 49 additions and 49 deletions

View File

@ -15,13 +15,13 @@ describe('Metamask popup page', async function () {
this.timeout(0) this.timeout(0)
before(async function () { before(async function () {
if ( process.env.SELENIUM_BROWSER === 'chrome' ) { if (process.env.SELENIUM_BROWSER === 'chrome') {
const extPath = path.resolve('dist/chrome') const extPath = path.resolve('dist/chrome')
driver = buildChromeWebDriver(extPath) driver = buildChromeWebDriver(extPath)
extensionId = await getExtensionIdChrome(driver) extensionId = await getExtensionIdChrome(driver)
await driver.get(`chrome-extension://${extensionId}/popup.html`) await driver.get(`chrome-extension://${extensionId}/popup.html`)
} else if ( process.env.SELENIUM_BROWSER === 'firefox' ) { } else if (process.env.SELENIUM_BROWSER === 'firefox') {
const extPath = path.resolve('dist/firefox') const extPath = path.resolve('dist/firefox')
driver = buildFirefoxWebdriver() driver = buildFirefoxWebdriver()
await installWebExt(driver, extPath) await installWebExt(driver, extPath)
@ -34,17 +34,17 @@ describe('Metamask popup page', async function () {
afterEach(async function () { afterEach(async function () {
// logs command not supported in firefox // logs command not supported in firefox
// https://github.com/SeleniumHQ/selenium/issues/2910 // https://github.com/SeleniumHQ/selenium/issues/2910
if ( process.env.SELENIUM_BROWSER === 'chrome' ) { if (process.env.SELENIUM_BROWSER === 'chrome') {
// check for console errors // check for console errors
const errors = await checkBrowserForConsoleErrors() const errors = await checkBrowserForConsoleErrors()
if ( errors.length ) { if (errors.length) {
const errorReports = errors.map(err => err.message) const errorReports = errors.map(err => err.message)
const errorMessage = `Errors found in browser console:\n${errorReports.join('\n')}` const errorMessage = `Errors found in browser console:\n${errorReports.join('\n')}`
console.log(errorMessage) console.log(errorMessage)
} }
} }
// gather extra data if test failed // gather extra data if test failed
if ( this.currentTest.state === 'failed' ) { if (this.currentTest.state === 'failed') {
await verboseReportOnFailure(this.currentTest) await verboseReportOnFailure(this.currentTest)
} }
}) })
@ -942,9 +942,9 @@ describe('Metamask popup page', async function () {
}) })
it('navigates back to MetaMask popup in the tab', async function () { it('navigates back to MetaMask popup in the tab', async function () {
if ( process.env.SELENIUM_BROWSER === 'chrome' ) { if (process.env.SELENIUM_BROWSER === 'chrome') {
await driver.get(`chrome-extension://${extensionId}/popup.html`) await driver.get(`chrome-extension://${extensionId}/popup.html`)
} else if ( process.env.SELENIUM_BROWSER === 'firefox' ) { } else if (process.env.SELENIUM_BROWSER === 'firefox') {
await driver.get(`moz-extension://${extensionId}/popup.html`) await driver.get(`moz-extension://${extensionId}/popup.html`)
} }
await delay(700) await delay(700)
@ -968,7 +968,7 @@ describe('Metamask popup page', async function () {
}) })
it('adds token parameters', async function () { it('adds token parameters', async function () {
const tab = await waitUntilShowUp(screens.addToken.tab.custom, 30) const tab = await waitUntilShowUp(screens.addToken.tab.custom, 30)
if ( !await waitUntilShowUp(screens.addToken.custom.fields.contractAddress) ) await tab.click() if (!await waitUntilShowUp(screens.addToken.custom.fields.contractAddress)) await tab.click()
}) })
it('address input is displayed and has correct placeholder', async function () { it('address input is displayed and has correct placeholder', async function () {
const field = await waitUntilShowUp(screens.addToken.custom.fields.contractAddress) const field = await waitUntilShowUp(screens.addToken.custom.fields.contractAddress)
@ -1476,7 +1476,7 @@ describe('Metamask popup page', async function () {
it('user can add four more valid custom rpc', async function () { it('user can add four more valid custom rpc', async function () {
const fieldRpc = await waitUntilShowUp(screens.settings.fieldNewRPC) const fieldRpc = await waitUntilShowUp(screens.settings.fieldNewRPC)
const customUrlElement = await waitUntilShowUp(screens.settings.currentNetwork) const customUrlElement = await waitUntilShowUp(screens.settings.currentNetwork)
for ( let i = 1; i < 5; i++ ) { for (let i = 1; i < 5; i++) {
await clearField(fieldRpc) await clearField(fieldRpc)
await clearField(fieldRpc) await clearField(fieldRpc)
await clearField(fieldRpc) await clearField(fieldRpc)
@ -1543,12 +1543,12 @@ describe('Metamask popup page', async function () {
}) })
}) })
async function setProvider(network) { async function setProvider (network) {
await delay(300) await delay(300)
const menu = await waitUntilShowUp(screens.main.network) const menu = await waitUntilShowUp(screens.main.network)
await menu.click() await menu.click()
let counter let counter
switch ( network ) { switch (network) {
case NETWORKS.POA: case NETWORKS.POA:
counter = 0 counter = 0
break break
@ -1582,59 +1582,59 @@ describe('Metamask popup page', async function () {
await driver.executeScript("document.getElementsByClassName('dropdown-menu-item')[" + counter + '].click();') await driver.executeScript("document.getElementsByClassName('dropdown-menu-item')[" + counter + '].click();')
} }
async function scrollTo(element) { async function scrollTo (element) {
try { try {
await driver.executeScript('arguments[0].scrollIntoView();', element) await driver.executeScript('arguments[0].scrollIntoView();', element)
return true return true
} catch ( err ) { } catch (err) {
return false return false
} }
} }
async function click(element) { async function click (element) {
try { try {
await element.sendKeys(Key.RETURN) await element.sendKeys(Key.RETURN)
return true return true
} catch ( err ) { } catch (err) {
return false return false
} }
} }
async function clearField(field, number) { async function clearField (field, number) {
await click(field) await click(field)
if ( number === undefined ) number = 40 if (number === undefined) number = 40
for ( let i = 0; i < number; i++ ) { for (let i = 0; i < number; i++) {
await field.sendKeys(Key.BACK_SPACE) await field.sendKeys(Key.BACK_SPACE)
} }
} }
async function waitUntilDisappear(by, Twait) { async function waitUntilDisappear (by, Twait) {
if ( Twait === undefined ) Twait = 10 if (Twait === undefined) Twait = 10
do { do {
if ( !await isElementDisplayed(by) ) return true if (!await isElementDisplayed(by)) return true
} while ( Twait-- > 0 ) } while (Twait-- > 0)
return false return false
} }
async function waitUntilShowUp(by, Twait) { async function waitUntilShowUp (by, Twait) {
if ( Twait === undefined ) Twait = 200 if (Twait === undefined) Twait = 200
do { do {
await delay(100) await delay(100)
if ( await isElementDisplayed(by) ) return await driver.findElement(by) if (await isElementDisplayed(by)) return await driver.findElement(by)
} while ( Twait-- > 0 ) } while (Twait-- > 0)
return false return false
} }
async function isElementDisplayed(by) { async function isElementDisplayed (by) {
try { try {
return await driver.findElement(by).isDisplayed() return await driver.findElement(by).isDisplayed()
} catch ( err ) { } catch (err) {
return false return false
} }
} }
async function assertTokensNotDisplayed() { async function assertTokensNotDisplayed () {
try { try {
await delay(800) await delay(800)
await waitUntilDisappear(elements.loader) await waitUntilDisappear(elements.loader)
@ -1647,13 +1647,13 @@ describe('Metamask popup page', async function () {
const tokens = await driver.findElements(screens.main.tokens.token) const tokens = await driver.findElements(screens.main.tokens.token)
assert.equal(tokens.length, 0, 'Unexpected token presents') assert.equal(tokens.length, 0, 'Unexpected token presents')
return true return true
} catch ( err ) { } catch (err) {
console.log(err) console.log(err)
return false return false
} }
} }
async function isDisabledAddInexistentToken(tokenAddress) { async function isDisabledAddInexistentToken (tokenAddress) {
try { try {
const button = await waitUntilShowUp(screens.main.tokens.buttonAdd, 300) const button = await waitUntilShowUp(screens.main.tokens.buttonAdd, 300)
await click(button) await click(button)
@ -1661,11 +1661,11 @@ describe('Metamask popup page', async function () {
const tab = await waitUntilShowUp(screens.addToken.tab.custom, 10) const tab = await waitUntilShowUp(screens.addToken.tab.custom, 10)
try { try {
await tab.click() await tab.click()
} catch ( err ) { } catch (err) {
} }
} }
while ( await waitUntilShowUp(screens.addToken.custom.fields.contractAddress) === false ) while (await waitUntilShowUp(screens.addToken.custom.fields.contractAddress) === false)
} catch ( err ) { } catch (err) {
return false return false
} }
const fieldAddress = await waitUntilShowUp(screens.addToken.custom.fields.contractAddress) const fieldAddress = await waitUntilShowUp(screens.addToken.custom.fields.contractAddress)
@ -1673,20 +1673,20 @@ describe('Metamask popup page', async function () {
await fieldAddress.sendKeys(tokenAddress) await fieldAddress.sendKeys(tokenAddress)
const fieldSymbols = await waitUntilShowUp(screens.addToken.custom.fields.tokenSymbol) const fieldSymbols = await waitUntilShowUp(screens.addToken.custom.fields.tokenSymbol)
if ( await fieldSymbols.isEnabled() ) return false if (await fieldSymbols.isEnabled()) return false
const fieldDecimals = await waitUntilShowUp(screens.addToken.custom.fields.tokenSymbol) const fieldDecimals = await waitUntilShowUp(screens.addToken.custom.fields.tokenSymbol)
if ( await fieldDecimals.isEnabled() ) return false if (await fieldDecimals.isEnabled()) return false
const buttonAdd = await waitUntilShowUp(screens.addToken.custom.buttons.add) const buttonAdd = await waitUntilShowUp(screens.addToken.custom.buttons.add)
if ( await buttonAdd.isEnabled() ) return false if (await buttonAdd.isEnabled()) return false
const buttonCancel = await waitUntilShowUp(screens.addToken.custom.buttons.cancel) const buttonCancel = await waitUntilShowUp(screens.addToken.custom.buttons.cancel)
await click(buttonCancel) await click(buttonCancel)
return true return true
} }
async function checkBrowserForConsoleErrors() { async function checkBrowserForConsoleErrors () {
const ignoredLogTypes = ['WARNING'] const ignoredLogTypes = ['WARNING']
const ignoredErrorMessages = [ const ignoredErrorMessages = [
// React throws error warnings on "dataset", but still sets the data-* properties correctly // React throws error warnings on "dataset", but still sets the data-* properties correctly
@ -1706,11 +1706,11 @@ describe('Metamask popup page', async function () {
return matchedErrorObjects return matchedErrorObjects
} }
async function verboseReportOnFailure(test) { async function verboseReportOnFailure (test) {
let artifactDir let artifactDir
if ( process.env.SELENIUM_BROWSER === 'chrome' ) { if (process.env.SELENIUM_BROWSER === 'chrome') {
artifactDir = `./test-artifacts/chrome/${test.title}` artifactDir = `./test-artifacts/chrome/${test.title}`
} else if ( process.env.SELENIUM_BROWSER === 'firefox' ) { } else if (process.env.SELENIUM_BROWSER === 'firefox') {
artifactDir = `./test-artifacts/firefox/${test.title}` artifactDir = `./test-artifacts/firefox/${test.title}`
} }
const filepathBase = `${artifactDir}/test-failure` const filepathBase = `${artifactDir}/test-failure`
@ -1723,34 +1723,34 @@ describe('Metamask popup page', async function () {
await pify(fs.writeFile)(`${filepathBase}-dom.html`, htmlSource) await pify(fs.writeFile)(`${filepathBase}-dom.html`, htmlSource)
} }
async function switchToLastPage() { async function switchToLastPage () {
try { try {
const allHandles = await driver.getAllWindowHandles() const allHandles = await driver.getAllWindowHandles()
await driver.switchTo().window(allHandles[allHandles.length - 1]) await driver.switchTo().window(allHandles[allHandles.length - 1])
let counter = 100 let counter = 100
do { do {
await delay(500) await delay(500)
if ( await driver.getCurrentUrl() !== '' ) return true if (await driver.getCurrentUrl() !== '') return true
} }
while ( counter-- > 0 ) while (counter-- > 0)
return true return true
} catch ( err ) { } catch (err) {
return false return false
} }
} }
async function switchToFirstPage() { async function switchToFirstPage () {
try { try {
const allHandles = await driver.getAllWindowHandles() const allHandles = await driver.getAllWindowHandles()
await driver.switchTo().window(allHandles[0]) await driver.switchTo().window(allHandles[0])
let counter = 100 let counter = 100
do { do {
await delay(500) await delay(500)
if ( await driver.getCurrentUrl() !== '' ) return true if (await driver.getCurrentUrl() !== '') return true
} }
while ( counter-- > 0 ) while (counter-- > 0)
return true return true
} catch ( err ) { } catch (err) {
return false return false
} }
} }