mattermost-mobile/detox/e2e/support/ui/screen/login.ts
Elias Nahum 2f3dfbbbfa
Update dependencies and upgrade to RN 0.76.5 (#8421)
* update dev deps

* partial update dependencies

* update watermelondb

* update rn to 0.76.5, expo to 52.0.18 and others

* upgrade android firebase

* upgrade detox deps

* fix package-lock.json

* update emm and paste-input

* update turbo-log

* update network library

* fix tests

* review feedback

* fix Keyboard blocking signIn button

* Fall back to iphone 14 iOS 17.2 simulator as app crashes on iOS 17.4

* changes in deleteCredentialsForServer is causing a crash

* withOptions x2 clearly is wrong

* re-add cli-platform-apple fix

* fix: RN 0.76.5 issue with bottom sheet disappearing (#8478)

* experiment, using view vs BottomSheetView

* revert previous & try disabling enableDynamicSizing

* revert an unintended removal

---------

Co-authored-by: yasserfaraazkhan <attitude3cena.yf@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Rahim Rahman <rahim.rahman@mattermost.com>
2025-01-16 07:11:32 -07:00

87 lines
3.6 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {ServerScreen} from '@support/ui/screen';
import {timeouts, wait} from '@support/utils';
import {expect} from 'detox';
class LoginScreen {
testID = {
loginScreen: 'login.screen',
backButton: 'screen.back.button',
titleLoginToAccount: 'login_options.title.login_to_account',
titleCantLogin: 'login_options.title.cant_login',
descriptionEnterCredentials: 'login_options.description.enter_credentials',
descriptionSelectOption: 'login_options.description.select_option',
descriptionNone: 'login_options.description.none',
usernameInput: 'login_form.username.input',
usernameInputError: 'login_form.username.input.error',
passwordInput: 'login_form.password.input',
passwordInputError: 'login_form.password.input.error',
forgotPasswordButton: 'login_form.forgot_password.button',
signinButton: 'login_form.signin.button',
signinButtonDisabled: 'login_form.signin.button.disabled',
};
loginScreen = element(by.id(this.testID.loginScreen));
backButton = element(by.id(this.testID.backButton));
titleLoginToAccount = element(by.id(this.testID.titleLoginToAccount));
titleCantLogin = element(by.id(this.testID.titleCantLogin));
descriptionEnterCredentials = element(by.id(this.testID.descriptionEnterCredentials));
descriptionSelectOption = element(by.id(this.testID.descriptionSelectOption));
descriptionNone = element(by.id(this.testID.descriptionNone));
usernameInput = element(by.id(this.testID.usernameInput));
usernameInputError = element(by.id(this.testID.usernameInputError));
passwordInput = element(by.id(this.testID.passwordInput));
passwordInputError = element(by.id(this.testID.passwordInputError));
forgotPasswordButton = element(by.id(this.testID.forgotPasswordButton));
signinButton = element(by.id(this.testID.signinButton));
signinButtonDisabled = element(by.id(this.testID.signinButtonDisabled));
toBeVisible = async () => {
await wait(timeouts.FOUR_SEC);
await waitFor(this.loginScreen).toExist().withTimeout(timeouts.TEN_SEC);
await waitFor(this.usernameInput).toBeVisible().withTimeout(timeouts.TEN_SEC);
return this.loginScreen;
};
open = async (serverUrl: string, serverDisplayName: string) => {
// # Open login screen
await ServerScreen.connectToServer(serverUrl, serverDisplayName);
return this.toBeVisible();
};
back = async () => {
await this.backButton.tap();
await expect(this.loginScreen).not.toBeVisible();
};
login = async (user: any = {}) => {
await this.toBeVisible();
await this.usernameInput.tap({x: 150, y: 10});
await this.usernameInput.replaceText(user.newUser.email);
await this.passwordInput.tap();
await this.passwordInput.replaceText(user.newUser.password);
await element(by.text(/^Log In to Your Account*$/)).tap();
await this.signinButton.tap();
await wait(timeouts.FOUR_SEC);
};
loginAsAdmin = async (user: any = {}) => {
await this.toBeVisible();
await this.usernameInput.tap({x: 150, y: 10});
await this.usernameInput.replaceText(user.username);
await this.passwordInput.tap();
await this.passwordInput.replaceText(user.password);
await this.signinButton.tap();
await wait(timeouts.FOUR_SEC);
};
}
const loginScreen = new LoginScreen();
export default loginScreen;