diff options
Diffstat (limited to 'test/e2e/beta')
-rw-r--r-- | test/e2e/beta/from-import-beta-ui.spec.js | 150 | ||||
-rw-r--r-- | test/e2e/beta/helpers.js | 35 | ||||
-rw-r--r-- | test/e2e/beta/metamask-beta-ui.spec.js | 50 |
3 files changed, 124 insertions, 111 deletions
diff --git a/test/e2e/beta/from-import-beta-ui.spec.js b/test/e2e/beta/from-import-beta-ui.spec.js index 38fdedcec..2470d1eef 100644 --- a/test/e2e/beta/from-import-beta-ui.spec.js +++ b/test/e2e/beta/from-import-beta-ui.spec.js @@ -4,24 +4,21 @@ const webdriver = require('selenium-webdriver') const { By, Key, until } = webdriver const { delay, - buildChromeWebDriver, - buildFirefoxWebdriver, - installWebExt, - getExtensionIdChrome, - getExtensionIdFirefox, + createModifiedTestBuild, + setupBrowserAndExtension, + verboseReportOnFailure, } = require('../func') const { - checkBrowserForConsoleErrors, - loadExtension, - verboseReportOnFailure, findElement, findElements, + checkBrowserForConsoleErrors, } = require('./helpers') describe('Using MetaMask with an existing account', function () { - let extensionId + const browser = process.env.SELENIUM_BROWSER let driver + let extensionUri let tokenAddress const testSeedPhrase = 'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent' @@ -35,30 +32,18 @@ describe('Using MetaMask with an existing account', function () { this.bail(true) before(async function () { - switch (process.env.SELENIUM_BROWSER) { - case 'chrome': { - const extensionPath = path.resolve('dist/chrome') - driver = buildChromeWebDriver(extensionPath) - extensionId = await getExtensionIdChrome(driver) - await driver.get(`chrome-extension://${extensionId}/popup.html`) - await delay(regularDelayMs) - break - } - case 'firefox': { - const extensionPath = path.resolve('dist/firefox') - driver = buildFirefoxWebdriver() - await installWebExt(driver, extensionPath) - await delay(regularDelayMs) - extensionId = await getExtensionIdFirefox(driver) - await driver.get(`moz-extension://${extensionId}/popup.html`) - await delay(regularDelayMs) - break - } - } + const srcPath = path.resolve(`dist/${browser}`) + const { extPath } = await createModifiedTestBuild({ browser, srcPath }) + const installResult = await setupBrowserAndExtension({ browser, extPath }) + driver = installResult.driver + extensionUri = installResult.extensionUri + + await driver.get(extensionUri) + await delay(300) }) 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) @@ -67,7 +52,7 @@ describe('Using MetaMask with an existing account', function () { } } if (this.currentTest.state === 'failed') { - await verboseReportOnFailure(driver, this.currentTest) + await verboseReportOnFailure({ browser, driver, title: this.currentTest.title }) } }) @@ -82,16 +67,6 @@ describe('Using MetaMask with an existing account', 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 findElements(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() @@ -291,22 +266,103 @@ describe('Using MetaMask with an existing account', function () { }) }) - describe('Imports an account with private key', () => { - it('choose Create Account from the account menu', async () => { - await driver.findElement(By.css('.account-menu__icon')).click() + describe('Send ETH from Faucet', () => { + it('starts a send transaction inside Faucet', async () => { + await driver.executeScript('window.open("https://faucet.metamask.io")') + await delay(waitingNewPageDelayMs) + + const [extension, faucet] = await driver.getAllWindowHandles() + await driver.switchTo().window(faucet) + await delay(regularDelayMs) + + const send1eth = await findElement(driver, By.xpath(`//button[contains(text(), '10 ether')]`), 14000) + await send1eth.click() + await delay(regularDelayMs) + + await driver.switchTo().window(extension) + await driver.get(extensionUri) + await delay(regularDelayMs) + + const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`), 14000) + await confirmButton.click() + await delay(regularDelayMs) + + await driver.switchTo().window(faucet) + await delay(regularDelayMs) + await driver.close() + await delay(regularDelayMs) + await driver.switchTo().window(extension) + await delay(regularDelayMs) + await driver.get(extensionUri) + await delay(regularDelayMs) + }) + }) + + describe('Add existing token using search', () => { + it('clicks on the Add Token button', async () => { + const addToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Token')]`)) + await addToken.click() + await delay(regularDelayMs) + }) + + it('picks an existing token', async () => { + const tokenSearch = await findElement(driver, By.css('#search-tokens')) + await tokenSearch.sendKeys('BAT') + await delay(regularDelayMs) + + const token = await findElement(driver, By.xpath("//span[contains(text(), 'BAT')]")) + await token.click() + await delay(regularDelayMs) + + const nextScreen = await findElement(driver, By.xpath(`//button[contains(text(), 'Next')]`)) + await nextScreen.click() await delay(regularDelayMs) const [importAccount] = await findElements(driver, By.xpath(`//div[contains(text(), 'Import Account')]`)) await importAccount.click() await delay(regularDelayMs) }) + }) + + describe('Add a custom token from TokenFactory', () => { + it('creates a new token', async () => { + await driver.executeScript('window.open("https://tokenfactory.surge.sh/#/factory")') + await delay(waitingNewPageDelayMs) + + const [extension, tokenFactory] = await driver.getAllWindowHandles() + await driver.switchTo().window(tokenFactory) + const [ + totalSupply, + tokenName, + tokenDecimal, + tokenSymbol, + ] = await findElements(driver, By.css('.form-control')) + + await totalSupply.sendKeys('100') + await tokenName.sendKeys('Test') + await tokenDecimal.sendKeys('0') + await tokenSymbol.sendKeys('TST') + + const createToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Create Token')]`)) + await createToken.click() + await delay(regularDelayMs) + + await driver.switchTo().window(extension) + await driver.get(extensionUri) + await delay(regularDelayMs) it('enter private key', async () => { const privateKeyInput = await findElement(driver, By.css('#private-key-box')) await privateKeyInput.sendKeys(testPrivateKey2) await delay(regularDelayMs) - const importButtons = await findElements(driver, By.xpath(`//button[contains(text(), 'Import')]`)) - await importButtons[0].click() + + await driver.switchTo().window(tokenFactory) + await delay(regularDelayMs) + const tokenContactAddress = await driver.findElement(By.css('div > div > div:nth-child(2) > span:nth-child(3)')) + tokenAddress = await tokenContactAddress.getText() + await driver.close() + await driver.switchTo().window(extension) + await driver.get(extensionUri) await delay(regularDelayMs) }) @@ -322,5 +378,5 @@ describe('Using MetaMask with an existing account', function () { await delay(regularDelayMs) }) }) - + }) diff --git a/test/e2e/beta/helpers.js b/test/e2e/beta/helpers.js index fcc3e96d6..35015ab9c 100644 --- a/test/e2e/beta/helpers.js +++ b/test/e2e/beta/helpers.js @@ -1,31 +1,13 @@ -const fs = require('fs') -const mkdirp = require('mkdirp') -const pify = require('pify') -const {until} = require('selenium-webdriver') const { delay } = require('../func') +const { until } = require('selenium-webdriver') module.exports = { checkBrowserForConsoleErrors, - loadExtension, - verboseReportOnFailure, findElement, findElements, openNewPage, } -async function loadExtension (driver, extensionId) { - switch (process.env.SELENIUM_BROWSER) { - case 'chrome': { - await driver.get(`chrome-extension://${extensionId}/home.html`) - break - } - case 'firefox': { - await driver.get(`moz-extension://${extensionId}/home.html`) - break - } - } -} - async function checkBrowserForConsoleErrors (driver) { const ignoredLogTypes = ['WARNING'] const ignoredErrorMessages = [ @@ -44,21 +26,6 @@ async function checkBrowserForConsoleErrors (driver) { return errorObjects.filter(entry => !ignoredErrorMessages.some(message => entry.message.includes(message))) } -async function verboseReportOnFailure (driver, 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 filepathBase = `${artifactDir}/test-failure` - await pify(mkdirp)(artifactDir) - const screenshot = await driver.takeScreenshot() - await pify(fs.writeFile)(`${filepathBase}-screenshot.png`, screenshot, { encoding: 'base64' }) - const htmlSource = await driver.getPageSource() - await pify(fs.writeFile)(`${filepathBase}-dom.html`, htmlSource) -} - async function findElement (driver, by, timeout = 10000) { return driver.wait(until.elementLocated(by), timeout) } diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js index 0f424abcc..50998fd5d 100644 --- a/test/e2e/beta/metamask-beta-ui.spec.js +++ b/test/e2e/beta/metamask-beta-ui.spec.js @@ -4,11 +4,9 @@ const webdriver = require('selenium-webdriver') const { By, Key, until } = webdriver const { delay, - buildChromeWebDriver, - buildFirefoxWebdriver, - installWebExt, - getExtensionIdChrome, - getExtensionIdFirefox, + createModifiedTestBuild, + setupBrowserAndExtension, + verboseReportOnFailure, } = require('../func') const { findElement, @@ -20,8 +18,9 @@ const { } = require('./helpers') describe('MetaMask', function () { - let extensionId + const browser = process.env.SELENIUM_BROWSER let driver + let extensionUri let tokenAddress const testSeedPhrase = 'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent' @@ -34,27 +33,18 @@ 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 + + await driver.get(extensionUri) + await delay(tinyDelayMs) }) 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) @@ -245,7 +235,7 @@ describe('MetaMask', function () { await word10.click() await delay(tinyDelayMs) - + const word11 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[11]}')]`), 10000) await word11.click() await delay(tinyDelayMs) @@ -430,7 +420,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) @@ -443,7 +433,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) }) }) @@ -592,7 +582,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')]`)) @@ -700,7 +690,7 @@ describe('MetaMask', function () { if (process.env.SELENIUM_BROWSER !== 'firefox') { await driver.wait(until.elementTextMatches(txValues[0], /50\sTST/), 10000) } - + const txStatuses = await findElements(driver, By.css('.tx-list-status')) const tx = await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed|Failed/), 10000) assert.equal(await tx.getText(), 'Confirmed') @@ -759,7 +749,7 @@ describe('MetaMask', function () { await gasLimitInput.sendKeys(Key.chord(Key.CONTROL, 'e')) // Needed for different behaviour of input in different versions of firefox - const gasLimitInputValue = await gasLimitInput.getAttribute('value') + const gasLimitInputValue = await gasLimitInput.getAttribute('value') if (gasLimitInputValue === '600001') { await gasLimitInput.sendKeys(Key.BACK_SPACE) } |