Skip to content

Commit

Permalink
Merge branch 'dev' into safe-auth-kit
Browse files Browse the repository at this point in the history
  • Loading branch information
schmanu committed Feb 9, 2024
2 parents 9e37db8 + 88c5b56 commit ae10e72
Show file tree
Hide file tree
Showing 155 changed files with 2,761 additions and 1,292 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ Install the dependencies:
yarn
```

Generate types:
```bash
yarn postinstall
```

Run the development server:

```bash
Expand Down
3 changes: 1 addition & 2 deletions cypress/e2e/pages/address_book.page.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export const acceptSelection = 'Accept selection'
export const acceptSelection = 'Save settings'
export const addressBook = 'Address book'
const createEntryBtn = 'Create entry'

Expand All @@ -12,7 +12,6 @@ export const editEntryBtn = 'button[aria-label="Edit entry"]'
export const deleteEntryBtn = 'button[aria-label="Delete entry"]'
export const deleteEntryModalBtnSection = '.MuiDialogActions-root'
export const delteEntryModaldeleteBtn = 'Delete'
const exportFileModalExportBtn = 'Export'
const importBtn = 'Import'
const exportBtn = 'Export'
const exportModalBtn = '[data-testid="export-modal-btn"]'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as main from '../pages/main.page'
import * as main from './main.page'

let etherscanLink = 'a[aria-label="View on sepolia.etherscan.io"]'
let etherscanLinkSepolia = 'a[aria-label="View on sepolia.etherscan.io"]'
export const balanceSingleRow = '[aria-labelledby="tableTitle"] > tbody tr'
const currencyDropdown = '[id="currency"]'
Expand All @@ -18,6 +17,8 @@ const hiddenTokenSaveBtn = 'span[data-track="assets: Save hide dialog"]'
const hiddenTokenCancelBtn = 'span[data-track="assets: Cancel hide dialog"]'
const hiddenTokenDeselectAllBtn = 'span[data-track="assets: Deselect all hide dialog"]'
const hiddenTokenIcon = 'svg[data-testid="VisibilityOffOutlinedIcon"]'
const currencySelector = '[data-testid="currency-selector"]'
const currencyItem = '[data-testid="currency-item"]'

const hideTokenDefaultString = 'Hide tokens'
const assetNameSortBtnStr = 'Asset'
Expand Down Expand Up @@ -92,6 +93,15 @@ export const currentcyGnosisFormat = '< 0.00001 GNO'
export const currencyOx = /^0x$/
export const currentcyOxFormat = '1.003 ZRX'

function clickOnCurrencySelector() {
cy.get(currencySelector).click()
}

export function changeCurrency(currency) {
clickOnCurrencySelector()
cy.get(currencyItem).contains(currency).click()
}

export function clickOnSendBtn(index) {
cy.get('button')
.contains(sendBtnStr)
Expand All @@ -109,6 +119,10 @@ export function showSendBtn(index) {
})
}

export function VerifySendButtonIsDisabled() {
cy.get('button').contains(sendBtnStr).should('be.disabled')
}

export function verifyTableRows(assetsLength) {
cy.get(balanceSingleRow).should('have.length', assetsLength)
}
Expand Down Expand Up @@ -207,14 +221,14 @@ export function verityTokenAltImageIsVisible(currency, alttext) {
})
}

export function verifyAssetNameHasExplorerLink(currency, columnName, sepolia = false) {
if (sepolia) etherscanLink = etherscanLinkSepolia
export function verifyAssetNameHasExplorerLink(currency, columnName) {
etherscanLinkSepolia
cy.get(tokenListTable)
.contains(currency)
.parents('tr')
.find('td')
.eq(columnName)
.find(etherscanLink)
.find(etherscanLinkSepolia)
.should('be.visible')
}

Expand All @@ -225,7 +239,7 @@ export function verifyAssetExplorerLinkNotAvailable(currency, columnName) {
.find('td')
.eq(columnName)
.within(() => {
cy.get(etherscanLink).should('not.exist')
cy.get(etherscanLinkSepolia).should('not.exist')
})
}

Expand Down
18 changes: 7 additions & 11 deletions cypress/e2e/pages/create_tx.pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,21 +250,11 @@ export function verifyWrongChecksum(wronglyChecksummedAddress) {
cy.contains(constants.addressBookErrrMsg.invalidChecksum).should('be.visible')
}

export function verifyAmountNegativeNumber() {
setSendValue(-1)
cy.contains(constants.amountErrorMsg.negativeValue).should('be.visible')
}

export function verifyAmountLargerThanCurrentBalance() {
setSendValue(9999)
cy.contains(constants.amountErrorMsg.largerThanCurrentBalance).should('be.visible')
}

export function verifyAmountMustBeNumber() {
setSendValue('abc')
cy.contains(constants.amountErrorMsg.randomString).should('be.visible')
}

export function verifyTooltipMessage(message) {
cy.get('div[role="tooltip"]').contains(message).should('be.visible')
}
Expand Down Expand Up @@ -323,7 +313,7 @@ export function verifyNativeTokenTransfer() {
}

export function changeNonce(value) {
cy.get(nonceInput).clear().type(value, { force: true }).blur()
cy.get(nonceInput).clear().type(value, { force: true })
}

export function verifyConfirmTransactionData() {
Expand Down Expand Up @@ -412,3 +402,9 @@ export function clickOnExpandAllBtn() {
export function clickOnCollapseAllBtn() {
cy.contains(collapseAllBtnStr).click()
}

export function verifyTxDestinationAddress(receivedAddress) {
cy.get(receivedAddress).then((address) => {
cy.contains(address).should('exist')
})
}
2 changes: 1 addition & 1 deletion cypress/e2e/pages/import_export.pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const appearenceTabStr = 'Appearance'
const showMoreTabsBtn = '[data-testid="KeyboardArrowRightIcon"]'
const dataTabStr = 'Data'
const tab = 'div[role="tablist"] a'
const safeHeaderInfo = '[data-testid="safe-header-info"]'
export const safeHeaderInfo = '[data-testid="safe-header-info"]'
export const prependChainPrefixStr = 'Prepend chain prefix to addresses'
export const copyAddressStr = 'Copy addresses with chain prefix'
export const darkModeStr = 'Dark mode'
Expand Down
7 changes: 0 additions & 7 deletions cypress/e2e/pages/load_safe.pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ const addressInput = 'input[name="address"]'
const sideBarIcon = '[data-testid="ChevronRightIcon"]'
const sidebarCheckIcon = '[data-testid="CheckIcon"]'
const addressStepNextBtn = '[data-testid="load-safe-next-btn"]'
const qrCodeBtn = '[data-testid="address-qr-scan"]'
const typeFile = '[type="file"]'
const nextBtnStr = 'Next'
const addBtnStr = 'Add'
Expand Down Expand Up @@ -65,12 +64,6 @@ export function verifyNameLengthErrorMessage() {
cy.get(nameInput).parent().prev('label').contains(invalidAddressNameLengthErrorMsg)
}

export function scanQRCode(image) {
cy.get(qrCodeBtn).click()
cy.contains('Upload an image').click()
cy.get(typeFile).attachFile(image)
}

export function inputAddress(address) {
cy.get(addressInput).clear().type(address)
}
Expand Down
17 changes: 14 additions & 3 deletions cypress/e2e/pages/main.page.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import * as constants from '../../support/constants'

const acceptSelection = 'Accept selection'
const acceptSelection = 'Save settings'
const executeStr = 'Execute'
const connectedOwnerBlock = '[data-testid="open-account-center"]'
export const modalDialogCloseBtn = '[data-testid="modal-dialog-close-btn"]'

export function clickOnExecuteBtn() {
Expand Down Expand Up @@ -41,8 +42,8 @@ export function acceptCookies(index = 0) {
})
}

export function verifyGoerliWalletHeader() {
cy.contains(constants.goerlyE2EWallet)
export function verifyOwnerConnected(prefix = 'sep:') {
cy.get(connectedOwnerBlock).should('contain', prefix)
}

export function verifyHomeSafeUrl(safe) {
Expand Down Expand Up @@ -89,6 +90,10 @@ export function verifyElementsCount(element, count) {
cy.get(element).should('have.length', count)
}

export function verifyMinimumElementsCount(element, count) {
cy.get(element).should('have.length.at.least', count)
}

export function verifyValuesDoNotExist(element, values) {
values.forEach((value) => {
cy.get(element).should('not.contain', value)
Expand Down Expand Up @@ -166,3 +171,9 @@ export function checkTextOrder(selector, expectedTextArray) {
expect(text).to.eq(expectedTextArray[index])
})
}

export function verifyElementsStatus(elements, status) {
elements.forEach((element) => {
cy.get(element).should(status)
})
}
11 changes: 11 additions & 0 deletions cypress/e2e/pages/modals.page.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export const modalTitle = '[data-testid="modal-title"]'
export const modal = '[data-testid="modal-view"]'

export const modalTitiles = {
editEntry: 'Edit entry',
deleteEntry: 'Delete entry',
}

export function verifyModalTitle(title) {
cy.get(modalTitle).should('contain', title)
}
20 changes: 19 additions & 1 deletion cypress/e2e/pages/navigation.page.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
export const sideNavSettingsIcon = '[data-testid="settings-nav-icon"]'
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 newTxBtn = '[data-testid="new-tx-btn"]'
const expandMoreIcon = 'svg[data-testid="ExpandMoreIcon"]'
const sentinelStart = 'div[data-testid="sentinelStart"]'

const disconnectBtnStr = 'Disconnect'
const notConnectedStatus = 'Connect'

export function verifyTxBtnStatus(status) {
cy.get(newTxBtn).should(status)
}
export function clickOnSideNavigation(option) {
cy.get(option).should('exist').click()
}
Expand All @@ -15,3 +23,13 @@ export function clickOnModalCloseBtn() {
export function clickOnNewTxBtn() {
cy.get(newTxBtn).click()
}

export function clickOnWalletExpandMoreIcon() {
cy.get(expandMoreIcon).eq(0).click()
cy.get(sentinelStart).next().should('be.visible')
}

export function clickOnDisconnectBtn() {
cy.get('button').contains(disconnectBtnStr).click()
cy.get('button').contains(notConnectedStatus)
}
5 changes: 3 additions & 2 deletions cypress/e2e/pages/nfts.pages.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import * as constants from '../../support/constants'
import * as main from '../pages/main.page'
import * as modal from '../pages/modals.page'

const nftModalTitle = '[data-testid="modal-title"]'
const nftModal = '[data-testid="modal-view"]'
const nftModalTitle = modal.modalTitle
const nftModal = modal.modal

const nftModalCloseBtn = main.modalDialogCloseBtn
const recipientInput = 'input[name="recipient"]'
Expand Down
17 changes: 17 additions & 0 deletions cypress/e2e/pages/owners.pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ const singleOwnerNameInput = 'input[name="name"]'
const finishTransactionBtn = '[data-testid="finish-transaction-btn"]'
const addOwnerBtn = '[data-testid="add-owner-btn"]'
const addOwnerNextBtn = '[data-testid="add-owner-next-btn"]'
const modalHeader = '[data-testid="modal-header"]'
const addressToBeRemoved = '[aria-label="Copy to clipboard"] span'

const disconnectBtnStr = 'Disconnect'
const notConnectedStatus = 'Connect'
Expand Down Expand Up @@ -109,6 +111,21 @@ export function openRemoveOwnerWindow(btn) {
cy.get('div').contains(removeOwnerStr).should('exist')
}

export function getAddressToBeRemoved() {
let removedAddress
cy.get(modalHeader)
.next()
.should('exist')
.find(addressToBeRemoved)
.first()
.invoke('text')
.then((value) => {
removedAddress = value
cy.wrap(removedAddress).as('removedAddress')
})
return removedAddress
}

export function openReplaceOwnerWindow() {
cy.get(replaceOwnerBtn).click({ force: true })
cy.get(newOwnerName).should('be.visible')
Expand Down
Loading

0 comments on commit ae10e72

Please sign in to comment.