diff --git a/test/e2e/permissions.spec.js b/test/e2e/permissions.spec.js deleted file mode 100644 index 522f625dd..000000000 --- a/test/e2e/permissions.spec.js +++ /dev/null @@ -1,199 +0,0 @@ -const assert = require('assert'); -const webdriver = require('selenium-webdriver'); - -const { By, until } = webdriver; -const enLocaleMessages = require('../../app/_locales/en/messages.json'); -const { regularDelayMs, largeDelayMs } = require('./helpers'); -const { buildWebDriver } = require('./webdriver'); -const Ganache = require('./ganache'); - -const ganacheServer = new Ganache(); - -describe('MetaMask', function () { - let driver; - let publicAddress; - - this.timeout(0); - this.bail(true); - - before(async function () { - await ganacheServer.start({ - accounts: [ - { - secretKey: - '0x53CB0AB5226EEBF4D872113D98332C1555DC304443BEE1CF759D15798D3C55A9', - balance: 25000000000000000000, - }, - ], - }); - const result = await buildWebDriver(); - driver = result.driver; - await driver.navigate(); - }); - - afterEach(async function () { - if (process.env.SELENIUM_BROWSER === 'chrome') { - const errors = await driver.checkBrowserForConsoleErrors(driver); - if (errors.length) { - const errorReports = errors.map((err) => err.message); - const errorMessage = `Errors found in browser console:\n${errorReports.join( - '\n', - )}`; - console.error(new Error(errorMessage)); - } - } - if (this.currentTest.state === 'failed') { - await driver.verboseReportOnFailure(this.currentTest.title); - } - }); - - after(async function () { - await ganacheServer.quit(); - await driver.quit(); - }); - - describe('Going through the first time flow, but skipping the seed phrase challenge', function () { - it('clicks the continue button on the welcome screen', async function () { - await driver.findElement(By.css('.welcome-page__header')); - await driver.clickElement( - By.xpath( - `//button[contains(text(), '${enLocaleMessages.getStarted.message}')]`, - ), - ); - await driver.delay(largeDelayMs); - }); - - it('clicks the "Create New Wallet" option', async function () { - await driver.clickElement( - By.xpath(`//button[contains(text(), 'Create a Wallet')]`), - ); - await driver.delay(largeDelayMs); - }); - - it('clicks the "No thanks" option on the metametrics opt-in screen', async function () { - await driver.clickElement(By.css('.btn-default')); - await driver.delay(largeDelayMs); - }); - - it('accepts a secure password', async function () { - const passwordBox = await driver.findElement( - By.css('.first-time-flow__form #create-password'), - ); - const passwordBoxConfirm = await driver.findElement( - By.css('.first-time-flow__form #confirm-password'), - ); - - await passwordBox.sendKeys('correct horse battery staple'); - await passwordBoxConfirm.sendKeys('correct horse battery staple'); - - await driver.clickElement(By.css('.first-time-flow__checkbox')); - - await driver.clickElement(By.css('.first-time-flow__form button')); - await driver.delay(largeDelayMs); - }); - - it('skips the seed phrase challenge', async function () { - await driver.clickElement( - By.xpath( - `//button[contains(text(), '${enLocaleMessages.remindMeLater.message}')]`, - ), - ); - await driver.delay(regularDelayMs); - - await driver.clickElement( - By.css('[data-testid="account-options-menu-button"]'), - ); - await driver.clickElement( - By.css('[data-testid="account-options-menu__account-details"]'), - ); - }); - - it('gets the current accounts address', async function () { - const addressInput = await driver.findElement( - By.css('.readonly-input__input'), - ); - publicAddress = await addressInput.getAttribute('value'); - const accountModal = await driver.findElement(By.css('span .modal')); - - await driver.clickElement(By.css('.account-modal__close')); - - await driver.wait(until.stalenessOf(accountModal)); - await driver.delay(regularDelayMs); - }); - }); - - describe('sets permissions', function () { - let extension; - let popup; - let dapp; - - it('connects to the dapp', async function () { - await driver.openNewPage('http://127.0.0.1:8080/'); - await driver.delay(regularDelayMs); - - await driver.clickElement( - By.xpath(`//button[contains(text(), 'Connect')]`), - ); - - await driver.waitUntilXWindowHandles(3); - const windowHandles = await driver.getAllWindowHandles(); - - extension = windowHandles[0]; - dapp = await driver.switchToWindowWithTitle( - 'E2E Test Dapp', - windowHandles, - ); - popup = windowHandles.find( - (handle) => handle !== extension && handle !== dapp, - ); - - await driver.switchToWindow(popup); - - await driver.delay(regularDelayMs); - - await driver.clickElement(By.xpath(`//button[contains(text(), 'Next')]`)); - await driver.clickElement( - By.xpath(`//button[contains(text(), 'Connect')]`), - ); - - await driver.waitUntilXWindowHandles(2); - await driver.switchToWindow(extension); - await driver.delay(regularDelayMs); - }); - - it('shows connected sites', async function () { - await driver.clickElement( - By.css('[data-testid="account-options-menu-button"]'), - ); - await driver.clickElement( - By.css('[data-testid="account-options-menu__connected-sites"]'), - ); - - await driver.findElement( - By.xpath(`//h2[contains(text(), 'Connected sites')]`), - ); - - const domains = await driver.findClickableElements( - By.css('.connected-sites-list__domain-name'), - ); - assert.equal(domains.length, 1); - }); - - it('can get accounts within the dapp', async function () { - await driver.switchToWindow(dapp); - await driver.delay(regularDelayMs); - - await driver.clickElement( - By.xpath(`//button[contains(text(), 'eth_accounts')]`), - ); - - const getAccountsResult = await driver.findElement( - By.css('#getAccountsResult'), - ); - assert.equal( - (await getAccountsResult.getText()).toLowerCase(), - publicAddress.toLowerCase(), - ); - }); - }); -}); diff --git a/test/e2e/run-all.sh b/test/e2e/run-all.sh index 15f9e9e7b..4ce2aba79 100755 --- a/test/e2e/run-all.sh +++ b/test/e2e/run-all.sh @@ -55,13 +55,6 @@ retry concurrently --kill-others \ --success first \ 'mocha test/e2e/from-import-ui.spec' -retry concurrently --kill-others \ - --names 'dapp,e2e' \ - --prefix '[{time}][{name}]' \ - --success first \ - 'yarn dapp' \ - 'mocha test/e2e/permissions.spec' - retry concurrently --kill-others \ --names 'sendwithprivatedapp,e2e' \ --prefix '[{time}][{name}]' \ diff --git a/test/e2e/tests/permissions.spec.js b/test/e2e/tests/permissions.spec.js new file mode 100644 index 000000000..e273a9c5d --- /dev/null +++ b/test/e2e/tests/permissions.spec.js @@ -0,0 +1,86 @@ +const { strict: assert } = require('assert'); +const { By, Key } = require('selenium-webdriver'); +const { withFixtures } = require('../helpers'); + +describe('Permissions', function () { + it('sets permissions and connect to Dapp', async function () { + const ganacheOptions = { + accounts: [ + { + secretKey: + '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', + balance: 25000000000000000000, + }, + ], + }; + const publicAddress = '0x5cfe73b6021e818b776b421b1c4db2474086a7e1'; + await withFixtures( + { + dapp: true, + fixtures: 'imported-account', + ganacheOptions, + title: this.test.title, + }, + async ({ driver }) => { + await driver.navigate(); + const passwordField = await driver.findElement(By.css('#password')); + await passwordField.sendKeys('correct horse battery staple'); + await passwordField.sendKeys(Key.ENTER); + + await driver.openNewPage('http://127.0.0.1:8080/'); + await driver.clickElement( + By.xpath(`//button[contains(text(), 'Connect')]`), + ); + + await driver.waitUntilXWindowHandles(3); + const windowHandles = await driver.getAllWindowHandles(); + const extension = windowHandles[0]; + await driver.switchToWindowWithTitle( + 'MetaMask Notification', + windowHandles, + ); + + await driver.clickElement( + By.xpath(`//button[contains(text(), 'Next')]`), + ); + await driver.clickElement( + By.xpath(`//button[contains(text(), 'Connect')]`), + ); + + await driver.switchToWindow(extension); + + // shows connected sites + await driver.clickElement( + By.css('[data-testid="account-options-menu-button"]'), + ); + await driver.clickElement( + By.css('[data-testid="account-options-menu__connected-sites"]'), + ); + + await driver.findElement( + By.xpath(`//h2[contains(text(), 'Connected sites')]`), + ); + + const domains = await driver.findClickableElements( + By.css('.connected-sites-list__domain-name'), + ); + assert.equal(domains.length, 1); + + // can get accounts within the dapp + await driver.switchToWindowWithTitle('E2E Test Dapp', windowHandles); + + await driver.clickElement( + By.xpath(`//button[contains(text(), 'eth_accounts')]`), + ); + + const getAccountsResult = await driver.findElement( + By.css('#getAccountsResult'), + ); + assert.equal( + (await getAccountsResult.getText()).toLowerCase(), + publicAddress.toLowerCase(), + ); + }, + ); + }); +});