mattermost-mobile/detox/e2e/support/ui/screen/settings.ts

51 lines
1.8 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {AccountScreen} from '@support/ui/screen';
import {timeouts} from '@support/utils';
import {expect} from 'detox';
class SettingsScreen {
testID = {
settingsScreen: 'settings.screen',
closeButton: 'close.settings.button',
scrollView: 'settings.scroll_view',
notificationsOption: 'settings.notifications.option',
displayOption: 'settings.display.option',
advancedSettingsOption: 'settings.advanced_settings.option',
aboutOption: 'settings.about.option',
helpOption: 'settings.help.option',
reportProblemOption: 'settings.report_problem.option',
};
settingsScreen = element(by.id(this.testID.settingsScreen));
closeButton = element(by.id(this.testID.closeButton));
scrollView = element(by.id(this.testID.scrollView));
notificationsOption = element(by.id(this.testID.notificationsOption));
displayOption = element(by.id(this.testID.displayOption));
advancedSettingsOption = element(by.id(this.testID.advancedSettingsOption));
aboutOption = element(by.id(this.testID.aboutOption));
helpOption = element(by.id(this.testID.helpOption));
reportProblemOption = element(by.id(this.testID.reportProblemOption));
toBeVisible = async () => {
await waitFor(this.settingsScreen).toExist().withTimeout(timeouts.TEN_SEC);
return this.settingsScreen;
};
open = async () => {
// # Open settings screen
await AccountScreen.settingsOption.tap();
return this.toBeVisible();
};
close = async () => {
await this.closeButton.tap();
await expect(this.settingsScreen).not.toBeVisible();
};
}
const settingsScreen = new SettingsScreen();
export default settingsScreen;