diff --git a/test/e2e/fixtures/custom-token/state.json b/test/e2e/fixtures/custom-token/state.json new file mode 100644 index 000000000..89c0e73cc --- /dev/null +++ b/test/e2e/fixtures/custom-token/state.json @@ -0,0 +1,148 @@ +{ + "data": { + "AppStateController": { + "mkrMigrationReminderTimestamp": null + }, + "CachedBalancesController": { + "cachedBalances": { + "4": {} + } + }, + "CurrencyController": { + "conversionDate": 1575697244.188, + "conversionRate": 149.61, + "currentCurrency": "usd", + "nativeCurrency": "ETH" + }, + "IncomingTransactionsController": { + "incomingTransactions": {}, + "incomingTxLastFetchedBlocksByNetwork": { + "goerli": null, + "kovan": null, + "mainnet": null, + "rinkeby": 5570536 + } + }, + "KeyringController": { + "vault": "{\"data\":\"s6TpYjlUNsn7ifhEFTkuDGBUM1GyOlPrim7JSjtfIxgTt8/6MiXgiR/CtFfR4dWW2xhq85/NGIBYEeWrZThGdKGarBzeIqBfLFhw9n509jprzJ0zc2Rf+9HVFGLw+xxC4xPxgCS0IIWeAJQ+XtGcHmn0UZXriXm8Ja4kdlow6SWinB7sr/WM3R0+frYs4WgllkwggDf2/Tv6VHygvLnhtzp6hIJFyTjh+l/KnyJTyZW1TkZhDaNDzX3SCOHT\",\"iv\":\"FbeHDAW5afeWNORfNJBR0Q==\",\"salt\":\"TxZ+WbCW6891C9LK/hbMAoUsSEW1E8pyGLVBU6x5KR8=\"}" + }, + "NetworkController": { + "network": "1337", + "provider": { + "nickname": "Localhost 8545", + "rpcUrl": "http://localhost:8545", + "chainId": "0x539", + "ticker": "ETH", + "type": "rpc" + } + }, + "NotificationController": { + "notifications": { + "1": { + "isShown": true + }, + "3": { + "isShown": true + }, + "5": { + "isShown": true + } + } + }, + "OnboardingController": { + "onboardingTabs": {}, + "seedPhraseBackedUp": false + }, + "PermissionsMetadata": { + "domainMetadata": { + "metamask.github.io": { + "icon": null, + "name": "M E T A M A S K M E S H T E S T" + } + }, + "permissionsHistory": {}, + "permissionsLog": [ + { + "id": 746677923, + "method": "eth_accounts", + "methodType": "restricted", + "origin": "metamask.github.io", + "request": { + "id": 746677923, + "jsonrpc": "2.0", + "method": "eth_accounts", + "origin": "metamask.github.io", + "params": [] + }, + "requestTime": 1575697241368, + "response": { + "id": 746677923, + "jsonrpc": "2.0", + "result": [] + }, + "responseTime": 1575697241370, + "success": true + } + ] + }, + "PreferencesController": { + "accountTokens": { + "0x5cfe73b6021e818b776b421b1c4db2474086a7e1": { + "0x539": [ + { + "address": "0x86002be4cdd922de1ccb831582bf99284b99ac12", + "symbol": "TST", + "decimals": 4 + } + ], + "rinkeby": [], + "ropsten": [] + } + }, + "assetImages": {}, + "completedOnboarding": true, + "currentLocale": "en", + "featureFlags": { + "showIncomingTransactions": true, + "transactionTime": false + }, + "firstTimeFlowType": "create", + "forgottenPassword": false, + "frequentRpcListDetail": [], + "identities": { + "0x5cfe73b6021e818b776b421b1c4db2474086a7e1": { + "address": "0x5cfe73b6021e818b776b421b1c4db2474086a7e1", + "name": "Account 1" + } + }, + "knownMethodData": {}, + "lostIdentities": {}, + "metaMetricsId": null, + "metaMetricsSendCount": 0, + "participateInMetaMetrics": false, + "preferences": { + "useNativeCurrencyAsPrimaryCurrency": true + }, + "selectedAddress": "0x5cfe73b6021e818b776b421b1c4db2474086a7e1", + "suggestedTokens": {}, + "tokens": [ + { + "address": "0x86002be4cdd922de1ccb831582bf99284b99ac12", + "symbol": "TST", + "decimals": 4 + } + ], + "useBlockie": false, + "useNonceField": false, + "usePhishDetect": true + }, + "config": {}, + "firstTimeInfo": { + "date": 1575697234195, + "version": "7.7.0" + } + }, + "meta": { + "version": 40 + } +} diff --git a/test/e2e/metamask-ui.spec.js b/test/e2e/metamask-ui.spec.js index 8a8fcbf21..b813a597d 100644 --- a/test/e2e/metamask-ui.spec.js +++ b/test/e2e/metamask-ui.spec.js @@ -1506,55 +1506,4 @@ describe('MetaMask', function () { }); }); }); - - describe('Hide token', function () { - it('hides the token when clicked', async function () { - await driver.clickElement({ text: 'Assets', tag: 'button' }); - - await driver.clickElement({ text: 'TST', tag: 'span' }); - - await driver.clickElement('[data-testid="asset-options__button"]'); - - await driver.clickElement('[data-testid="asset-options__hide"]'); - - // wait for confirm hide modal to be visible - const confirmHideModal = await driver.findVisibleElement('span .modal'); - - await driver.clickElement( - '[data-testid="hide-token-confirmation__hide"]', - ); - - // wait for confirm hide modal to be removed from DOM. - await confirmHideModal.waitForElementState('hidden'); - }); - }); - - describe('Add existing token using search', function () { - it('clicks on the Add Token button', async function () { - await driver.clickElement({ text: 'Add Token', tag: 'button' }); - await driver.delay(regularDelayMs); - }); - - it('can pick a token from the existing options', async function () { - await driver.fill('#search-tokens', 'BAT'); - await driver.delay(regularDelayMs); - - await driver.clickElement({ text: 'BAT', tag: 'span' }); - await driver.delay(regularDelayMs); - - await driver.clickElement({ text: 'Next', tag: 'button' }); - await driver.delay(regularDelayMs); - - await driver.clickElement({ text: 'Add Tokens', tag: 'button' }); - await driver.delay(largeDelayMs); - }); - - it('renders the balance for the chosen token', async function () { - await driver.waitForSelector({ - css: '.token-overview__primary-balance', - text: '0 BAT', - }); - await driver.delay(regularDelayMs); - }); - }); }); diff --git a/test/e2e/tests/add-hide-token.spec.js b/test/e2e/tests/add-hide-token.spec.js new file mode 100644 index 000000000..8b98378cd --- /dev/null +++ b/test/e2e/tests/add-hide-token.spec.js @@ -0,0 +1,94 @@ +const { strict: assert } = require('assert'); +const { withFixtures } = require('../helpers'); + +describe('Hide token', function () { + const ganacheOptions = { + accounts: [ + { + secretKey: + '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', + balance: 25000000000000000000, + }, + ], + }; + it('hides the token when clicked', async function () { + await withFixtures( + { + fixtures: 'custom-token', + ganacheOptions, + title: this.test.title, + }, + async ({ driver }) => { + await driver.navigate(); + await driver.fill('#password', 'correct horse battery staple'); + await driver.press('#password', driver.Key.ENTER); + + await driver.waitForSelector({ + css: '.asset-list-item__token-button', + text: '0 TST', + }); + + let assets = await driver.findElements('.asset-list-item'); + assert.equal(assets.length, 2); + + await driver.clickElement({ text: 'Assets', tag: 'button' }); + + await driver.clickElement({ text: 'TST', tag: 'span' }); + + await driver.clickElement('[data-testid="asset-options__button"]'); + + await driver.clickElement('[data-testid="asset-options__hide"]'); + + // wait for confirm hide modal to be visible + const confirmHideModal = await driver.findVisibleElement('span .modal'); + + await driver.clickElement( + '[data-testid="hide-token-confirmation__hide"]', + ); + + // wait for confirm hide modal to be removed from DOM. + await confirmHideModal.waitForElementState('hidden'); + + assets = await driver.findElements('.asset-list-item'); + assert.equal(assets.length, 1); + }, + ); + }); +}); + +describe('Add existing token using search', function () { + const ganacheOptions = { + accounts: [ + { + secretKey: + '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', + balance: 25000000000000000000, + }, + ], + }; + it('renders the balance for the chosen token', async function () { + await withFixtures( + { + fixtures: 'imported-account', + ganacheOptions, + title: this.test.title, + }, + async ({ driver }) => { + await driver.navigate(); + await driver.fill('#password', 'correct horse battery staple'); + await driver.press('#password', driver.Key.ENTER); + + await driver.clickElement({ text: 'Add Token', tag: 'button' }); + await driver.fill('#search-tokens', 'BAT'); + await driver.clickElement({ text: 'BAT', tag: 'span' }); + await driver.clickElement({ text: 'Next', tag: 'button' }); + await driver.clickElement({ text: 'Add Tokens', tag: 'button' }); + + await driver.waitForSelector({ + css: '.token-overview__primary-balance', + text: '0 BAT', + }); + }, + ); + }); +});