aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan J Miller <danjm.com@gmail.com>2019-03-29 22:48:08 +0800
committerGitHub <noreply@github.com>2019-03-29 22:48:08 +0800
commit19c2b298f13c088553e3498ef4425fb66df04098 (patch)
treeb77f121fbe4ff0ec0fe95cdad56176df1d7402f6
parent125a95ba711f110cec40b79eafc798a31413eef3 (diff)
downloadtangerine-wallet-browser-19c2b298f13c088553e3498ef4425fb66df04098.tar
tangerine-wallet-browser-19c2b298f13c088553e3498ef4425fb66df04098.tar.gz
tangerine-wallet-browser-19c2b298f13c088553e3498ef4425fb66df04098.tar.bz2
tangerine-wallet-browser-19c2b298f13c088553e3498ef4425fb66df04098.tar.lz
tangerine-wallet-browser-19c2b298f13c088553e3498ef4425fb66df04098.tar.xz
tangerine-wallet-browser-19c2b298f13c088553e3498ef4425fb66df04098.tar.zst
tangerine-wallet-browser-19c2b298f13c088553e3498ef4425fb66df04098.zip
Further e2e fixes in wake of #6364 and #6367 (#6374)
* getMethodData() default to abi decoded method if registry lookup errors * Update e2e tests to work with getMethodData() fallback changes * Remove indeterminency in gas input key entering in send token e2e test.
-rw-r--r--test/e2e/beta/metamask-beta-ui.spec.js50
-rw-r--r--ui/app/ducks/confirm-transaction/confirm-transaction.duck.js17
-rw-r--r--ui/app/helpers/utils/transactions.util.js37
3 files changed, 64 insertions, 40 deletions
diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js
index 3b74d6fe0..05ad84f24 100644
--- a/test/e2e/beta/metamask-beta-ui.spec.js
+++ b/test/e2e/beta/metamask-beta-ui.spec.js
@@ -512,14 +512,22 @@ describe('MetaMask', function () {
await assertElementNotPresent(webdriver, driver, By.xpath(`//li[contains(text(), 'Data')]`))
const [gasPriceInput, gasLimitInput] = await findElements(driver, By.css('.advanced-gas-inputs__gas-edit-row__input'))
- await gasPriceInput.clear()
- await delay(tinyDelayMs)
+ await gasPriceInput.sendKeys(Key.chord(Key.CONTROL, 'a'))
+ await delay(50)
+
await gasPriceInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasPriceInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasPriceInput.sendKeys('10')
+ await delay(50)
await delay(tinyDelayMs)
- await gasLimitInput.sendKeys('5')
+ await delay(50)
+ await gasLimitInput.sendKeys(Key.chord(Key.CONTROL, 'a'))
+ await delay(50)
+
+ await gasLimitInput.sendKeys('25000')
await delay(tinyDelayMs)
const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`), 10000)
@@ -534,8 +542,10 @@ describe('MetaMask', function () {
let txValues
it('finds the transaction in the transactions list', async function () {
- const transactions = await findElements(driver, By.css('.transaction-list-item'))
- assert.equal(transactions.length, 4)
+ await driver.wait(async () => {
+ const confirmedTxes = await findElements(driver, By.css('.transaction-list__completed-transactions .transaction-list-item'))
+ return confirmedTxes.length === 4
+ }, 10000)
txValues = await findElements(driver, By.css('.transaction-list-item__amount--primary'))
await driver.wait(until.elementTextMatches(txValues[0], /-3\s*ETH/), 10000)
@@ -1003,7 +1013,7 @@ describe('MetaMask', function () {
const functionType = await findElement(driver, By.css('.confirm-page-container-content__function-type'))
const functionTypeText = await functionType.getText()
- assert.equal(functionTypeText, 'Not Found')
+ assert.equal(functionTypeText, 'Transfer')
const confirmDataDiv = await findElement(driver, By.css('.confirm-page-container-content__data-box'))
const confirmDataText = await confirmDataDiv.getText()
@@ -1040,7 +1050,7 @@ describe('MetaMask', function () {
return confirmedTxes.length === 1
}, 10000)
const txStatuses = await findElements(driver, By.css('.transaction-list-item__action'))
- await driver.wait(until.elementTextMatches(txStatuses[0], /Contract\sInteraction/i), 10000)
+ await driver.wait(until.elementTextMatches(txStatuses[0], /Sent\sToken/i), 10000)
})
})
@@ -1081,23 +1091,31 @@ describe('MetaMask', function () {
await delay(regularDelayMs)
const [gasPriceInput, gasLimitInput] = await findElements(driver, By.css('.advanced-tab__gas-edit-row__input'))
- await gasPriceInput.clear()
- await delay(tinyDelayMs)
+ await gasPriceInput.sendKeys(Key.chord(Key.CONTROL, 'a'))
+ await delay(50)
await gasPriceInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasPriceInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasPriceInput.sendKeys('10')
- await delay(tinyDelayMs)
- await gasLimitInput.clear()
- await delay(tinyDelayMs)
+ await delay(50)
await gasLimitInput.sendKeys(Key.chord(Key.CONTROL, 'a'))
+ await delay(50)
await gasLimitInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasLimitInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasLimitInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasLimitInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasLimitInput.sendKeys(Key.BACK_SPACE)
+ await delay(50)
await gasLimitInput.sendKeys('60000')
+ await delay(50)
await gasLimitInput.sendKeys(Key.chord(Key.CONTROL, 'e'))
+ await delay(50)
const save = await findElement(driver, By.css('.page-container__footer-button'))
await save.click()
@@ -1124,7 +1142,7 @@ describe('MetaMask', function () {
const txValues = await findElements(driver, By.css('.transaction-list-item__amount--primary'))
await driver.wait(until.elementTextMatches(txValues[0], /-7\s*TST/))
const txStatuses = await findElements(driver, By.css('.transaction-list-item__action'))
- await driver.wait(until.elementTextMatches(txStatuses[0], /Contract\sInteraction/), 10000)
+ await driver.wait(until.elementTextMatches(txStatuses[0], /Sent\sToken/), 10000)
const walletBalance = await findElement(driver, By.css('.wallet-balance'))
await walletBalance.click()
@@ -1142,7 +1160,7 @@ describe('MetaMask', function () {
})
})
- describe.skip('Approves a custom token from dapp', () => {
+ describe('Approves a custom token from dapp', () => {
let gasModal
it('approves an already created token', async () => {
const windowHandles = await driver.getAllWindowHandles()
@@ -1180,11 +1198,11 @@ describe('MetaMask', function () {
const functionType = await findElement(driver, By.css('.confirm-page-container-content__function-type'))
const functionTypeText = await functionType.getText()
- assert.equal(functionTypeText, 'Not Found')
+ assert.equal(functionTypeText, 'Approve')
const confirmDataDiv = await findElement(driver, By.css('.confirm-page-container-content__data-box'))
const confirmDataText = await confirmDataDiv.getText()
- assert.equal(confirmDataText.match(/0x095ea7b30000000000000000000000002f318c334780961fb129d2a6c30d0763d9a5c97/))
+ assert(confirmDataText.match(/0x095ea7b30000000000000000000000002f318c334780961fb129d2a6c30d0763d9a5c97/))
const detailsTab = await findElement(driver, By.xpath(`//li[contains(text(), 'Details')]`))
detailsTab.click()
diff --git a/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js b/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js
index 4edf8a70c..169c9d543 100644
--- a/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js
+++ b/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js
@@ -1,3 +1,4 @@
+import log from 'loglevel'
import {
conversionRateSelector,
currentCurrencySelector,
@@ -369,23 +370,17 @@ export function setTransactionToConfirm (transactionId) {
const { tokens: existingTokens } = state
const { data, to: tokenAddress } = txParams
- try {
- dispatch(setFetchingData(true))
- const methodData = await getMethodData(data)
-
- dispatch(updateMethodData(methodData))
- } catch (error) {
- dispatch(updateMethodData({}))
- dispatch(setFetchingData(false))
- }
+ dispatch(setFetchingData(true))
+ const methodData = await getMethodData(data)
+ dispatch(updateMethodData(methodData))
try {
const toSmartContract = await isSmartContractAddress(to)
dispatch(updateToSmartContract(toSmartContract))
- dispatch(setFetchingData(false))
} catch (error) {
- dispatch(setFetchingData(false))
+ log.error(error)
}
+ dispatch(setFetchingData(false))
const tokenData = getTokenData(data)
dispatch(updateTokenData(tokenData))
diff --git a/ui/app/helpers/utils/transactions.util.js b/ui/app/helpers/utils/transactions.util.js
index edf2e24f6..cb6c9536c 100644
--- a/ui/app/helpers/utils/transactions.util.js
+++ b/ui/app/helpers/utils/transactions.util.js
@@ -21,6 +21,7 @@ import {
CANCEL_ATTEMPT_ACTION_KEY,
} from '../constants/transactions'
+import log from 'loglevel'
import { addCurrencies } from './conversion-util'
abiDecoder.addABI(abi)
@@ -37,21 +38,31 @@ const registry = new MethodRegistry({ provider: global.ethereumProvider })
* @param {string} data - The hex data (@code txParams.data) of a transaction
* @returns {Object}
*/
-export async function getMethodData (data = '') {
- const prefixedData = ethUtil.addHexPrefix(data)
- const fourBytePrefix = prefixedData.slice(0, 10)
- const sig = await registry.lookup(fourBytePrefix)
-
- if (!sig) {
- return {}
- }
+ export async function getMethodData (data = '') {
+ const prefixedData = ethUtil.addHexPrefix(data)
+ const fourBytePrefix = prefixedData.slice(0, 10)
+
+ try {
+ const sig = await registry.lookup(fourBytePrefix)
+
+ if (!sig) {
+ return {}
+ }
+
+ const parsedResult = registry.parse(sig)
+
+ return {
+ name: parsedResult.name,
+ params: parsedResult.args,
+ }
+ } catch (error) {
+ log.error(error)
+ const contractData = getTokenData(data)
+ const { name } = contractData || {}
+ return { name }
+ }
- const parsedResult = registry.parse(sig)
- return {
- name: parsedResult.name,
- params: parsedResult.args,
- }
}
export function isConfirmDeployContract (txData = {}) {