-
Notifications
You must be signed in to change notification settings - Fork 94
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: re-enable secure send e2e test (#4507)
### Description This PR: - update e2e consts for addresses mapped to a phone number - re-enable secure send tests, with contract-kit and viem - update fund e2e job to also fund the wallet used for these tests (this wallet needs to be verified in order to do phone number lookups, and needs to be different to the default e2e test wallet so that code paths for non-verified addresses can be tested). refactor here and there to make it easier to read. ### Test plan n/a ### Related issues - Fixes RET-854 ### Backwards compatibility Y
- Loading branch information
1 parent
a8bc7c1
commit b661e99
Showing
10 changed files
with
192 additions
and
166 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,11 @@ | ||
import { E2E_TEST_WALLET } from './consts' | ||
import { E2E_TEST_WALLET, E2E_TEST_WALLET_SECURE_SEND } from './consts' | ||
import { checkBalance, getBalance } from './utils' | ||
;(async () => { | ||
console.log(E2E_TEST_WALLET) | ||
console.table(await getBalance(E2E_TEST_WALLET)) | ||
await checkBalance(E2E_TEST_WALLET) | ||
|
||
console.log(E2E_TEST_WALLET_SECURE_SEND) | ||
console.table(await getBalance(E2E_TEST_WALLET_SECURE_SEND)) | ||
await checkBalance(E2E_TEST_WALLET_SECURE_SEND) | ||
})() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
export const E2E_TEST_WALLET = '0x6131a6d616a4be3737b38988847270a64bc10caa' | ||
export const E2E_TEST_WALLET_SECURE_SEND = '0x86b8f44386cb2d457db79c3dab8cf42f9d8a3fc0' | ||
export const E2E_TEST_FAUCET = '0xe5F5363e31351C38ac82DBAdeaD91Fd5a7B08846' | ||
export const REFILL_TOKENS = ['CELO', 'cUSD', 'cEUR'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,7 @@ | ||
import SecureSend from './usecases/SecureSend' | ||
import Send from './usecases/Send' | ||
import { quickOnboarding } from './utils/utils' | ||
|
||
describe('Given', () => { | ||
beforeAll(async () => { | ||
await quickOnboarding() | ||
}) | ||
|
||
describe('Send', Send) | ||
// TODO: unskip this test if we enable CPV in CI | ||
describe.skip('SecureSend cUSD', SecureSend) | ||
describe('SecureSend with CPV', SecureSend) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,86 +1,92 @@ | ||
import { reloadReactNative } from '../utils/retries' | ||
import { | ||
SAMPLE_BACKUP_KEY_VERIFIED, | ||
VERIFIED_PHONE_NUMBER, | ||
SAMPLE_WALLET_ADDRESS_VERIFIED_2, | ||
} from '../utils/consts' | ||
import { launchApp } from '../utils/retries' | ||
import { | ||
addComment, | ||
enterPinUiIfNecessary, | ||
inputNumberKeypad, | ||
scrollIntoView, | ||
sleep, | ||
quickOnboarding, | ||
} from '../utils/utils' | ||
const faker = require('@faker-js/faker') | ||
|
||
const PHONE_NUMBER = '+12057368924' | ||
const LAST_ACCOUNT_CHARACTERS = 'FD08' | ||
const AMOUNT_TO_SEND = '0.1' | ||
const AMOUNT_TO_SEND = '0.01' | ||
|
||
export default SecureSend = () => { | ||
beforeEach(async () => { | ||
await reloadReactNative() | ||
}) | ||
|
||
it('Send cUSD to phone number with multiple mappings', async () => { | ||
let randomContent = faker.lorem.words() | ||
await waitFor(element(by.id('HomeAction-Send'))) | ||
.toBeVisible() | ||
.withTimeout(30000) | ||
await element(by.id('HomeAction-Send')).tap() | ||
|
||
// Look for an address and tap on it. | ||
await element(by.id('SearchInput')).tap() | ||
await element(by.id('SearchInput')).replaceText(PHONE_NUMBER) | ||
await element(by.id('RecipientItem')).tap() | ||
describe.each([{ web3Library: 'contract-kit' }, { web3Library: 'viem' }])( | ||
'Secure send flow with phone number lookup (with $web3Library)', | ||
({ web3Library }) => { | ||
beforeAll(async () => { | ||
// uninstall the app to remove secure send mapping | ||
await device.uninstallApp() | ||
await device.installApp() | ||
await launchApp({ | ||
newInstance: true, | ||
permissions: { notifications: 'YES', contacts: 'YES' }, | ||
launchArgs: { | ||
statsigGateOverrides: `use_new_send_flow=false,use_viem_for_send=${ | ||
web3Library === 'viem' | ||
}`, | ||
}, | ||
}) | ||
await quickOnboarding(SAMPLE_BACKUP_KEY_VERIFIED) | ||
}) | ||
|
||
// Select the currency | ||
await waitFor(element(by.id('cUSDBalance'))) | ||
.toBeVisible() | ||
.withTimeout(30 * 1000) | ||
await element(by.id('cUSDBalance')).tap() | ||
it('Send cUSD to phone number with multiple mappings', async () => { | ||
let randomContent = faker.lorem.words() | ||
await waitFor(element(by.id('HomeAction-Send'))) | ||
.toBeVisible() | ||
.withTimeout(30000) | ||
await element(by.id('HomeAction-Send')).tap() | ||
await waitFor(element(by.id('SendSearchInput'))).toBeVisible() | ||
|
||
// Enter the amount and review | ||
await inputNumberKeypad(AMOUNT_TO_SEND) | ||
await element(by.id('Review')).tap() | ||
await element(by.id('SearchInput')).tap() | ||
await element(by.id('SearchInput')).replaceText(VERIFIED_PHONE_NUMBER) | ||
await element(by.id('RecipientItem')).tap() | ||
|
||
// hack: we shouldn't need this but the test fails without | ||
await sleep(3000) | ||
// Select the currency | ||
await waitFor(element(by.id('cUSDTouchable'))).toBeVisible() | ||
await element(by.id('cUSDTouchable')).tap() | ||
|
||
// Click Edit if confirm account isn't served | ||
try { | ||
await element(by.id('accountEditButton')).tap() | ||
} catch {} | ||
// Enter the amount and review | ||
await inputNumberKeypad(AMOUNT_TO_SEND) | ||
await element(by.id('Review')).tap() | ||
|
||
// Use the last digits of the account to confirm the sender. | ||
await waitFor(element(by.id('confirmAccountButton'))) | ||
.toBeVisible() | ||
.withTimeout(30000) | ||
await element(by.id('confirmAccountButton')).tap() | ||
for (let index = 0; index < 4; index++) { | ||
const character = LAST_ACCOUNT_CHARACTERS[index] | ||
await element(by.id(`SingleDigitInput/digit${index}`)).replaceText(character) | ||
} | ||
|
||
// Scroll to see submit button | ||
await scrollIntoView('Submit', 'KeyboardAwareScrollView', 50) | ||
await element(by.id('ConfirmAccountButton')).tap() | ||
// Use the last digits of the account to confirm the sender. | ||
await waitFor(element(by.id('confirmAccountButton'))).toBeVisible() | ||
await element(by.id('confirmAccountButton')).tap() | ||
// TODO: test case for AddressValidationType.PARTIAL but relies on mapping phone number to another address with unique last 4 digits | ||
// for (let index = 0; index < 4; index++) { | ||
// const character = LAST_ACCOUNT_CHARACTERS[index] | ||
// await element(by.id(`SingleDigitInput/digit${index}`)).replaceText(character) | ||
// } | ||
await element(by.id('ValidateRecipientAccount/TextInput')).replaceText( | ||
SAMPLE_WALLET_ADDRESS_VERIFIED_2 | ||
) | ||
|
||
// Write a comment. | ||
await addComment(randomContent) | ||
// Scroll to see submit button | ||
await scrollIntoView('Submit', 'KeyboardAwareScrollView', 50) | ||
await element(by.id('ConfirmAccountButton')).tap() | ||
|
||
// Wait for the confirm button to be clickable. If it takes too long this test | ||
// will be flaky :( | ||
await sleep(3000) | ||
// Write a comment. | ||
await addComment(randomContent) | ||
|
||
// Confirm and input PIN if necessary. | ||
await element(by.id('ConfirmButton')).tap() | ||
await enterPinUiIfNecessary() | ||
// Confirm and input PIN if necessary. | ||
await element(by.id('ConfirmButton')).tap() | ||
await enterPinUiIfNecessary() | ||
|
||
// Return to home screen. | ||
await waitFor(element(by.id('HomeAction-Send'))) | ||
.toBeVisible() | ||
.withTimeout(30 * 1000) | ||
// Return to home screen. | ||
await waitFor(element(by.id('HomeAction-Send'))) | ||
.toBeVisible() | ||
.withTimeout(30 * 1000) | ||
|
||
// TODO: See why these are taking so long in e2e tests to appear | ||
// Look for the latest transaction and assert | ||
// await waitFor(element(by.text(`${randomContent}`))) | ||
// .toBeVisible() | ||
// .withTimeout(60000) | ||
}) | ||
await waitFor(element(by.text(`${randomContent}`))) | ||
.toBeVisible() | ||
.withTimeout(60000) | ||
}) | ||
} | ||
) | ||
} |
Oops, something went wrong.