diff --git a/.github/workflows/web-e2e-prod-ondemand.yml b/.github/workflows/web-e2e-prod-ondemand.yml
index e29e041f30..48ea3641e7 100644
--- a/.github/workflows/web-e2e-prod-ondemand.yml
+++ b/.github/workflows/web-e2e-prod-ondemand.yml
@@ -4,9 +4,6 @@ on:
workflow_dispatch:
schedule:
- cron: '0 4 * * 1-5'
- push:
- branches:
- - main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
diff --git a/apps/web/cypress/e2e/pages/create_tx.pages.js b/apps/web/cypress/e2e/pages/create_tx.pages.js
index a475d1b60c..7ca5575004 100644
--- a/apps/web/cypress/e2e/pages/create_tx.pages.js
+++ b/apps/web/cypress/e2e/pages/create_tx.pages.js
@@ -61,6 +61,11 @@ const noteAlert = "[data-testid='tx-note-alert']"
const recoredTxNote = '[data-testid="tx-note"]'
const txNoteTooltip = '[data-testid="tx-note-tooltip"]'
const noteCreator = '[data-testid="note-creator"]'
+const tableViewBtn = '[data-testid="table-view-btn"]'
+const gridViewBtn = '[data-testid="grid-view-btn"]'
+const txHexData = '[data-testid="tx-hex-data"]'
+const txStack = '[data-testid="tx-stack"]'
+const txOperation = '[data-testid="tx-operation"]'
const viewTransactionBtn = 'View transaction'
const transactionDetailsTitle = 'Transaction details'
@@ -106,6 +111,11 @@ export const filterTypes = {
module: 'Module-based',
}
+export const advancedDetailsViewOptions = {
+ table: 'table',
+ grid: 'grid',
+}
+
export function typeNoteText(text) {
cy.get(noteTextField).find('input').clear().type(text)
}
@@ -373,10 +383,32 @@ export function clickOnAdvancedDetails() {
export function expandAdvancedDetails(data) {
clickOnAdvancedDetails()
data.forEach((row) => {
- cy.get(txRowTitle).contains(row).should('be.visible')
+ cy.get('div').contains(row).should('be.visible')
+ })
+}
+
+export function switchView(view) {
+ if (view === advancedDetailsViewOptions.table) {
+ cy.get(tableViewBtn).click()
+ cy.get(txHexData).should('be.visible')
+ } else {
+ cy.get(gridViewBtn).click()
+ cy.get(txOperation).should('be.visible')
+ }
+}
+
+export function clickOnCopyDataBtn(expectedData) {
+ cy.get(txStack).find('button').click()
+ cy.wait(2000)
+ cy.window().then((win) => {
+ cy.wrap(win.navigator.clipboard.readText()).should('eq', expectedData)
})
}
+export function switchToGridView() {
+ cy.get(gridViewBtn).click()
+}
+
export function collapseAdvancedDetails() {
clickOnAdvancedDetails()
cy.get(baseGas).should('not.exist')
diff --git a/apps/web/cypress/e2e/pages/staking.page.js b/apps/web/cypress/e2e/pages/staking.page.js
index f0daba1e04..d403451016 100644
--- a/apps/web/cypress/e2e/pages/staking.page.js
+++ b/apps/web/cypress/e2e/pages/staking.page.js
@@ -40,6 +40,10 @@ export function getActivationTimeRegex() {
return new RegExp('^\\d+\\s+hour(s)?\\s+\\d+\\s+minute(s)?$')
}
+export function checkActivationTimeNonEmpty() {
+ return new RegExp('.+')
+}
+
export function checkTxHeaderData(data) {
main.verifyValuesExist(create_tx.transactionItem, data)
}
diff --git a/apps/web/cypress/e2e/pages/swaps.pages.js b/apps/web/cypress/e2e/pages/swaps.pages.js
index 2a640147b9..913f2b6142 100644
--- a/apps/web/cypress/e2e/pages/swaps.pages.js
+++ b/apps/web/cypress/e2e/pages/swaps.pages.js
@@ -369,7 +369,7 @@ export function getWidgetFee() {
}
export function getTokenValue() {
- return new RegExp(`\\$\\d+\\.\\d{2}`, 'i')
+ return new RegExp(`\\$\\d+`, 'i')
}
export function checkTokenOrder(regexPattern, option) {
diff --git a/apps/web/cypress/e2e/prodhealthcheck/tx_history.cy.js b/apps/web/cypress/e2e/prodhealthcheck/tx_history.cy.js
index baf145c06c..88206b1592 100644
--- a/apps/web/cypress/e2e/prodhealthcheck/tx_history.cy.js
+++ b/apps/web/cypress/e2e/prodhealthcheck/tx_history.cy.js
@@ -119,7 +119,8 @@ describe('[PROD] Tx history tests 1', () => {
])
})
- it('Verify advanced details displayed in exapanded details for allowance deletion', () => {
+ // Unskip when advanced details PR is merged to main
+ it.skip('Verify advanced details displayed in exapanded details for allowance deletion', () => {
createTx.clickOnTransactionItemByName(typeDeleteAllowance.title, typeDeleteAllowance.summaryTxInfo)
createTx.expandAdvancedDetails([typeDeleteAllowance.baseGas])
createTx.collapseAdvancedDetails([typeDeleteAllowance.baseGas])
diff --git a/apps/web/cypress/e2e/regression/staking_history.cy.js b/apps/web/cypress/e2e/regression/staking_history.cy.js
index 8e4a63ddb0..358f9c3b5f 100644
--- a/apps/web/cypress/e2e/regression/staking_history.cy.js
+++ b/apps/web/cypress/e2e/regression/staking_history.cy.js
@@ -33,7 +33,7 @@ describe('Staking history tests', { defaultCommandTimeout: 30000 }, () => {
staking.checkDataFields(staking.dataFields.netMonthlyRewards, staking.getRewardRegex())
staking.checkDataFields(staking.dataFields.fee, staking.getPercentageRegex())
staking.checkDataFields(staking.dataFields.validators, '1')
- staking.checkDataFields(staking.dataFields.activationTime, staking.getActivationTimeRegex())
+ staking.checkDataFields(staking.dataFields.activationTime, staking.checkActivationTimeNonEmpty())
staking.checkDataFields(staking.dataFields.rewards, historyData.rewardsValue)
})
})
diff --git a/apps/web/cypress/e2e/regression/tx_history.cy.js b/apps/web/cypress/e2e/regression/tx_history.cy.js
index 20b28c5562..7b3ee53ea5 100644
--- a/apps/web/cypress/e2e/regression/tx_history.cy.js
+++ b/apps/web/cypress/e2e/regression/tx_history.cy.js
@@ -151,10 +151,24 @@ describe('Tx history tests 1', () => {
])
})
- // Added to prod
+ // Added to prod (skipped)
it('Verify advanced details displayed in exapanded details for allowance deletion', () => {
createTx.clickOnTransactionItemByName(typeDeleteAllowance.title, typeDeleteAllowance.summaryTxInfo)
- createTx.expandAdvancedDetails([typeDeleteAllowance.baseGas])
+ createTx.expandAdvancedDetails([
+ typeDeleteAllowance.baseGas,
+ typeDeleteAllowance.operation,
+ typeDeleteAllowance.zero_call,
+ ])
+ createTx.switchView(createTx.advancedDetailsViewOptions.table)
createTx.collapseAdvancedDetails([typeDeleteAllowance.baseGas])
})
+
+ it('Verify address can be copied in advanced details', () => {
+ const data =
+ '0x885133e3000000000000000000000000c16db0251654c0a72e91b190d81ead367d2c6fed0000000000000000000000000000000000000000000000000000000000000000'
+ createTx.clickOnTransactionItemByName(typeDeleteAllowance.title, typeDeleteAllowance.summaryTxInfo)
+ createTx.expandAdvancedDetails([typeDeleteAllowance.baseGas])
+ createTx.switchView(createTx.advancedDetailsViewOptions.table)
+ createTx.clickOnCopyDataBtn(data)
+ })
})
diff --git a/apps/web/cypress/fixtures/txhistory_data_data.json b/apps/web/cypress/fixtures/txhistory_data_data.json
index 9bdab8a0ed..7715004b06 100644
--- a/apps/web/cypress/fixtures/txhistory_data_data.json
+++ b/apps/web/cypress/fixtures/txhistory_data_data.json
@@ -163,7 +163,9 @@
"token": "Token",
"tokenName": "ETH",
"tokenAlt": "ETH",
- "baseGas": "baseGas"
+ "baseGas": "baseGas",
+ "operation": "Operation",
+ "zero_call": "0 (call)"
},
"spendingLimits": {
"title": "Batch",
diff --git a/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/ViewToggleButtonGroup.tsx b/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/ViewToggleButtonGroup.tsx
index d653839eea..ddd9ebe9d0 100644
--- a/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/ViewToggleButtonGroup.tsx
+++ b/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/ViewToggleButtonGroup.tsx
@@ -55,10 +55,10 @@ export const ViewToggleButtonGroup = ({
return (
-
+
-
+
diff --git a/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/index.tsx b/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/index.tsx
index b657e3cec8..11069ac498 100644
--- a/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/index.tsx
+++ b/apps/web/src/components/transactions/TxDetails/Summary/AdvancedTxDetails/index.tsx
@@ -144,7 +144,13 @@ export const AdvancedTxDetails = ({
{view === View.Raw && txData.hexData && (
<>
-
+
Data
@@ -153,6 +159,7 @@ export const AdvancedTxDetails = ({