diff --git a/app/components/UI/Navbar/index.js b/app/components/UI/Navbar/index.js index 38d332e7c22..63dc20ce68f 100644 --- a/app/components/UI/Navbar/index.js +++ b/app/components/UI/Navbar/index.js @@ -20,6 +20,7 @@ import { importAccountFromPrivateKey } from '../../../util/address'; import Device from '../../../util/device'; import { isGatewayUrl } from '../../../lib/ens-ipfs/resolver'; import { getHost } from '../../../util/browser'; +import { BACK_ARROW_BUTTON_ID } from '../../../constants/test-ids'; const { HOMEPAGE_URL } = AppConstants; @@ -179,7 +180,7 @@ export function getNavigationOptionsTitle(title, navigation, isFullScreenModal, ) : null, headerLeft: () => isFullScreenModal ? null : ( - + StyleSheet.create({ mainWrapper: { @@ -623,7 +631,7 @@ class ChoosePassword extends PureComponent { contentContainerStyle={styles.keyboardScrollableWrapper} resetScrollToCoords={{ x: 0, y: 0 }} > - + {strings('choose_password.title')} @@ -642,7 +650,7 @@ class ChoosePassword extends PureComponent { secureTextEntry={secureTextEntry} placeholder="" placeholderTextColor={colors.text.muted} - testID="input-password" + testID={CREATE_PASSWORD_INPUT_BOX_ID} onSubmitEditing={this.jumpToConfirmPassword} returnKeyType="next" autoCapitalize="none" @@ -668,7 +676,7 @@ class ChoosePassword extends PureComponent { secureTextEntry={secureTextEntry} placeholder={''} placeholderTextColor={colors.text.muted} - testID={'input-password-confirm'} + testID={CONFIRM_PASSWORD_INPUT_BOX_ID} onSubmitEditing={this.onPressCreate} returnKeyType={'done'} autoCapitalize="none" @@ -691,9 +699,13 @@ class ChoosePassword extends PureComponent { style={styles.checkbox} tintColors={{ true: colors.primary.default, false: colors.border.default }} boxType="square" - testID={'password-understand-box'} + testID={IOS_I_UNDERSTAND_BUTTON_ID} /> - + {strings('choose_password.i_understand')}{' '} {strings('choose_password.learn_more')} diff --git a/app/components/Views/ImportFromSeed/index.js b/app/components/Views/ImportFromSeed/index.js index a1c6dce8467..b3d58e2d13e 100644 --- a/app/components/Views/ImportFromSeed/index.js +++ b/app/components/Views/ImportFromSeed/index.js @@ -52,6 +52,12 @@ import AnalyticsV2 from '../../../util/analyticsV2'; import DefaultPreference from 'react-native-default-preference'; import Clipboard from '@react-native-clipboard/clipboard'; import { ThemeContext, mockTheme } from '../../../util/theme'; +import { + CREATE_PASSWORD_INPUT_BOX_ID, + CONFIRM_PASSWORD_INPUT_BOX_ID, + IMPORT_PASSWORD_CONTAINER_ID, + SECRET_RECOVERY_PHRASE_INPUT_BOX_ID, +} from '../../../constants/test-ids'; const MINIMUM_SUPPORTED_CLIPBOARD_VERSION = 9; @@ -512,7 +518,7 @@ class ImportFromSeed extends PureComponent { return ( - + {strings('import_from_seed.title')} @@ -533,7 +539,7 @@ class ImportFromSeed extends PureComponent { inputContainerStyle={styles.padding} placeholder={strings('import_from_seed.seed_phrase_placeholder')} placeholderTextColor={colors.text.muted} - testID="input-seed-phrase" + testID={SECRET_RECOVERY_PHRASE_INPUT_BOX_ID} returnKeyType="next" autoCapitalize="none" secureTextEntry={hideSeedPhraseInput} @@ -554,7 +560,7 @@ class ImportFromSeed extends PureComponent { placeholder={strings('import_from_seed.seed_phrase_placeholder')} placeholderTextColor={colors.text.muted} onChangeText={this.onSeedWordsChange} - testID="input-seed-phrase" + testID={SECRET_RECOVERY_PHRASE_INPUT_BOX_ID} blurOnSubmit onSubmitEditing={this.jumpToPassword} returnKeyType="next" @@ -590,7 +596,7 @@ class ImportFromSeed extends PureComponent { // ref={this.passwordInput} placeholder={strings('import_from_seed.new_password')} placeholderTextColor={colors.text.muted} - testID={'input-password-field'} + testID={CREATE_PASSWORD_INPUT_BOX_ID} returnKeyType={'next'} autoCapitalize="none" secureTextEntry={secureTextEntry} @@ -619,7 +625,7 @@ class ImportFromSeed extends PureComponent { style={styles.input} containerStyle={inputWidth} // ref={this.confirmPasswordInput} - testID={'input-password-field-confirm'} + testID={CONFIRM_PASSWORD_INPUT_BOX_ID} onChangeText={this.onPasswordConfirmChange} returnKeyType={'next'} autoCapitalize="none" diff --git a/app/components/Views/ManualBackupStep1/index.js b/app/components/Views/ManualBackupStep1/index.js index fd065fdaa4d..cc97458a115 100644 --- a/app/components/Views/ManualBackupStep1/index.js +++ b/app/components/Views/ManualBackupStep1/index.js @@ -31,6 +31,9 @@ import { CONFIRM_PASSWORD, WRONG_PASSWORD_ERROR, } from '../../../constants/onboarding'; + +import { CONFIRM_CHANGE_PASSWORD_INPUT_BOX_ID } from '../../../constants/test-ids'; + import AnalyticsV2 from '../../../util/analyticsV2'; import { ThemeContext, mockTheme } from '../../../util/theme'; @@ -399,7 +402,7 @@ class ManualBackupStep1 extends PureComponent { onChangeText={this.onPasswordChange} secureTextEntry onSubmitEditing={this.tryUnlock} - testID={'private-credential-password-text-input'} + testID={CONFIRM_CHANGE_PASSWORD_INPUT_BOX_ID} keyboardAppearance={themeAppearance} /> {warningIncorrectPassword && ( diff --git a/app/components/Views/ResetPassword/index.js b/app/components/Views/ResetPassword/index.js index 69772d39230..3fbfde3bac6 100644 --- a/app/components/Views/ResetPassword/index.js +++ b/app/components/Views/ResetPassword/index.js @@ -39,6 +39,14 @@ import NotificationManager from '../../../core/NotificationManager'; import { syncPrefs } from '../../../util/sync'; import { ThemeContext, mockTheme } from '../../../util/theme'; import AnimatedFox from 'react-native-animated-fox'; +import { + CREATE_PASSWORD_CONTAINER_ID, + CREATE_PASSWORD_INPUT_BOX_ID, + CONFIRM_PASSWORD_INPUT_BOX_ID, + IOS_I_UNDERSTAND_BUTTON_ID, + ANDROID_I_UNDERSTAND_BUTTON_ID, + CONFIRM_CHANGE_PASSWORD_INPUT_BOX_ID, +} from '../../../constants/test-ids'; const createStyles = (colors) => StyleSheet.create({ @@ -628,7 +636,7 @@ class ResetPassword extends PureComponent { onChangeText={this.onPasswordChange} secureTextEntry onSubmitEditing={this.tryUnlock} - testID={'private-credential-password-text-input'} + testID={CONFIRM_CHANGE_PASSWORD_INPUT_BOX_ID} keyboardAppearance={themeAppearance} /> {warningIncorrectPassword && ( @@ -694,7 +702,7 @@ class ResetPassword extends PureComponent { contentContainerStyle={styles.keyboardScrollableWrapper} resetScrollToCoords={{ x: 0, y: 0 }} > - + {strings('reset_password.title')} @@ -713,7 +721,7 @@ class ResetPassword extends PureComponent { secureTextEntry={secureTextEntry} placeholder="" placeholderTextColor={colors.text.muted} - testID="input-password" + testID={CREATE_PASSWORD_INPUT_BOX_ID} onSubmitEditing={this.jumpToConfirmPassword} returnKeyType="next" autoCapitalize="none" @@ -739,7 +747,8 @@ class ResetPassword extends PureComponent { secureTextEntry={secureTextEntry} placeholder={''} placeholderTextColor={colors.text.muted} - testID={'input-password-confirm'} + testID={CONFIRM_PASSWORD_INPUT_BOX_ID} + zasdfasfasf onSubmitEditing={this.onPressCreate} returnKeyType={'done'} autoCapitalize="none" @@ -762,9 +771,13 @@ class ResetPassword extends PureComponent { style={styles.checkbox} tintColors={{ true: colors.primary.default, false: colors.border.default }} boxType="square" - testID={'password-understand-box'} + testID={IOS_I_UNDERSTAND_BUTTON_ID} /> - + {strings('reset_password.i_understand')}{' '} {strings('reset_password.learn_more')} diff --git a/app/components/Views/Settings/SecuritySettings/index.js b/app/components/Views/Settings/SecuritySettings/index.js index 5946216c37e..b3a84bb20f1 100644 --- a/app/components/Views/Settings/SecuritySettings/index.js +++ b/app/components/Views/Settings/SecuritySettings/index.js @@ -49,6 +49,11 @@ import HintModal from '../../../UI/HintModal'; import AnalyticsV2, { trackErrorAsAnalytics } from '../../../../util/analyticsV2'; import SeedPhraseVideo from '../../../UI/SeedPhraseVideo'; import { useAppThemeFromContext, mockTheme, ThemeContext } from '../../../../util/theme'; +import { + CHANGE_PASSWORD_TITLE_ID, + CHANGE_PASSWORD_BUTTON_ID, + REVEAL_SECRET_RECOVERY_PHRASE_BUTTON_ID, +} from '../../../../constants/test-ids'; const isIos = Device.isIos(); const LEARN_MORE_URL = @@ -667,7 +672,7 @@ class Settings extends PureComponent { type="normal" onPress={this.goToRevealPrivateCredential} containerStyle={styles.confirm} - testID={'reveal-seed-button'} + testID={REVEAL_SECRET_RECOVERY_PHRASE_BUTTON_ID} > {strings('reveal_credential.seed_phrase_title')} @@ -679,10 +684,15 @@ class Settings extends PureComponent { renderPasswordSection = () => { const { styles } = this.getStyles(); return ( - + {strings('password_reset.password_title')} {strings('password_reset.password_desc')} - + {strings('password_reset.change_password')} diff --git a/app/constants/test-ids.js b/app/constants/test-ids.js index 541ad4896b2..2a80c3d4897 100644 --- a/app/constants/test-ids.js +++ b/app/constants/test-ids.js @@ -20,3 +20,22 @@ export const NETWORK_SCROLL_ID = 'other-networks-scroll'; export const NETWORK_EDUCATION_MODAL_CONTAINER_ID = 'network-education-modal'; export const NETWORK_EDUCATION_MODAL_CLOSE_BUTTON_ID = 'network-education-modal-close-button'; export const NETWORK_EDUCATION_MODAL_NETWORK_NAME_ID = 'network-education-modal-network-name'; + +export const CREATE_PASSWORD_CONTAINER_ID = 'create-password-screen'; +export const CREATE_PASSWORD_INPUT_BOX_ID = 'create-password-first-input-field'; +export const CONFIRM_PASSWORD_INPUT_BOX_ID = 'create-password-second-input-field'; + +export const CHANGE_PASSWORD_TITLE_ID = 'change-password-section'; +export const CHANGE_PASSWORD_BUTTON_ID = 'change-password-button-id'; +export const CONFIRM_CHANGE_PASSWORD_INPUT_BOX_ID = 'private-credential-password-input-field'; + +export const REVEAL_SECRET_RECOVERY_PHRASE_BUTTON_ID = 'reveal-seed-button'; + +export const SUBMIT_BUTTON_ID = 'submit-button'; +export const BACK_ARROW_BUTTON_ID = 'burger-menu-title-back-arrow-button'; + +export const IOS_I_UNDERSTAND_BUTTON_ID = 'password-understand-box'; +export const ANDROID_I_UNDERSTAND_BUTTON_ID = 'i-understand-text'; + +export const IMPORT_PASSWORD_CONTAINER_ID = 'import-from-seed-screen'; +export const SECRET_RECOVERY_PHRASE_INPUT_BOX_ID = 'input-seed-phrase'; diff --git a/e2e/pages/Drawer/Browser.js b/e2e/pages/Drawer/Browser.js index 25961ea3507..a19e6d894fe 100644 --- a/e2e/pages/Drawer/Browser.js +++ b/e2e/pages/Drawer/Browser.js @@ -1,4 +1,5 @@ import TestHelpers from '../../helpers'; +import { strings } from '../../../locales/i18n'; export const BROWSER_SCREEN_ID = 'browser-screen'; @@ -11,6 +12,8 @@ const HOME_BUTTON_ID = 'home-button'; const GO_BACK_BUTTON_ID = 'go-back-button'; const OPTIONS_BUTTON_ID = 'options-button'; const URL_INPUT_BOX_ID = 'url-input'; +const RETURN_HOME_TEXT = strings('webview_error.return_home'); +const BACK_TO_SAFETY_TEXT = strings('phishing.back_to_safety'); export class Browser { static async tapBrowser() { @@ -42,9 +45,11 @@ export class Browser { } static async tapBackToSafetyButton() { - await TestHelpers.tapByText('Back to safety'); + await TestHelpers.tapByText(BACK_TO_SAFETY_TEXT); + } + static async tapReturnHomeButton() { + await TestHelpers.tapByText(RETURN_HOME_TEXT); } - static async tapBrowserBackButton() { // This action is android specific await TestHelpers.tap(GO_BACK_BUTTON_ID); diff --git a/e2e/pages/Drawer/Settings/Contacts/AddContactView.js b/e2e/pages/Drawer/Settings/Contacts/AddContactView.js index 0755f69aaee..86d933e7884 100644 --- a/e2e/pages/Drawer/Settings/Contacts/AddContactView.js +++ b/e2e/pages/Drawer/Settings/Contacts/AddContactView.js @@ -1,10 +1,11 @@ import TestHelpers from '../../../../helpers'; +import { BACK_ARROW_BUTTON_ID } from '../../../../../app/constants/test-ids'; + const ADD_CONTACT_BUTTON_ID = 'contact-add-contact-button'; const ADD_CONTACT_CONTAINER_ID = 'add-contact-screen'; const ADD_CONTACTS_VIEW_CONTACT_INPUT_BOX_ID = 'contact-name-input'; const ADD_CONTACTS_VIEW_ADDRESS_INPUT_BOX_ID = 'contact-address-input'; -const BACK_ARROW_BUTTON_ID = 'title-back-arrow-button'; const ERROR_MESSAGE_LABEL_ID = 'error-message-warning'; const MEMO_INPUT_BOX_ID = 'contact-memo-input'; diff --git a/e2e/pages/Drawer/Settings/SecurityAndPrivacy/ChangePasswordView.js b/e2e/pages/Drawer/Settings/SecurityAndPrivacy/ChangePasswordView.js new file mode 100644 index 00000000000..700c84db8e4 --- /dev/null +++ b/e2e/pages/Drawer/Settings/SecurityAndPrivacy/ChangePasswordView.js @@ -0,0 +1,53 @@ +import TestHelpers from '../../../../helpers'; +import { + CONFIRM_CHANGE_PASSWORD_INPUT_BOX_ID, + CONFIRM_PASSWORD_INPUT_BOX_ID, + CREATE_PASSWORD_INPUT_BOX_ID, + SUBMIT_BUTTON_ID, + IOS_I_UNDERSTAND_BUTTON_ID, + ANDROID_I_UNDERSTAND_BUTTON_ID, +} from '../../../../../app/constants/test-ids'; + +import { strings } from '../../../../../locales/i18n'; + +const CHANGE_PASSWORD_TEXT = strings('manual_backup_step_1.confirm_password'); + +export default class ChangePasswordView { + static async typeInConfirmPasswordInputBox(PASSWORD) { + await TestHelpers.typeTextAndHideKeyboard(CONFIRM_CHANGE_PASSWORD_INPUT_BOX_ID, PASSWORD); + } + + static async tapConfirmButton() { + await TestHelpers.tapByText('CONFIRM'); + } + + static async enterPassword(PASSWORD) { + await TestHelpers.typeTextAndHideKeyboard(CREATE_PASSWORD_INPUT_BOX_ID, PASSWORD); + } + + static async reEnterPassword(PASSWORD) { + await TestHelpers.typeTextAndHideKeyboard(CONFIRM_PASSWORD_INPUT_BOX_ID, PASSWORD); + } + + static async tapIUnderstandCheckBox() { + if (device.getPlatform() === 'ios') { + await TestHelpers.tap(IOS_I_UNDERSTAND_BUTTON_ID); + } else { + // Tap by the I understand text + await TestHelpers.delay(1000); + await TestHelpers.tap(ANDROID_I_UNDERSTAND_BUTTON_ID); + } + } + + static async tapResetPasswordButton() { + await TestHelpers.waitAndTap(SUBMIT_BUTTON_ID); + } + + static async isVisible() { + await TestHelpers.checkIfElementWithTextIsVisible(CHANGE_PASSWORD_TEXT); + } + + static async isNotVisible() { + await TestHelpers.checkIfElementWithTextIsNotVisible(CHANGE_PASSWORD_TEXT); + } +} diff --git a/e2e/pages/Drawer/Settings/SecurityAndPrivacy/SecurityAndPrivacyView.js b/e2e/pages/Drawer/Settings/SecurityAndPrivacy/SecurityAndPrivacyView.js index b7f308340b6..0f9b62f58a4 100644 --- a/e2e/pages/Drawer/Settings/SecurityAndPrivacy/SecurityAndPrivacyView.js +++ b/e2e/pages/Drawer/Settings/SecurityAndPrivacy/SecurityAndPrivacyView.js @@ -1,8 +1,12 @@ import TestHelpers from '../../../../helpers'; +import { + REVEAL_SECRET_RECOVERY_PHRASE_BUTTON_ID, + CHANGE_PASSWORD_BUTTON_ID, + CHANGE_PASSWORD_TITLE_ID, + BACK_ARROW_BUTTON_ID, +} from '../../../../../app/constants/test-ids'; -const REVEAL_SECRET_RECOVERY_PHRASE_BUTTON_ID = 'reveal-seed-button'; const SECURITY_SETTINGS_SCROLL_ID = 'security-settings-scrollview'; -const CHANGE_PASSWORD_SECTION_ID = 'change-password-section'; //const PRIVACY_MODE_SECTION_ID = 'privacy-mode-section'; const METAMETRICS_SWITCH_ID = 'metametrics-switch'; export default class SecurityAndPrivacy { @@ -10,13 +14,31 @@ export default class SecurityAndPrivacy { await TestHelpers.tap(REVEAL_SECRET_RECOVERY_PHRASE_BUTTON_ID); } + static async tapChangePasswordButton() { + await TestHelpers.tap(CHANGE_PASSWORD_BUTTON_ID); + } + + static async tapBackButton() { + await TestHelpers.tap(BACK_ARROW_BUTTON_ID); + } + + static async scrollToChangePasswordView() { + // Scroll to the bottom + if (device.getPlatform() === 'android') { + await TestHelpers.swipe(SECURITY_SETTINGS_SCROLL_ID, 'up', 'slow'); + await TestHelpers.delay(1000); + } else { + await TestHelpers.swipe(CHANGE_PASSWORD_TITLE_ID, 'up', 'slow', 0.2); + } + } + static async scrollToBottomOfView() { // Scroll to the bottom if (device.getPlatform() === 'android') { await TestHelpers.swipe(SECURITY_SETTINGS_SCROLL_ID, 'up', 'fast'); await TestHelpers.delay(1000); } else { - await TestHelpers.swipe(CHANGE_PASSWORD_SECTION_ID, 'up', 'fast', 0.8); + await TestHelpers.swipe(CHANGE_PASSWORD_TITLE_ID, 'up', 'fast', 0.8); } //await TestHelpers.swipe(PRIVACY_MODE_SECTION_ID, 'up', 'fast'); } @@ -36,4 +58,8 @@ export default class SecurityAndPrivacy { static async isMetaMetricsToggleOff() { await TestHelpers.checkIfToggleIsOff(METAMETRICS_SWITCH_ID); } + + static async isChangePasswordSectionVisible() { + await TestHelpers.checkIfVisible(CHANGE_PASSWORD_TITLE_ID); + } } diff --git a/e2e/pages/Onboarding/CreatePasswordView.js b/e2e/pages/Onboarding/CreatePasswordView.js index ae5418421df..0636123560e 100644 --- a/e2e/pages/Onboarding/CreatePasswordView.js +++ b/e2e/pages/Onboarding/CreatePasswordView.js @@ -1,10 +1,13 @@ import TestHelpers from '../../helpers'; -const CREATE_PASSWORD_CONTAINER_ID = 'create-password-screen'; -const CREATE_PASSWORD_INPUT_BOX_ID = 'input-password'; -const CONFIRM_PASSWORD_INPUT_BOX_ID = 'input-password-confirm'; -const IOS_I_UNDERSTAND_BUTTON_ID = 'password-understand-box'; -const ANDROID_I_UNDERSTAND_BUTTON_ID = 'i-understand-text'; +import { + CREATE_PASSWORD_CONTAINER_ID, + CREATE_PASSWORD_INPUT_BOX_ID, + CONFIRM_PASSWORD_INPUT_BOX_ID, + IOS_I_UNDERSTAND_BUTTON_ID, + ANDROID_I_UNDERSTAND_BUTTON_ID, +} from '../../../app/constants/test-ids'; + const CREATE_PASSWORD_BUTTON_ID = 'submit-button'; const REMEMBER_ME_ID = 'remember-me-toggle'; diff --git a/e2e/pages/Onboarding/ImportWalletView.js b/e2e/pages/Onboarding/ImportWalletView.js index c2e568eb57f..2fc125d8f0b 100644 --- a/e2e/pages/Onboarding/ImportWalletView.js +++ b/e2e/pages/Onboarding/ImportWalletView.js @@ -1,12 +1,15 @@ import TestHelpers from '../../helpers'; import { strings } from '../../../locales/i18n'; -const IMPORT_PASSWORD_CONTAINER_ID = 'import-from-seed-screen'; -const SECRET_RECOVERY_PHRASE_INPUT_BOX_ID = 'input-seed-phrase'; -const CREATE_PASSWORD_INPUT_BOX_ID = 'input-password-field'; -const CONFIRM_PASSWORD_INPUT_BOX_ID = 'input-password-field-confirm'; -const IOS_I_UNDERSTAND_BUTTON_ID = 'password-understand-box'; -const ANDROID_I_UNDERSTAND_BUTTON_ID = 'i-understand-text'; +import { + CREATE_PASSWORD_INPUT_BOX_ID, + CONFIRM_PASSWORD_INPUT_BOX_ID, + IOS_I_UNDERSTAND_BUTTON_ID, + ANDROID_I_UNDERSTAND_BUTTON_ID, + IMPORT_PASSWORD_CONTAINER_ID, + SECRET_RECOVERY_PHRASE_INPUT_BOX_ID, +} from '../../../app/constants/test-ids'; + const REMEMBER_ME_ID = 'remember-me-toggle'; const CREATE_PASSWORD_BUTTON_ID = 'submit-button'; diff --git a/e2e/specs/browser-tests.spec.js b/e2e/specs/browser-tests.spec.js index f32197a4d70..d043a68f194 100644 --- a/e2e/specs/browser-tests.spec.js +++ b/e2e/specs/browser-tests.spec.js @@ -21,6 +21,7 @@ const ENS_TLD = 'https://inbox.mailchain.xyz'; const UNISWAP = 'https://uniswap.exchange'; const PASSWORD = '12345678'; const PHISHING_SITE = 'http://www.empowr.com/FanFeed/Home.aspx'; +const INVALID_URL = 'https://quackquakc.easq'; describe('Browser Tests', () => { beforeEach(() => { @@ -116,7 +117,7 @@ describe('Browser Tests', () => { // Check that the dapp title is correct await TestHelpers.checkIfElementWithTextIsVisible('app.uniswap.org', 0); } - await TestHelpers.delay(3000); + await TestHelpers.delay(5000); await ConnectModal.tapCancelButton(); // Android has weird behavior where the URL modal stays open, so this closes it @@ -161,7 +162,7 @@ describe('Browser Tests', () => { await TestHelpers.delay(1500); } // Wait for connect prompt to display - await TestHelpers.delay(3000); + await TestHelpers.delay(5000); await ConnectModal.tapConnectButton(); await Browser.isVisible(); }); @@ -183,6 +184,20 @@ describe('Browser Tests', () => { await Browser.isVisible(); }); + it('should test invalid URL', async () => { + await Browser.tapBottomSearchBar(); + // Clear text & Navigate to URL + await Browser.navigateToURL(INVALID_URL); + await Browser.waitForBrowserPageToLoad(); + + await Browser.tapReturnHomeButton(); + // Check that we are on the browser screen + if (!device.getPlatform() === 'android') { + await TestHelpers.delay(1500); + } + await Browser.isVisible(); + }); + it('should test phishing sites', async () => { await Browser.tapBottomSearchBar(); // Clear text & Navigate to URL diff --git a/e2e/specs/delete-wallet.spec.js b/e2e/specs/delete-wallet.spec.js index 1bcfe33f023..37cb2743ddc 100644 --- a/e2e/specs/delete-wallet.spec.js +++ b/e2e/specs/delete-wallet.spec.js @@ -12,6 +12,11 @@ import LoginView from '../pages/LoginView'; import DrawerView from '../pages/Drawer/DrawerView'; +import SettingsView from '../pages/Drawer/Settings/SettingsView'; + +import SecurityAndPrivacyView from '../pages/Drawer/Settings/SecurityAndPrivacy/SecurityAndPrivacyView'; +import ChangePasswordView from '../pages/Drawer/Settings/SecurityAndPrivacy/ChangePasswordView'; + import OnboardingWizardModal from '../pages/modals/OnboardingWizardModal'; import DeleteWalletModal from '../pages/modals/DeleteWalletModal'; @@ -19,7 +24,7 @@ const SECRET_RECOVERY_PHRASE = 'ketchup width ladder rent cheap eye torch employ quantum evidence artefact render protect delay wrap identify valley umbrella yard ridge wool swap differ kidney'; const PASSWORD = `12345678`; -describe('Import wallet with 24 word seedphrase and delete wallet flow', () => { +describe('Import wallet with 24 word SRP, change password then delete wallet flow', () => { beforeEach(() => { jest.setTimeout(150000); }); @@ -56,7 +61,43 @@ describe('Import wallet with 24 word seedphrase and delete wallet flow', () => { } }); + it('should go to settings then security & privacy', async () => { + // Open Drawer + await WalletView.tapDrawerButton(); // tapping burger menu + + await DrawerView.isVisible(); + await DrawerView.tapSettings(); + + await SettingsView.tapSecurityAndPrivacy(); + await SecurityAndPrivacyView.scrollToChangePasswordView(); + + await SecurityAndPrivacyView.isChangePasswordSectionVisible(); + }); + + it('should confirm password before changing it', async () => { + await SecurityAndPrivacyView.tapChangePasswordButton(); + + await ChangePasswordView.isVisible(); + await ChangePasswordView.typeInConfirmPasswordInputBox(PASSWORD); + //await ChangePasswordView.tapConfirmButton(); + }); + + it('should change the password', async () => { + const NEW_PASSWORD = '11111111'; + await ChangePasswordView.enterPassword(NEW_PASSWORD); + await ChangePasswordView.reEnterPassword(NEW_PASSWORD); + await ChangePasswordView.tapIUnderstandCheckBox(); + + await ChangePasswordView.tapResetPasswordButton(); + }); + it('should open drawer and log out', async () => { + await device.disableSynchronization(); // because the SRP tutorial video prevents the test from moving forward + await SecurityAndPrivacyView.tapBackButton(); + await device.enableSynchronization(); + + await SettingsView.tapCloseButton(); + await WalletView.tapDrawerButton(); await DrawerView.isVisible();