Removing EIP_1559_V2 feature flag (#13481)

feature/default_network_editable
Jyoti Puri 3 years ago committed by GitHub
parent 9e0f6f3e3e
commit 760ed3457d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      .metamaskrc.dist
  2. 2
      development/build/scripts.js
  3. 510
      test/e2e/tests/edit-gas-fee.spec.js
  4. 186
      test/e2e/tests/send-edit.spec.js
  5. 1
      ui/components/app/advanced-gas-fee-popover/advanced-gas-fee-defaults/advanced-gas-fee-defaults.test.js
  6. 1
      ui/components/app/advanced-gas-fee-popover/advanced-gas-fee-popover.test.js
  7. 1
      ui/components/app/cancel-speedup-popover/cancel-speedup-popover.test.js
  8. 1
      ui/components/app/confirm-page-container/confirm-page-container-container.test.js
  9. 10
      ui/components/app/confirm-page-container/enableEIP1559V2-notice/enableEIP1559V2-notice.js
  10. 1
      ui/components/app/edit-gas-fee-button/edit-gas-fee-button.test.js
  11. 1
      ui/components/app/edit-gas-fee-popover/edit-gas-fee-popover.test.js
  12. 1
      ui/components/app/edit-gas-fee-popover/edit-gas-item/edit-gas-item.test.js
  13. 1
      ui/components/app/transaction-detail/transaction-detail.component.test.js
  14. 25
      ui/hooks/useTransactionEventFragment.js
  15. 6
      ui/pages/settings/experimental-tab/experimental-tab.component.js
  16. 1
      ui/pages/swaps/fee-card/fee-card.test.js
  17. 7
      ui/store/actions.js

@ -3,6 +3,5 @@ PASSWORD=METAMASK PASSWORD
INFURA_PROJECT_ID=00000000000 INFURA_PROJECT_ID=00000000000
SEGMENT_WRITE_KEY= SEGMENT_WRITE_KEY=
ONBOARDING_V2= ONBOARDING_V2=
EIP_1559_V2=
SWAPS_USE_DEV_APIS= SWAPS_USE_DEV_APIS=
COLLECTIBLES_V1= COLLECTIBLES_V1=

@ -34,7 +34,6 @@ const metamaskrc = require('rc')('metamask', {
INFURA_PROD_PROJECT_ID: process.env.INFURA_PROD_PROJECT_ID, INFURA_PROD_PROJECT_ID: process.env.INFURA_PROD_PROJECT_ID,
ONBOARDING_V2: process.env.ONBOARDING_V2, ONBOARDING_V2: process.env.ONBOARDING_V2,
COLLECTIBLES_V1: process.env.COLLECTIBLES_V1, COLLECTIBLES_V1: process.env.COLLECTIBLES_V1,
EIP_1559_V2: process.env.EIP_1559_V2,
SEGMENT_HOST: process.env.SEGMENT_HOST, SEGMENT_HOST: process.env.SEGMENT_HOST,
SEGMENT_WRITE_KEY: process.env.SEGMENT_WRITE_KEY, SEGMENT_WRITE_KEY: process.env.SEGMENT_WRITE_KEY,
SEGMENT_BETA_WRITE_KEY: process.env.SEGMENT_BETA_WRITE_KEY, SEGMENT_BETA_WRITE_KEY: process.env.SEGMENT_BETA_WRITE_KEY,
@ -797,7 +796,6 @@ function getEnvironmentVariables({ buildType, devMode, testing }) {
SWAPS_USE_DEV_APIS: process.env.SWAPS_USE_DEV_APIS === '1', SWAPS_USE_DEV_APIS: process.env.SWAPS_USE_DEV_APIS === '1',
ONBOARDING_V2: metamaskrc.ONBOARDING_V2 === '1', ONBOARDING_V2: metamaskrc.ONBOARDING_V2 === '1',
COLLECTIBLES_V1: metamaskrc.COLLECTIBLES_V1 === '1', COLLECTIBLES_V1: metamaskrc.COLLECTIBLES_V1 === '1',
EIP_1559_V2: metamaskrc.EIP_1559_V2 === '1',
}; };
} }

@ -8,270 +8,268 @@ const {
regularDelayMs, regularDelayMs,
} = require('../helpers'); } = require('../helpers');
if (process.env.EIP_1559_V2 === '1') { describe('Editing Confirm Transaction', function () {
describe('Editing Confirm Transaction', function () { it('allows selecting high, medium, low gas estimates on edit gas fee popover', async function () {
it('allows selecting high, medium, low gas estimates on edit gas fee popover', async function () { const ganacheOptions = {
const ganacheOptions = { hardfork: 'london',
hardfork: 'london', accounts: [
accounts: [
{
secretKey:
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
balance: convertToHexValue(25000000000000000000),
},
],
};
await withFixtures(
{ {
fixtures: 'eip-1559-v2', secretKey:
ganacheOptions, '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
title: this.test.title, balance: convertToHexValue(25000000000000000000),
}, },
async ({ driver }) => { ],
await driver.navigate(); };
await withFixtures(
await driver.fill('#password', 'correct horse battery staple'); {
await driver.press('#password', driver.Key.ENTER); fixtures: 'eip-1559-v2',
ganacheOptions,
const transactionAmounts = await driver.findElements( title: this.test.title,
'.currency-display-component__text', },
); async ({ driver }) => {
const transactionAmount = transactionAmounts[0]; await driver.navigate();
assert.equal(await transactionAmount.getText(), '2.2');
await driver.fill('#password', 'correct horse battery staple');
// update estimates to high await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('[data-testid="edit-gas-fee-button"]');
await driver.delay(regularDelayMs); const transactionAmounts = await driver.findElements(
await driver.clickElement('[data-testid="edit-gas-fee-item-high"]'); '.currency-display-component__text',
await driver.delay(regularDelayMs); );
await driver.waitForSelector({ text: '🦍' }); const transactionAmount = transactionAmounts[0];
await driver.waitForSelector({ assert.equal(await transactionAmount.getText(), '2.2');
text: 'Aggressive',
}); // update estimates to high
await driver.clickElement('[data-testid="edit-gas-fee-button"]');
// update estimates to medium await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="edit-gas-fee-button"]'); await driver.clickElement('[data-testid="edit-gas-fee-item-high"]');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="edit-gas-fee-item-medium"]'); await driver.waitForSelector({ text: '🦍' });
await driver.delay(regularDelayMs); await driver.waitForSelector({
await driver.waitForSelector({ text: '🦊' }); text: 'Aggressive',
await driver.waitForSelector({ });
text: 'Market',
}); // update estimates to medium
await driver.clickElement('[data-testid="edit-gas-fee-button"]');
// update estimates to low await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="edit-gas-fee-button"]'); await driver.clickElement('[data-testid="edit-gas-fee-item-medium"]');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="edit-gas-fee-item-low"]'); await driver.waitForSelector({ text: '🦊' });
await driver.delay(regularDelayMs); await driver.waitForSelector({
await driver.waitForSelector({ text: '🐢' }); text: 'Market',
await driver.waitForSelector({ });
text: 'Low',
}); // update estimates to low
await driver.waitForSelector('[data-testid="low-gas-fee-alert"]'); await driver.clickElement('[data-testid="edit-gas-fee-button"]');
await driver.delay(regularDelayMs);
// confirms the transaction await driver.clickElement('[data-testid="edit-gas-fee-item-low"]');
await driver.clickElement({ text: 'Confirm', tag: 'button' }); await driver.delay(regularDelayMs);
await driver.delay(regularDelayMs); await driver.waitForSelector({ text: '🐢' });
await driver.waitForSelector({
await driver.clickElement('[data-testid="home__activity-tab"]'); text: 'Low',
await driver.wait(async () => { });
const confirmedTxes = await driver.findElements( await driver.waitForSelector('[data-testid="low-gas-fee-alert"]');
'.transaction-list__completed-transactions .transaction-list-item',
); // confirms the transaction
return confirmedTxes.length === 1; await driver.clickElement({ text: 'Confirm', tag: 'button' });
}, 10000); await driver.delay(regularDelayMs);
const txValues = await driver.findElements( await driver.clickElement('[data-testid="home__activity-tab"]');
'.transaction-list-item__primary-currency', await driver.wait(async () => {
const confirmedTxes = await driver.findElements(
'.transaction-list__completed-transactions .transaction-list-item',
); );
assert.equal(txValues.length, 1); return confirmedTxes.length === 1;
assert.ok(/-2.2\s*ETH/u.test(await txValues[0].getText())); }, 10000);
},
); const txValues = await driver.findElements(
}); '.transaction-list-item__primary-currency',
);
it('allows accessing advance gas fee popover from edit gas fee popover', async function () { assert.equal(txValues.length, 1);
const ganacheOptions = { assert.ok(/-2.2\s*ETH/u.test(await txValues[0].getText()));
hardfork: 'london', },
accounts: [ );
{ });
secretKey:
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', it('allows accessing advance gas fee popover from edit gas fee popover', async function () {
balance: convertToHexValue(25000000000000000000), const ganacheOptions = {
}, hardfork: 'london',
], accounts: [
};
await withFixtures(
{ {
fixtures: 'eip-1559-v2', secretKey:
ganacheOptions, '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
title: this.test.title, balance: convertToHexValue(25000000000000000000),
}, },
async ({ driver }) => { ],
await driver.navigate(); };
await withFixtures(
await driver.fill('#password', 'correct horse battery staple'); {
await driver.press('#password', driver.Key.ENTER); fixtures: 'eip-1559-v2',
ganacheOptions,
const transactionAmounts = await driver.findElements( title: this.test.title,
'.currency-display-component__text', },
); async ({ driver }) => {
const transactionAmount = transactionAmounts[0]; await driver.navigate();
assert.equal(await transactionAmount.getText(), '2.2');
await driver.fill('#password', 'correct horse battery staple');
// update estimates to high await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('[data-testid="edit-gas-fee-button"]');
await driver.delay(regularDelayMs); const transactionAmounts = await driver.findElements(
await driver.clickElement('[data-testid="edit-gas-fee-item-custom"]'); '.currency-display-component__text',
await driver.delay(regularDelayMs); );
const transactionAmount = transactionAmounts[0];
// enter max fee assert.equal(await transactionAmount.getText(), '2.2');
const maxBaseFee = await driver.findElement(
'[data-testid="base-fee-input"]', // update estimates to high
); await driver.clickElement('[data-testid="edit-gas-fee-button"]');
await maxBaseFee.clear(); await driver.delay(regularDelayMs);
await maxBaseFee.sendKeys('8'); await driver.clickElement('[data-testid="edit-gas-fee-item-custom"]');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
// enter priority fee // enter max fee
const priorityFee = await driver.findElement( const maxBaseFee = await driver.findElement(
'[data-testid="priority-fee-input"]', '[data-testid="base-fee-input"]',
); );
await priorityFee.clear(); await maxBaseFee.clear();
await priorityFee.sendKeys('8'); await maxBaseFee.sendKeys('8');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
// save default values // enter priority fee
await driver.clickElement('input[type="checkbox"]'); const priorityFee = await driver.findElement(
await driver.delay(regularDelayMs); '[data-testid="priority-fee-input"]',
);
// edit gas limit await priorityFee.clear();
await driver.clickElement('[data-testid="advanced-gas-fee-edit"]'); await priorityFee.sendKeys('8');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
const gasLimit = await driver.findElement(
'[data-testid="gas-limit-input"]', // save default values
await driver.clickElement('input[type="checkbox"]');
await driver.delay(regularDelayMs);
// edit gas limit
await driver.clickElement('[data-testid="advanced-gas-fee-edit"]');
await driver.delay(regularDelayMs);
const gasLimit = await driver.findElement(
'[data-testid="gas-limit-input"]',
);
await gasLimit.clear();
await gasLimit.sendKeys('100000');
await driver.delay(regularDelayMs);
// Submit gas fee changes
await driver.clickElement({ text: 'Save', tag: 'button' });
// has correct updated value on the confirm screen the transaction
const editedTransactionAmounts = await driver.findElements(
'.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type',
);
const editedTransactionAmount = editedTransactionAmounts[0];
assert.equal(await editedTransactionAmount.getText(), '0.0008');
const editedTransactionFee = editedTransactionAmounts[1];
assert.equal(await editedTransactionFee.getText(), '2.2008');
// confirms the transaction
await driver.clickElement({ text: 'Confirm', tag: 'button' });
await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="home__activity-tab"]');
await driver.wait(async () => {
const confirmedTxes = await driver.findElements(
'.transaction-list__completed-transactions .transaction-list-item',
); );
await gasLimit.clear(); return confirmedTxes.length === 1;
await gasLimit.sendKeys('100000'); }, 10000);
await driver.delay(regularDelayMs);
const txValues = await driver.findElements(
// Submit gas fee changes '.transaction-list-item__primary-currency',
await driver.clickElement({ text: 'Save', tag: 'button' }); );
assert.equal(txValues.length, 1);
assert.ok(/-2.2\s*ETH/u.test(await txValues[0].getText()));
},
);
});
// has correct updated value on the confirm screen the transaction it('should use dapp suggested estimates for transaction coming from dapp', async function () {
const editedTransactionAmounts = await driver.findElements( const ganacheOptions = {
'.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type', hardfork: 'london',
); accounts: [
const editedTransactionAmount = editedTransactionAmounts[0];
assert.equal(await editedTransactionAmount.getText(), '0.0008');
const editedTransactionFee = editedTransactionAmounts[1];
assert.equal(await editedTransactionFee.getText(), '2.2008');
// confirms the transaction
await driver.clickElement({ text: 'Confirm', tag: 'button' });
await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="home__activity-tab"]');
await driver.wait(async () => {
const confirmedTxes = await driver.findElements(
'.transaction-list__completed-transactions .transaction-list-item',
);
return confirmedTxes.length === 1;
}, 10000);
const txValues = await driver.findElements(
'.transaction-list-item__primary-currency',
);
assert.equal(txValues.length, 1);
assert.ok(/-2.2\s*ETH/u.test(await txValues[0].getText()));
},
);
});
it('should use dapp suggested estimates for transaction coming from dapp', async function () {
const ganacheOptions = {
hardfork: 'london',
accounts: [
{
secretKey:
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
balance: convertToHexValue(25000000000000000000),
},
],
};
await withFixtures(
{ {
fixtures: 'eip-1559-v2-dapp', secretKey:
ganacheOptions, '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
title: this.test.title, balance: convertToHexValue(25000000000000000000),
dapp: true,
}, },
async ({ driver }) => { ],
await driver.navigate(); };
await withFixtures(
// login to extension {
await driver.fill('#password', 'correct horse battery staple'); fixtures: 'eip-1559-v2-dapp',
await driver.press('#password', driver.Key.ENTER); ganacheOptions,
title: this.test.title,
// open dapp and connect dapp: true,
await connectDappWithExtensionPopup(driver); },
await driver.clickElement({ text: 'Send', tag: 'button' }); async ({ driver }) => {
await driver.navigate();
// check transaction in extension popup
const windowHandles = await getWindowHandles(driver, 3); // login to extension
await driver.switchToWindow(windowHandles.popup); await driver.fill('#password', 'correct horse battery staple');
await driver.delay(largeDelayMs); await driver.press('#password', driver.Key.ENTER);
await driver.waitForSelector({ text: '🌐' });
await driver.waitForSelector({ // open dapp and connect
text: 'Site suggested', await connectDappWithExtensionPopup(driver);
}); await driver.clickElement({ text: 'Send', tag: 'button' });
await driver.clickElement('[data-testid="edit-gas-fee-button"]'); // check transaction in extension popup
await driver.delay(regularDelayMs); const windowHandles = await getWindowHandles(driver, 3);
await driver.clickElement( await driver.switchToWindow(windowHandles.popup);
'[data-testid="edit-gas-fee-item-dappSuggested"]', await driver.delay(largeDelayMs);
await driver.waitForSelector({ text: '🌐' });
await driver.waitForSelector({
text: 'Site suggested',
});
await driver.clickElement('[data-testid="edit-gas-fee-button"]');
await driver.delay(regularDelayMs);
await driver.clickElement(
'[data-testid="edit-gas-fee-item-dappSuggested"]',
);
await driver.delay(regularDelayMs);
const transactionAmounts = await driver.findElements(
'.currency-display-component__text',
);
const transactionAmount = transactionAmounts[0];
assert.equal(await transactionAmount.getText(), '3');
// has correct updated value on the confirm screen the transaction
const editedTransactionAmounts = await driver.findElements(
'.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type',
);
const editedTransactionAmount = editedTransactionAmounts[0];
assert.equal(await editedTransactionAmount.getText(), '0.00042');
const editedTransactionFee = editedTransactionAmounts[1];
assert.equal(await editedTransactionFee.getText(), '3.00042');
// confirms the transaction
await driver.clickElement({ text: 'Confirm', tag: 'button' });
await driver.delay(regularDelayMs);
// transaction should correct values in activity tab
await driver.switchToWindow(windowHandles.extension);
await driver.clickElement('[data-testid="home__activity-tab"]');
await driver.wait(async () => {
const confirmedTxes = await driver.findElements(
'.transaction-list__completed-transactions .transaction-list-item',
); );
await driver.delay(regularDelayMs); return confirmedTxes.length === 1;
}, 10000);
const transactionAmounts = await driver.findElements(
'.currency-display-component__text', const txValues = await driver.findElements(
); '.transaction-list-item__primary-currency',
const transactionAmount = transactionAmounts[0]; );
assert.equal(await transactionAmount.getText(), '3'); assert.equal(txValues.length, 1);
assert.ok(/-3\s*ETH/u.test(await txValues[0].getText()));
// has correct updated value on the confirm screen the transaction },
const editedTransactionAmounts = await driver.findElements( );
'.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type',
);
const editedTransactionAmount = editedTransactionAmounts[0];
assert.equal(await editedTransactionAmount.getText(), '0.00042');
const editedTransactionFee = editedTransactionAmounts[1];
assert.equal(await editedTransactionFee.getText(), '3.00042');
// confirms the transaction
await driver.clickElement({ text: 'Confirm', tag: 'button' });
await driver.delay(regularDelayMs);
// transaction should correct values in activity tab
await driver.switchToWindow(windowHandles.extension);
await driver.clickElement('[data-testid="home__activity-tab"]');
await driver.wait(async () => {
const confirmedTxes = await driver.findElements(
'.transaction-list__completed-transactions .transaction-list-item',
);
return confirmedTxes.length === 1;
}, 10000);
const txValues = await driver.findElements(
'.transaction-list-item__primary-currency',
);
assert.equal(txValues.length, 1);
assert.ok(/-3\s*ETH/u.test(await txValues[0].getText()));
},
);
});
}); });
} });

@ -23,6 +23,7 @@ describe('Editing Confirm Transaction', function () {
fixtures: 'send-edit', fixtures: 'send-edit',
ganacheOptions, ganacheOptions,
title: this.test.title, title: this.test.title,
failOnConsoleError: false,
}, },
async ({ driver }) => { async ({ driver }) => {
await driver.navigate(); await driver.navigate();
@ -92,113 +93,112 @@ describe('Editing Confirm Transaction', function () {
); );
}); });
if (process.env.EIP_1559_V2 === '1') { it('goes back from confirm page to edit eth value, baseFee, priorityFee and gas limit - 1559 V2', async function () {
it('goes back from confirm page to edit eth value, baseFee, priorityFee and gas limit - 1559 V2', async function () { const ganacheOptions = {
const ganacheOptions = { hardfork: 'london',
hardfork: 'london', accounts: [
accounts: [
{
secretKey:
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
balance: convertToHexValue(25000000000000000000),
},
],
};
await withFixtures(
{ {
fixtures: 'send-edit-v2', secretKey:
ganacheOptions, '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
title: this.test.title, balance: convertToHexValue(25000000000000000000),
}, },
async ({ driver }) => { ],
await driver.navigate(); };
await withFixtures(
{
fixtures: 'send-edit-v2',
ganacheOptions,
title: this.test.title,
failOnConsoleError: false,
},
async ({ driver }) => {
await driver.navigate();
await driver.fill('#password', 'correct horse battery staple'); await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER); await driver.press('#password', driver.Key.ENTER);
const transactionAmounts = await driver.findElements( const transactionAmounts = await driver.findElements(
'.currency-display-component__text', '.currency-display-component__text',
); );
const transactionAmount = transactionAmounts[0]; const transactionAmount = transactionAmounts[0];
assert.equal(await transactionAmount.getText(), '1'); assert.equal(await transactionAmount.getText(), '1');
const transactionFee = transactionAmounts[1]; const transactionFee = transactionAmounts[1];
assert.equal(await transactionFee.getText(), '0.0000375'); assert.equal(await transactionFee.getText(), '0.0000375');
await driver.clickElement( await driver.clickElement(
'.confirm-page-container-header__back-button', '.confirm-page-container-header__back-button',
); );
await driver.fill('.unit-input__input', '2.2'); await driver.fill('.unit-input__input', '2.2');
await driver.clickElement({ text: 'Next', tag: 'button' }); await driver.clickElement({ text: 'Next', tag: 'button' });
// open gas fee popover // open gas fee popover
await driver.clickElement({ text: 'Edit', tag: 'button' }); await driver.clickElement({ text: 'Edit', tag: 'button' });
// show gas limit // show gas limit
await driver.clickElement('[data-testid="advanced-gas-fee-edit"]'); await driver.clickElement('[data-testid="advanced-gas-fee-edit"]');
await driver.delay(largeDelayMs); await driver.delay(largeDelayMs);
// enter max fee // enter max fee
const maxBaseFee = await driver.findElement( const maxBaseFee = await driver.findElement(
'[data-testid="base-fee-input"]', '[data-testid="base-fee-input"]',
); );
await maxBaseFee.clear(); await maxBaseFee.clear();
await maxBaseFee.sendKeys('8'); await maxBaseFee.sendKeys('8');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
// enter priority fee // enter priority fee
const priorityFee = await driver.findElement( const priorityFee = await driver.findElement(
'[data-testid="priority-fee-input"]', '[data-testid="priority-fee-input"]',
); );
await priorityFee.clear(); await priorityFee.clear();
await priorityFee.sendKeys('8'); await priorityFee.sendKeys('8');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
// edit gas limit // edit gas limit
const gasLimit = await driver.findElement( const gasLimit = await driver.findElement(
'[data-testid="gas-limit-input"]', '[data-testid="gas-limit-input"]',
); );
await gasLimit.clear(); await gasLimit.clear();
await gasLimit.sendKeys('100000'); await gasLimit.sendKeys('100000');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
// save default values // save default values
await driver.clickElement('input[type="checkbox"]'); await driver.clickElement('input[type="checkbox"]');
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
// Submit gas fee changes // Submit gas fee changes
await driver.clickElement({ text: 'Save', tag: 'button' }); await driver.clickElement({ text: 'Save', tag: 'button' });
// has correct updated value on the confirm screen the transaction // has correct updated value on the confirm screen the transaction
const editedTransactionAmounts = await driver.findElements( const editedTransactionAmounts = await driver.findElements(
'.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type', '.transaction-detail-item__row .transaction-detail-item__detail-values .currency-display-component__text:last-of-type',
); );
const editedTransactionAmount = editedTransactionAmounts[0]; const editedTransactionAmount = editedTransactionAmounts[0];
assert.equal(await editedTransactionAmount.getText(), '0.0008'); assert.equal(await editedTransactionAmount.getText(), '0.0008');
const editedTransactionFee = editedTransactionAmounts[1]; const editedTransactionFee = editedTransactionAmounts[1];
assert.equal(await editedTransactionFee.getText(), '2.2008'); assert.equal(await editedTransactionFee.getText(), '2.2008');
// confirms the transaction // confirms the transaction
await driver.clickElement({ text: 'Confirm', tag: 'button' }); await driver.clickElement({ text: 'Confirm', tag: 'button' });
await driver.delay(regularDelayMs); await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="home__activity-tab"]'); await driver.clickElement('[data-testid="home__activity-tab"]');
await driver.wait(async () => { await driver.wait(async () => {
const confirmedTxes = await driver.findElements( const confirmedTxes = await driver.findElements(
'.transaction-list__completed-transactions .transaction-list-item', '.transaction-list__completed-transactions .transaction-list-item',
);
return confirmedTxes.length === 1;
}, 10000);
const txValues = await driver.findElements(
'.transaction-list-item__primary-currency',
); );
assert.equal(txValues.length, 1); return confirmedTxes.length === 1;
assert.ok(/-2.2\s*ETH/u.test(await txValues[0].getText())); }, 10000);
},
); const txValues = await driver.findElements(
}); '.transaction-list-item__primary-currency',
} );
assert.equal(txValues.length, 1);
assert.ok(/-2.2\s*ETH/u.test(await txValues[0].getText()));
},
);
});
}); });

@ -26,6 +26,7 @@ jest.mock('../../../../store/actions', () => ({
removePollingTokenFromAppState: jest.fn(), removePollingTokenFromAppState: jest.fn(),
setAdvancedGasFee: jest.fn(), setAdvancedGasFee: jest.fn(),
updateEventFragment: jest.fn(), updateEventFragment: jest.fn(),
createTransactionEventFragment: jest.fn(),
})); }));
const render = (defaultGasParams, contextParams) => { const render = (defaultGasParams, contextParams) => {

@ -17,6 +17,7 @@ jest.mock('../../../store/actions', () => ({
.mockImplementation(() => Promise.resolve()), .mockImplementation(() => Promise.resolve()),
addPollingTokenToAppState: jest.fn(), addPollingTokenToAppState: jest.fn(),
removePollingTokenFromAppState: jest.fn(), removePollingTokenFromAppState: jest.fn(),
createTransactionEventFragment: jest.fn(),
})); }));
jest.mock('../../../contexts/transaction-modal', () => ({ jest.mock('../../../contexts/transaction-modal', () => ({

@ -22,6 +22,7 @@ jest.mock('../../../store/actions', () => ({
addPollingTokenToAppState: jest.fn(), addPollingTokenToAppState: jest.fn(),
removePollingTokenFromAppState: jest.fn(), removePollingTokenFromAppState: jest.fn(),
updateTransaction: () => ({ type: 'UPDATE_TRANSACTION_PARAMS' }), updateTransaction: () => ({ type: 'UPDATE_TRANSACTION_PARAMS' }),
createTransactionEventFragment: jest.fn(),
})); }));
jest.mock('../../../contexts/transaction-modal', () => ({ jest.mock('../../../contexts/transaction-modal', () => ({

@ -41,6 +41,7 @@ describe('Confirm Page Container Container Test', () => {
chainId: 'test', chainId: 'test',
identities: [], identities: [],
featureFlags: {}, featureFlags: {},
enableEIP1559V2NoticeDismissed: true,
}, },
}; };

@ -20,10 +20,6 @@ import { setEnableEIP1559V2NoticeDismissed } from '../../../../store/actions';
import { getEnableEIP1559V2NoticeDismissed } from '../../../../ducks/metamask/metamask'; import { getEnableEIP1559V2NoticeDismissed } from '../../../../ducks/metamask/metamask';
import { getEIP1559V2Enabled } from '../../../../selectors'; import { getEIP1559V2Enabled } from '../../../../selectors';
const EIP_1559_V2_ENABLED =
// This is a string in unit tests but is a boolean in the browser
process.env.EIP_1559_V2 === true || process.env.EIP_1559_V2 === 'true';
export default function EnableEIP1559V2Notice({ isFirstAlert }) { export default function EnableEIP1559V2Notice({ isFirstAlert }) {
const t = useI18nContext(); const t = useI18nContext();
const history = useHistory(); const history = useHistory();
@ -32,11 +28,7 @@ export default function EnableEIP1559V2Notice({ isFirstAlert }) {
); );
const eip1559V2Enabled = useSelector(getEIP1559V2Enabled); const eip1559V2Enabled = useSelector(getEIP1559V2Enabled);
if ( if (eip1559V2Enabled || enableEIP1559V2NoticeDismissed) {
!EIP_1559_V2_ENABLED ||
eip1559V2Enabled ||
enableEIP1559V2NoticeDismissed
) {
return null; return null;
} }

@ -22,6 +22,7 @@ jest.mock('../../../store/actions', () => ({
.fn() .fn()
.mockImplementation(() => Promise.resolve()), .mockImplementation(() => Promise.resolve()),
addPollingTokenToAppState: jest.fn(), addPollingTokenToAppState: jest.fn(),
createTransactionEventFragment: jest.fn(),
})); }));
const render = ({ componentProps, contextProps } = {}) => { const render = ({ componentProps, contextProps } = {}) => {

@ -15,6 +15,7 @@ jest.mock('../../../store/actions', () => ({
.fn() .fn()
.mockImplementation(() => Promise.resolve()), .mockImplementation(() => Promise.resolve()),
addPollingTokenToAppState: jest.fn(), addPollingTokenToAppState: jest.fn(),
createTransactionEventFragment: jest.fn(),
})); }));
jest.mock('../../../contexts/transaction-modal', () => ({ jest.mock('../../../contexts/transaction-modal', () => ({

@ -18,6 +18,7 @@ jest.mock('../../../../store/actions', () => ({
getGasFeeTimeEstimate: jest getGasFeeTimeEstimate: jest
.fn() .fn()
.mockImplementation(() => Promise.resolve('unknown')), .mockImplementation(() => Promise.resolve('unknown')),
createTransactionEventFragment: jest.fn(),
})); }));
const MOCK_FEE_ESTIMATE = { const MOCK_FEE_ESTIMATE = {

@ -18,6 +18,7 @@ jest.mock('../../../store/actions', () => ({
.fn() .fn()
.mockImplementation(() => Promise.resolve()), .mockImplementation(() => Promise.resolve()),
addPollingTokenToAppState: jest.fn(), addPollingTokenToAppState: jest.fn(),
createTransactionEventFragment: jest.fn(),
})); }));
const render = ({ componentProps, contextProps } = {}) => { const render = ({ componentProps, contextProps } = {}) => {

@ -1,10 +1,31 @@
import { useCallback } from 'react'; import { useCallback, useEffect } from 'react';
import { useSelector } from 'react-redux';
import { useGasFeeContext } from '../contexts/gasFee'; import { useGasFeeContext } from '../contexts/gasFee';
import { updateEventFragment } from '../store/actions'; import {
createTransactionEventFragment,
updateEventFragment,
} from '../store/actions';
import { selectMatchingFragment } from '../selectors';
import { TRANSACTION_EVENTS } from '../../shared/constants/transaction';
export const useTransactionEventFragment = () => { export const useTransactionEventFragment = () => {
const { transaction } = useGasFeeContext(); const { transaction } = useGasFeeContext();
const fragment = useSelector((state) =>
selectMatchingFragment(state, {
fragmentOptions: {},
existingId: `transaction-added-${transaction?.id}`,
}),
);
useEffect(() => {
if (!fragment && transaction) {
createTransactionEventFragment(
transaction.id,
TRANSACTION_EVENTS.APPROVED,
);
}
}, [fragment, transaction]);
const updateTransactionEventFragment = useCallback( const updateTransactionEventFragment = useCallback(
(params) => { (params) => {

@ -148,12 +148,6 @@ export default class ExperimentalTab extends PureComponent {
} }
renderEIP1559V2EnabledToggle() { renderEIP1559V2EnabledToggle() {
const EIP_1559_V2_ENABLED =
// This is a string in unit tests but is a boolean in the browser
process.env.EIP_1559_V2 === true || process.env.EIP_1559_V2 === 'true';
if (!EIP_1559_V2_ENABLED) {
return null;
}
const { t } = this.context; const { t } = this.context;
const { eip1559V2Enabled, setEIP1559V2Enabled } = this.props; const { eip1559V2Enabled, setEIP1559V2Enabled } = this.props;

@ -63,6 +63,7 @@ const generateUseSelectorRouter = () => (selector) => {
setBackgroundConnection({ setBackgroundConnection({
getGasFeeTimeEstimate: jest.fn(), getGasFeeTimeEstimate: jest.fn(),
getGasFeeEstimatesAndStartPolling: jest.fn(), getGasFeeEstimatesAndStartPolling: jest.fn(),
createTransactionEventFragment: jest.fn(),
}); });
const createProps = (customProps = {}) => { const createProps = (customProps = {}) => {

@ -3108,6 +3108,13 @@ export function createEventFragment(options) {
return promisifiedBackground.createEventFragment(options); return promisifiedBackground.createEventFragment(options);
} }
export function createTransactionEventFragment(transactionId, event) {
return promisifiedBackground.createTransactionEventFragment(
transactionId,
event,
);
}
export function updateEventFragment(id, payload) { export function updateEventFragment(id, payload) {
return promisifiedBackground.updateEventFragment(id, payload); return promisifiedBackground.updateEventFragment(id, payload);
} }

Loading…
Cancel
Save