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 = ({