@mattermost/playwright-lib 10.6.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.
Files changed (203) hide show
  1. package/README.md +214 -0
  2. package/dist/asset/mattermost-icon_128x128.png +0 -0
  3. package/dist/browser_context.d.ts +17 -0
  4. package/dist/browser_context.js +71 -0
  5. package/dist/browser_context.js.map +1 -0
  6. package/dist/constant.d.ts +3 -0
  7. package/dist/constant.js +8 -0
  8. package/dist/constant.js.map +1 -0
  9. package/dist/file.d.ts +42 -0
  10. package/dist/file.js +74 -0
  11. package/dist/file.js.map +1 -0
  12. package/dist/flag.d.ts +7 -0
  13. package/dist/flag.js +76 -0
  14. package/dist/flag.js.map +1 -0
  15. package/dist/global_setup.d.ts +3 -0
  16. package/dist/global_setup.js +173 -0
  17. package/dist/global_setup.js.map +1 -0
  18. package/dist/index.d.ts +9 -0
  19. package/dist/index.js +47 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/mock_browser_api.d.ts +31 -0
  22. package/dist/mock_browser_api.js +71 -0
  23. package/dist/mock_browser_api.js.map +1 -0
  24. package/dist/server/channel.d.ts +12 -0
  25. package/dist/server/channel.js +25 -0
  26. package/dist/server/channel.js.map +1 -0
  27. package/dist/server/client.d.ts +16 -0
  28. package/dist/server/client.js +39 -0
  29. package/dist/server/client.js.map +1 -0
  30. package/dist/server/default_config.d.ts +2 -0
  31. package/dist/server/default_config.js +755 -0
  32. package/dist/server/default_config.js.map +1 -0
  33. package/dist/server/index.d.ts +7 -0
  34. package/dist/server/init.d.ts +23 -0
  35. package/dist/server/init.js +73 -0
  36. package/dist/server/init.js.map +1 -0
  37. package/dist/server/post.d.ts +2 -0
  38. package/dist/server/post.js +31 -0
  39. package/dist/server/post.js.map +1 -0
  40. package/dist/server/team.d.ts +2 -0
  41. package/dist/server/team.js +18 -0
  42. package/dist/server/team.js.map +1 -0
  43. package/dist/server/user.d.ts +3 -0
  44. package/dist/server/user.js +33 -0
  45. package/dist/server/user.js.map +1 -0
  46. package/dist/test_action.d.ts +4 -0
  47. package/dist/test_action.js +24 -0
  48. package/dist/test_action.js.map +1 -0
  49. package/dist/test_config.d.ts +20 -0
  50. package/dist/test_config.js +82 -0
  51. package/dist/test_config.js.map +1 -0
  52. package/dist/test_fixture.d.ts +72 -0
  53. package/dist/test_fixture.js +172 -0
  54. package/dist/test_fixture.js.map +1 -0
  55. package/dist/types.d.ts +91 -0
  56. package/dist/ui/components/channels/app_bar.d.ts +7 -0
  57. package/dist/ui/components/channels/app_bar.js +20 -0
  58. package/dist/ui/components/channels/app_bar.js.map +1 -0
  59. package/dist/ui/components/channels/center_view.d.ts +52 -0
  60. package/dist/ui/components/channels/center_view.js +124 -0
  61. package/dist/ui/components/channels/center_view.js.map +1 -0
  62. package/dist/ui/components/channels/delete_post_confirmation_dialog.d.ts +11 -0
  63. package/dist/ui/components/channels/delete_post_confirmation_dialog.js +35 -0
  64. package/dist/ui/components/channels/delete_post_confirmation_dialog.js.map +1 -0
  65. package/dist/ui/components/channels/delete_post_modal.d.ts +8 -0
  66. package/dist/ui/components/channels/delete_post_modal.js +26 -0
  67. package/dist/ui/components/channels/delete_post_modal.js.map +1 -0
  68. package/dist/ui/components/channels/emoji_gif_picker.d.ts +16 -0
  69. package/dist/ui/components/channels/emoji_gif_picker.js +50 -0
  70. package/dist/ui/components/channels/emoji_gif_picker.js.map +1 -0
  71. package/dist/ui/components/channels/find_channels_modal.d.ts +8 -0
  72. package/dist/ui/components/channels/find_channels_modal.js +22 -0
  73. package/dist/ui/components/channels/find_channels_modal.js.map +1 -0
  74. package/dist/ui/components/channels/generic_confirm_modal.d.ts +16 -0
  75. package/dist/ui/components/channels/generic_confirm_modal.js +40 -0
  76. package/dist/ui/components/channels/generic_confirm_modal.js.map +1 -0
  77. package/dist/ui/components/channels/header.d.ts +6 -0
  78. package/dist/ui/components/channels/header.js +18 -0
  79. package/dist/ui/components/channels/header.js.map +1 -0
  80. package/dist/ui/components/channels/message_priority.d.ts +18 -0
  81. package/dist/ui/components/channels/message_priority.js +66 -0
  82. package/dist/ui/components/channels/message_priority.js.map +1 -0
  83. package/dist/ui/components/channels/post.d.ts +29 -0
  84. package/dist/ui/components/channels/post.js +63 -0
  85. package/dist/ui/components/channels/post.js.map +1 -0
  86. package/dist/ui/components/channels/post_create.d.ts +41 -0
  87. package/dist/ui/components/channels/post_create.js +118 -0
  88. package/dist/ui/components/channels/post_create.js.map +1 -0
  89. package/dist/ui/components/channels/post_dot_menu.d.ts +20 -0
  90. package/dist/ui/components/channels/post_dot_menu.js +47 -0
  91. package/dist/ui/components/channels/post_dot_menu.js.map +1 -0
  92. package/dist/ui/components/channels/post_edit.d.ts +21 -0
  93. package/dist/ui/components/channels/post_edit.js +76 -0
  94. package/dist/ui/components/channels/post_edit.js.map +1 -0
  95. package/dist/ui/components/channels/post_menu.d.ts +26 -0
  96. package/dist/ui/components/channels/post_menu.js +54 -0
  97. package/dist/ui/components/channels/post_menu.js.map +1 -0
  98. package/dist/ui/components/channels/post_reminder_menu.d.ts +11 -0
  99. package/dist/ui/components/channels/post_reminder_menu.js +29 -0
  100. package/dist/ui/components/channels/post_reminder_menu.js.map +1 -0
  101. package/dist/ui/components/channels/restore_post_confirmation_dialog.d.ts +10 -0
  102. package/dist/ui/components/channels/restore_post_confirmation_dialog.js +30 -0
  103. package/dist/ui/components/channels/restore_post_confirmation_dialog.js.map +1 -0
  104. package/dist/ui/components/channels/scheduled_draft_menu.d.ts +8 -0
  105. package/dist/ui/components/channels/scheduled_draft_menu.js +23 -0
  106. package/dist/ui/components/channels/scheduled_draft_menu.js.map +1 -0
  107. package/dist/ui/components/channels/scheduled_draft_modal.d.ts +20 -0
  108. package/dist/ui/components/channels/scheduled_draft_modal.js +84 -0
  109. package/dist/ui/components/channels/scheduled_draft_modal.js.map +1 -0
  110. package/dist/ui/components/channels/search_popover.d.ts +15 -0
  111. package/dist/ui/components/channels/search_popover.js +43 -0
  112. package/dist/ui/components/channels/search_popover.js.map +1 -0
  113. package/dist/ui/components/channels/settings/notification_settings.d.ts +13 -0
  114. package/dist/ui/components/channels/settings/notification_settings.js +41 -0
  115. package/dist/ui/components/channels/settings/notification_settings.js.map +1 -0
  116. package/dist/ui/components/channels/settings/settings_modal.d.ts +11 -0
  117. package/dist/ui/components/channels/settings/settings_modal.js +32 -0
  118. package/dist/ui/components/channels/settings/settings_modal.js.map +1 -0
  119. package/dist/ui/components/channels/sidebar_left.d.ts +24 -0
  120. package/dist/ui/components/channels/sidebar_left.js +54 -0
  121. package/dist/ui/components/channels/sidebar_left.js.map +1 -0
  122. package/dist/ui/components/channels/sidebar_right.d.ts +38 -0
  123. package/dist/ui/components/channels/sidebar_right.js +87 -0
  124. package/dist/ui/components/channels/sidebar_right.js.map +1 -0
  125. package/dist/ui/components/channels/thread_footer.d.ts +11 -0
  126. package/dist/ui/components/channels/thread_footer.js +27 -0
  127. package/dist/ui/components/channels/thread_footer.js.map +1 -0
  128. package/dist/ui/components/channels/user_profile_popover.d.ts +7 -0
  129. package/dist/ui/components/channels/user_profile_popover.js +21 -0
  130. package/dist/ui/components/channels/user_profile_popover.js.map +1 -0
  131. package/dist/ui/components/footer.d.ts +11 -0
  132. package/dist/ui/components/footer.js +28 -0
  133. package/dist/ui/components/footer.js.map +1 -0
  134. package/dist/ui/components/global_header.d.ts +15 -0
  135. package/dist/ui/components/global_header.js +46 -0
  136. package/dist/ui/components/global_header.js.map +1 -0
  137. package/dist/ui/components/index.d.ts +73 -0
  138. package/dist/ui/components/index.js +77 -0
  139. package/dist/ui/components/index.js.map +1 -0
  140. package/dist/ui/components/main_header.d.ts +8 -0
  141. package/dist/ui/components/main_header.js +22 -0
  142. package/dist/ui/components/main_header.js.map +1 -0
  143. package/dist/ui/components/system_console/navbar.d.ts +6 -0
  144. package/dist/ui/components/system_console/navbar.js +18 -0
  145. package/dist/ui/components/system_console/navbar.js.map +1 -0
  146. package/dist/ui/components/system_console/sections/system_users/column_toggle_menu.d.ts +22 -0
  147. package/dist/ui/components/system_console/sections/system_users/column_toggle_menu.js +47 -0
  148. package/dist/ui/components/system_console/sections/system_users/column_toggle_menu.js.map +1 -0
  149. package/dist/ui/components/system_console/sections/system_users/feature_discovery.d.ts +10 -0
  150. package/dist/ui/components/system_console/sections/system_users/feature_discovery.js +24 -0
  151. package/dist/ui/components/system_console/sections/system_users/feature_discovery.js.map +1 -0
  152. package/dist/ui/components/system_console/sections/system_users/filter_menu.d.ts +21 -0
  153. package/dist/ui/components/system_console/sections/system_users/filter_menu.js +42 -0
  154. package/dist/ui/components/system_console/sections/system_users/filter_menu.js.map +1 -0
  155. package/dist/ui/components/system_console/sections/system_users/filter_popover.d.ts +30 -0
  156. package/dist/ui/components/system_console/sections/system_users/filter_popover.js +61 -0
  157. package/dist/ui/components/system_console/sections/system_users/filter_popover.js.map +1 -0
  158. package/dist/ui/components/system_console/sections/system_users/mobile_security.d.ts +23 -0
  159. package/dist/ui/components/system_console/sections/system_users/mobile_security.js +56 -0
  160. package/dist/ui/components/system_console/sections/system_users/mobile_security.js.map +1 -0
  161. package/dist/ui/components/system_console/sections/system_users/system_users.d.ts +58 -0
  162. package/dist/ui/components/system_console/sections/system_users/system_users.js +114 -0
  163. package/dist/ui/components/system_console/sections/system_users/system_users.js.map +1 -0
  164. package/dist/ui/components/system_console/sidebar.d.ts +17 -0
  165. package/dist/ui/components/system_console/sidebar.js +37 -0
  166. package/dist/ui/components/system_console/sidebar.js.map +1 -0
  167. package/dist/ui/pages/channels.d.ts +31 -0
  168. package/dist/ui/pages/channels.js +79 -0
  169. package/dist/ui/pages/channels.js.map +1 -0
  170. package/dist/ui/pages/drafts.d.ts +30 -0
  171. package/dist/ui/pages/drafts.js +114 -0
  172. package/dist/ui/pages/drafts.js.map +1 -0
  173. package/dist/ui/pages/index.d.ts +19 -0
  174. package/dist/ui/pages/index.js +34 -0
  175. package/dist/ui/pages/index.js.map +1 -0
  176. package/dist/ui/pages/landing_login.d.ts +11 -0
  177. package/dist/ui/pages/landing_login.js +36 -0
  178. package/dist/ui/pages/landing_login.js.map +1 -0
  179. package/dist/ui/pages/login.d.ts +25 -0
  180. package/dist/ui/pages/login.js +62 -0
  181. package/dist/ui/pages/login.js.map +1 -0
  182. package/dist/ui/pages/reset_password.d.ts +15 -0
  183. package/dist/ui/pages/reset_password.js +44 -0
  184. package/dist/ui/pages/reset_password.js.map +1 -0
  185. package/dist/ui/pages/scheduled_draft.d.ts +38 -0
  186. package/dist/ui/pages/scheduled_draft.js +144 -0
  187. package/dist/ui/pages/scheduled_draft.js.map +1 -0
  188. package/dist/ui/pages/signup.d.ts +31 -0
  189. package/dist/ui/pages/signup.js +78 -0
  190. package/dist/ui/pages/signup.js.map +1 -0
  191. package/dist/ui/pages/system_console.d.ts +26 -0
  192. package/dist/ui/pages/system_console.js +64 -0
  193. package/dist/ui/pages/system_console.js.map +1 -0
  194. package/dist/util.d.ts +29 -0
  195. package/dist/util.js +51 -0
  196. package/dist/util.js.map +1 -0
  197. package/dist/visual/index.d.ts +3 -0
  198. package/dist/visual/index.js +37 -0
  199. package/dist/visual/index.js.map +1 -0
  200. package/dist/visual/percy.d.ts +2 -0
  201. package/dist/visual/percy.js +23 -0
  202. package/dist/visual/percy.js.map +1 -0
  203. package/package.json +68 -0
@@ -0,0 +1,8 @@
1
+ import { Locator } from '@playwright/test';
2
+ export default class MainHeader {
3
+ readonly container: Locator;
4
+ readonly logo: Locator;
5
+ readonly backButton: Locator;
6
+ constructor(container: Locator);
7
+ toBeVisible(): Promise<void>;
8
+ }
@@ -0,0 +1,22 @@
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 MainHeader {
8
+ container;
9
+ logo;
10
+ backButton;
11
+ constructor(container) {
12
+ this.container = container;
13
+ this.logo = container.locator('.header-logo-link');
14
+ this.backButton = container.getByTestId('back_button');
15
+ }
16
+ async toBeVisible() {
17
+ await test.expect(this.container).toBeVisible();
18
+ }
19
+ }
20
+
21
+ module.exports = MainHeader;
22
+ //# sourceMappingURL=main_header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main_header.js","sources":["../../../src/ui/components/main_header.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 MainHeader {\n readonly container: Locator;\n\n readonly logo;\n readonly backButton;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.logo = container.locator('.header-logo-link');\n this.backButton = container.getByTestId('back_button');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,UAAU,CAAA;AAClB,IAAA,SAAS;AAET,IAAA,IAAI;AACJ,IAAA,UAAU;AAEnB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC;;AAG1D,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;AAEjD;;;;"}
@@ -0,0 +1,6 @@
1
+ import { Locator } from '@playwright/test';
2
+ export default class SystemConsoleNavbar {
3
+ readonly container: Locator;
4
+ constructor(container: Locator);
5
+ toBeVisible(): Promise<void>;
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 SystemConsoleNavbar {
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 = SystemConsoleNavbar;
18
+ //# sourceMappingURL=navbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbar.js","sources":["../../../../src/ui/components/system_console/navbar.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 SystemConsoleNavbar {\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,mBAAmB,CAAA;AAC3B,IAAA,SAAS;AAElB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG9B,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;AAEjD;;;;"}
@@ -0,0 +1,22 @@
1
+ import { Locator } from '@playwright/test';
2
+ export default class SystemUsersColumnToggleMenu {
3
+ readonly container: Locator;
4
+ constructor(container: Locator);
5
+ toBeVisible(): Promise<void>;
6
+ /**
7
+ * Return the locator for the menu item with the given name.
8
+ */
9
+ getMenuItem(menuItem: string): Promise<Locator>;
10
+ /**
11
+ * Returns the list of locators for all the menu items.
12
+ */
13
+ getAllMenuItems(): Promise<Locator>;
14
+ /**
15
+ * Pass in the item name to check/uncheck the menu item.
16
+ */
17
+ clickMenuItem(menuItem: string): Promise<void>;
18
+ /**
19
+ * Close column toggle menu.
20
+ */
21
+ close(): Promise<void>;
22
+ }
@@ -0,0 +1,47 @@
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 SystemUsersColumnToggleMenu {
8
+ container;
9
+ constructor(container) {
10
+ this.container = container;
11
+ }
12
+ async toBeVisible() {
13
+ await test.expect(this.container).toBeVisible();
14
+ }
15
+ /**
16
+ * Return the locator for the menu item with the given name.
17
+ */
18
+ async getMenuItem(menuItem) {
19
+ const menuItemLocator = this.container.getByRole('menuitemcheckbox').filter({ hasText: menuItem });
20
+ await menuItemLocator.waitFor();
21
+ return menuItemLocator;
22
+ }
23
+ /**
24
+ * Returns the list of locators for all the menu items.
25
+ */
26
+ async getAllMenuItems() {
27
+ const menuItemLocators = this.container.getByRole('menuitemcheckbox');
28
+ return menuItemLocators;
29
+ }
30
+ /**
31
+ * Pass in the item name to check/uncheck the menu item.
32
+ */
33
+ async clickMenuItem(menuItem) {
34
+ const menuItemLocator = await this.getMenuItem(menuItem);
35
+ await menuItemLocator.click();
36
+ }
37
+ /**
38
+ * Close column toggle menu.
39
+ */
40
+ async close() {
41
+ await this.container.press('Escape');
42
+ await test.expect(this.container).not.toBeVisible();
43
+ }
44
+ }
45
+
46
+ module.exports = SystemUsersColumnToggleMenu;
47
+ //# sourceMappingURL=column_toggle_menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column_toggle_menu.js","sources":["../../../../../../src/ui/components/system_console/sections/system_users/column_toggle_menu.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 SystemUsersColumnToggleMenu {\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 /**\n * Return the locator for the menu item with the given name.\n */\n async getMenuItem(menuItem: string) {\n const menuItemLocator = this.container.getByRole('menuitemcheckbox').filter({hasText: menuItem});\n await menuItemLocator.waitFor();\n\n return menuItemLocator;\n }\n\n /**\n * Returns the list of locators for all the menu items.\n */\n async getAllMenuItems() {\n const menuItemLocators = this.container.getByRole('menuitemcheckbox');\n return menuItemLocators;\n }\n\n /**\n * Pass in the item name to check/uncheck the menu item.\n */\n async clickMenuItem(menuItem: string) {\n const menuItemLocator = await this.getMenuItem(menuItem);\n await menuItemLocator.click();\n }\n\n /**\n * Close column toggle menu.\n */\n async close() {\n await this.container.press('Escape');\n await expect(this.container).not.toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,2BAA2B,CAAA;AACnC,IAAA,SAAS;AAElB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG9B,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;AAG9C;;AAEG;IACH,MAAM,WAAW,CAAC,QAAgB,EAAA;AAC9B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;AAChG,QAAA,MAAM,eAAe,CAAC,OAAO,EAAE;AAE/B,QAAA,OAAO,eAAe;;AAG1B;;AAEG;AACH,IAAA,MAAM,eAAe,GAAA;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC;AACrE,QAAA,OAAO,gBAAgB;;AAG3B;;AAEG;IACH,MAAM,aAAa,CAAC,QAAgB,EAAA;QAChC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxD,QAAA,MAAM,eAAe,CAAC,KAAK,EAAE;;AAGjC;;AAEG;AACH,IAAA,MAAM,KAAK,GAAA;QACP,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;;AAErD;;;;"}
@@ -0,0 +1,10 @@
1
+ import { Locator } from '@playwright/test';
2
+ /**
3
+ * System Console -> Feature Discovery
4
+ */
5
+ export default class FeatureDiscovery {
6
+ readonly container: Locator;
7
+ constructor(container: Locator);
8
+ toBeVisible(): Promise<void>;
9
+ toHaveTitle(title: string): Promise<void>;
10
+ }
@@ -0,0 +1,24 @@
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
+ /**
8
+ * System Console -> Feature Discovery
9
+ */
10
+ class FeatureDiscovery {
11
+ container;
12
+ constructor(container) {
13
+ this.container = container;
14
+ }
15
+ async toBeVisible() {
16
+ await test.expect(this.container).toBeVisible();
17
+ }
18
+ async toHaveTitle(title) {
19
+ await test.expect(this.container.getByTestId('featureDiscovery_title')).toHaveText(title);
20
+ }
21
+ }
22
+
23
+ module.exports = FeatureDiscovery;
24
+ //# sourceMappingURL=feature_discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature_discovery.js","sources":["../../../../../../src/ui/components/system_console/sections/system_users/feature_discovery.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {expect, Locator} from '@playwright/test';\n\n/**\n * System Console -> Feature Discovery\n */\nexport default class FeatureDiscovery {\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 toHaveTitle(title: string) {\n await expect(this.container.getByTestId('featureDiscovery_title')).toHaveText(title);\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIA;;AAEG;AACW,MAAO,gBAAgB,CAAA;AACxB,IAAA,SAAS;AAElB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG9B,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;IAG9C,MAAM,WAAW,CAAC,KAAa,EAAA;AAC3B,QAAA,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;;AAE3F;;;;"}
@@ -0,0 +1,21 @@
1
+ import { Locator } from '@playwright/test';
2
+ /**
3
+ * The dropdown menu which appears for both Role and Status filter.
4
+ */
5
+ export default class SystemUsersFilterMenu {
6
+ readonly container: Locator;
7
+ constructor(container: Locator);
8
+ toBeVisible(): Promise<void>;
9
+ /**
10
+ * Return the locator for the menu item with the given name.
11
+ */
12
+ getMenuItem(menuItem: string): Promise<Locator>;
13
+ /**
14
+ * Clicks on the menu item with the given name.
15
+ */
16
+ clickMenuItem(menuItem: string): Promise<void>;
17
+ /**
18
+ * Close the menu.
19
+ */
20
+ close(): Promise<void>;
21
+ }
@@ -0,0 +1,42 @@
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
+ /**
8
+ * The dropdown menu which appears for both Role and Status filter.
9
+ */
10
+ class SystemUsersFilterMenu {
11
+ container;
12
+ constructor(container) {
13
+ this.container = container;
14
+ }
15
+ async toBeVisible() {
16
+ await test.expect(this.container).toBeVisible();
17
+ }
18
+ /**
19
+ * Return the locator for the menu item with the given name.
20
+ */
21
+ async getMenuItem(menuItem) {
22
+ const menuItemLocator = this.container.getByText(menuItem);
23
+ await menuItemLocator.waitFor();
24
+ return menuItemLocator;
25
+ }
26
+ /**
27
+ * Clicks on the menu item with the given name.
28
+ */
29
+ async clickMenuItem(menuItem) {
30
+ const menuItemLocator = await this.getMenuItem(menuItem);
31
+ await menuItemLocator.click();
32
+ }
33
+ /**
34
+ * Close the menu.
35
+ */
36
+ async close() {
37
+ await this.container.press('Escape');
38
+ }
39
+ }
40
+
41
+ module.exports = SystemUsersFilterMenu;
42
+ //# sourceMappingURL=filter_menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter_menu.js","sources":["../../../../../../src/ui/components/system_console/sections/system_users/filter_menu.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\n/**\n * The dropdown menu which appears for both Role and Status filter.\n */\nexport default class SystemUsersFilterMenu {\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 /**\n * Return the locator for the menu item with the given name.\n */\n async getMenuItem(menuItem: string) {\n const menuItemLocator = this.container.getByText(menuItem);\n await menuItemLocator.waitFor();\n\n return menuItemLocator;\n }\n\n /**\n * Clicks on the menu item with the given name.\n */\n async clickMenuItem(menuItem: string) {\n const menuItemLocator = await this.getMenuItem(menuItem);\n await menuItemLocator.click();\n }\n\n /**\n * Close the menu.\n */\n async close() {\n await this.container.press('Escape');\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIA;;AAEG;AACW,MAAO,qBAAqB,CAAA;AAC7B,IAAA,SAAS;AAElB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG9B,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;AAG9C;;AAEG;IACH,MAAM,WAAW,CAAC,QAAgB,EAAA;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1D,QAAA,MAAM,eAAe,CAAC,OAAO,EAAE;AAE/B,QAAA,OAAO,eAAe;;AAG1B;;AAEG;IACH,MAAM,aAAa,CAAC,QAAgB,EAAA;QAChC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxD,QAAA,MAAM,eAAe,CAAC,KAAK,EAAE;;AAGjC;;AAEG;AACH,IAAA,MAAM,KAAK,GAAA;QACP,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAE3C;;;;"}
@@ -0,0 +1,30 @@
1
+ import { Locator } from '@playwright/test';
2
+ export default class SystemUsersFilterPopover {
3
+ readonly container: Locator;
4
+ readonly teamMenuInput: Locator;
5
+ readonly roleMenuButton: Locator;
6
+ readonly statusMenuButton: Locator;
7
+ readonly applyButton: Locator;
8
+ constructor(container: Locator);
9
+ toBeVisible(): Promise<void>;
10
+ /**
11
+ * Save the filter settings.
12
+ */
13
+ save(): Promise<void>;
14
+ /**
15
+ * Allows to type in the team filter for searching.
16
+ */
17
+ searchInTeamMenu(teamDisplayName: string): Promise<void>;
18
+ /**
19
+ * Opens the role filter menu.
20
+ */
21
+ openRoleMenu(): Promise<void>;
22
+ /**
23
+ * Opens the status filter menu.
24
+ */
25
+ openStatusMenu(): Promise<void>;
26
+ /**
27
+ * Closes the filter popover.
28
+ */
29
+ close(): Promise<void>;
30
+ }
@@ -0,0 +1,61 @@
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 SystemUsersFilterPopover {
8
+ container;
9
+ teamMenuInput;
10
+ roleMenuButton;
11
+ statusMenuButton;
12
+ applyButton;
13
+ constructor(container) {
14
+ this.container = container;
15
+ this.teamMenuInput = this.container.locator('#asyncTeamSelectInput');
16
+ this.roleMenuButton = this.container.locator('#DropdownInput_filterRole');
17
+ this.statusMenuButton = this.container.locator('#DropdownInput_filterStatus');
18
+ this.applyButton = this.container.getByText('Apply');
19
+ }
20
+ async toBeVisible() {
21
+ await test.expect(this.container).toBeVisible();
22
+ await test.expect(this.applyButton).toBeVisible();
23
+ }
24
+ /**
25
+ * Save the filter settings.
26
+ */
27
+ async save() {
28
+ await this.applyButton.click();
29
+ }
30
+ /**
31
+ * Allows to type in the team filter for searching.
32
+ */
33
+ async searchInTeamMenu(teamDisplayName) {
34
+ test.expect(this.teamMenuInput).toBeVisible();
35
+ await this.teamMenuInput.fill(teamDisplayName);
36
+ }
37
+ /**
38
+ * Opens the role filter menu.
39
+ */
40
+ async openRoleMenu() {
41
+ test.expect(this.roleMenuButton).toBeVisible();
42
+ await this.roleMenuButton.click();
43
+ }
44
+ /**
45
+ * Opens the status filter menu.
46
+ */
47
+ async openStatusMenu() {
48
+ test.expect(this.statusMenuButton).toBeVisible();
49
+ await this.statusMenuButton.click();
50
+ }
51
+ /**
52
+ * Closes the filter popover.
53
+ */
54
+ async close() {
55
+ await this.container.press('Escape');
56
+ await test.expect(this.container).not.toBeVisible();
57
+ }
58
+ }
59
+
60
+ module.exports = SystemUsersFilterPopover;
61
+ //# sourceMappingURL=filter_popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter_popover.js","sources":["../../../../../../src/ui/components/system_console/sections/system_users/filter_popover.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 SystemUsersFilterPopover {\n readonly container: Locator;\n\n readonly teamMenuInput: Locator;\n readonly roleMenuButton: Locator;\n readonly statusMenuButton: Locator;\n\n readonly applyButton: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.teamMenuInput = this.container.locator('#asyncTeamSelectInput');\n this.roleMenuButton = this.container.locator('#DropdownInput_filterRole');\n this.statusMenuButton = this.container.locator('#DropdownInput_filterStatus');\n\n this.applyButton = this.container.getByText('Apply');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n await expect(this.applyButton).toBeVisible();\n }\n\n /**\n * Save the filter settings.\n */\n async save() {\n await this.applyButton.click();\n }\n\n /**\n * Allows to type in the team filter for searching.\n */\n async searchInTeamMenu(teamDisplayName: string) {\n expect(this.teamMenuInput).toBeVisible();\n await this.teamMenuInput.fill(teamDisplayName);\n }\n\n /**\n * Opens the role filter menu.\n */\n async openRoleMenu() {\n expect(this.roleMenuButton).toBeVisible();\n await this.roleMenuButton.click();\n }\n\n /**\n * Opens the status filter menu.\n */\n async openStatusMenu() {\n expect(this.statusMenuButton).toBeVisible();\n await this.statusMenuButton.click();\n }\n\n /**\n * Closes the filter popover.\n */\n async close() {\n await this.container.press('Escape');\n await expect(this.container).not.toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIc,MAAO,wBAAwB,CAAA;AAChC,IAAA,SAAS;AAET,IAAA,aAAa;AACb,IAAA,cAAc;AACd,IAAA,gBAAgB;AAEhB,IAAA,WAAW;AAEpB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC;QACzE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC;QAE7E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;;AAGxD,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QAC1C,MAAMA,WAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;;AAGhD;;AAEG;AACH,IAAA,MAAM,IAAI,GAAA;AACN,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;;AAGlC;;AAEG;IACH,MAAM,gBAAgB,CAAC,eAAuB,EAAA;QAC1CA,WAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;QACxC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;;AAGlD;;AAEG;AACH,IAAA,MAAM,YAAY,GAAA;QACdA,WAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;AACzC,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;;AAGrC;;AAEG;AACH,IAAA,MAAM,cAAc,GAAA;QAChBA,WAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE;AAC3C,QAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;;AAGvC;;AAEG;AACH,IAAA,MAAM,KAAK,GAAA;QACP,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;;AAErD;;;;"}
@@ -0,0 +1,23 @@
1
+ import { Locator } from '@playwright/test';
2
+ /**
3
+ * System Console -> Environment -> Mobile Security
4
+ */
5
+ export default class MobileSecurity {
6
+ readonly container: Locator;
7
+ readonly enableBiometricAuthenticationToggleTrue: Locator;
8
+ readonly enableBiometricAuthenticationToggleFalse: Locator;
9
+ readonly preventScreenCaptureToggleTrue: Locator;
10
+ readonly preventScreenCaptureToggleFalse: Locator;
11
+ readonly jailbreakProtectionToggleTrue: Locator;
12
+ readonly jailbreakProtectionToggleFalse: Locator;
13
+ readonly saveButton: Locator;
14
+ constructor(container: Locator);
15
+ toBeVisible(): Promise<void>;
16
+ clickEnableBiometricAuthenticationToggleTrue(): Promise<void>;
17
+ clickEnableBiometricAuthenticationToggleFalse(): Promise<void>;
18
+ clickPreventScreenCaptureToggleTrue(): Promise<void>;
19
+ clickPreventScreenCaptureToggleFalse(): Promise<void>;
20
+ clickJailbreakProtectionToggleTrue(): Promise<void>;
21
+ clickJailbreakProtectionToggleFalse(): Promise<void>;
22
+ clickSaveButton(): Promise<void>;
23
+ }
@@ -0,0 +1,56 @@
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
+ /**
8
+ * System Console -> Environment -> Mobile Security
9
+ */
10
+ class MobileSecurity {
11
+ container;
12
+ enableBiometricAuthenticationToggleTrue;
13
+ enableBiometricAuthenticationToggleFalse;
14
+ preventScreenCaptureToggleTrue;
15
+ preventScreenCaptureToggleFalse;
16
+ jailbreakProtectionToggleTrue;
17
+ jailbreakProtectionToggleFalse;
18
+ saveButton;
19
+ constructor(container) {
20
+ this.container = container;
21
+ this.enableBiometricAuthenticationToggleTrue = this.container.getByTestId('NativeAppSettings.MobileEnableBiometricstrue');
22
+ this.enableBiometricAuthenticationToggleFalse = this.container.getByTestId('NativeAppSettings.MobileEnableBiometricsfalse');
23
+ this.preventScreenCaptureToggleTrue = this.container.getByTestId('NativeAppSettings.MobilePreventScreenCapturetrue');
24
+ this.preventScreenCaptureToggleFalse = this.container.getByTestId('NativeAppSettings.MobilePreventScreenCapturefalse');
25
+ this.jailbreakProtectionToggleTrue = this.container.getByTestId('NativeAppSettings.MobileJailbreakProtectiontrue');
26
+ this.jailbreakProtectionToggleFalse = this.container.getByTestId('NativeAppSettings.MobileJailbreakProtectionfalse');
27
+ this.saveButton = this.container.getByRole('button', { name: 'Save' });
28
+ }
29
+ async toBeVisible() {
30
+ await test.expect(this.container).toBeVisible();
31
+ }
32
+ async clickEnableBiometricAuthenticationToggleTrue() {
33
+ await this.enableBiometricAuthenticationToggleTrue.click();
34
+ }
35
+ async clickEnableBiometricAuthenticationToggleFalse() {
36
+ await this.enableBiometricAuthenticationToggleFalse.click();
37
+ }
38
+ async clickPreventScreenCaptureToggleTrue() {
39
+ await this.preventScreenCaptureToggleTrue.click();
40
+ }
41
+ async clickPreventScreenCaptureToggleFalse() {
42
+ await this.preventScreenCaptureToggleFalse.click();
43
+ }
44
+ async clickJailbreakProtectionToggleTrue() {
45
+ await this.jailbreakProtectionToggleTrue.click();
46
+ }
47
+ async clickJailbreakProtectionToggleFalse() {
48
+ await this.jailbreakProtectionToggleFalse.click();
49
+ }
50
+ async clickSaveButton() {
51
+ await this.saveButton.click();
52
+ }
53
+ }
54
+
55
+ module.exports = MobileSecurity;
56
+ //# sourceMappingURL=mobile_security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile_security.js","sources":["../../../../../../src/ui/components/system_console/sections/system_users/mobile_security.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {expect, Locator} from '@playwright/test';\n\n/**\n * System Console -> Environment -> Mobile Security\n */\nexport default class MobileSecurity {\n readonly container: Locator;\n\n readonly enableBiometricAuthenticationToggleTrue: Locator;\n readonly enableBiometricAuthenticationToggleFalse: Locator;\n readonly preventScreenCaptureToggleTrue: Locator;\n readonly preventScreenCaptureToggleFalse: Locator;\n readonly jailbreakProtectionToggleTrue: Locator;\n readonly jailbreakProtectionToggleFalse: Locator;\n\n readonly saveButton: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.enableBiometricAuthenticationToggleTrue = this.container.getByTestId(\n 'NativeAppSettings.MobileEnableBiometricstrue',\n );\n this.enableBiometricAuthenticationToggleFalse = this.container.getByTestId(\n 'NativeAppSettings.MobileEnableBiometricsfalse',\n );\n\n this.preventScreenCaptureToggleTrue = this.container.getByTestId(\n 'NativeAppSettings.MobilePreventScreenCapturetrue',\n );\n this.preventScreenCaptureToggleFalse = this.container.getByTestId(\n 'NativeAppSettings.MobilePreventScreenCapturefalse',\n );\n\n this.jailbreakProtectionToggleTrue = this.container.getByTestId(\n 'NativeAppSettings.MobileJailbreakProtectiontrue',\n );\n this.jailbreakProtectionToggleFalse = this.container.getByTestId(\n 'NativeAppSettings.MobileJailbreakProtectionfalse',\n );\n\n this.saveButton = this.container.getByRole('button', {name: 'Save'});\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async clickEnableBiometricAuthenticationToggleTrue() {\n await this.enableBiometricAuthenticationToggleTrue.click();\n }\n\n async clickEnableBiometricAuthenticationToggleFalse() {\n await this.enableBiometricAuthenticationToggleFalse.click();\n }\n\n async clickPreventScreenCaptureToggleTrue() {\n await this.preventScreenCaptureToggleTrue.click();\n }\n\n async clickPreventScreenCaptureToggleFalse() {\n await this.preventScreenCaptureToggleFalse.click();\n }\n\n async clickJailbreakProtectionToggleTrue() {\n await this.jailbreakProtectionToggleTrue.click();\n }\n\n async clickJailbreakProtectionToggleFalse() {\n await this.jailbreakProtectionToggleFalse.click();\n }\n\n async clickSaveButton() {\n await this.saveButton.click();\n }\n}\n"],"names":["expect"],"mappings":";;;;AAAA;AACA;AAIA;;AAEG;AACW,MAAO,cAAc,CAAA;AACtB,IAAA,SAAS;AAET,IAAA,uCAAuC;AACvC,IAAA,wCAAwC;AACxC,IAAA,8BAA8B;AAC9B,IAAA,+BAA+B;AAC/B,IAAA,6BAA6B;AAC7B,IAAA,8BAA8B;AAE9B,IAAA,UAAU;AAEnB,IAAA,WAAA,CAAY,SAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CACrE,8CAA8C,CACjD;QACD,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CACtE,+CAA+C,CAClD;QAED,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAC5D,kDAAkD,CACrD;QACD,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAC7D,mDAAmD,CACtD;QAED,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAC3D,iDAAiD,CACpD;QACD,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAC5D,kDAAkD,CACrD;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;AAGxE,IAAA,MAAM,WAAW,GAAA;QACb,MAAMA,WAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;AAG9C,IAAA,MAAM,4CAA4C,GAAA;AAC9C,QAAA,MAAM,IAAI,CAAC,uCAAuC,CAAC,KAAK,EAAE;;AAG9D,IAAA,MAAM,6CAA6C,GAAA;AAC/C,QAAA,MAAM,IAAI,CAAC,wCAAwC,CAAC,KAAK,EAAE;;AAG/D,IAAA,MAAM,mCAAmC,GAAA;AACrC,QAAA,MAAM,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE;;AAGrD,IAAA,MAAM,oCAAoC,GAAA;AACtC,QAAA,MAAM,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE;;AAGtD,IAAA,MAAM,kCAAkC,GAAA;AACpC,QAAA,MAAM,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE;;AAGpD,IAAA,MAAM,mCAAmC,GAAA;AACrC,QAAA,MAAM,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE;;AAGrD,IAAA,MAAM,eAAe,GAAA;AACjB,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;AAEpC;;;;"}
@@ -0,0 +1,58 @@
1
+ import { Locator } from '@playwright/test';
2
+ /**
3
+ * System Console -> User Management -> Users
4
+ */
5
+ export default class SystemUsers {
6
+ readonly container: Locator;
7
+ readonly searchInput: Locator;
8
+ readonly saveRoleChange: Locator;
9
+ readonly columnToggleMenuButton: Locator;
10
+ readonly dateRangeSelectorMenuButton: Locator;
11
+ readonly exportButton: Locator;
12
+ readonly filterPopoverButton: Locator;
13
+ readonly actionMenuButtons: Locator[];
14
+ readonly loadingSpinner: Locator;
15
+ constructor(container: Locator);
16
+ toBeVisible(): Promise<void>;
17
+ isLoadingComplete(): Promise<void>;
18
+ /**
19
+ * Returns the locator for the header of the given column.
20
+ */
21
+ getColumnHeader(columnName: string): Promise<Locator>;
22
+ /**
23
+ * Checks if given column exists in the table. By searching for the column header.
24
+ */
25
+ doesColumnExist(columnName: string): Promise<boolean>;
26
+ /**
27
+ * Clicks on the column header of the given column for sorting.
28
+ */
29
+ clickSortOnColumn(columnName: string): Promise<void>;
30
+ /**
31
+ * Return the locator for the given row number. If '0' is passed, it will return the header row.
32
+ */
33
+ getNthRow(rowNumber: number): Promise<Locator>;
34
+ /**
35
+ * Opens the Filter popover
36
+ */
37
+ openFilterPopover(): Promise<void>;
38
+ /**
39
+ * Open the column toggle menu
40
+ */
41
+ openColumnToggleMenu(): Promise<void>;
42
+ /**
43
+ * Open the date range selector menu
44
+ */
45
+ openDateRangeSelectorMenu(): Promise<void>;
46
+ /**
47
+ * Enter the given search term in the search input
48
+ */
49
+ enterSearchText(searchText: string): Promise<void>;
50
+ /**
51
+ * Searches and verifies that the row with given text is found
52
+ */
53
+ verifyRowWithTextIsFound(text: string): Promise<void>;
54
+ /**
55
+ * Searches and verifies that the row with given text is not found
56
+ */
57
+ verifyRowWithTextIsNotFound(text: string): Promise<void>;
58
+ }
@@ -0,0 +1,114 @@
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
+ /**
8
+ * System Console -> User Management -> Users
9
+ */
10
+ class SystemUsers {
11
+ container;
12
+ searchInput;
13
+ saveRoleChange;
14
+ columnToggleMenuButton;
15
+ dateRangeSelectorMenuButton;
16
+ exportButton;
17
+ filterPopoverButton;
18
+ actionMenuButtons;
19
+ loadingSpinner;
20
+ constructor(container) {
21
+ this.container = container;
22
+ this.searchInput = this.container.getByLabel('Search users');
23
+ this.saveRoleChange = this.container.locator('button.btn-primary:has-text("Save")');
24
+ this.columnToggleMenuButton = this.container.locator('#systemUsersColumnTogglerMenuButton');
25
+ this.dateRangeSelectorMenuButton = this.container.locator('#systemUsersDateRangeSelectorMenuButton');
26
+ this.exportButton = this.container.getByText('Export');
27
+ this.filterPopoverButton = this.container.getByText(/Filters \(\d+\)/);
28
+ this.actionMenuButtons = Array.from(Array(10).keys()).map((index) => this.container.locator(`#actionMenuButton-systemUsersTable-${index}`));
29
+ this.loadingSpinner = this.container.getByText('Loading');
30
+ }
31
+ async toBeVisible() {
32
+ await test.expect(this.container).toBeVisible();
33
+ }
34
+ async isLoadingComplete() {
35
+ await test.expect(this.loadingSpinner).toHaveCount(0);
36
+ }
37
+ /**
38
+ * Returns the locator for the header of the given column.
39
+ */
40
+ async getColumnHeader(columnName) {
41
+ const columnHeader = this.container.getByRole('columnheader').filter({ hasText: columnName });
42
+ return columnHeader;
43
+ }
44
+ /**
45
+ * Checks if given column exists in the table. By searching for the column header.
46
+ */
47
+ async doesColumnExist(columnName) {
48
+ const columnHeader = await this.getColumnHeader(columnName);
49
+ return await columnHeader.isVisible();
50
+ }
51
+ /**
52
+ * Clicks on the column header of the given column for sorting.
53
+ */
54
+ async clickSortOnColumn(columnName) {
55
+ const columnHeader = await this.getColumnHeader(columnName);
56
+ await columnHeader.waitFor();
57
+ await columnHeader.click();
58
+ }
59
+ /**
60
+ * Return the locator for the given row number. If '0' is passed, it will return the header row.
61
+ */
62
+ async getNthRow(rowNumber) {
63
+ const row = this.container.getByRole('row').nth(rowNumber);
64
+ await row.waitFor();
65
+ return row;
66
+ }
67
+ /**
68
+ * Opens the Filter popover
69
+ */
70
+ async openFilterPopover() {
71
+ test.expect(this.filterPopoverButton).toBeVisible();
72
+ await this.filterPopoverButton.click();
73
+ }
74
+ /**
75
+ * Open the column toggle menu
76
+ */
77
+ async openColumnToggleMenu() {
78
+ test.expect(this.columnToggleMenuButton).toBeVisible();
79
+ await this.columnToggleMenuButton.click();
80
+ }
81
+ /**
82
+ * Open the date range selector menu
83
+ */
84
+ async openDateRangeSelectorMenu() {
85
+ test.expect(this.dateRangeSelectorMenuButton).toBeVisible();
86
+ await this.dateRangeSelectorMenuButton.click();
87
+ }
88
+ /**
89
+ * Enter the given search term in the search input
90
+ */
91
+ async enterSearchText(searchText) {
92
+ test.expect(this.searchInput).toBeVisible();
93
+ await this.searchInput.fill(`${searchText}`);
94
+ await this.isLoadingComplete();
95
+ }
96
+ /**
97
+ * Searches and verifies that the row with given text is found
98
+ */
99
+ async verifyRowWithTextIsFound(text) {
100
+ const foundUser = this.container.getByText(text);
101
+ await foundUser.waitFor();
102
+ await test.expect(foundUser).toBeVisible();
103
+ }
104
+ /**
105
+ * Searches and verifies that the row with given text is not found
106
+ */
107
+ async verifyRowWithTextIsNotFound(text) {
108
+ const foundUser = this.container.getByText(text);
109
+ await test.expect(foundUser).not.toBeVisible();
110
+ }
111
+ }
112
+
113
+ module.exports = SystemUsers;
114
+ //# sourceMappingURL=system_users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system_users.js","sources":["../../../../../../src/ui/components/system_console/sections/system_users/system_users.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\n/**\n * System Console -> User Management -> Users\n */\nexport default class SystemUsers {\n readonly container: Locator;\n\n readonly searchInput: Locator;\n readonly saveRoleChange: Locator;\n readonly columnToggleMenuButton: Locator;\n readonly dateRangeSelectorMenuButton: Locator;\n readonly exportButton: Locator;\n readonly filterPopoverButton: Locator;\n readonly actionMenuButtons: Locator[];\n\n readonly loadingSpinner: Locator;\n\n constructor(container: Locator) {\n this.container = container;\n\n this.searchInput = this.container.getByLabel('Search users');\n this.saveRoleChange = this.container.locator('button.btn-primary:has-text(\"Save\")');\n this.columnToggleMenuButton = this.container.locator('#systemUsersColumnTogglerMenuButton');\n this.dateRangeSelectorMenuButton = this.container.locator('#systemUsersDateRangeSelectorMenuButton');\n this.exportButton = this.container.getByText('Export');\n this.filterPopoverButton = this.container.getByText(/Filters \\(\\d+\\)/);\n this.actionMenuButtons = Array.from(Array(10).keys()).map((index) =>\n this.container.locator(`#actionMenuButton-systemUsersTable-${index}`),\n );\n\n this.loadingSpinner = this.container.getByText('Loading');\n }\n\n async toBeVisible() {\n await expect(this.container).toBeVisible();\n }\n\n async isLoadingComplete() {\n await expect(this.loadingSpinner).toHaveCount(0);\n }\n\n /**\n * Returns the locator for the header of the given column.\n */\n async getColumnHeader(columnName: string) {\n const columnHeader = this.container.getByRole('columnheader').filter({hasText: columnName});\n return columnHeader;\n }\n\n /**\n * Checks if given column exists in the table. By searching for the column header.\n */\n async doesColumnExist(columnName: string) {\n const columnHeader = await this.getColumnHeader(columnName);\n return await columnHeader.isVisible();\n }\n\n /**\n * Clicks on the column header of the given column for sorting.\n */\n async clickSortOnColumn(columnName: string) {\n const columnHeader = await this.getColumnHeader(columnName);\n await columnHeader.waitFor();\n await columnHeader.click();\n }\n\n /**\n * Return the locator for the given row number. If '0' is passed, it will return the header row.\n */\n async getNthRow(rowNumber: number) {\n const row = this.container.getByRole('row').nth(rowNumber);\n await row.waitFor();\n\n return row;\n }\n\n /**\n * Opens the Filter popover\n */\n async openFilterPopover() {\n expect(this.filterPopoverButton).toBeVisible();\n await this.filterPopoverButton.click();\n }\n\n /**\n * Open the column toggle menu\n */\n async openColumnToggleMenu() {\n expect(this.columnToggleMenuButton).toBeVisible();\n await this.columnToggleMenuButton.click();\n }\n\n /**\n * Open the date range selector menu\n */\n async openDateRangeSelectorMenu() {\n expect(this.dateRangeSelectorMenuButton).toBeVisible();\n await this.dateRangeSelectorMenuButton.click();\n }\n\n /**\n * Enter the given search term in the search input\n */\n async enterSearchText(searchText: string) {\n expect(this.searchInput).toBeVisible();\n await this.searchInput.fill(`${searchText}`);\n\n await this.isLoadingComplete();\n }\n\n /**\n * Searches and verifies that the row with given text is found\n */\n async verifyRowWithTextIsFound(text: string) {\n const foundUser = this.container.getByText(text);\n await foundUser.waitFor();\n\n await expect(foundUser).toBeVisible();\n }\n\n /**\n * Searches and verifies that the row with given text is not found\n */\n async verifyRowWithTextIsNotFound(text: string) {\n const foundUser = this.container.getByText(text);\n await expect(foundUser).not.toBeVisible();\n }\n}\n"],"names":["expect"],"mappings":"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"}