@mattermost/playwright-lib 10.7.0-3 → 11.3.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser_context.d.ts +4 -2
- package/dist/browser_context.js +24 -4
- package/dist/browser_context.js.map +1 -1
- package/dist/constant.d.ts +2 -0
- package/dist/constant.js +5 -0
- package/dist/constant.js.map +1 -1
- package/dist/file.js +2 -1
- package/dist/file.js.map +1 -1
- package/dist/flag.js +1 -1
- package/dist/flag.js.map +1 -1
- package/dist/global_setup.js +26 -4
- package/dist/global_setup.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +93 -3
- package/dist/index.js.map +1 -1
- package/dist/mock_browser_api.js.map +1 -1
- package/dist/server/channel.js.map +1 -1
- package/dist/server/client.d.ts +6 -0
- package/dist/server/client.js +6 -0
- package/dist/server/client.js.map +1 -1
- package/dist/server/default_config.d.ts +1 -0
- package/dist/server/default_config.js +100 -29
- package/dist/server/default_config.js.map +1 -1
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +9 -0
- package/dist/server/init.d.ts +9 -8
- package/dist/server/init.js +3 -11
- package/dist/server/init.js.map +1 -1
- package/dist/server/post.js.map +1 -1
- package/dist/server/team.d.ts +8 -1
- package/dist/server/team.js +13 -2
- package/dist/server/team.js.map +1 -1
- package/dist/server/user.d.ts +9 -2
- package/dist/server/user.js +36 -2
- package/dist/server/user.js.map +1 -1
- package/dist/test_action.d.ts +9 -0
- package/dist/test_action.js +39 -2
- package/dist/test_action.js.map +1 -1
- package/dist/test_config.js +1 -1
- package/dist/test_config.js.map +1 -1
- package/dist/test_fixture.d.ts +10 -3
- package/dist/test_fixture.js +19 -4
- package/dist/test_fixture.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +3 -0
- package/dist/ui/components/channels/app_bar.js.map +1 -1
- package/dist/ui/components/channels/center_view.d.ts +17 -13
- package/dist/ui/components/channels/center_view.js +55 -25
- package/dist/ui/components/channels/center_view.js.map +1 -1
- package/dist/ui/components/channels/channel_settings/channel_settings_modal.d.ts +17 -0
- package/dist/ui/components/channels/channel_settings/channel_settings_modal.js +49 -0
- package/dist/ui/components/channels/channel_settings/channel_settings_modal.js.map +1 -0
- package/dist/ui/components/channels/channel_settings/configuration_settings.d.ts +11 -0
- package/dist/ui/components/channels/channel_settings/configuration_settings.js +48 -0
- package/dist/ui/components/channels/channel_settings/configuration_settings.js.map +1 -0
- package/dist/ui/components/channels/{scheduled_draft_menu.d.ts → channel_settings/info_settings.d.ts} +1 -3
- package/dist/ui/components/channels/channel_settings/info_settings.js +18 -0
- package/dist/ui/components/channels/channel_settings/info_settings.js.map +1 -0
- package/dist/ui/components/channels/delete_post_confirmation_dialog.js.map +1 -1
- package/dist/ui/components/channels/delete_post_modal.js.map +1 -1
- package/dist/ui/components/channels/delete_scheduled_post_modal.d.ts +10 -0
- package/dist/ui/components/channels/delete_scheduled_post_modal.js +26 -0
- package/dist/ui/components/channels/delete_scheduled_post_modal.js.map +1 -0
- package/dist/ui/components/channels/draft_post.d.ts +16 -0
- package/dist/ui/components/channels/draft_post.js +39 -0
- package/dist/ui/components/channels/draft_post.js.map +1 -0
- package/dist/ui/components/channels/emoji_gif_picker.d.ts +2 -0
- package/dist/ui/components/channels/emoji_gif_picker.js +6 -0
- package/dist/ui/components/channels/emoji_gif_picker.js.map +1 -1
- package/dist/ui/components/channels/find_channels_modal.js.map +1 -1
- package/dist/ui/components/channels/flag_post_confirmation_dialog.d.ts +24 -0
- package/dist/ui/components/channels/flag_post_confirmation_dialog.js +74 -0
- package/dist/ui/components/channels/flag_post_confirmation_dialog.js.map +1 -0
- package/dist/ui/components/channels/generic_confirm_modal.js.map +1 -1
- package/dist/ui/components/channels/header.d.ts +2 -0
- package/dist/ui/components/channels/header.js +6 -0
- package/dist/ui/components/channels/header.js.map +1 -1
- package/dist/ui/components/channels/invite_people_modal.d.ts +6 -0
- package/dist/ui/components/channels/invite_people_modal.js +18 -0
- package/dist/ui/components/channels/invite_people_modal.js.map +1 -0
- package/dist/ui/components/channels/message_priority.d.ts +0 -1
- package/dist/ui/components/channels/message_priority.js +2 -7
- package/dist/ui/components/channels/message_priority.js.map +1 -1
- package/dist/ui/components/channels/post.d.ts +7 -0
- package/dist/ui/components/channels/post.js +18 -0
- package/dist/ui/components/channels/post.js.map +1 -1
- package/dist/ui/components/channels/post_create.d.ts +1 -5
- package/dist/ui/components/channels/post_create.js +3 -12
- package/dist/ui/components/channels/post_create.js.map +1 -1
- package/dist/ui/components/channels/post_dot_menu.d.ts +2 -0
- package/dist/ui/components/channels/post_dot_menu.js +5 -0
- package/dist/ui/components/channels/post_dot_menu.js.map +1 -1
- package/dist/ui/components/channels/post_edit.js.map +1 -1
- package/dist/ui/components/channels/post_menu.js.map +1 -1
- package/dist/ui/components/channels/post_reminder_menu.js.map +1 -1
- package/dist/ui/components/channels/profile_modal.d.ts +27 -0
- package/dist/ui/components/channels/profile_modal.js +66 -0
- package/dist/ui/components/channels/profile_modal.js.map +1 -0
- package/dist/ui/components/channels/restore_post_confirmation_dialog.js.map +1 -1
- package/dist/ui/components/channels/schedule_message_menu.d.ts +12 -0
- package/dist/ui/components/channels/schedule_message_menu.js +31 -0
- package/dist/ui/components/channels/schedule_message_menu.js.map +1 -0
- package/dist/ui/components/channels/schedule_message_modal.d.ts +20 -0
- package/dist/ui/components/channels/schedule_message_modal.js +91 -0
- package/dist/ui/components/channels/schedule_message_modal.js.map +1 -0
- package/dist/ui/components/channels/scheduled_draft_modal.js.map +1 -1
- package/dist/ui/components/channels/scheduled_post.d.ts +20 -0
- package/dist/ui/components/channels/scheduled_post.js +47 -0
- package/dist/ui/components/channels/scheduled_post.js.map +1 -0
- package/dist/ui/components/channels/scheduled_post_indicator.d.ts +12 -0
- package/dist/ui/components/channels/scheduled_post_indicator.js +32 -0
- package/dist/ui/components/channels/scheduled_post_indicator.js.map +1 -0
- package/dist/ui/components/channels/{search_popover.d.ts → search_box.d.ts} +1 -1
- package/dist/ui/components/channels/{search_popover.js → search_box.js} +4 -3
- package/dist/ui/components/channels/search_box.js.map +1 -0
- package/dist/ui/components/channels/send_message_now_modal.d.ts +10 -0
- package/dist/ui/components/channels/send_message_now_modal.js +26 -0
- package/dist/ui/components/channels/send_message_now_modal.js.map +1 -0
- package/dist/ui/components/channels/settings/advanced_settings.d.ts +15 -0
- package/dist/ui/components/channels/settings/advanced_settings.js +35 -0
- package/dist/ui/components/channels/settings/advanced_settings.js.map +1 -0
- package/dist/ui/components/channels/settings/display_settings.d.ts +27 -0
- package/dist/ui/components/channels/settings/display_settings.js +77 -0
- package/dist/ui/components/channels/settings/display_settings.js.map +1 -0
- package/dist/ui/components/channels/settings/{notification_settings.d.ts → notifications_settings.d.ts} +12 -0
- package/dist/ui/components/channels/settings/{notification_settings.js → notifications_settings.js} +23 -1
- package/dist/ui/components/channels/settings/notifications_settings.js.map +1 -0
- package/dist/ui/components/channels/settings/settings_modal.d.ts +19 -4
- package/dist/ui/components/channels/settings/settings_modal.js +48 -7
- package/dist/ui/components/channels/settings/settings_modal.js.map +1 -1
- package/dist/ui/components/channels/settings/sidebar_settings.d.ts +12 -0
- package/dist/ui/components/channels/settings/sidebar_settings.js +28 -0
- package/dist/ui/components/channels/settings/sidebar_settings.js.map +1 -0
- package/dist/ui/components/channels/sidebar_left.d.ts +16 -3
- package/dist/ui/components/channels/sidebar_left.js +26 -9
- package/dist/ui/components/channels/sidebar_left.js.map +1 -1
- package/dist/ui/components/channels/sidebar_right.d.ts +3 -2
- package/dist/ui/components/channels/sidebar_right.js +6 -6
- package/dist/ui/components/channels/sidebar_right.js.map +1 -1
- package/dist/ui/components/channels/team_menu.d.ts +19 -0
- package/dist/ui/components/channels/team_menu.js +51 -0
- package/dist/ui/components/channels/team_menu.js.map +1 -0
- package/dist/ui/components/channels/team_settings/team_settings_modal.d.ts +6 -0
- package/dist/ui/components/channels/team_settings/team_settings_modal.js +18 -0
- package/dist/ui/components/channels/team_settings/team_settings_modal.js.map +1 -0
- package/dist/ui/components/channels/thread_footer.js.map +1 -1
- package/dist/ui/components/channels/user_profile_popover.js.map +1 -1
- package/dist/ui/components/footer.js.map +1 -1
- package/dist/ui/components/global_header.d.ts +7 -2
- package/dist/ui/components/global_header.js +13 -1
- package/dist/ui/components/global_header.js.map +1 -1
- package/dist/ui/components/index.d.ts +33 -5
- package/dist/ui/components/index.js +90 -10
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/components/main_header.js.map +1 -1
- package/dist/ui/components/system_console/navbar.js.map +1 -1
- package/dist/ui/components/system_console/sections/site_configuration/notifications.d.ts +24 -0
- package/dist/ui/components/system_console/sections/site_configuration/notifications.js +63 -0
- package/dist/ui/components/system_console/sections/site_configuration/notifications.js.map +1 -0
- package/dist/ui/components/system_console/sections/system_users/column_toggle_menu.js.map +1 -1
- package/dist/ui/components/system_console/sections/system_users/feature_discovery.js.map +1 -1
- package/dist/ui/components/system_console/sections/system_users/filter_menu.js.map +1 -1
- package/dist/ui/components/system_console/sections/system_users/filter_popover.js.map +1 -1
- package/dist/ui/components/system_console/sections/system_users/mobile_security.d.ts +29 -2
- package/dist/ui/components/system_console/sections/system_users/mobile_security.js +75 -1
- package/dist/ui/components/system_console/sections/system_users/mobile_security.js.map +1 -1
- package/dist/ui/components/system_console/sections/system_users/system_users.js.map +1 -1
- package/dist/ui/components/system_console/sidebar.js.map +1 -1
- package/dist/ui/components/user_account_menu.d.ts +13 -0
- package/dist/ui/components/user_account_menu.js +32 -0
- package/dist/ui/components/user_account_menu.js.map +1 -0
- package/dist/ui/pages/channels.d.ts +46 -11
- package/dist/ui/pages/channels.js +119 -12
- package/dist/ui/pages/channels.js.map +1 -1
- package/dist/ui/pages/content_review_dm.d.ts +44 -0
- package/dist/ui/pages/content_review_dm.js +154 -0
- package/dist/ui/pages/content_review_dm.js.map +1 -0
- package/dist/ui/pages/drafts.d.ts +9 -25
- package/dist/ui/pages/drafts.js +25 -94
- package/dist/ui/pages/drafts.js.map +1 -1
- package/dist/ui/pages/index.d.ts +9 -5
- package/dist/ui/pages/index.js +10 -5
- package/dist/ui/pages/index.js.map +1 -1
- package/dist/ui/pages/landing_login.js.map +1 -1
- package/dist/ui/pages/login.d.ts +2 -2
- package/dist/ui/pages/login.js +1 -1
- package/dist/ui/pages/login.js.map +1 -1
- package/dist/ui/pages/reset_password.d.ts +2 -2
- package/dist/ui/pages/reset_password.js +1 -1
- package/dist/ui/pages/reset_password.js.map +1 -1
- package/dist/ui/pages/scheduled_posts.d.ts +23 -0
- package/dist/ui/pages/scheduled_posts.js +63 -0
- package/dist/ui/pages/scheduled_posts.js.map +1 -0
- package/dist/ui/pages/signup.d.ts +2 -2
- package/dist/ui/pages/signup.js +1 -1
- package/dist/ui/pages/signup.js.map +1 -1
- package/dist/ui/pages/system_console.d.ts +16 -14
- package/dist/ui/pages/system_console.js +10 -1
- package/dist/ui/pages/system_console.js.map +1 -1
- package/dist/ui/pages/threads.d.ts +13 -0
- package/dist/ui/pages/threads.js +44 -0
- package/dist/ui/pages/threads.js.map +1 -0
- package/dist/util.d.ts +17 -4
- package/dist/util.js +65 -5
- package/dist/util.js.map +1 -1
- package/dist/visual/index.js +9 -3
- package/dist/visual/index.js.map +1 -1
- package/dist/visual/percy.js.map +1 -1
- package/package.json +14 -15
- package/dist/ui/components/channels/scheduled_draft_menu.js +0 -23
- package/dist/ui/components/channels/scheduled_draft_menu.js.map +0 -1
- package/dist/ui/components/channels/search_popover.js.map +0 -1
- package/dist/ui/components/channels/settings/notification_settings.js.map +0 -1
- package/dist/ui/pages/scheduled_draft.d.ts +0 -38
- package/dist/ui/pages/scheduled_draft.js +0 -144
- package/dist/ui/pages/scheduled_draft.js.map +0 -1
|
@@ -5,6 +5,8 @@ var header = require('./header.js');
|
|
|
5
5
|
var post_create = require('./post_create.js');
|
|
6
6
|
var post_edit = require('./post_edit.js');
|
|
7
7
|
var post = require('./post.js');
|
|
8
|
+
var scheduled_post_indicator = require('./scheduled_post_indicator.js');
|
|
9
|
+
var flag_post_confirmation_dialog = require('./flag_post_confirmation_dialog.js');
|
|
8
10
|
var util = require('../../../util.js');
|
|
9
11
|
var asyncWaitUntil = require('async-wait-until');
|
|
10
12
|
|
|
@@ -12,41 +14,37 @@ var asyncWaitUntil = require('async-wait-until');
|
|
|
12
14
|
// See LICENSE.txt for license information.
|
|
13
15
|
class ChannelsCenterView {
|
|
14
16
|
container;
|
|
17
|
+
page;
|
|
15
18
|
header;
|
|
16
19
|
postCreate;
|
|
17
20
|
scheduledDraftOptions;
|
|
18
|
-
|
|
19
|
-
scheduledDraftChannelIcon;
|
|
20
|
-
scheduledDraftChannelInfoMessage;
|
|
21
|
-
scheduledDraftChannelInfoMessageLocator;
|
|
22
|
-
scheduledDraftChannelInfoMessageText;
|
|
23
|
-
scheduledDraftSeeAllLink;
|
|
21
|
+
scheduledPostIndicator;
|
|
24
22
|
postEdit;
|
|
25
23
|
editedPostIcon;
|
|
26
|
-
|
|
24
|
+
channelBanner;
|
|
25
|
+
flagPostConfirmationDialog;
|
|
26
|
+
messageDeleted;
|
|
27
|
+
postText;
|
|
28
|
+
constructor(container, page) {
|
|
27
29
|
this.container = container;
|
|
28
|
-
this.
|
|
30
|
+
this.page = page;
|
|
29
31
|
this.header = new header(this.container.locator('.channel-header'));
|
|
30
32
|
this.postCreate = new post_create(container.getByTestId('post-create'));
|
|
31
33
|
this.scheduledDraftOptions = new post_create(container.locator('#dropdown_send_post_options'));
|
|
32
34
|
this.postEdit = new post_edit(container.locator('.post-edit__container'));
|
|
33
|
-
this.
|
|
34
|
-
this.scheduledDraftChannelIcon = container.locator('#create_post i.icon-draft-indicator');
|
|
35
|
-
this.scheduledDraftChannelInfoMessage = container.locator('div.ScheduledPostIndicator span');
|
|
36
|
-
this.scheduledDraftChannelInfoMessageText = container.locator(this.scheduledDraftChannelInfoMessageLocator);
|
|
37
|
-
this.scheduledDraftSeeAllLink = container.locator('a:has-text("See all")');
|
|
35
|
+
this.scheduledPostIndicator = new scheduled_post_indicator(container.getByTestId('scheduledPostIndicator'));
|
|
38
36
|
this.editedPostIcon = (postID) => container.locator(`#postEdited_${postID}`);
|
|
37
|
+
this.channelBanner = container.getByTestId('channel_banner_container');
|
|
38
|
+
this.flagPostConfirmationDialog = new flag_post_confirmation_dialog(page.locator('#FlagPostModal div.modal-content'), page);
|
|
39
|
+
this.messageDeleted = (postId) => this.container.locator(`#${postId}_message >> text=(message deleted)`);
|
|
40
|
+
this.postText = (postID) => this.container.locator(`#postMessageText_${postID}`);
|
|
39
41
|
}
|
|
40
42
|
async toBeVisible() {
|
|
41
43
|
await test.expect(this.container).toBeVisible();
|
|
42
44
|
await this.postCreate.toBeVisible();
|
|
43
45
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*/
|
|
47
|
-
async clickOnSeeAllscheduledDrafts() {
|
|
48
|
-
await this.scheduledDraftSeeAllLink.isVisible();
|
|
49
|
-
await this.scheduledDraftSeeAllLink.click();
|
|
46
|
+
async postMessage(message, files) {
|
|
47
|
+
await this.postCreate.postMessage(message, files);
|
|
50
48
|
}
|
|
51
49
|
/**
|
|
52
50
|
* Return the first post in the Center
|
|
@@ -107,17 +105,49 @@ class ChannelsCenterView {
|
|
|
107
105
|
return content?.includes(text);
|
|
108
106
|
}, { timeout });
|
|
109
107
|
}
|
|
110
|
-
async verifyscheduledDraftChannelInfo() {
|
|
111
|
-
await this.postBoxIndicator.isVisible();
|
|
112
|
-
await this.scheduledDraftChannelIcon.isVisible();
|
|
113
|
-
const messageLocator = this.scheduledDraftChannelInfoMessage.first();
|
|
114
|
-
await test.expect(messageLocator).toContainText('Message scheduled for');
|
|
115
|
-
}
|
|
116
108
|
async clickOnLastEditedPost(postID) {
|
|
117
109
|
if (postID) {
|
|
118
110
|
await this.editedPostIcon(postID).click();
|
|
119
111
|
}
|
|
120
112
|
}
|
|
113
|
+
async assertChannelBanner(text, backgroundColor) {
|
|
114
|
+
await test.expect(this.channelBanner).toBeVisible();
|
|
115
|
+
const actualText = await this.channelBanner.textContent();
|
|
116
|
+
test.expect(actualText).toBe(text);
|
|
117
|
+
const actualBackgroundColor = await this.channelBanner.evaluate((el) => {
|
|
118
|
+
return window.getComputedStyle(el).getPropertyValue('background-color');
|
|
119
|
+
});
|
|
120
|
+
test.expect(actualBackgroundColor).toBe(util.hexToRgb(backgroundColor));
|
|
121
|
+
}
|
|
122
|
+
async assertChannelBannerNotVisible() {
|
|
123
|
+
await test.expect(this.channelBanner).not.toBeVisible();
|
|
124
|
+
}
|
|
125
|
+
async assertChannelBannerHasBoldText(text) {
|
|
126
|
+
const boldText = await this.channelBanner.locator('strong');
|
|
127
|
+
test.expect(boldText).toBeVisible();
|
|
128
|
+
const actualText = await boldText.textContent();
|
|
129
|
+
test.expect(actualText).toBe(text);
|
|
130
|
+
}
|
|
131
|
+
async assertChannelBannerHasItalicText(text) {
|
|
132
|
+
const italicText = await this.channelBanner.locator('em');
|
|
133
|
+
test.expect(italicText).toBeVisible();
|
|
134
|
+
const actualText = await italicText.textContent();
|
|
135
|
+
test.expect(actualText).toBe(text);
|
|
136
|
+
}
|
|
137
|
+
async assertChannelBannerHasStrikethroughText(text) {
|
|
138
|
+
const strikethroughText = await this.channelBanner.locator('del');
|
|
139
|
+
test.expect(strikethroughText).toBeVisible();
|
|
140
|
+
const actualText = await strikethroughText.textContent();
|
|
141
|
+
test.expect(actualText).toBe(text);
|
|
142
|
+
}
|
|
143
|
+
async messageDeletedVisible(isVisible = false, postId, message) {
|
|
144
|
+
await test.expect(this.messageDeleted(postId)).toBeVisible({ visible: isVisible });
|
|
145
|
+
if (!isVisible) {
|
|
146
|
+
const postMessageText = this.postText(postId);
|
|
147
|
+
const postMessageTextContent = await postMessageText.textContent();
|
|
148
|
+
test.expect(postMessageTextContent).toBe(message);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
121
151
|
}
|
|
122
152
|
|
|
123
153
|
module.exports = ChannelsCenterView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"center_view.js","sources":["../../../../src/ui/components/channels/center_view.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nimport ChannelsHeader from './header';\nimport ChannelsPostCreate from './post_create';\nimport ChannelsPostEdit from './post_edit';\nimport ChannelsPost from './post';\n\nimport {duration} from '@/util';\nimport {waitUntil} from '@/test_action';\n\nexport default class ChannelsCenterView {\n readonly container: Locator;\n\n readonly header;\n readonly postCreate;\n readonly scheduledDraftOptions;\n readonly postBoxIndicator;\n readonly scheduledDraftChannelIcon;\n readonly scheduledDraftChannelInfoMessage;\n readonly scheduledDraftChannelInfoMessageLocator;\n readonly scheduledDraftChannelInfoMessageText;\n readonly scheduledDraftSeeAllLink;\n readonly postEdit;\n readonly editedPostIcon;\n\n constructor(container: Locator) {\n this.container = container;\n this.scheduledDraftChannelInfoMessageLocator = 'span:has-text(\"Message scheduled for\")';\n this.header = new ChannelsHeader(this.container.locator('.channel-header'));\n this.postCreate = new ChannelsPostCreate(container.getByTestId('post-create'));\n this.scheduledDraftOptions = new ChannelsPostCreate(container.locator('#dropdown_send_post_options'));\n this.postEdit = new ChannelsPostEdit(container.locator('.post-edit__container'));\n this.postBoxIndicator = container.locator('div.postBoxIndicator');\n this.scheduledDraftChannelIcon = container.locator('#create_post i.icon-draft-indicator');\n this.scheduledDraftChannelInfoMessage = container.locator('div.ScheduledPostIndicator span');\n this.scheduledDraftChannelInfoMessageText = container.locator(this.scheduledDraftChannelInfoMessageLocator);\n this.scheduledDraftSeeAllLink = container.locator('a:has-text(\"See all\")');\n this.editedPostIcon = (postID: string) => container.locator(`#postEdited_${postID}`);\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n await this.postCreate.toBeVisible();\n }\n\n /**\n * Click on \"See all scheduled messages\"\n */\n async clickOnSeeAllscheduledDrafts() {\n await this.scheduledDraftSeeAllLink.isVisible();\n await this.scheduledDraftSeeAllLink.click();\n }\n\n /**\n * Return the first post in the Center\n */\n async getFirstPost() {\n const firstPost = this.container.getByTestId('postView').first();\n await firstPost.waitFor();\n return new ChannelsPost(firstPost);\n }\n\n /**\n * Return the last post in the Center\n */\n async getLastPost() {\n const lastPost = this.container.getByTestId('postView').last();\n await lastPost.waitFor();\n return new ChannelsPost(lastPost);\n }\n\n /**\n * Return the ID of the last post in the Center\n */\n async getLastPostID() {\n return this.container\n .getByTestId('postView')\n .last()\n .getAttribute('id')\n .then((id) => (id ? id.split('_')[1] : null));\n }\n\n /**\n * Return the Nth post in the Center from the top\n * @param index\n * @returns\n */\n async getNthPost(index: number) {\n const nthPost = this.container.getByTestId('postView').nth(index);\n await nthPost.waitFor();\n return new ChannelsPost(nthPost);\n }\n\n /**\n * Returns the Center post by post's id\n * @param postId Just the ID without the prefix\n */\n async getPostById(id: string) {\n const postById = this.container.locator(`[id=\"post_${id}\"]`);\n await postById.waitFor();\n return new ChannelsPost(postById);\n }\n\n async waitUntilLastPostContains(text: string, timeout = duration.ten_sec) {\n await waitUntil(\n async () => {\n const post = await this.getLastPost();\n const content = await post.container.textContent();\n return content?.includes(text);\n },\n {timeout},\n );\n }\n\n async waitUntilPostWithIdContains(id: string, text: string, timeout = duration.ten_sec) {\n await waitUntil(\n async () => {\n const post = await this.getPostById(id);\n const content = await post.container.textContent();\n\n return content?.includes(text);\n },\n {timeout},\n );\n }\n\n async verifyscheduledDraftChannelInfo() {\n await this.postBoxIndicator.isVisible();\n await this.scheduledDraftChannelIcon.isVisible();\n const messageLocator = this.scheduledDraftChannelInfoMessage.first();\n await expect(messageLocator).toContainText('Message scheduled for');\n }\n\n async clickOnLastEditedPost(postID: string | null) {\n if (postID) {\n await this.editedPostIcon(postID).click();\n }\n }\n}\n"],"names":["ChannelsHeader","ChannelsPostCreate","ChannelsPostEdit","expect","ChannelsPost","duration","waitUntil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"center_view.js","sources":["../../../../src/ui/components/channels/center_view.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect, Page} from '@playwright/test';\n\nimport ChannelsHeader from './header';\nimport ChannelsPostCreate from './post_create';\nimport ChannelsPostEdit from './post_edit';\nimport ChannelsPost from './post';\nimport ScheduledPostIndicator from './scheduled_post_indicator';\nimport FlagPostConfirmationDialog from './flag_post_confirmation_dialog';\n\nimport {duration, hexToRgb} from '@/util';\nimport {waitUntil} from '@/test_action';\n\nexport default class ChannelsCenterView {\n readonly container: Locator;\n readonly page: Page;\n\n readonly header;\n readonly postCreate;\n readonly scheduledDraftOptions;\n readonly scheduledPostIndicator;\n readonly postEdit;\n readonly editedPostIcon;\n readonly channelBanner;\n readonly flagPostConfirmationDialog;\n readonly messageDeleted;\n readonly postText;\n\n constructor(container: Locator, page: Page) {\n this.container = container;\n this.page = page;\n\n this.header = new ChannelsHeader(this.container.locator('.channel-header'));\n this.postCreate = new ChannelsPostCreate(container.getByTestId('post-create'));\n this.scheduledDraftOptions = new ChannelsPostCreate(container.locator('#dropdown_send_post_options'));\n this.postEdit = new ChannelsPostEdit(container.locator('.post-edit__container'));\n this.scheduledPostIndicator = new ScheduledPostIndicator(container.getByTestId('scheduledPostIndicator'));\n this.editedPostIcon = (postID: string) => container.locator(`#postEdited_${postID}`);\n this.channelBanner = container.getByTestId('channel_banner_container');\n this.flagPostConfirmationDialog = new FlagPostConfirmationDialog(\n page.locator('#FlagPostModal div.modal-content'),\n page,\n );\n this.messageDeleted = (postId: string) =>\n this.container.locator(`#${postId}_message >> text=(message deleted)`);\n this.postText = (postID: string) => this.container.locator(`#postMessageText_${postID}`);\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n await this.postCreate.toBeVisible();\n }\n\n async postMessage(message: string, files?: string[]) {\n await this.postCreate.postMessage(message, files);\n }\n\n /**\n * Return the first post in the Center\n */\n async getFirstPost() {\n const firstPost = this.container.getByTestId('postView').first();\n await firstPost.waitFor();\n return new ChannelsPost(firstPost);\n }\n\n /**\n * Return the last post in the Center\n */\n async getLastPost() {\n const lastPost = this.container.getByTestId('postView').last();\n await lastPost.waitFor();\n return new ChannelsPost(lastPost);\n }\n\n /**\n * Return the ID of the last post in the Center\n */\n async getLastPostID() {\n return this.container\n .getByTestId('postView')\n .last()\n .getAttribute('id')\n .then((id) => (id ? id.split('_')[1] : null));\n }\n\n /**\n * Return the Nth post in the Center from the top\n * @param index\n * @returns\n */\n async getNthPost(index: number) {\n const nthPost = this.container.getByTestId('postView').nth(index);\n await nthPost.waitFor();\n return new ChannelsPost(nthPost);\n }\n\n /**\n * Returns the Center post by post's id\n * @param postId Just the ID without the prefix\n */\n async getPostById(id: string) {\n const postById = this.container.locator(`[id=\"post_${id}\"]`);\n await postById.waitFor();\n return new ChannelsPost(postById);\n }\n\n async waitUntilLastPostContains(text: string, timeout = duration.ten_sec) {\n await waitUntil(\n async () => {\n const post = await this.getLastPost();\n const content = await post.container.textContent();\n return content?.includes(text);\n },\n {timeout},\n );\n }\n\n async waitUntilPostWithIdContains(id: string, text: string, timeout = duration.ten_sec) {\n await waitUntil(\n async () => {\n const post = await this.getPostById(id);\n const content = await post.container.textContent();\n\n return content?.includes(text);\n },\n {timeout},\n );\n }\n\n async clickOnLastEditedPost(postID: string | null) {\n if (postID) {\n await this.editedPostIcon(postID).click();\n }\n }\n\n async assertChannelBanner(text: string, backgroundColor: string) {\n await expect(this.channelBanner).toBeVisible();\n\n const actualText = await this.channelBanner.textContent();\n expect(actualText).toBe(text);\n\n const actualBackgroundColor = await this.channelBanner.evaluate((el) => {\n return window.getComputedStyle(el).getPropertyValue('background-color');\n });\n\n expect(actualBackgroundColor).toBe(hexToRgb(backgroundColor));\n }\n\n async assertChannelBannerNotVisible() {\n await expect(this.channelBanner).not.toBeVisible();\n }\n\n async assertChannelBannerHasBoldText(text: string) {\n const boldText = await this.channelBanner.locator('strong');\n expect(boldText).toBeVisible();\n\n const actualText = await boldText.textContent();\n expect(actualText).toBe(text);\n }\n\n async assertChannelBannerHasItalicText(text: string) {\n const italicText = await this.channelBanner.locator('em');\n expect(italicText).toBeVisible();\n\n const actualText = await italicText.textContent();\n expect(actualText).toBe(text);\n }\n\n async assertChannelBannerHasStrikethroughText(text: string) {\n const strikethroughText = await this.channelBanner.locator('del');\n expect(strikethroughText).toBeVisible();\n\n const actualText = await strikethroughText.textContent();\n expect(actualText).toBe(text);\n }\n\n async messageDeletedVisible(isVisible: boolean = false, postId: string, message: string) {\n await expect(this.messageDeleted(postId)).toBeVisible({visible: isVisible});\n if (!isVisible) {\n const postMessageText = this.postText(postId);\n const postMessageTextContent = await postMessageText.textContent();\n expect(postMessageTextContent).toBe(message);\n }\n }\n}\n"],"names":["ChannelsHeader","ChannelsPostCreate","ChannelsPostEdit","ScheduledPostIndicator","FlagPostConfirmationDialog","expect","ChannelsPost","duration","waitUntil","hexToRgb"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Locator } from '@playwright/test';
|
|
2
|
+
import InfoSettings from './info_settings';
|
|
3
|
+
import ConfigurationSettings from './configuration_settings';
|
|
4
|
+
export default class ChannelSettingsModal {
|
|
5
|
+
readonly container: Locator;
|
|
6
|
+
readonly closeButton: Locator;
|
|
7
|
+
readonly infoTab: Locator;
|
|
8
|
+
readonly configurationTab: Locator;
|
|
9
|
+
readonly infoSettings: InfoSettings;
|
|
10
|
+
readonly configurationSettings: ConfigurationSettings;
|
|
11
|
+
constructor(container: Locator);
|
|
12
|
+
toBeVisible(): Promise<void>;
|
|
13
|
+
getContainerId(): Promise<string | null>;
|
|
14
|
+
close(): Promise<void>;
|
|
15
|
+
openInfoTab(): Promise<InfoSettings>;
|
|
16
|
+
openConfigurationTab(): Promise<ConfigurationSettings>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
var info_settings = require('./info_settings.js');
|
|
5
|
+
var configuration_settings = require('./configuration_settings.js');
|
|
6
|
+
|
|
7
|
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
8
|
+
// See LICENSE.txt for license information.
|
|
9
|
+
class ChannelSettingsModal {
|
|
10
|
+
container;
|
|
11
|
+
closeButton;
|
|
12
|
+
infoTab;
|
|
13
|
+
configurationTab;
|
|
14
|
+
infoSettings;
|
|
15
|
+
configurationSettings;
|
|
16
|
+
constructor(container) {
|
|
17
|
+
this.container = container;
|
|
18
|
+
this.closeButton = container.getByRole('button', { name: 'Close' });
|
|
19
|
+
this.infoTab = container.getByRole('tab', { name: 'info' });
|
|
20
|
+
this.configurationTab = container.getByRole('tab', { name: 'configuration' });
|
|
21
|
+
this.infoSettings = new info_settings(container.locator('.ChannelSettingsModal__infoTab'));
|
|
22
|
+
this.configurationSettings = new configuration_settings(container.locator('.ChannelSettingsModal__configurationTab'));
|
|
23
|
+
}
|
|
24
|
+
async toBeVisible() {
|
|
25
|
+
await test.expect(this.container).toBeVisible();
|
|
26
|
+
}
|
|
27
|
+
getContainerId() {
|
|
28
|
+
return this.container.getAttribute('id');
|
|
29
|
+
}
|
|
30
|
+
async close() {
|
|
31
|
+
await this.closeButton.click();
|
|
32
|
+
await test.expect(this.container).not.toBeVisible();
|
|
33
|
+
}
|
|
34
|
+
async openInfoTab() {
|
|
35
|
+
await test.expect(this.infoTab).toBeVisible();
|
|
36
|
+
await this.infoTab.click();
|
|
37
|
+
await this.infoSettings.toBeVisible();
|
|
38
|
+
return this.infoSettings;
|
|
39
|
+
}
|
|
40
|
+
async openConfigurationTab() {
|
|
41
|
+
await test.expect(this.configurationTab).toBeVisible();
|
|
42
|
+
await this.configurationTab.click();
|
|
43
|
+
await this.configurationSettings.toBeVisible();
|
|
44
|
+
return this.configurationSettings;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
module.exports = ChannelSettingsModal;
|
|
49
|
+
//# sourceMappingURL=channel_settings_modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_settings_modal.js","sources":["../../../../../src/ui/components/channels/channel_settings/channel_settings_modal.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nimport InfoSettings from './info_settings';\nimport ConfigurationSettings from './configuration_settings';\n\nexport default class ChannelSettingsModal {\n readonly container: Locator;\n\n readonly closeButton;\n\n readonly infoTab;\n readonly configurationTab;\n\n readonly infoSettings;\n readonly configurationSettings;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.closeButton = container.getByRole('button', {name: 'Close'});\n\n this.infoTab = container.getByRole('tab', {name: 'info'});\n this.configurationTab = container.getByRole('tab', {name: 'configuration'});\n\n this.infoSettings = new InfoSettings(container.locator('.ChannelSettingsModal__infoTab'));\n this.configurationSettings = new ConfigurationSettings(\n container.locator('.ChannelSettingsModal__configurationTab'),\n );\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n getContainerId() {\n return this.container.getAttribute('id');\n }\n\n async close() {\n await this.closeButton.click();\n\n await expect(this.container).not.toBeVisible();\n }\n\n async openInfoTab(): Promise<InfoSettings> {\n await expect(this.infoTab).toBeVisible();\n await this.infoTab.click();\n\n await this.infoSettings.toBeVisible();\n\n return this.infoSettings;\n }\n\n async openConfigurationTab(): Promise<ConfigurationSettings> {\n await expect(this.configurationTab).toBeVisible();\n await this.configurationTab.click();\n\n await this.configurationSettings.toBeVisible();\n\n return this.configurationSettings;\n }\n}\n"],"names":["InfoSettings","ConfigurationSettings","expect"],"mappings":";;;;;;AAAA;AACA;AAOc,MAAO,oBAAoB,CAAA;AAC5B,IAAA,SAAS;AAET,IAAA,WAAW;AAEX,IAAA,OAAO;AACP,IAAA,gBAAgB;AAEhB,IAAA,YAAY;AACZ,IAAA,qBAAqB;AAE9B,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAE1B,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;AACzD,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,eAAe,EAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAIA,aAAY,CAAC,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAIC,sBAAqB,CAClD,SAAS,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAC/D;IACL;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMC,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;IAEA,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;IAC5C;AAEA,IAAA,MAAM,KAAK,GAAA;AACP,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QAE9B,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;IAClD;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;AACxC,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAE1B,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QAErC,OAAO,IAAI,CAAC,YAAY;IAC5B;AAEA,IAAA,MAAM,oBAAoB,GAAA;QACtB,MAAMA,WAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE;AACjD,QAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAEnC,QAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;QAE9C,OAAO,IAAI,CAAC,qBAAqB;IACrC;AACH;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Locator } from '@playwright/test';
|
|
2
|
+
export default class ConfigurationSettings {
|
|
3
|
+
readonly container: Locator;
|
|
4
|
+
constructor(container: Locator);
|
|
5
|
+
toBeVisible(): Promise<void>;
|
|
6
|
+
save(): Promise<void>;
|
|
7
|
+
enableChannelBanner(): Promise<void>;
|
|
8
|
+
disableChannelBanner(): Promise<void>;
|
|
9
|
+
setChannelBannerText(text: string): Promise<void>;
|
|
10
|
+
setChannelBannerTextColor(color: string): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
5
|
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
6
|
+
// See LICENSE.txt for license information.
|
|
7
|
+
class ConfigurationSettings {
|
|
8
|
+
container;
|
|
9
|
+
constructor(container) {
|
|
10
|
+
this.container = container;
|
|
11
|
+
}
|
|
12
|
+
async toBeVisible() {
|
|
13
|
+
await test.expect(this.container).toBeVisible();
|
|
14
|
+
}
|
|
15
|
+
async save() {
|
|
16
|
+
const saveButton = this.container.getByTestId('SaveChangesPanel__save-btn');
|
|
17
|
+
await test.expect(saveButton).toBeVisible();
|
|
18
|
+
await saveButton.click();
|
|
19
|
+
}
|
|
20
|
+
async enableChannelBanner() {
|
|
21
|
+
const toggleButton = this.container.getByTestId('channelBannerToggle-button');
|
|
22
|
+
const classes = await toggleButton.getAttribute('class');
|
|
23
|
+
if (!classes?.includes('active')) {
|
|
24
|
+
await toggleButton.click();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async disableChannelBanner() {
|
|
28
|
+
const toggleButton = this.container.getByTestId('channelBannerToggle-button');
|
|
29
|
+
const classes = await toggleButton.getAttribute('class');
|
|
30
|
+
if (classes?.includes('active')) {
|
|
31
|
+
await toggleButton.click();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async setChannelBannerText(text) {
|
|
35
|
+
const textBox = this.container.getByTestId('channel_banner_banner_text_textbox');
|
|
36
|
+
await test.expect(textBox).toBeVisible();
|
|
37
|
+
await textBox.fill(text);
|
|
38
|
+
}
|
|
39
|
+
async setChannelBannerTextColor(color) {
|
|
40
|
+
const colorInput = this.container.locator('#channel_banner_banner_background_color_picker-inputColorValue');
|
|
41
|
+
await test.expect(colorInput).toBeVisible();
|
|
42
|
+
await colorInput.fill(color);
|
|
43
|
+
test.expect((await colorInput.inputValue()).replace('#', '')).toBe(color);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
module.exports = ConfigurationSettings;
|
|
48
|
+
//# sourceMappingURL=configuration_settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration_settings.js","sources":["../../../../../src/ui/components/channels/channel_settings/configuration_settings.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class ConfigurationSettings {\n readonly container: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async save() {\n const saveButton = this.container.getByTestId('SaveChangesPanel__save-btn');\n await expect(saveButton).toBeVisible();\n await saveButton.click();\n }\n\n async enableChannelBanner() {\n const toggleButton = this.container.getByTestId('channelBannerToggle-button');\n const classes = await toggleButton.getAttribute('class');\n if (!classes?.includes('active')) {\n await toggleButton.click();\n }\n }\n\n async disableChannelBanner() {\n const toggleButton = this.container.getByTestId('channelBannerToggle-button');\n const classes = await toggleButton.getAttribute('class');\n if (classes?.includes('active')) {\n await toggleButton.click();\n }\n }\n\n async setChannelBannerText(text: string) {\n const textBox = this.container.getByTestId('channel_banner_banner_text_textbox');\n await expect(textBox).toBeVisible();\n await textBox.fill(text);\n }\n\n async setChannelBannerTextColor(color: string) {\n const colorInput = this.container.locator('#channel_banner_banner_background_color_picker-inputColorValue');\n await expect(colorInput).toBeVisible();\n await colorInput.fill(color);\n expect((await colorInput.inputValue()).replace('#', '')).toBe(color);\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,qBAAqB,CAAA;AAC7B,IAAA,SAAS;AAElB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC9B;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;AAEA,IAAA,MAAM,IAAI,GAAA;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,4BAA4B,CAAC;AAC3E,QAAA,MAAMA,WAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,UAAU,CAAC,KAAK,EAAE;IAC5B;AAEA,IAAA,MAAM,mBAAmB,GAAA;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,4BAA4B,CAAC;QAC7E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAA,MAAM,YAAY,CAAC,KAAK,EAAE;QAC9B;IACJ;AAEA,IAAA,MAAM,oBAAoB,GAAA;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,4BAA4B,CAAC;QAC7E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC7B,YAAA,MAAM,YAAY,CAAC,KAAK,EAAE;QAC9B;IACJ;IAEA,MAAM,oBAAoB,CAAC,IAAY,EAAA;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,oCAAoC,CAAC;AAChF,QAAA,MAAMA,WAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;AACnC,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;IAEA,MAAM,yBAAyB,CAAC,KAAa,EAAA;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gEAAgE,CAAC;AAC3G,QAAA,MAAMA,WAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5BA,WAAM,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACxE;AACH;;;;"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Locator } from '@playwright/test';
|
|
2
|
-
export default class
|
|
2
|
+
export default class InfoSettings {
|
|
3
3
|
readonly container: Locator;
|
|
4
|
-
readonly scheduleDraftMessageCustomTimeOption: Locator;
|
|
5
4
|
constructor(container: Locator);
|
|
6
5
|
toBeVisible(): Promise<void>;
|
|
7
|
-
selectCustomTime(): Promise<void>;
|
|
8
6
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
5
|
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
6
|
+
// See LICENSE.txt for license information.
|
|
7
|
+
class InfoSettings {
|
|
8
|
+
container;
|
|
9
|
+
constructor(container) {
|
|
10
|
+
this.container = container;
|
|
11
|
+
}
|
|
12
|
+
async toBeVisible() {
|
|
13
|
+
await test.expect(this.container).toBeVisible();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = InfoSettings;
|
|
18
|
+
//# sourceMappingURL=info_settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info_settings.js","sources":["../../../../../src/ui/components/channels/channel_settings/info_settings.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class InfoSettings {\n readonly container: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,YAAY,CAAA;AACpB,IAAA,SAAS;AAElB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC9B;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete_post_confirmation_dialog.js","sources":["../../../../src/ui/components/channels/delete_post_confirmation_dialog.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class DeletePostConfirmationDialog {\n readonly container: Locator;\n\n readonly cancelButton;\n readonly confirmButton;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.cancelButton = container.locator('button.btn.btn-tertiary');\n this.confirmButton = container.locator('button#deletePostModalButton');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n await expect(this.cancelButton).toBeVisible();\n await expect(this.confirmButton).toBeVisible();\n }\n\n async notToBeVisible() {\n await expect(this.container).not.toBeVisible();\n await expect(this.cancelButton).not.toBeVisible();\n await expect(this.confirmButton).not.toBeVisible();\n }\n\n async cancelDeletion() {\n await this.cancelButton.click();\n }\n\n async confirmDeletion() {\n await this.confirmButton.click();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,4BAA4B,CAAA;AACpC,IAAA,SAAS;AAET,IAAA,YAAY;AACZ,IAAA,aAAa;AAEtB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,yBAAyB,CAAC;QAChE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,8BAA8B,CAAC
|
|
1
|
+
{"version":3,"file":"delete_post_confirmation_dialog.js","sources":["../../../../src/ui/components/channels/delete_post_confirmation_dialog.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class DeletePostConfirmationDialog {\n readonly container: Locator;\n\n readonly cancelButton;\n readonly confirmButton;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.cancelButton = container.locator('button.btn.btn-tertiary');\n this.confirmButton = container.locator('button#deletePostModalButton');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n await expect(this.cancelButton).toBeVisible();\n await expect(this.confirmButton).toBeVisible();\n }\n\n async notToBeVisible() {\n await expect(this.container).not.toBeVisible();\n await expect(this.cancelButton).not.toBeVisible();\n await expect(this.confirmButton).not.toBeVisible();\n }\n\n async cancelDeletion() {\n await this.cancelButton.click();\n }\n\n async confirmDeletion() {\n await this.confirmButton.click();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,4BAA4B,CAAA;AACpC,IAAA,SAAS;AAET,IAAA,YAAY;AACZ,IAAA,aAAa;AAEtB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,yBAAyB,CAAC;QAChE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,8BAA8B,CAAC;IAC1E;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QAC1C,MAAMA,WAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;QAC7C,MAAMA,WAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;IAClD;AAEA,IAAA,MAAM,cAAc,GAAA;QAChB,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;QAC9C,MAAMA,WAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;QACjD,MAAMA,WAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;IACtD;AAEA,IAAA,MAAM,cAAc,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;IACnC;AAEA,IAAA,MAAM,eAAe,GAAA;AACjB,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;IACpC;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete_post_modal.js","sources":["../../../../src/ui/components/channels/delete_post_modal.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class DeletePostModal {\n readonly container: Locator;\n readonly confirmButton: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n this.confirmButton = container.locator('#deletePostModalButton');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async confirm() {\n await this.confirmButton.waitFor();\n await this.confirmButton.click();\n\n // Wait for the modal to disappear\n await expect(this.container).not.toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,eAAe,CAAA;AACvB,IAAA,SAAS;AACT,IAAA,aAAa;AAEtB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,wBAAwB,CAAC
|
|
1
|
+
{"version":3,"file":"delete_post_modal.js","sources":["../../../../src/ui/components/channels/delete_post_modal.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class DeletePostModal {\n readonly container: Locator;\n readonly confirmButton: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n this.confirmButton = container.locator('#deletePostModalButton');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async confirm() {\n await this.confirmButton.waitFor();\n await this.confirmButton.click();\n\n // Wait for the modal to disappear\n await expect(this.container).not.toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,eAAe,CAAA;AACvB,IAAA,SAAS;AACT,IAAA,aAAa;AAEtB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACpE;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;AAEA,IAAA,MAAM,OAAO,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAClC,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;;QAGhC,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;IAClD;AACH;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Locator } from '@playwright/test';
|
|
2
|
+
export default class DeleteScheduledPostModal {
|
|
3
|
+
readonly container: Locator;
|
|
4
|
+
readonly body: Locator;
|
|
5
|
+
readonly deleteButton: Locator;
|
|
6
|
+
readonly cancelButton: Locator;
|
|
7
|
+
readonly closeButton: Locator;
|
|
8
|
+
constructor(container: Locator);
|
|
9
|
+
toBeVisible(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
5
|
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
6
|
+
// See LICENSE.txt for license information.
|
|
7
|
+
class DeleteScheduledPostModal {
|
|
8
|
+
container;
|
|
9
|
+
body;
|
|
10
|
+
deleteButton;
|
|
11
|
+
cancelButton;
|
|
12
|
+
closeButton;
|
|
13
|
+
constructor(container) {
|
|
14
|
+
this.container = container;
|
|
15
|
+
this.body = container.locator('.modal-body');
|
|
16
|
+
this.deleteButton = container.locator('button:has-text("Yes, delete")');
|
|
17
|
+
this.cancelButton = container.locator('button:has-text("Cancel")');
|
|
18
|
+
this.closeButton = container.getByRole('button', { name: 'Close' });
|
|
19
|
+
}
|
|
20
|
+
async toBeVisible() {
|
|
21
|
+
await test.expect(this.container).toBeVisible();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = DeleteScheduledPostModal;
|
|
26
|
+
//# sourceMappingURL=delete_scheduled_post_modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete_scheduled_post_modal.js","sources":["../../../../src/ui/components/channels/delete_scheduled_post_modal.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class DeleteScheduledPostModal {\n readonly container: Locator;\n readonly body: Locator;\n readonly deleteButton: Locator;\n readonly cancelButton: Locator;\n readonly closeButton: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.body = container.locator('.modal-body');\n this.deleteButton = container.locator('button:has-text(\"Yes, delete\")');\n this.cancelButton = container.locator('button:has-text(\"Cancel\")');\n this.closeButton = container.getByRole('button', {name: 'Close'});\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,wBAAwB,CAAA;AAChC,IAAA,SAAS;AACT,IAAA,IAAI;AACJ,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,WAAW;AAEpB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAClE,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;IACrE;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;AACH;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Locator } from '@playwright/test';
|
|
2
|
+
export default class DraftPost {
|
|
3
|
+
readonly container: Locator;
|
|
4
|
+
readonly panelHeader: Locator;
|
|
5
|
+
readonly panelBody: Locator;
|
|
6
|
+
readonly postBody: Locator;
|
|
7
|
+
readonly postHeader: Locator;
|
|
8
|
+
readonly postImage: Locator;
|
|
9
|
+
readonly deleteButton: Locator;
|
|
10
|
+
readonly editButton: Locator;
|
|
11
|
+
readonly scheduleButton: Locator;
|
|
12
|
+
readonly sendButton: Locator;
|
|
13
|
+
constructor(container: Locator);
|
|
14
|
+
toBeVisible(): Promise<void>;
|
|
15
|
+
hover(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
5
|
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
6
|
+
// See LICENSE.txt for license information.
|
|
7
|
+
class DraftPost {
|
|
8
|
+
container;
|
|
9
|
+
panelHeader;
|
|
10
|
+
panelBody;
|
|
11
|
+
postBody;
|
|
12
|
+
postHeader;
|
|
13
|
+
postImage;
|
|
14
|
+
deleteButton;
|
|
15
|
+
editButton;
|
|
16
|
+
scheduleButton;
|
|
17
|
+
sendButton;
|
|
18
|
+
constructor(container) {
|
|
19
|
+
this.container = container;
|
|
20
|
+
this.panelHeader = container.locator('.PanelHeader');
|
|
21
|
+
this.panelBody = container.locator('.DraftPanelBody');
|
|
22
|
+
this.postBody = container.locator('.post__body');
|
|
23
|
+
this.postHeader = container.locator('.post__header');
|
|
24
|
+
this.postImage = container.locator('.post__img');
|
|
25
|
+
this.deleteButton = container.locator('#draft_icon-trash-can-outline_delete');
|
|
26
|
+
this.editButton = container.locator('#draft_icon-pencil-outline_edit');
|
|
27
|
+
this.scheduleButton = container.locator('#draft_icon-clock-send-outline_reschedule');
|
|
28
|
+
this.sendButton = container.locator('#draft_icon-send-outline_send');
|
|
29
|
+
}
|
|
30
|
+
async toBeVisible() {
|
|
31
|
+
await test.expect(this.container).toBeVisible();
|
|
32
|
+
}
|
|
33
|
+
async hover() {
|
|
34
|
+
await this.container.hover();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
module.exports = DraftPost;
|
|
39
|
+
//# sourceMappingURL=draft_post.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft_post.js","sources":["../../../../src/ui/components/channels/draft_post.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class DraftPost {\n readonly container: Locator;\n\n readonly panelHeader;\n readonly panelBody;\n\n readonly postBody;\n readonly postHeader;\n readonly postImage;\n\n readonly deleteButton;\n readonly editButton;\n readonly scheduleButton;\n readonly sendButton;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.panelHeader = container.locator('.PanelHeader');\n this.panelBody = container.locator('.DraftPanelBody');\n\n this.postBody = container.locator('.post__body');\n this.postHeader = container.locator('.post__header');\n this.postImage = container.locator('.post__img');\n\n this.deleteButton = container.locator('#draft_icon-trash-can-outline_delete');\n this.editButton = container.locator('#draft_icon-pencil-outline_edit');\n this.scheduleButton = container.locator('#draft_icon-clock-send-outline_reschedule');\n this.sendButton = container.locator('#draft_icon-send-outline_send');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async hover() {\n await this.container.hover();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,SAAS,CAAA;AACjB,IAAA,SAAS;AAET,IAAA,WAAW;AACX,IAAA,SAAS;AAET,IAAA,QAAQ;AACR,IAAA,UAAU;AACV,IAAA,SAAS;AAET,IAAA,YAAY;AACZ,IAAA,UAAU;AACV,IAAA,cAAc;AACd,IAAA,UAAU;AAEnB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAErD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;QAEhD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,sCAAsC,CAAC;QAC7E,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,iCAAiC,CAAC;QACtE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,2CAA2C,CAAC;QACpF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC;IACxE;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;AAEA,IAAA,MAAM,KAAK,GAAA;AACP,QAAA,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IAChC;AACH;;;;"}
|
|
@@ -6,6 +6,8 @@ export default class EmojiGifPicker {
|
|
|
6
6
|
readonly gifPickerItems: Locator;
|
|
7
7
|
constructor(container: Locator);
|
|
8
8
|
toBeVisible(): Promise<void>;
|
|
9
|
+
notToBeVisible(): Promise<void>;
|
|
10
|
+
clickEmoji(emojiName: string): Promise<void>;
|
|
9
11
|
openGifTab(): Promise<void>;
|
|
10
12
|
searchGif(name: string): Promise<void>;
|
|
11
13
|
getNthGif(n: number): Promise<{
|
|
@@ -18,6 +18,12 @@ class EmojiGifPicker {
|
|
|
18
18
|
async toBeVisible() {
|
|
19
19
|
await test.expect(this.container).toBeVisible();
|
|
20
20
|
}
|
|
21
|
+
async notToBeVisible() {
|
|
22
|
+
await test.expect(this.container).not.toBeVisible();
|
|
23
|
+
}
|
|
24
|
+
async clickEmoji(emojiName) {
|
|
25
|
+
await this.container.getByRole('button', { name: `${emojiName} emoji` }).click();
|
|
26
|
+
}
|
|
21
27
|
async openGifTab() {
|
|
22
28
|
await test.expect(this.gifTab).toBeVisible();
|
|
23
29
|
await this.gifTab.click({ force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emoji_gif_picker.js","sources":["../../../../src/ui/components/channels/emoji_gif_picker.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class EmojiGifPicker {\n readonly container: Locator;\n\n readonly gifTab: Locator;\n readonly gifSearchInput: Locator;\n readonly gifPickerItems: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.gifTab = container.getByText('GIFs');\n this.gifSearchInput = container.getByPlaceholder('Search GIPHY');\n this.gifPickerItems = container.locator('.gif-picker__items');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async openGifTab() {\n await expect(this.gifTab).toBeVisible();\n\n await this.gifTab.click({force: true});\n\n await expect(this.gifSearchInput).toBeVisible();\n await expect(this.gifPickerItems).toBeVisible();\n }\n\n async searchGif(name: string) {\n await this.gifSearchInput.fill(name);\n await expect(this.gifSearchInput).toHaveValue(name);\n }\n\n async getNthGif(n: number) {\n await expect(this.gifPickerItems).toBeVisible();\n\n await this.gifPickerItems.locator('img').nth(n).waitFor();\n const nthGif = this.gifPickerItems.locator('img').nth(n);\n await expect(nthGif).toBeVisible();\n\n const nthGifSrc = await nthGif.getAttribute('src');\n const nthGifAlt = await nthGif.getAttribute('alt');\n\n if (!nthGifSrc || !nthGifAlt) {\n throw new Error('Gif src or alt is empty');\n }\n\n return {\n src: nthGifSrc,\n alt: nthGifAlt,\n img: nthGif,\n };\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,cAAc,CAAA;AACtB,IAAA,SAAS;AAET,IAAA,MAAM;AACN,IAAA,cAAc;AACd,IAAA,cAAc;AAEvB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC;QAChE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"emoji_gif_picker.js","sources":["../../../../src/ui/components/channels/emoji_gif_picker.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class EmojiGifPicker {\n readonly container: Locator;\n\n readonly gifTab: Locator;\n readonly gifSearchInput: Locator;\n readonly gifPickerItems: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.gifTab = container.getByText('GIFs');\n this.gifSearchInput = container.getByPlaceholder('Search GIPHY');\n this.gifPickerItems = container.locator('.gif-picker__items');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async notToBeVisible() {\n await expect(this.container).not.toBeVisible();\n }\n\n async clickEmoji(emojiName: string) {\n await this.container.getByRole('button', {name: `${emojiName} emoji`}).click();\n }\n\n async openGifTab() {\n await expect(this.gifTab).toBeVisible();\n\n await this.gifTab.click({force: true});\n\n await expect(this.gifSearchInput).toBeVisible();\n await expect(this.gifPickerItems).toBeVisible();\n }\n\n async searchGif(name: string) {\n await this.gifSearchInput.fill(name);\n await expect(this.gifSearchInput).toHaveValue(name);\n }\n\n async getNthGif(n: number) {\n await expect(this.gifPickerItems).toBeVisible();\n\n await this.gifPickerItems.locator('img').nth(n).waitFor();\n const nthGif = this.gifPickerItems.locator('img').nth(n);\n await expect(nthGif).toBeVisible();\n\n const nthGifSrc = await nthGif.getAttribute('src');\n const nthGifAlt = await nthGif.getAttribute('alt');\n\n if (!nthGifSrc || !nthGifAlt) {\n throw new Error('Gif src or alt is empty');\n }\n\n return {\n src: nthGifSrc,\n alt: nthGifAlt,\n img: nthGif,\n };\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,cAAc,CAAA;AACtB,IAAA,SAAS;AAET,IAAA,MAAM;AACN,IAAA,cAAc;AACd,IAAA,cAAc;AAEvB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC;QAChE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACjE;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;AAEA,IAAA,MAAM,cAAc,GAAA;QAChB,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;IAClD;IAEA,MAAM,UAAU,CAAC,SAAiB,EAAA;AAC9B,QAAA,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAA,EAAG,SAAS,CAAA,MAAA,CAAQ,EAAC,CAAC,CAAC,KAAK,EAAE;IAClF;AAEA,IAAA,MAAM,UAAU,GAAA;QACZ,MAAMA,WAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE;AAEvC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;QAEtC,MAAMA,WAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;QAC/C,MAAMA,WAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;IACnD;IAEA,MAAM,SAAS,CAAC,IAAY,EAAA;QACxB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,MAAMA,WAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;IACvD;IAEA,MAAM,SAAS,CAAC,CAAS,EAAA;QACrB,MAAMA,WAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;AAE/C,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AACzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAA,MAAMA,WAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE;QAElC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAElD,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC9C;QAEA,OAAO;AACH,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,MAAM;SACd;IACL;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find_channels_modal.js","sources":["../../../../src/ui/components/channels/find_channels_modal.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class FindChannelsModal {\n readonly container: Locator;\n readonly input;\n readonly searchList;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.input = container.getByRole('combobox', {name: 'quick switch input'});\n this.searchList = container.locator('.suggestion-list__item');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,iBAAiB,CAAA;AACzB,IAAA,SAAS;AACT,IAAA,KAAK;AACL,IAAA,UAAU;AAEnB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAE1B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,oBAAoB,EAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,wBAAwB,CAAC
|
|
1
|
+
{"version":3,"file":"find_channels_modal.js","sources":["../../../../src/ui/components/channels/find_channels_modal.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Locator, expect} from '@playwright/test';\n\nexport default class FindChannelsModal {\n readonly container: Locator;\n readonly input;\n readonly searchList;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.input = container.getByRole('combobox', {name: 'quick switch input'});\n this.searchList = container.locator('.suggestion-list__item');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,iBAAiB,CAAA;AACzB,IAAA,SAAS;AACT,IAAA,KAAK;AACL,IAAA,UAAU;AAEnB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAE1B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,oBAAoB,EAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACjE;AAEA,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;IAC9C;AACH;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Locator, Page } from '@playwright/test';
|
|
2
|
+
export default class FlagPostConfirmationDialog {
|
|
3
|
+
readonly page: Page;
|
|
4
|
+
readonly container: Locator;
|
|
5
|
+
readonly cancelButton: Locator;
|
|
6
|
+
readonly flagPostReasonInput: Locator;
|
|
7
|
+
readonly flagPostCommentInput: Locator;
|
|
8
|
+
readonly submitButton: Locator;
|
|
9
|
+
readonly postContainer: Locator;
|
|
10
|
+
readonly postText: Locator;
|
|
11
|
+
readonly flagReasonOption: Locator;
|
|
12
|
+
readonly flagReasonMenuItems: (reason: string) => Locator;
|
|
13
|
+
readonly cannotFlagPostErrorMessage: Locator;
|
|
14
|
+
readonly requireCommentsErrorMessage: Locator;
|
|
15
|
+
constructor(container: Locator, page: Page);
|
|
16
|
+
fillFlagComment(comment: string): Promise<void>;
|
|
17
|
+
selectFlagReason(reason: string): Promise<void>;
|
|
18
|
+
toBeVisible(): Promise<void>;
|
|
19
|
+
toContainPostText(message: string): Promise<void>;
|
|
20
|
+
notToBeVisible(): Promise<void>;
|
|
21
|
+
cannotFlagAlreadyFlaggedPostToBeVisible(): Promise<void>;
|
|
22
|
+
requireCommentsForFlaggingPost(): Promise<void>;
|
|
23
|
+
cannotFlagPreviouslyRetainedPostToBeVisible(): Promise<void>;
|
|
24
|
+
}
|