Skip to content

Commit

Permalink
Tests: Add recovery regression tests (#3998)
Browse files Browse the repository at this point in the history
* Add recovery regression tests
  • Loading branch information
mike10ca authored Jul 25, 2024
1 parent 48d1f1d commit fa5f41a
Show file tree
Hide file tree
Showing 14 changed files with 388 additions and 14 deletions.
1 change: 1 addition & 0 deletions cypress/e2e/pages/modals.page.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export const modalTitle = '[data-testid="modal-title"]'
export const modal = '[data-testid="modal-view"]'
export const modalHeader = '[data-testid="modal-header"]'

export const modalTitiles = {
editEntry: 'Edit entry',
Expand Down
1 change: 1 addition & 0 deletions cypress/e2e/pages/modules.page.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const moduleRemoveIcon = '[data-testid="module-remove-btn"]'
2 changes: 1 addition & 1 deletion cypress/e2e/pages/navigation.page.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ export const setupSection = '[data-testid="setup-section"]'
export const modalBackBtn = '[data-testid="modal-back-btn"]'
export const newTxBtn = '[data-testid="new-tx-btn"]'
const modalCloseIcon = '[data-testid="CloseIcon"]'
const expandMoreIcon = 'svg[data-testid="ExpandMoreIcon"]'
export const expandMoreIcon = 'svg[data-testid="ExpandMoreIcon"]'
const sentinelStart = 'div[data-testid="sentinelStart"]'

const disconnectBtnStr = 'Disconnect'
Expand Down
73 changes: 70 additions & 3 deletions cypress/e2e/pages/recovery.pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,51 @@ import * as safe from '../pages/load_safe.pages'
import * as tx from '../pages/transactions.page'
import { tableContainer } from '../pages/address_book.page'
import { txDate } from '../pages/create_tx.pages'
import { modalHeader } from '../pages/modals.page'

const setupRecoveryBtn = '[data-testid="setup-recovery-btn"]'
const setupRecoveryModalBtn = '[data-testid="setup-btn"]'
export const setupRecoveryBtn = '[data-testid="setup-recovery-btn"]'
export const setupRecoveryModalBtn = '[data-testid="setup-btn"]'
const recoveryNextBtn = '[data-testid="next-btn"]'
const warningSection = '[data-testid="warning-section"]'
const termsCheckbox = 'input[type="checkbox"]'
const removeRecovererBtn = '[data-testid="remove-recoverer-btn"]'
export const removeRecovererBtn = '[data-testid="remove-recoverer-btn"]'
export const editRecovererBtn = '[data-testid="edit-recoverer-btn"]'
const removeRecovererSection = '[data-testid="remove-recoverer-section"]'
const startRecoveryBtn = '[data-testid="start-recovery-btn"]'
const recoveryDelaySelect = '[data-testid="recovery-delay-select"]'
const recoveryExpirySelect = '[data-testid="recovery-expiry-select"]'
const postponeRecoveryBtn = '[data-testid="postpone-recovery-btn"]'
const goToQueueBtn = '[data-testid="queue-btn"]'
const executeBtn = '[data-testid="execute-btn"]'
const cancelRecoveryBtn = '[data-testid="cancel-recovery-btn"]'
const cancelProposalBtn = '[data-testid="cancel-proposal-btn"]'
const executeFormBtn = '[data-testid="execute-form-btn"]'
const advancedBtn = '[data-testid="advanced-btn"]'
const recoveryProposalModal = '[data-testid="recovery-proposal"]'
const recoveryProposalHorizontal = '[data-testid="recovery-proposal-hr"]'

export const recoveryOptions = {
fiveMin: '5 minutes',
oneHr: '1 hour',
fiveSixDays: '56 days',
never: 'never',
}
export function clickOnEditRecoverer() {
cy.get(editRecovererBtn).click()
}
export function verifyRecovererSettings(data) {
main.checkTextsExistWithinElement(tableContainer, data)
}

export function verifyRecovererConfirmationData(data) {
data.forEach((item) => {
cy.get(modalHeader).next('div').contains(item)
})
}

export function verifyRecoveryTableDisplayed() {
cy.get(tableContainer).should('be.visible')
}
export function clickOnExecuteRecoveryCancelBtn() {
cy.get(executeFormBtn).click()
}
Expand All @@ -46,6 +74,27 @@ export function setRecoveryDelay(option) {
cy.contains(option).click()
}

export function verifyRecoveryDelayOptions(options) {
cy.get(recoveryDelaySelect).click()
options.forEach((item) => {
cy.contains(item)
})
}

export function setRecoveryExpiry(option) {
cy.get(advancedBtn).click()
cy.get(recoveryExpirySelect).click()
cy.contains(option).click()
}

export function verifyRecoveryExpiryOptions(options) {
cy.get(advancedBtn).click()
cy.get(recoveryExpirySelect).click()
options.forEach((item) => {
cy.contains(item)
})
}

export function getSetupRecoveryBtn() {
return cy.get(setupRecoveryBtn)
}
Expand Down Expand Up @@ -116,3 +165,21 @@ export function postponeRecovery() {
cy.get(postponeRecoveryBtn).should('not.exist')
})
}

export function clickOnRecoverLaterBtn() {
cy.get(postponeRecoveryBtn).click()
cy.get(postponeRecoveryBtn).should('not.exist')
}

export function verifyNonceState(state) {
if (state === constants.elementExistanceStates.exist) {
cy.get(nonceFld).should(constants.elementExistanceStates.exist)
}
cy.get(nonceFld).should(constants.elementExistanceStates.not_exist)
}

export function verifyRecoveryProposalModalState(option, horizontal = false) {
let modal = recoveryProposalModal
if (horizontal) modal = recoveryProposalHorizontal
cy.get(modal).should(option)
}
1 change: 1 addition & 0 deletions cypress/e2e/pages/tables.page.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const dataRow = '[data-testid="tx-data-row"]'
34 changes: 32 additions & 2 deletions cypress/e2e/regression/address_book.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,38 @@ describe('Address book tests', () => {
addressBook.verifyExportMessage(12)
addressBook.confirmExport()
const downloadsFolder = Cypress.config('downloadsFolder')
//File reading is failing in the CI. Can be tested locally
cy.readFile(path.join(downloadsFolder, fileName)).should('exist')

cy.readFile(path.join(downloadsFolder, fileName), 'utf-8').then((content) => {
const lines = content
.replace(/^\uFEFF/, '')
.trim()
.split('\r\n')

const [header, ...dataLines] = lines
const actualData = dataLines.reduce((acc, line) => {
const [address, name, chainId] = line.split(',')
acc[chainId] = acc[chainId] || {}
acc[chainId][address] = name
return acc
}, {})

Object.keys(ls.addressBookData.dataSet).forEach((chainId) => {
cy.log(`Checking chainId: ${chainId}`)

const actualChainData = actualData[chainId] || {}
const expectedChainData = ls.addressBookData.dataSet[chainId]

Object.keys(expectedChainData).forEach((address) => {
const actualName = actualChainData[address]
const expectedName = expectedChainData[address]

cy.log(
`ChainId: ${chainId}, Address: ${address}, Actual Name: ${actualName}, Expected Name: ${expectedName}`,
)
expect(actualName).to.equal(expectedName)
})
})
})
})
})

Expand Down
Loading

0 comments on commit fa5f41a

Please sign in to comment.