@mattermost/playwright-lib 10.6.0 → 10.6.1
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.js +21 -14
- package/dist/constant.js +6 -3
- package/dist/file.js +20 -20
- package/dist/flag.js +38 -26
- package/dist/global_setup.js +33 -22
- package/dist/index.d.ts +0 -1
- package/dist/index.js +42 -10
- package/dist/index.js.map +1 -1
- package/dist/mock_browser_api.js +8 -2
- package/dist/server/channel.js +9 -3
- package/dist/server/client.js +16 -10
- package/dist/server/default_config.js +15 -9
- package/dist/server/init.js +36 -29
- package/dist/server/post.js +9 -3
- package/dist/server/team.js +9 -3
- package/dist/server/user.js +15 -8
- package/dist/test_action.js +14 -3
- package/dist/test_config.js +30 -4
- package/dist/test_fixture.js +66 -47
- package/dist/ui/components/channels/app_bar.js +9 -3
- package/dist/ui/components/channels/center_view.js +28 -22
- package/dist/ui/components/channels/delete_post_confirmation_dialog.js +14 -8
- package/dist/ui/components/channels/delete_post_modal.js +10 -4
- package/dist/ui/components/channels/emoji_gif_picker.js +15 -9
- package/dist/ui/components/channels/find_channels_modal.js +9 -3
- package/dist/ui/components/channels/generic_confirm_modal.js +11 -5
- package/dist/ui/components/channels/header.js +9 -3
- package/dist/ui/components/channels/message_priority.js +20 -14
- package/dist/ui/components/channels/post.js +16 -10
- package/dist/ui/components/channels/post_create.js +29 -23
- package/dist/ui/components/channels/post_dot_menu.js +9 -3
- package/dist/ui/components/channels/post_edit.js +22 -16
- package/dist/ui/components/channels/post_menu.js +9 -3
- package/dist/ui/components/channels/post_reminder_menu.js +9 -3
- package/dist/ui/components/channels/restore_post_confirmation_dialog.js +12 -6
- package/dist/ui/components/channels/scheduled_draft_menu.js +9 -3
- package/dist/ui/components/channels/scheduled_draft_modal.js +10 -4
- package/dist/ui/components/channels/search_popover.js +9 -3
- package/dist/ui/components/channels/settings/notification_settings.js +14 -8
- package/dist/ui/components/channels/settings/settings_modal.js +13 -7
- package/dist/ui/components/channels/sidebar_left.js +14 -8
- package/dist/ui/components/channels/sidebar_right.js +26 -20
- package/dist/ui/components/channels/thread_footer.js +9 -3
- package/dist/ui/components/channels/user_profile_popover.js +9 -3
- package/dist/ui/components/footer.js +9 -3
- package/dist/ui/components/global_header.js +13 -7
- package/dist/ui/components/index.js +74 -72
- package/dist/ui/components/main_header.js +9 -3
- package/dist/ui/components/system_console/navbar.js +9 -3
- package/dist/ui/components/system_console/sections/system_users/column_toggle_menu.js +10 -4
- package/dist/ui/components/system_console/sections/system_users/feature_discovery.js +10 -4
- package/dist/ui/components/system_console/sections/system_users/filter_menu.js +9 -3
- package/dist/ui/components/system_console/sections/system_users/filter_popover.js +14 -8
- package/dist/ui/components/system_console/sections/system_users/mobile_security.js +9 -3
- package/dist/ui/components/system_console/sections/system_users/system_users.js +16 -10
- package/dist/ui/components/system_console/sidebar.js +10 -4
- package/dist/ui/pages/channels.js +24 -18
- package/dist/ui/pages/drafts.js +23 -17
- package/dist/ui/pages/index.js +30 -17
- package/dist/ui/pages/landing_login.js +11 -5
- package/dist/ui/pages/login.js +14 -8
- package/dist/ui/pages/reset_password.js +15 -9
- package/dist/ui/pages/scheduled_draft.js +25 -19
- package/dist/ui/pages/signup.js +17 -11
- package/dist/ui/pages/system_console.js +22 -16
- package/dist/util.js +19 -8
- package/dist/visual/index.js +20 -14
- package/dist/visual/percy.js +10 -4
- package/package.json +1 -1
- package/dist/server/index.js +0 -9
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types.js +0 -3
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
export default class SystemUsersFilterPopover {
|
|
7
|
+
class SystemUsersFilterPopover {
|
|
5
8
|
container;
|
|
6
9
|
teamMenuInput;
|
|
7
10
|
roleMenuButton;
|
|
@@ -15,8 +18,8 @@ export default class SystemUsersFilterPopover {
|
|
|
15
18
|
this.applyButton = this.container.getByText('Apply');
|
|
16
19
|
}
|
|
17
20
|
async toBeVisible() {
|
|
18
|
-
await expect(this.container).toBeVisible();
|
|
19
|
-
await expect(this.applyButton).toBeVisible();
|
|
21
|
+
await test.expect(this.container).toBeVisible();
|
|
22
|
+
await test.expect(this.applyButton).toBeVisible();
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Save the filter settings.
|
|
@@ -28,21 +31,21 @@ export default class SystemUsersFilterPopover {
|
|
|
28
31
|
* Allows to type in the team filter for searching.
|
|
29
32
|
*/
|
|
30
33
|
async searchInTeamMenu(teamDisplayName) {
|
|
31
|
-
expect(this.teamMenuInput).toBeVisible();
|
|
34
|
+
test.expect(this.teamMenuInput).toBeVisible();
|
|
32
35
|
await this.teamMenuInput.fill(teamDisplayName);
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Opens the role filter menu.
|
|
36
39
|
*/
|
|
37
40
|
async openRoleMenu() {
|
|
38
|
-
expect(this.roleMenuButton).toBeVisible();
|
|
41
|
+
test.expect(this.roleMenuButton).toBeVisible();
|
|
39
42
|
await this.roleMenuButton.click();
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
45
|
* Opens the status filter menu.
|
|
43
46
|
*/
|
|
44
47
|
async openStatusMenu() {
|
|
45
|
-
expect(this.statusMenuButton).toBeVisible();
|
|
48
|
+
test.expect(this.statusMenuButton).toBeVisible();
|
|
46
49
|
await this.statusMenuButton.click();
|
|
47
50
|
}
|
|
48
51
|
/**
|
|
@@ -50,6 +53,9 @@ export default class SystemUsersFilterPopover {
|
|
|
50
53
|
*/
|
|
51
54
|
async close() {
|
|
52
55
|
await this.container.press('Escape');
|
|
53
|
-
await expect(this.container).not.toBeVisible();
|
|
56
|
+
await test.expect(this.container).not.toBeVisible();
|
|
54
57
|
}
|
|
55
58
|
}
|
|
59
|
+
|
|
60
|
+
module.exports = SystemUsersFilterPopover;
|
|
61
|
+
//# sourceMappingURL=filter_popover.js.map
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
import { expect } from '@playwright/test';
|
|
4
7
|
/**
|
|
5
8
|
* System Console -> Environment -> Mobile Security
|
|
6
9
|
*/
|
|
7
|
-
|
|
10
|
+
class MobileSecurity {
|
|
8
11
|
container;
|
|
9
12
|
enableBiometricAuthenticationToggleTrue;
|
|
10
13
|
enableBiometricAuthenticationToggleFalse;
|
|
@@ -24,7 +27,7 @@ export default class MobileSecurity {
|
|
|
24
27
|
this.saveButton = this.container.getByRole('button', { name: 'Save' });
|
|
25
28
|
}
|
|
26
29
|
async toBeVisible() {
|
|
27
|
-
await expect(this.container).toBeVisible();
|
|
30
|
+
await test.expect(this.container).toBeVisible();
|
|
28
31
|
}
|
|
29
32
|
async clickEnableBiometricAuthenticationToggleTrue() {
|
|
30
33
|
await this.enableBiometricAuthenticationToggleTrue.click();
|
|
@@ -48,3 +51,6 @@ export default class MobileSecurity {
|
|
|
48
51
|
await this.saveButton.click();
|
|
49
52
|
}
|
|
50
53
|
}
|
|
54
|
+
|
|
55
|
+
module.exports = MobileSecurity;
|
|
56
|
+
//# sourceMappingURL=mobile_security.js.map
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
import { expect } from '@playwright/test';
|
|
4
7
|
/**
|
|
5
8
|
* System Console -> User Management -> Users
|
|
6
9
|
*/
|
|
7
|
-
|
|
10
|
+
class SystemUsers {
|
|
8
11
|
container;
|
|
9
12
|
searchInput;
|
|
10
13
|
saveRoleChange;
|
|
@@ -26,10 +29,10 @@ export default class SystemUsers {
|
|
|
26
29
|
this.loadingSpinner = this.container.getByText('Loading');
|
|
27
30
|
}
|
|
28
31
|
async toBeVisible() {
|
|
29
|
-
await expect(this.container).toBeVisible();
|
|
32
|
+
await test.expect(this.container).toBeVisible();
|
|
30
33
|
}
|
|
31
34
|
async isLoadingComplete() {
|
|
32
|
-
await expect(this.loadingSpinner).toHaveCount(0);
|
|
35
|
+
await test.expect(this.loadingSpinner).toHaveCount(0);
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Returns the locator for the header of the given column.
|
|
@@ -65,28 +68,28 @@ export default class SystemUsers {
|
|
|
65
68
|
* Opens the Filter popover
|
|
66
69
|
*/
|
|
67
70
|
async openFilterPopover() {
|
|
68
|
-
expect(this.filterPopoverButton).toBeVisible();
|
|
71
|
+
test.expect(this.filterPopoverButton).toBeVisible();
|
|
69
72
|
await this.filterPopoverButton.click();
|
|
70
73
|
}
|
|
71
74
|
/**
|
|
72
75
|
* Open the column toggle menu
|
|
73
76
|
*/
|
|
74
77
|
async openColumnToggleMenu() {
|
|
75
|
-
expect(this.columnToggleMenuButton).toBeVisible();
|
|
78
|
+
test.expect(this.columnToggleMenuButton).toBeVisible();
|
|
76
79
|
await this.columnToggleMenuButton.click();
|
|
77
80
|
}
|
|
78
81
|
/**
|
|
79
82
|
* Open the date range selector menu
|
|
80
83
|
*/
|
|
81
84
|
async openDateRangeSelectorMenu() {
|
|
82
|
-
expect(this.dateRangeSelectorMenuButton).toBeVisible();
|
|
85
|
+
test.expect(this.dateRangeSelectorMenuButton).toBeVisible();
|
|
83
86
|
await this.dateRangeSelectorMenuButton.click();
|
|
84
87
|
}
|
|
85
88
|
/**
|
|
86
89
|
* Enter the given search term in the search input
|
|
87
90
|
*/
|
|
88
91
|
async enterSearchText(searchText) {
|
|
89
|
-
expect(this.searchInput).toBeVisible();
|
|
92
|
+
test.expect(this.searchInput).toBeVisible();
|
|
90
93
|
await this.searchInput.fill(`${searchText}`);
|
|
91
94
|
await this.isLoadingComplete();
|
|
92
95
|
}
|
|
@@ -96,13 +99,16 @@ export default class SystemUsers {
|
|
|
96
99
|
async verifyRowWithTextIsFound(text) {
|
|
97
100
|
const foundUser = this.container.getByText(text);
|
|
98
101
|
await foundUser.waitFor();
|
|
99
|
-
await expect(foundUser).toBeVisible();
|
|
102
|
+
await test.expect(foundUser).toBeVisible();
|
|
100
103
|
}
|
|
101
104
|
/**
|
|
102
105
|
* Searches and verifies that the row with given text is not found
|
|
103
106
|
*/
|
|
104
107
|
async verifyRowWithTextIsNotFound(text) {
|
|
105
108
|
const foundUser = this.container.getByText(text);
|
|
106
|
-
await expect(foundUser).not.toBeVisible();
|
|
109
|
+
await test.expect(foundUser).not.toBeVisible();
|
|
107
110
|
}
|
|
108
111
|
}
|
|
112
|
+
|
|
113
|
+
module.exports = SystemUsers;
|
|
114
|
+
//# sourceMappingURL=system_users.js.map
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
export default class SystemConsoleSidebar {
|
|
7
|
+
class SystemConsoleSidebar {
|
|
5
8
|
container;
|
|
6
9
|
searchInput;
|
|
7
10
|
constructor(container) {
|
|
@@ -9,8 +12,8 @@ export default class SystemConsoleSidebar {
|
|
|
9
12
|
this.searchInput = container.getByPlaceholder('Find settings');
|
|
10
13
|
}
|
|
11
14
|
async toBeVisible() {
|
|
12
|
-
await expect(this.container).toBeVisible();
|
|
13
|
-
await expect(this.searchInput).toBeVisible();
|
|
15
|
+
await test.expect(this.container).toBeVisible();
|
|
16
|
+
await test.expect(this.searchInput).toBeVisible();
|
|
14
17
|
}
|
|
15
18
|
/**
|
|
16
19
|
* Clicks on the sidebar section link with the given name. Pass the exact name of the section.
|
|
@@ -29,3 +32,6 @@ export default class SystemConsoleSidebar {
|
|
|
29
32
|
await this.searchInput.fill(itemName);
|
|
30
33
|
}
|
|
31
34
|
}
|
|
35
|
+
|
|
36
|
+
module.exports = SystemConsoleSidebar;
|
|
37
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('../components/index.js');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
export default class ChannelsPage {
|
|
7
|
+
class ChannelsPage {
|
|
5
8
|
channels = 'Channels';
|
|
6
9
|
page;
|
|
7
10
|
globalHeader;
|
|
@@ -24,25 +27,25 @@ export default class ChannelsPage {
|
|
|
24
27
|
constructor(page) {
|
|
25
28
|
this.page = page;
|
|
26
29
|
// The main areas of the app
|
|
27
|
-
this.globalHeader = new components.GlobalHeader(page.locator('#global-header'));
|
|
28
|
-
this.searchPopover = new components.SearchPopover(page.locator('#searchPopover'));
|
|
29
|
-
this.centerView = new components.ChannelsCenterView(page.getByTestId('channel_view'));
|
|
30
|
-
this.sidebarLeft = new components.ChannelsSidebarLeft(page.locator('#SidebarContainer'));
|
|
31
|
-
this.sidebarRight = new components.ChannelsSidebarRight(page.locator('#sidebar-right'));
|
|
32
|
-
this.appBar = new components.ChannelsAppBar(page.locator('.app-bar'));
|
|
33
|
-
this.messagePriority = new components.MessagePriority(page.locator('body'));
|
|
30
|
+
this.globalHeader = new index.components.GlobalHeader(page.locator('#global-header'));
|
|
31
|
+
this.searchPopover = new index.components.SearchPopover(page.locator('#searchPopover'));
|
|
32
|
+
this.centerView = new index.components.ChannelsCenterView(page.getByTestId('channel_view'));
|
|
33
|
+
this.sidebarLeft = new index.components.ChannelsSidebarLeft(page.locator('#SidebarContainer'));
|
|
34
|
+
this.sidebarRight = new index.components.ChannelsSidebarRight(page.locator('#sidebar-right'));
|
|
35
|
+
this.appBar = new index.components.ChannelsAppBar(page.locator('.app-bar'));
|
|
36
|
+
this.messagePriority = new index.components.MessagePriority(page.locator('body'));
|
|
34
37
|
// Modals
|
|
35
|
-
this.findChannelsModal = new components.FindChannelsModal(page.getByRole('dialog', { name: 'Find Channels' }));
|
|
36
|
-
this.deletePostModal = new components.DeletePostModal(page.locator('#deletePostModal'));
|
|
37
|
-
this.settingsModal = new components.SettingsModal(page.getByRole('dialog', { name: 'Settings' }));
|
|
38
|
+
this.findChannelsModal = new index.components.FindChannelsModal(page.getByRole('dialog', { name: 'Find Channels' }));
|
|
39
|
+
this.deletePostModal = new index.components.DeletePostModal(page.locator('#deletePostModal'));
|
|
40
|
+
this.settingsModal = new index.components.SettingsModal(page.getByRole('dialog', { name: 'Settings' }));
|
|
38
41
|
// Menus
|
|
39
|
-
this.postDotMenu = new components.PostDotMenu(page.getByRole('menu', { name: 'Post extra options' }));
|
|
40
|
-
this.postReminderMenu = new components.PostReminderMenu(page.getByRole('menu', { name: 'Set a reminder for:' }));
|
|
42
|
+
this.postDotMenu = new index.components.PostDotMenu(page.getByRole('menu', { name: 'Post extra options' }));
|
|
43
|
+
this.postReminderMenu = new index.components.PostReminderMenu(page.getByRole('menu', { name: 'Set a reminder for:' }));
|
|
41
44
|
// Popovers
|
|
42
|
-
this.emojiGifPickerPopup = new components.EmojiGifPicker(page.locator('#emojiGifPicker'));
|
|
43
|
-
this.scheduledDraftDropdown = new components.ScheduledDraftMenu(page.locator('#dropdown_send_post_options'));
|
|
44
|
-
this.scheduledDraftModal = new components.ScheduledDraftModal(page.locator('div.modal-content'));
|
|
45
|
-
this.userProfilePopover = new components.UserProfilePopover(page.locator('.user-profile-popover'));
|
|
45
|
+
this.emojiGifPickerPopup = new index.components.EmojiGifPicker(page.locator('#emojiGifPicker'));
|
|
46
|
+
this.scheduledDraftDropdown = new index.components.ScheduledDraftMenu(page.locator('#dropdown_send_post_options'));
|
|
47
|
+
this.scheduledDraftModal = new index.components.ScheduledDraftModal(page.locator('div.modal-content'));
|
|
48
|
+
this.userProfilePopover = new index.components.UserProfilePopover(page.locator('.user-profile-popover'));
|
|
46
49
|
// Posts
|
|
47
50
|
this.postContainer = page.locator('div.post-message__text');
|
|
48
51
|
}
|
|
@@ -71,3 +74,6 @@ export default class ChannelsPage {
|
|
|
71
74
|
await this.centerView.postCreate.postMessage(message);
|
|
72
75
|
}
|
|
73
76
|
}
|
|
77
|
+
|
|
78
|
+
module.exports = ChannelsPage;
|
|
79
|
+
//# sourceMappingURL=channels.js.map
|
package/dist/ui/pages/drafts.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
export default class DraftPage {
|
|
7
|
+
class DraftPage {
|
|
5
8
|
page;
|
|
6
9
|
badgeCountOnScheduledTab;
|
|
7
10
|
confirmbutton;
|
|
@@ -39,15 +42,15 @@ export default class DraftPage {
|
|
|
39
42
|
}
|
|
40
43
|
async toBeVisible() {
|
|
41
44
|
await this.page.waitForLoadState('networkidle');
|
|
42
|
-
await expect(this.page).toHaveURL(/.*drafts/);
|
|
45
|
+
await test.expect(this.page).toHaveURL(/.*drafts/);
|
|
43
46
|
}
|
|
44
47
|
async assertBadgeCountOnTab(badgeCount) {
|
|
45
48
|
await this.badgeCountOnScheduledTab.isVisible();
|
|
46
|
-
await expect(this.badgeCountOnScheduledTab).toHaveText(badgeCount);
|
|
49
|
+
await test.expect(this.badgeCountOnScheduledTab).toHaveText(badgeCount);
|
|
47
50
|
}
|
|
48
51
|
async assertDraftBody(draftMessage) {
|
|
49
|
-
await expect(this.draftBody).toBeVisible();
|
|
50
|
-
await expect(this.draftBody).toHaveText(draftMessage);
|
|
52
|
+
await test.expect(this.draftBody).toBeVisible();
|
|
53
|
+
await test.expect(this.draftBody).toHaveText(draftMessage);
|
|
51
54
|
}
|
|
52
55
|
async verifyOnHoverActionItems(messageContent) {
|
|
53
56
|
await this.scheduledDraftPanel(messageContent).isVisible();
|
|
@@ -59,21 +62,21 @@ export default class DraftPage {
|
|
|
59
62
|
async verifyDeleteIcon() {
|
|
60
63
|
await this.deleteIcon.isVisible();
|
|
61
64
|
await this.deleteIcon.hover();
|
|
62
|
-
await expect(this.deleteIconToolTip).toBeVisible();
|
|
63
|
-
await expect(this.deleteIconToolTip).toHaveText('Delete scheduled post');
|
|
65
|
+
await test.expect(this.deleteIconToolTip).toBeVisible();
|
|
66
|
+
await test.expect(this.deleteIconToolTip).toHaveText('Delete scheduled post');
|
|
64
67
|
}
|
|
65
68
|
async verifyScheduleIcon(messageContent) {
|
|
66
69
|
await this.scheduledDraftPanel(messageContent).hover();
|
|
67
|
-
await expect(this.scheduleIcon).toBeVisible();
|
|
70
|
+
await test.expect(this.scheduleIcon).toBeVisible();
|
|
68
71
|
await this.scheduleIcon.hover();
|
|
69
|
-
await expect(this.rescheduleIconToolTip).toBeVisible();
|
|
70
|
-
await expect(this.rescheduleIconToolTip).toHaveText('Schedule draft');
|
|
72
|
+
await test.expect(this.rescheduleIconToolTip).toBeVisible();
|
|
73
|
+
await test.expect(this.rescheduleIconToolTip).toHaveText('Schedule draft');
|
|
71
74
|
}
|
|
72
75
|
async verifySendNowIcon() {
|
|
73
76
|
await this.scheduledDraftSendNowButton.isVisible();
|
|
74
77
|
await this.scheduledDraftSendNowButton.hover();
|
|
75
|
-
await expect(this.scheduledDraftSendNowButtonToolTip).toBeVisible();
|
|
76
|
-
await expect(this.scheduledDraftSendNowButtonToolTip).toHaveText('Send now');
|
|
78
|
+
await test.expect(this.scheduledDraftSendNowButtonToolTip).toBeVisible();
|
|
79
|
+
await test.expect(this.scheduledDraftSendNowButtonToolTip).toHaveText('Send now');
|
|
77
80
|
}
|
|
78
81
|
async getTimeStampOfMessage(messageContent) {
|
|
79
82
|
await this.scheduledDraftPanel(messageContent).scrollIntoViewIfNeeded();
|
|
@@ -85,8 +88,8 @@ export default class DraftPage {
|
|
|
85
88
|
await this.scheduledDraftPanel(messageContent).isVisible();
|
|
86
89
|
await this.scheduledDraftPanel(messageContent).hover();
|
|
87
90
|
await this.scheduleIcon.hover();
|
|
88
|
-
await expect(this.rescheduleIconToolTip).toBeVisible();
|
|
89
|
-
await expect(this.rescheduleIconToolTip).toHaveText('Schedule draft');
|
|
91
|
+
await test.expect(this.rescheduleIconToolTip).toBeVisible();
|
|
92
|
+
await test.expect(this.rescheduleIconToolTip).toHaveText('Schedule draft');
|
|
90
93
|
await this.scheduleIcon.click();
|
|
91
94
|
}
|
|
92
95
|
async deleteScheduledMessage(messageContent) {
|
|
@@ -94,7 +97,7 @@ export default class DraftPage {
|
|
|
94
97
|
await this.scheduledDraftPanel(messageContent).hover();
|
|
95
98
|
await this.verifyDeleteIcon();
|
|
96
99
|
await this.deleteIcon.click();
|
|
97
|
-
expect(await this.confirmbutton.textContent()).toEqual('Yes, delete');
|
|
100
|
+
test.expect(await this.confirmbutton.textContent()).toEqual('Yes, delete');
|
|
98
101
|
await this.confirmbutton.click();
|
|
99
102
|
}
|
|
100
103
|
async sendScheduledMessage(messageContent) {
|
|
@@ -102,7 +105,10 @@ export default class DraftPage {
|
|
|
102
105
|
await this.scheduledDraftPanel(messageContent).hover();
|
|
103
106
|
await this.verifySendNowIcon();
|
|
104
107
|
await this.scheduledDraftSendNowButton.click();
|
|
105
|
-
expect(await this.confirmbutton.textContent()).toEqual('Yes, send now');
|
|
108
|
+
test.expect(await this.confirmbutton.textContent()).toEqual('Yes, send now');
|
|
106
109
|
await this.confirmbutton.click();
|
|
107
110
|
}
|
|
108
111
|
}
|
|
112
|
+
|
|
113
|
+
module.exports = DraftPage;
|
|
114
|
+
//# sourceMappingURL=drafts.js.map
|
package/dist/ui/pages/index.js
CHANGED
|
@@ -1,21 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var channels = require('./channels.js');
|
|
4
|
+
var landing_login = require('./landing_login.js');
|
|
5
|
+
var login = require('./login.js');
|
|
6
|
+
var reset_password = require('./reset_password.js');
|
|
7
|
+
var signup = require('./signup.js');
|
|
8
|
+
var system_console = require('./system_console.js');
|
|
9
|
+
var scheduled_draft = require('./scheduled_draft.js');
|
|
10
|
+
var drafts = require('./drafts.js');
|
|
11
|
+
|
|
1
12
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
13
|
// See LICENSE.txt for license information.
|
|
3
|
-
import ChannelsPage from './channels';
|
|
4
|
-
import LandingLoginPage from './landing_login';
|
|
5
|
-
import LoginPage from './login';
|
|
6
|
-
import ResetPasswordPage from './reset_password';
|
|
7
|
-
import SignupPage from './signup';
|
|
8
|
-
import SystemConsolePage from './system_console';
|
|
9
|
-
import ScheduledDraftPage from './scheduled_draft';
|
|
10
|
-
import DraftPage from './drafts';
|
|
11
14
|
const pages = {
|
|
12
|
-
ChannelsPage,
|
|
13
|
-
LandingLoginPage,
|
|
14
|
-
LoginPage,
|
|
15
|
-
ResetPasswordPage,
|
|
16
|
-
SignupPage,
|
|
17
|
-
ScheduledDraftPage,
|
|
18
|
-
SystemConsolePage,
|
|
19
|
-
DraftPage,
|
|
15
|
+
ChannelsPage: channels,
|
|
16
|
+
LandingLoginPage: landing_login,
|
|
17
|
+
LoginPage: login,
|
|
18
|
+
ResetPasswordPage: reset_password,
|
|
19
|
+
SignupPage: signup,
|
|
20
|
+
ScheduledDraftPage: scheduled_draft,
|
|
21
|
+
SystemConsolePage: system_console,
|
|
22
|
+
DraftPage: drafts,
|
|
20
23
|
};
|
|
21
|
-
|
|
24
|
+
|
|
25
|
+
exports.ChannelsPage = channels;
|
|
26
|
+
exports.LandingLoginPage = landing_login;
|
|
27
|
+
exports.LoginPage = login;
|
|
28
|
+
exports.ResetPasswordPage = reset_password;
|
|
29
|
+
exports.SignupPage = signup;
|
|
30
|
+
exports.SystemConsolePage = system_console;
|
|
31
|
+
exports.ScheduledDraftPage = scheduled_draft;
|
|
32
|
+
exports.DraftPage = drafts;
|
|
33
|
+
exports.pages = pages;
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
export default class LandingLoginPage {
|
|
7
|
+
class LandingLoginPage {
|
|
5
8
|
page;
|
|
6
9
|
isMobile;
|
|
7
10
|
viewInAppButton;
|
|
@@ -17,14 +20,17 @@ export default class LandingLoginPage {
|
|
|
17
20
|
async toBeVisible() {
|
|
18
21
|
await this.page.waitForLoadState('networkidle');
|
|
19
22
|
if (this.isMobile) {
|
|
20
|
-
await expect(this.viewInAppButton).toBeVisible();
|
|
23
|
+
await test.expect(this.viewInAppButton).toBeVisible();
|
|
21
24
|
}
|
|
22
25
|
else {
|
|
23
|
-
await expect(this.viewInDesktopAppButton).toBeVisible();
|
|
26
|
+
await test.expect(this.viewInDesktopAppButton).toBeVisible();
|
|
24
27
|
}
|
|
25
|
-
await expect(this.viewInBrowserButton).toBeVisible();
|
|
28
|
+
await test.expect(this.viewInBrowserButton).toBeVisible();
|
|
26
29
|
}
|
|
27
30
|
async goto() {
|
|
28
31
|
await this.page.goto('/landing#/login');
|
|
29
32
|
}
|
|
30
33
|
}
|
|
34
|
+
|
|
35
|
+
module.exports = LandingLoginPage;
|
|
36
|
+
//# sourceMappingURL=landing_login.js.map
|
package/dist/ui/pages/login.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
var index = require('../components/index.js');
|
|
5
|
+
|
|
1
6
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
7
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
import { components } from '@/ui/components';
|
|
5
|
-
export default class LoginPage {
|
|
8
|
+
class LoginPage {
|
|
6
9
|
page;
|
|
7
10
|
title;
|
|
8
11
|
subtitle;
|
|
@@ -36,14 +39,14 @@ export default class LoginPage {
|
|
|
36
39
|
this.userErrorLabel = page.locator('text=Please enter your email or username');
|
|
37
40
|
this.fieldWithError = page.locator('.with-error');
|
|
38
41
|
this.formContainer = page.locator('.signup-team__container');
|
|
39
|
-
this.header = new components.MainHeader(page.locator('.hfroute-header'));
|
|
40
|
-
this.footer = new components.Footer(page.locator('.hfroute-footer'));
|
|
42
|
+
this.header = new index.components.MainHeader(page.locator('.hfroute-header'));
|
|
43
|
+
this.footer = new index.components.Footer(page.locator('.hfroute-footer'));
|
|
41
44
|
}
|
|
42
45
|
async toBeVisible() {
|
|
43
46
|
await this.page.waitForLoadState('networkidle');
|
|
44
|
-
await expect(this.title).toBeVisible();
|
|
45
|
-
await expect(this.loginInput).toBeVisible();
|
|
46
|
-
await expect(this.passwordInput).toBeVisible();
|
|
47
|
+
await test.expect(this.title).toBeVisible();
|
|
48
|
+
await test.expect(this.loginInput).toBeVisible();
|
|
49
|
+
await test.expect(this.passwordInput).toBeVisible();
|
|
47
50
|
}
|
|
48
51
|
async goto() {
|
|
49
52
|
await this.page.goto('/login');
|
|
@@ -54,3 +57,6 @@ export default class LoginPage {
|
|
|
54
57
|
await Promise.all([this.page.waitForNavigation(), this.signInButton.click()]);
|
|
55
58
|
}
|
|
56
59
|
}
|
|
60
|
+
|
|
61
|
+
module.exports = LoginPage;
|
|
62
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
var index = require('../components/index.js');
|
|
5
|
+
|
|
1
6
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
7
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
import { components } from '@/ui/components';
|
|
5
|
-
export default class ResetPasswordPage {
|
|
8
|
+
class ResetPasswordPage {
|
|
6
9
|
page;
|
|
7
10
|
title;
|
|
8
11
|
subtitle;
|
|
@@ -18,15 +21,15 @@ export default class ResetPasswordPage {
|
|
|
18
21
|
this.emailInput = page.locator(`[placeholder="Email"]`);
|
|
19
22
|
this.resetButton = page.locator('#passwordResetButton');
|
|
20
23
|
this.formContainer = page.locator('.signup-team__container');
|
|
21
|
-
this.header = new components.MainHeader(page.locator('.signup-header'));
|
|
22
|
-
this.footer = new components.Footer(page.locator('#footer_section'));
|
|
24
|
+
this.header = new index.components.MainHeader(page.locator('.signup-header'));
|
|
25
|
+
this.footer = new index.components.Footer(page.locator('#footer_section'));
|
|
23
26
|
}
|
|
24
27
|
async toBeVisible() {
|
|
25
28
|
await this.page.waitForLoadState('networkidle');
|
|
26
|
-
await expect(this.title).toBeVisible();
|
|
27
|
-
await expect(this.subtitle).toBeVisible();
|
|
28
|
-
await expect(this.emailInput).toBeVisible();
|
|
29
|
-
await expect(this.resetButton).toBeVisible();
|
|
29
|
+
await test.expect(this.title).toBeVisible();
|
|
30
|
+
await test.expect(this.subtitle).toBeVisible();
|
|
31
|
+
await test.expect(this.emailInput).toBeVisible();
|
|
32
|
+
await test.expect(this.resetButton).toBeVisible();
|
|
30
33
|
}
|
|
31
34
|
async goto() {
|
|
32
35
|
await this.page.goto('/reset_password');
|
|
@@ -36,3 +39,6 @@ export default class ResetPasswordPage {
|
|
|
36
39
|
await Promise.all([this.page.waitForNavigation(), this.resetButton.click()]);
|
|
37
40
|
}
|
|
38
41
|
}
|
|
42
|
+
|
|
43
|
+
module.exports = ResetPasswordPage;
|
|
44
|
+
//# sourceMappingURL=reset_password.js.map
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('@playwright/test');
|
|
4
|
+
|
|
1
5
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
2
6
|
// See LICENSE.txt for license information.
|
|
3
|
-
|
|
4
|
-
export default class ScheduledDraftPage {
|
|
7
|
+
class ScheduledDraftPage {
|
|
5
8
|
page;
|
|
6
9
|
badgeCountOnScheduledTab;
|
|
7
10
|
confirmbutton;
|
|
@@ -45,15 +48,15 @@ export default class ScheduledDraftPage {
|
|
|
45
48
|
}
|
|
46
49
|
async toBeVisible() {
|
|
47
50
|
await this.page.waitForLoadState('networkidle');
|
|
48
|
-
await expect(this.page).toHaveURL(/.*scheduled_posts/);
|
|
51
|
+
await test.expect(this.page).toHaveURL(/.*scheduled_posts/);
|
|
49
52
|
}
|
|
50
53
|
async assertBadgeCountOnTab(badgeCount) {
|
|
51
54
|
await this.badgeCountOnScheduledTab.isVisible();
|
|
52
|
-
await expect(this.badgeCountOnScheduledTab).toHaveText(badgeCount);
|
|
55
|
+
await test.expect(this.badgeCountOnScheduledTab).toHaveText(badgeCount);
|
|
53
56
|
}
|
|
54
57
|
async assertscheduledDraftBody(draftMessage) {
|
|
55
|
-
await expect(this.scheduledDraftBody).toBeVisible();
|
|
56
|
-
await expect(this.scheduledDraftBody).toHaveText(draftMessage);
|
|
58
|
+
await test.expect(this.scheduledDraftBody).toBeVisible();
|
|
59
|
+
await test.expect(this.scheduledDraftBody).toHaveText(draftMessage);
|
|
57
60
|
}
|
|
58
61
|
async verifyOnHoverActionItems(messageContent) {
|
|
59
62
|
await this.scheduledDraftPanel(messageContent).isVisible();
|
|
@@ -66,26 +69,26 @@ export default class ScheduledDraftPage {
|
|
|
66
69
|
async verifyDeleteIcon() {
|
|
67
70
|
await this.deleteIcon.isVisible();
|
|
68
71
|
await this.deleteIcon.hover();
|
|
69
|
-
await expect(this.deleteIconToolTip).toBeVisible();
|
|
70
|
-
await expect(this.deleteIconToolTip).toHaveText('Delete scheduled post');
|
|
72
|
+
await test.expect(this.deleteIconToolTip).toBeVisible();
|
|
73
|
+
await test.expect(this.deleteIconToolTip).toHaveText('Delete scheduled post');
|
|
71
74
|
}
|
|
72
75
|
async verifyCopyIcon() {
|
|
73
76
|
await this.copyIcon.isVisible();
|
|
74
77
|
await this.copyIcon.hover();
|
|
75
|
-
await expect(this.copyIconToolTip).toBeVisible();
|
|
76
|
-
await expect(this.copyIconToolTip).toHaveText('Copy text');
|
|
78
|
+
await test.expect(this.copyIconToolTip).toBeVisible();
|
|
79
|
+
await test.expect(this.copyIconToolTip).toHaveText('Copy text');
|
|
77
80
|
}
|
|
78
81
|
async verifyRescheduleIcon() {
|
|
79
|
-
await expect(this.rescheduleIcon).toBeVisible();
|
|
82
|
+
await test.expect(this.rescheduleIcon).toBeVisible();
|
|
80
83
|
await this.rescheduleIcon.hover();
|
|
81
|
-
await expect(this.rescheduleIconToolTip).toBeVisible();
|
|
82
|
-
await expect(this.rescheduleIconToolTip).toHaveText('Reschedule post');
|
|
84
|
+
await test.expect(this.rescheduleIconToolTip).toBeVisible();
|
|
85
|
+
await test.expect(this.rescheduleIconToolTip).toHaveText('Reschedule post');
|
|
83
86
|
}
|
|
84
87
|
async verifySendNowIcon() {
|
|
85
88
|
await this.scheduledDraftSendNowButton.isVisible();
|
|
86
89
|
await this.scheduledDraftSendNowButton.hover();
|
|
87
|
-
await expect(this.scheduledDraftSendNowButtonToolTip).toBeVisible();
|
|
88
|
-
await expect(this.scheduledDraftSendNowButtonToolTip).toHaveText('Send now');
|
|
90
|
+
await test.expect(this.scheduledDraftSendNowButtonToolTip).toBeVisible();
|
|
91
|
+
await test.expect(this.scheduledDraftSendNowButtonToolTip).toHaveText('Send now');
|
|
89
92
|
}
|
|
90
93
|
async getTimeStampOfMessage(messageContent) {
|
|
91
94
|
await this.scheduledDraftPanel(messageContent).scrollIntoViewIfNeeded();
|
|
@@ -97,8 +100,8 @@ export default class ScheduledDraftPage {
|
|
|
97
100
|
await this.scheduledDraftPanel(messageContent).isVisible();
|
|
98
101
|
await this.scheduledDraftPanel(messageContent).hover();
|
|
99
102
|
await this.rescheduleIcon.hover();
|
|
100
|
-
await expect(this.rescheduleIconToolTip).toBeVisible();
|
|
101
|
-
await expect(this.rescheduleIconToolTip).toHaveText('Reschedule post');
|
|
103
|
+
await test.expect(this.rescheduleIconToolTip).toBeVisible();
|
|
104
|
+
await test.expect(this.rescheduleIconToolTip).toHaveText('Reschedule post');
|
|
102
105
|
await this.rescheduleIcon.click();
|
|
103
106
|
}
|
|
104
107
|
async deleteScheduledMessage(messageContent) {
|
|
@@ -106,7 +109,7 @@ export default class ScheduledDraftPage {
|
|
|
106
109
|
await this.scheduledDraftPanel(messageContent).hover();
|
|
107
110
|
await this.verifyDeleteIcon();
|
|
108
111
|
await this.deleteIcon.click();
|
|
109
|
-
expect(await this.confirmbutton.textContent()).toEqual('Yes, delete');
|
|
112
|
+
test.expect(await this.confirmbutton.textContent()).toEqual('Yes, delete');
|
|
110
113
|
await this.confirmbutton.click();
|
|
111
114
|
}
|
|
112
115
|
async sendScheduledMessage(messageContent) {
|
|
@@ -114,7 +117,7 @@ export default class ScheduledDraftPage {
|
|
|
114
117
|
await this.scheduledDraftPanel(messageContent).hover();
|
|
115
118
|
await this.verifySendNowIcon();
|
|
116
119
|
await this.scheduledDraftSendNowButton.click();
|
|
117
|
-
expect(await this.confirmbutton.textContent()).toEqual('Yes, send now');
|
|
120
|
+
test.expect(await this.confirmbutton.textContent()).toEqual('Yes, send now');
|
|
118
121
|
await this.confirmbutton.click();
|
|
119
122
|
}
|
|
120
123
|
async goTo(teamName) {
|
|
@@ -136,3 +139,6 @@ export default class ScheduledDraftPage {
|
|
|
136
139
|
await this.copyIcon.click();
|
|
137
140
|
}
|
|
138
141
|
}
|
|
142
|
+
|
|
143
|
+
module.exports = ScheduledDraftPage;
|
|
144
|
+
//# sourceMappingURL=scheduled_draft.js.map
|