mattermost-mobile/detox/e2e/support/ui/screen/find_channels.ts
2025-12-16 15:31:16 +05:30

78 lines
3.4 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {SearchBar} from '@support/ui/component';
import {ChannelListScreen} from '@support/ui/screen';
import {timeouts} from '@support/utils';
import {expect} from 'detox';
class FindChannelsScreen {
testID = {
findChannelsScreenPrefix: 'find_channels.',
filteredArchivedChannelItemPrefix: 'find_channels.filtered_list.remote_channel_item.',
filteredChannelItemPrefix: 'find_channels.filtered_list.channel_item.',
unfilteredChannelItemPrefix: 'find_channels.unfiltered_list.channel_item.',
findChannelsScreen: 'find_channels.screen',
closeButton: 'close.find_channels.button',
directoryQuickOption: 'find_channels.quick_options.directory.option',
openDirectMessageQuickOption: 'find_channels.quick_options.open_dm.option',
newChannelQuickOption: 'find_channels.quick_options.new_channel.option',
sectionUnfilteredChannelList: 'find_channels.unfiltered_list.section_list',
flatFilteredChannelList: 'find_channels.filtered_list.flat_list',
};
findChannelsScreen = element(by.id(this.testID.findChannelsScreen));
closeButton = element(by.id(this.testID.closeButton));
directoryQuickOption = element(by.id(this.testID.directoryQuickOption));
openDirectMessageQuickOption = element(by.id(this.testID.openDirectMessageQuickOption));
newChannelQuickOption = element(by.id(this.testID.newChannelQuickOption));
sectionUnfilteredChannelList = element(by.id(this.testID.sectionUnfilteredChannelList));
flatFilteredChannelList = element(by.id(this.testID.flatFilteredChannelList));
// convenience props
searchBar = SearchBar.getSearchBar(this.testID.findChannelsScreenPrefix);
searchInput = SearchBar.getSearchInput(this.testID.findChannelsScreenPrefix);
cancelButton = SearchBar.getCancelButton(this.testID.findChannelsScreenPrefix);
clearButton = SearchBar.getClearButton(this.testID.findChannelsScreenPrefix);
getUnfilteredChannelItem = (channelName: string) => {
return element(by.id(`${this.testID.unfilteredChannelItemPrefix}${channelName}`));
};
getUnfilteredChannelItemDisplayName = (channelName: string) => {
return element(by.id(`${this.testID.unfilteredChannelItemPrefix}${channelName}.display_name`));
};
getFilteredArchivedChannelItem = (channelName: string) => {
return element(by.id(`${this.testID.filteredArchivedChannelItemPrefix}${channelName}`));
};
getFilteredChannelItem = (channelName: string) => {
return element(by.id(`${this.testID.filteredChannelItemPrefix}${channelName}`));
};
getFilteredChannelItemDisplayName = (channelName: string) => {
return element(by.id(`${this.testID.filteredChannelItemPrefix}${channelName}.display_name`));
};
toBeVisible = async () => {
await waitFor(this.findChannelsScreen).toExist().withTimeout(timeouts.TEN_SEC);
return this.findChannelsScreen;
};
open = async () => {
// # Open find channels screen
await ChannelListScreen.subheaderSearchFieldButton.tap();
return this.toBeVisible();
};
close = async () => {
await this.closeButton.tap();
await expect(this.findChannelsScreen).not.toBeVisible();
};
}
const findChannelsScreen = new FindChannelsScreen();
export default findChannelsScreen;