- Fix iOS and Android CI. - Fixes E2E tests on both platform - Added tests for scheduled draft feature.
90 lines
3 KiB
TypeScript
90 lines
3 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {Alert, NavigationHeader} from '@support/ui/component';
|
|
import {timeouts, wait} from '@support/utils';
|
|
import {expect} from 'detox';
|
|
|
|
class DraftScreen {
|
|
testID = {
|
|
editDraft: 'edit_draft',
|
|
deleteDraft: 'delete_draft',
|
|
draftMessageContent: 'draft_message',
|
|
draftScreen: 'global_drafts_list',
|
|
draftTooltipCloseButton: 'draft.tooltip.close.button',
|
|
draftPost: 'draft_message',
|
|
draftSendButton: 'send_draft_button',
|
|
draftEmptyTitle: 'drafts.empty.title',
|
|
requestACKIcon: 'drafts.requested_ack.icon',
|
|
persistentNotificationIcon: 'drafts.persistent_notifications.icon',
|
|
};
|
|
|
|
persistentNotificationIcon = element(by.id(this.testID.persistentNotificationIcon));
|
|
requestACKIcon = element(by.id(this.testID.requestACKIcon));
|
|
editDraft = element(by.id(this.testID.editDraft));
|
|
backButton = NavigationHeader.backButton;
|
|
draftScreen = element(by.id(this.testID.draftScreen));
|
|
draftPost = element(by.id(this.testID.draftPost));
|
|
draftSendButton = element(by.id(this.testID.draftSendButton));
|
|
draftEmptyTitle = element(by.id(this.testID.draftEmptyTitle));
|
|
deleteDraftSwipeAction = element(by.text('Delete draft'));
|
|
draftMessageContent = element(by.id(this.testID.draftMessageContent));
|
|
deleteDraft = element(by.id(this.testID.deleteDraft));
|
|
|
|
draftTooltipCloseButton = {
|
|
tap: async () => {
|
|
await element(by.id(this.testID.draftTooltipCloseButton)).tap();
|
|
},
|
|
};
|
|
|
|
openDraftPostActions = async () => {
|
|
await this.draftPost.longPress();
|
|
};
|
|
|
|
swipeDraftPostLeft = async () => {
|
|
await this.draftPost.swipe('left');
|
|
};
|
|
|
|
deleteDraftPost = async (deleteAction: any) => {
|
|
await expect(deleteAction).toBeVisible();
|
|
await deleteAction.tap();
|
|
await waitFor(Alert.deleteButton).toExist().withTimeout(timeouts.TEN_SEC);
|
|
await Alert.deleteButton.tap();
|
|
};
|
|
|
|
deleteDraftPostFromSwipeActions = async () => {
|
|
await this.deleteDraftPost(this.deleteDraftSwipeAction);
|
|
};
|
|
|
|
deleteDraftPostFromDraftActions = async () => {
|
|
await this.deleteDraftPost(this.deleteDraft);
|
|
};
|
|
|
|
sendDraft = async () => {
|
|
await this.draftSendButton.tap();
|
|
await waitFor(Alert.sendButton).toExist().withTimeout(timeouts.TEN_SEC);
|
|
await Alert.sendButton.tap();
|
|
};
|
|
|
|
editDraftPost = async () => {
|
|
await this.editDraft.tap();
|
|
};
|
|
|
|
draftEmptyScreen = async () => {
|
|
return this.draftEmptyTitle;
|
|
};
|
|
|
|
back = async () => {
|
|
await wait(timeouts.ONE_SEC);
|
|
await this.backButton.tap();
|
|
expect(this.draftScreen).not.toBeVisible();
|
|
};
|
|
|
|
getDraftMessageContentText = async () => {
|
|
await expect(this.draftMessageContent).toBeVisible();
|
|
return this.draftMessageContent;
|
|
};
|
|
}
|
|
|
|
const draftScreen = new DraftScreen();
|
|
export default draftScreen;
|