@mattermost/playwright-lib 10.7.0-0 → 10.7.0-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.
Files changed (75) hide show
  1. package/dist/browser_context.js +14 -21
  2. package/dist/constant.js +3 -6
  3. package/dist/file.js +20 -20
  4. package/dist/flag.d.ts +2 -0
  5. package/dist/flag.js +49 -38
  6. package/dist/flag.js.map +1 -1
  7. package/dist/global_setup.js +14 -49
  8. package/dist/global_setup.js.map +1 -1
  9. package/dist/index.js +9 -42
  10. package/dist/mock_browser_api.js +2 -8
  11. package/dist/server/channel.js +3 -9
  12. package/dist/server/client.js +10 -16
  13. package/dist/server/default_config.js +9 -15
  14. package/dist/server/init.js +29 -36
  15. package/dist/server/plugins.d.ts +1 -1
  16. package/dist/server/plugins.js +13 -14
  17. package/dist/server/plugins.js.map +1 -1
  18. package/dist/server/post.js +3 -9
  19. package/dist/server/team.js +3 -9
  20. package/dist/server/user.js +8 -15
  21. package/dist/test_action.js +3 -14
  22. package/dist/test_config.js +4 -30
  23. package/dist/test_fixture.d.ts +2 -1
  24. package/dist/test_fixture.js +50 -68
  25. package/dist/test_fixture.js.map +1 -1
  26. package/dist/ui/components/channels/app_bar.js +3 -9
  27. package/dist/ui/components/channels/center_view.js +22 -28
  28. package/dist/ui/components/channels/delete_post_confirmation_dialog.js +8 -14
  29. package/dist/ui/components/channels/delete_post_modal.js +4 -10
  30. package/dist/ui/components/channels/emoji_gif_picker.js +9 -15
  31. package/dist/ui/components/channels/find_channels_modal.js +3 -9
  32. package/dist/ui/components/channels/generic_confirm_modal.js +5 -11
  33. package/dist/ui/components/channels/header.js +3 -9
  34. package/dist/ui/components/channels/message_priority.js +14 -20
  35. package/dist/ui/components/channels/post.js +10 -16
  36. package/dist/ui/components/channels/post_create.js +23 -29
  37. package/dist/ui/components/channels/post_dot_menu.js +3 -9
  38. package/dist/ui/components/channels/post_edit.js +16 -22
  39. package/dist/ui/components/channels/post_menu.js +3 -9
  40. package/dist/ui/components/channels/post_reminder_menu.js +3 -9
  41. package/dist/ui/components/channels/restore_post_confirmation_dialog.js +6 -12
  42. package/dist/ui/components/channels/scheduled_draft_menu.js +3 -9
  43. package/dist/ui/components/channels/scheduled_draft_modal.js +4 -10
  44. package/dist/ui/components/channels/search_popover.js +3 -9
  45. package/dist/ui/components/channels/settings/notification_settings.js +8 -14
  46. package/dist/ui/components/channels/settings/settings_modal.js +7 -13
  47. package/dist/ui/components/channels/sidebar_left.js +8 -14
  48. package/dist/ui/components/channels/sidebar_right.js +20 -26
  49. package/dist/ui/components/channels/thread_footer.js +3 -9
  50. package/dist/ui/components/channels/user_profile_popover.js +3 -9
  51. package/dist/ui/components/footer.js +3 -9
  52. package/dist/ui/components/global_header.js +7 -13
  53. package/dist/ui/components/index.js +72 -74
  54. package/dist/ui/components/main_header.js +3 -9
  55. package/dist/ui/components/system_console/navbar.js +3 -9
  56. package/dist/ui/components/system_console/sections/system_users/column_toggle_menu.js +4 -10
  57. package/dist/ui/components/system_console/sections/system_users/feature_discovery.js +4 -10
  58. package/dist/ui/components/system_console/sections/system_users/filter_menu.js +3 -9
  59. package/dist/ui/components/system_console/sections/system_users/filter_popover.js +8 -14
  60. package/dist/ui/components/system_console/sections/system_users/mobile_security.js +3 -9
  61. package/dist/ui/components/system_console/sections/system_users/system_users.js +10 -16
  62. package/dist/ui/components/system_console/sidebar.js +4 -10
  63. package/dist/ui/pages/channels.js +18 -24
  64. package/dist/ui/pages/drafts.js +17 -23
  65. package/dist/ui/pages/index.js +17 -30
  66. package/dist/ui/pages/landing_login.js +5 -11
  67. package/dist/ui/pages/login.js +8 -14
  68. package/dist/ui/pages/reset_password.js +9 -15
  69. package/dist/ui/pages/scheduled_draft.js +19 -25
  70. package/dist/ui/pages/signup.js +11 -17
  71. package/dist/ui/pages/system_console.js +16 -22
  72. package/dist/util.js +8 -19
  73. package/dist/visual/index.js +14 -20
  74. package/dist/visual/percy.js +4 -10
  75. package/package.json +1 -1
@@ -1,13 +1,10 @@
1
- 'use strict';
2
-
3
- var promises = require('node:fs/promises');
4
- var test = require('@playwright/test');
5
- var test_config = require('./test_config.js');
6
- var index = require('./ui/pages/index.js');
7
-
8
1
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
9
2
  // See LICENSE.txt for license information.
10
- class TestBrowser {
3
+ import { writeFile } from 'node:fs/promises';
4
+ import { request } from '@playwright/test';
5
+ import { testConfig } from './test_config';
6
+ import { pages } from './ui/pages';
7
+ export class TestBrowser {
11
8
  browser;
12
9
  context;
13
10
  constructor(browser) {
@@ -24,10 +21,10 @@ class TestBrowser {
24
21
  // Sign in a user in new browser context
25
22
  const context = await this.browser.newContext(options);
26
23
  const page = await context.newPage();
27
- const channelsPage = new index.pages.ChannelsPage(page);
28
- const systemConsolePage = new index.pages.SystemConsolePage(page);
29
- const scheduledDraftPage = new index.pages.ScheduledDraftPage(page);
30
- const draftPage = new index.pages.DraftPage(page);
24
+ const channelsPage = new pages.ChannelsPage(page);
25
+ const systemConsolePage = new pages.SystemConsolePage(page);
26
+ const scheduledDraftPage = new pages.ScheduledDraftPage(page);
27
+ const draftPage = new pages.DraftPage(page);
31
28
  this.context = context;
32
29
  return { context, page, channelsPage, systemConsolePage, scheduledDraftPage, draftPage };
33
30
  }
@@ -37,8 +34,8 @@ class TestBrowser {
37
34
  }
38
35
  }
39
36
  }
40
- async function loginByAPI(loginId, password, token = '', ldapOnly = false) {
41
- const requestContext = await test.request.newContext();
37
+ export async function loginByAPI(loginId, password, token = '', ldapOnly = false) {
38
+ const requestContext = await request.newContext();
42
39
  const data = {
43
40
  login_id: loginId,
44
41
  password,
@@ -49,7 +46,7 @@ async function loginByAPI(loginId, password, token = '', ldapOnly = false) {
49
46
  data.ldap_only = 'true';
50
47
  }
51
48
  // Log in via API
52
- await requestContext.post(`${test_config.testConfig.baseURL}/api/v4/users/login`, {
49
+ await requestContext.post(`${testConfig.baseURL}/api/v4/users/login`, {
53
50
  data,
54
51
  headers: { 'X-Requested-With': 'XMLHttpRequest' },
55
52
  });
@@ -59,13 +56,9 @@ async function loginByAPI(loginId, password, token = '', ldapOnly = false) {
59
56
  await requestContext.dispose();
60
57
  // Append origins to bypass seeing landing page then write to file
61
58
  storageState.origins.push({
62
- origin: test_config.testConfig.baseURL,
59
+ origin: testConfig.baseURL,
63
60
  localStorage: [{ name: '__landingPageSeen__', value: 'true' }],
64
61
  });
65
- await promises.writeFile(storagePath, JSON.stringify(storageState));
62
+ await writeFile(storagePath, JSON.stringify(storageState));
66
63
  return storagePath;
67
64
  }
68
-
69
- exports.TestBrowser = TestBrowser;
70
- exports.loginByAPI = loginByAPI;
71
- //# sourceMappingURL=browser_context.js.map
package/dist/constant.js CHANGED
@@ -1,8 +1,5 @@
1
- 'use strict';
2
-
3
1
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
4
2
  // See LICENSE.txt for license information.
5
- const callsPluginId = 'com.mattermost.calls';
6
-
7
- exports.callsPluginId = callsPluginId;
8
- //# sourceMappingURL=constant.js.map
3
+ export const appsPluginId = 'com.mattermost.apps';
4
+ export const callsPluginId = 'com.mattermost.calls';
5
+ export const playbooksPluginId = 'playbooks';
package/dist/file.js CHANGED
@@ -1,20 +1,19 @@
1
- 'use strict';
2
-
3
- var path = require('node:path');
4
- var fs = require('node:fs');
5
- var mime = require('mime-types');
6
-
7
1
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
8
2
  // See LICENSE.txt for license information.
3
+ import path from 'node:path';
4
+ import fs from 'node:fs';
5
+ import mime from 'mime-types';
9
6
  const commonAssetPath = path.resolve(__dirname, 'asset');
10
- const assetPath = path.resolve(process.cwd(), 'asset');
7
+ export const assetPath = path.resolve(process.cwd(), 'asset');
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ const availableFiles = ['mattermost-icon_128x128.png'];
11
10
  /**
12
11
  * Reads file data and creates a File object.
13
12
  * @param filePath - The path to the file.
14
13
  * @returns A File object containing the file data.
15
14
  * @throws If the file does not exist.
16
15
  */
17
- function getFileData(filePath) {
16
+ export function getFileData(filePath) {
18
17
  if (!fs.existsSync(filePath)) {
19
18
  throw new Error(`File not found at path: ${filePath}`);
20
19
  }
@@ -29,7 +28,7 @@ function getFileData(filePath) {
29
28
  * @returns A Blob object containing the file data.
30
29
  * @throws If the file does not exist.
31
30
  */
32
- function getBlobData(filePath) {
31
+ export function getBlobData(filePath) {
33
32
  if (!fs.existsSync(filePath)) {
34
33
  throw new Error(`File not found at path: ${filePath}`);
35
34
  }
@@ -42,7 +41,7 @@ function getBlobData(filePath) {
42
41
  * @param filename - The name of the file in the "asset" directory.
43
42
  * @returns An object containing a File object
44
43
  */
45
- function getFileFromAsset(filename) {
44
+ export function getFileFromAsset(filename) {
46
45
  const filePath = path.join(assetPath, filename);
47
46
  return getFileData(filePath);
48
47
  }
@@ -51,7 +50,7 @@ function getFileFromAsset(filename) {
51
50
  * @param filename - The name of the file in the "asset" directory.
52
51
  * @returns An object containing a Blob object
53
52
  */
54
- function getBlobFromAsset(filename) {
53
+ export function getBlobFromAsset(filename) {
55
54
  const filePath = path.join(assetPath, filename);
56
55
  return getBlobData(filePath);
57
56
  }
@@ -60,15 +59,16 @@ function getBlobFromAsset(filename) {
60
59
  * @param filename - The name of the file in the "asset" directory.
61
60
  * @returns An object containing a File object
62
61
  */
63
- function getFileFromCommonAsset(filename) {
62
+ export function getFileFromCommonAsset(filename) {
64
63
  const filePath = path.join(commonAssetPath, filename);
65
64
  return getFileData(filePath);
66
65
  }
67
-
68
- exports.assetPath = assetPath;
69
- exports.getBlobData = getBlobData;
70
- exports.getBlobFromAsset = getBlobFromAsset;
71
- exports.getFileData = getFileData;
72
- exports.getFileFromAsset = getFileFromAsset;
73
- exports.getFileFromCommonAsset = getFileFromCommonAsset;
74
- //# sourceMappingURL=file.js.map
66
+ /**
67
+ * Reads file data from the lib "asset" directory and creates a Blob object.
68
+ * @param filename - The name of the file in the "asset" directory.
69
+ * @returns An object containing a Blob object
70
+ */
71
+ export function getBlobFromCommonAsset(filename) {
72
+ const filePath = path.join(commonAssetPath, filename);
73
+ return getBlobData(filePath);
74
+ }
package/dist/flag.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Client4 } from '@mattermost/client';
1
2
  export declare function shouldHaveCallsEnabled(enabled?: boolean): Promise<void>;
2
3
  export declare function shouldHaveFeatureFlag(name: string, value: string | boolean): Promise<void>;
3
4
  export declare function shouldRunInLinux(): Promise<void>;
@@ -5,3 +6,4 @@ export declare function ensureLicense(): Promise<void>;
5
6
  export declare function requestTrialLicense(): Promise<void>;
6
7
  export declare function skipIfNoLicense(): Promise<void>;
7
8
  export declare function skipIfFeatureFlagNotSet(name: string, value: string | boolean): Promise<void>;
9
+ export declare function ensureServerDeployment(client: Client4): Promise<void>;
package/dist/flag.js CHANGED
@@ -1,42 +1,40 @@
1
- 'use strict';
2
-
3
- var os = require('node:os');
4
- var test = require('@playwright/test');
5
- var constant = require('./constant.js');
6
- var init = require('./server/init.js');
7
-
8
1
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
9
2
  // See LICENSE.txt for license information.
10
- async function shouldHaveCallsEnabled(enabled = true) {
11
- const { adminClient } = await init.getAdminClient();
3
+ import os from 'node:os';
4
+ import { expect, test } from '@playwright/test';
5
+ import { callsPluginId } from './constant';
6
+ import { getAdminClient } from './server/init';
7
+ import { testConfig } from './test_config';
8
+ export async function shouldHaveCallsEnabled(enabled = true) {
9
+ const { adminClient } = await getAdminClient();
12
10
  const config = await adminClient.getConfig();
13
- const callsEnabled = config.PluginSettings.PluginStates[constant.callsPluginId].Enable;
11
+ const callsEnabled = config.PluginSettings.PluginStates[callsPluginId].Enable;
14
12
  const matched = callsEnabled === enabled;
15
- test.expect(matched, matched ? '' : `Calls expect "${enabled}" but actual "${callsEnabled}"`).toBeTruthy();
13
+ expect(matched, matched ? '' : `Calls expect "${enabled}" but actual "${callsEnabled}"`).toBeTruthy();
16
14
  }
17
- async function shouldHaveFeatureFlag(name, value) {
18
- const { adminClient } = await init.getAdminClient();
15
+ export async function shouldHaveFeatureFlag(name, value) {
16
+ const { adminClient } = await getAdminClient();
19
17
  const config = await adminClient.getConfig();
20
18
  const matched = config.FeatureFlags[name] === value;
21
- test.expect(matched, matched ? '' : `FeatureFlags["${name}'] expect "${value}" but actual "${config.FeatureFlags[name]}"`).toBeTruthy();
19
+ expect(matched, matched ? '' : `FeatureFlags["${name}'] expect "${value}" but actual "${config.FeatureFlags[name]}"`).toBeTruthy();
22
20
  }
23
- async function shouldRunInLinux() {
21
+ export async function shouldRunInLinux() {
24
22
  const platform = os.platform();
25
- test.expect(platform, 'Run in Linux or Playwright docker image only').toBe('linux');
23
+ expect(platform, 'Run in Linux or Playwright docker image only').toBe('linux');
26
24
  }
27
- async function ensureLicense() {
28
- const { adminClient } = await init.getAdminClient();
25
+ export async function ensureLicense() {
26
+ const { adminClient } = await getAdminClient();
29
27
  let license = await adminClient.getClientLicenseOld();
30
28
  if (license?.IsLicensed !== 'true') {
31
29
  const config = await adminClient.getClientConfigOld();
32
- test.expect(config.ServiceEnvironment === 'dev', 'The trial license request fails in the local development environment. Please manually upload the test license.').toBeFalsy();
30
+ expect(config.ServiceEnvironment === 'dev', 'The trial license request fails in the local development environment. Please manually upload the test license.').toBeFalsy();
33
31
  await requestTrialLicense();
34
32
  license = await adminClient.getClientLicenseOld();
35
33
  }
36
- test.expect(license?.IsLicensed === 'true', 'Ensure server has license').toBeTruthy();
34
+ expect(license?.IsLicensed === 'true', 'Ensure server has license').toBeTruthy();
37
35
  }
38
- async function requestTrialLicense() {
39
- const { adminClient } = await init.getAdminClient();
36
+ export async function requestTrialLicense() {
37
+ const { adminClient } = await getAdminClient();
40
38
  const admin = await adminClient.getMe();
41
39
  try {
42
40
  await adminClient.requestTrialLicense({
@@ -51,26 +49,39 @@ async function requestTrialLicense() {
51
49
  });
52
50
  }
53
51
  catch (error) {
54
- test.expect(error, 'Failed to request trial license').toBeFalsy();
52
+ expect(error, 'Failed to request trial license').toBeFalsy();
55
53
  throw error;
56
54
  }
57
55
  }
58
- async function skipIfNoLicense() {
59
- const { adminClient } = await init.getAdminClient();
56
+ export async function skipIfNoLicense() {
57
+ const { adminClient } = await getAdminClient();
60
58
  const license = await adminClient.getClientLicenseOld();
61
- test.test.skip(license.IsLicensed === 'false', 'Skipping test - server not licensed');
59
+ test.skip(license.IsLicensed === 'false', 'Skipping test - server not licensed');
62
60
  }
63
- async function skipIfFeatureFlagNotSet(name, value) {
64
- const { adminClient } = await init.getAdminClient();
61
+ export async function skipIfFeatureFlagNotSet(name, value) {
62
+ const { adminClient } = await getAdminClient();
65
63
  const cfg = await adminClient.getConfig();
66
- test.test.skip(cfg.FeatureFlags[name] !== value, `Skipping test - Feature Flag ${name} needs to be set to ${value}`);
64
+ test.skip(cfg.FeatureFlags[name] !== value, `Skipping test - Feature Flag ${name} needs to be set to ${value}`);
65
+ }
66
+ // ensureServerDeployment is used to ensure server deployment type is as expected.
67
+ // If server is not deployed as expected, test will fail.
68
+ export async function ensureServerDeployment(client) {
69
+ // Based on test config, ensure server is on an HA cluster.
70
+ if (testConfig.haClusterEnabled) {
71
+ const { haClusterNodeCount, haClusterName } = testConfig;
72
+ const { Enable, ClusterName } = (await client.getConfig()).ClusterSettings;
73
+ expect(Enable, Enable ? '' : 'Should have cluster enabled').toBe(true);
74
+ const sameClusterName = ClusterName === haClusterName;
75
+ expect(sameClusterName, sameClusterName
76
+ ? ''
77
+ : `Should have cluster name set and as expected. Got "${ClusterName}" but expected "${haClusterName}"`).toBe(true);
78
+ const clusterInfo = await client.getClusterStatus();
79
+ const sameCount = clusterInfo?.length === haClusterNodeCount;
80
+ expect(sameCount, sameCount
81
+ ? ''
82
+ : `Should match number of nodes in a cluster as expected. Got "${clusterInfo?.length}" but expected "${haClusterNodeCount}"`).toBe(true);
83
+ clusterInfo.forEach((info) =>
84
+ // eslint-disable-next-line no-console
85
+ console.log(`hostname: ${info.hostname}, version: ${info.version}, config_hash: ${info.config_hash}`));
86
+ }
67
87
  }
68
-
69
- exports.ensureLicense = ensureLicense;
70
- exports.requestTrialLicense = requestTrialLicense;
71
- exports.shouldHaveCallsEnabled = shouldHaveCallsEnabled;
72
- exports.shouldHaveFeatureFlag = shouldHaveFeatureFlag;
73
- exports.shouldRunInLinux = shouldRunInLinux;
74
- exports.skipIfFeatureFlagNotSet = skipIfFeatureFlagNotSet;
75
- exports.skipIfNoLicense = skipIfNoLicense;
76
- //# sourceMappingURL=flag.js.map
package/dist/flag.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"flag.js","sources":["../src/flag.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport os from 'node:os';\n\nimport {expect, test} from '@playwright/test';\n\nimport {callsPluginId} from './constant';\nimport {getAdminClient} from './server/init';\n\nexport async function shouldHaveCallsEnabled(enabled = true) {\n const {adminClient} = await getAdminClient();\n const config = await adminClient.getConfig();\n\n const callsEnabled = config.PluginSettings.PluginStates[callsPluginId].Enable;\n\n const matched = callsEnabled === enabled;\n expect(matched, matched ? '' : `Calls expect \"${enabled}\" but actual \"${callsEnabled}\"`).toBeTruthy();\n}\n\nexport async function shouldHaveFeatureFlag(name: string, value: string | boolean) {\n const {adminClient} = await getAdminClient();\n const config = await adminClient.getConfig();\n\n const matched = config.FeatureFlags[name] === value;\n expect(\n matched,\n matched ? '' : `FeatureFlags[\"${name}'] expect \"${value}\" but actual \"${config.FeatureFlags[name]}\"`,\n ).toBeTruthy();\n}\n\nexport async function shouldRunInLinux() {\n const platform = os.platform();\n expect(platform, 'Run in Linux or Playwright docker image only').toBe('linux');\n}\n\nexport async function ensureLicense() {\n const {adminClient} = await getAdminClient();\n let license = await adminClient.getClientLicenseOld();\n\n if (license?.IsLicensed !== 'true') {\n const config = await adminClient.getClientConfigOld();\n expect(\n config.ServiceEnvironment === 'dev',\n 'The trial license request fails in the local development environment. Please manually upload the test license.',\n ).toBeFalsy();\n\n await requestTrialLicense();\n\n license = await adminClient.getClientLicenseOld();\n }\n\n expect(license?.IsLicensed === 'true', 'Ensure server has license').toBeTruthy();\n}\n\nexport async function requestTrialLicense() {\n const {adminClient} = await getAdminClient();\n const admin = await adminClient.getMe();\n try {\n await adminClient.requestTrialLicense({\n receive_emails_accepted: true,\n terms_accepted: true,\n users: 100,\n contact_name: admin.first_name + ' ' + admin.last_name,\n contact_email: admin.email,\n company_name: 'Mattermost Playwright E2E Tests',\n company_size: '101-250',\n company_country: 'United States',\n });\n } catch (error) {\n expect(error, 'Failed to request trial license').toBeFalsy();\n throw error;\n }\n}\n\nexport async function skipIfNoLicense() {\n const {adminClient} = await getAdminClient();\n const license = await adminClient.getClientLicenseOld();\n\n test.skip(license.IsLicensed === 'false', 'Skipping test - server not licensed');\n}\n\nexport async function skipIfFeatureFlagNotSet(name: string, value: string | boolean) {\n const {adminClient} = await getAdminClient();\n const cfg = await adminClient.getConfig();\n\n test.skip(cfg.FeatureFlags[name] !== value, `Skipping test - Feature Flag ${name} needs to be set to ${value}`);\n}\n"],"names":["getAdminClient","callsPluginId","expect","test"],"mappings":"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"}
1
+ {"version":3,"file":"flag.js","sources":["../src/flag.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport os from 'node:os';\n\nimport {expect, test} from '@playwright/test';\nimport {Client4} from '@mattermost/client';\n\nimport {callsPluginId} from './constant';\nimport {getAdminClient} from './server/init';\nimport {testConfig} from './test_config';\n\nexport async function shouldHaveCallsEnabled(enabled = true) {\n const {adminClient} = await getAdminClient();\n const config = await adminClient.getConfig();\n\n const callsEnabled = config.PluginSettings.PluginStates[callsPluginId].Enable;\n\n const matched = callsEnabled === enabled;\n expect(matched, matched ? '' : `Calls expect \"${enabled}\" but actual \"${callsEnabled}\"`).toBeTruthy();\n}\n\nexport async function shouldHaveFeatureFlag(name: string, value: string | boolean) {\n const {adminClient} = await getAdminClient();\n const config = await adminClient.getConfig();\n\n const matched = config.FeatureFlags[name] === value;\n expect(\n matched,\n matched ? '' : `FeatureFlags[\"${name}'] expect \"${value}\" but actual \"${config.FeatureFlags[name]}\"`,\n ).toBeTruthy();\n}\n\nexport async function shouldRunInLinux() {\n const platform = os.platform();\n expect(platform, 'Run in Linux or Playwright docker image only').toBe('linux');\n}\n\nexport async function ensureLicense() {\n const {adminClient} = await getAdminClient();\n let license = await adminClient.getClientLicenseOld();\n\n if (license?.IsLicensed !== 'true') {\n const config = await adminClient.getClientConfigOld();\n expect(\n config.ServiceEnvironment === 'dev',\n 'The trial license request fails in the local development environment. Please manually upload the test license.',\n ).toBeFalsy();\n\n await requestTrialLicense();\n\n license = await adminClient.getClientLicenseOld();\n }\n\n expect(license?.IsLicensed === 'trueeee', 'Ensure server has license').toBeTruthy();\n}\n\nexport async function requestTrialLicense() {\n const {adminClient} = await getAdminClient();\n const admin = await adminClient.getMe();\n try {\n await adminClient.requestTrialLicense({\n receive_emails_accepted: true,\n terms_accepted: true,\n users: 100,\n contact_name: admin.first_name + ' ' + admin.last_name,\n contact_email: admin.email,\n company_name: 'Mattermost Playwright E2E Tests',\n company_size: '101-250',\n company_country: 'United States',\n });\n } catch (error) {\n expect(error, 'Failed to request trial license').toBeFalsy();\n throw error;\n }\n}\n\nexport async function skipIfNoLicense() {\n const {adminClient} = await getAdminClient();\n const license = await adminClient.getClientLicenseOld();\n\n test.skip(license.IsLicensed === 'false', 'Skipping test - server not licensed');\n}\n\nexport async function skipIfFeatureFlagNotSet(name: string, value: string | boolean) {\n const {adminClient} = await getAdminClient();\n const cfg = await adminClient.getConfig();\n\n test.skip(cfg.FeatureFlags[name] !== value, `Skipping test - Feature Flag ${name} needs to be set to ${value}`);\n}\n\n// ensureServerDeployment is used to ensure server deployment type is as expected.\n// If server is not deployed as expected, test will fail.\nexport async function ensureServerDeployment(client: Client4) {\n\n // Based on test config, ensure server is on an HA cluster.\n if (testConfig.haClusterEnabled) {\n const {haClusterNodeCount, haClusterName} = testConfig;\n\n const {Enable, ClusterName} = (await client.getConfig()).ClusterSettings;\n expect(Enable, Enable ? '' : 'Should have cluster enabled').toBe(true);\n\n const sameClusterName = ClusterName === haClusterName;\n expect(\n sameClusterName,\n sameClusterName\n ? ''\n : `Should have cluster name set and as expected. Got \"${ClusterName}\" but expected \"${haClusterName}\"`,\n ).toBe(true);\n\n const clusterInfo = await client.getClusterStatus();\n const sameCount = clusterInfo?.length === haClusterNodeCount;\n expect(\n sameCount,\n sameCount\n ? ''\n : `Should match number of nodes in a cluster as expected. Got \"${clusterInfo?.length}\" but expected \"${haClusterNodeCount}\"`,\n ).toBe(true);\n\n clusterInfo.forEach((info) =>\n // eslint-disable-next-line no-console\n console.log(`hostname: ${info.hostname}, version: ${info.version}, config_hash: ${info.config_hash}`),\n );\n }\n}\n"],"names":["getAdminClient","callsPluginId","expect","test","testConfig"],"mappings":"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"}
@@ -1,28 +1,19 @@
1
- 'use strict';
2
-
3
- var test = require('@playwright/test');
4
- var client = require('@mattermost/client');
5
- var util = require('./util.js');
6
- var client$1 = require('./server/client.js');
7
- require('./server/default_config.js');
8
- var init = require('./server/init.js');
9
- var plugins = require('./server/plugins.js');
10
- var team = require('./server/team.js');
11
- var user = require('./server/user.js');
12
- var test_config = require('./test_config.js');
13
-
14
1
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
15
2
  // See LICENSE.txt for license information.
16
- async function baseGlobalSetup() {
3
+ import { Client4 } from '@mattermost/client';
4
+ import { defaultTeam } from './util';
5
+ import { createRandomTeam, getAdminClient, getDefaultAdminUser, makeClient } from './server';
6
+ import { testConfig } from './test_config';
7
+ export async function baseGlobalSetup() {
17
8
  let adminClient;
18
9
  let adminUser;
19
- ({ adminClient, adminUser } = await init.getAdminClient({ skipLog: true }));
10
+ ({ adminClient, adminUser } = await getAdminClient({ skipLog: true }));
20
11
  if (!adminUser) {
21
- const firstClient = new client.Client4();
22
- firstClient.setUrl(test_config.testConfig.baseURL);
23
- const defaultAdmin = user.getDefaultAdminUser();
12
+ const firstClient = new Client4();
13
+ firstClient.setUrl(testConfig.baseURL);
14
+ const defaultAdmin = getDefaultAdminUser();
24
15
  await firstClient.createUser(defaultAdmin, '', '');
25
- ({ client: adminClient, user: adminUser } = await client$1.makeClient(defaultAdmin));
16
+ ({ client: adminClient, user: adminUser } = await makeClient(defaultAdmin));
26
17
  }
27
18
  await sysadminSetup(adminClient, adminUser);
28
19
  }
@@ -37,12 +28,12 @@ async function sysadminSetup(client, user) {
37
28
  // Create default team if not present.
38
29
  // Otherwise, create other teams and channels other than the default team cna channels (town-square and off-topic).
39
30
  const myTeams = await client.getMyTeams();
40
- const myDefaultTeam = myTeams && myTeams.length > 0 && myTeams.find((team) => team.name === util.defaultTeam.name);
31
+ const myDefaultTeam = myTeams && myTeams.length > 0 && myTeams.find((team) => team.name === defaultTeam.name);
41
32
  if (!myDefaultTeam) {
42
- await client.createTeam(team.createRandomTeam(util.defaultTeam.name, util.defaultTeam.displayName, 'O', false));
33
+ await client.createTeam(createRandomTeam(defaultTeam.name, defaultTeam.displayName, 'O', false));
43
34
  }
44
- else if (myDefaultTeam && test_config.testConfig.resetBeforeTest) {
45
- await Promise.all(myTeams.filter((team) => team.name !== util.defaultTeam.name).map((team) => client.deleteTeam(team.id)));
35
+ else if (myDefaultTeam && testConfig.resetBeforeTest) {
36
+ await Promise.all(myTeams.filter((team) => team.name !== defaultTeam.name).map((team) => client.deleteTeam(team.id)));
46
37
  const myChannels = await client.getMyChannels(myDefaultTeam.id);
47
38
  await Promise.all(myChannels
48
39
  .filter((channel) => {
@@ -54,12 +45,8 @@ async function sysadminSetup(client, user) {
54
45
  }
55
46
  // Set default preferences
56
47
  await savePreferences(client, user?.id ?? '');
57
- // Ensure all products as plugin are installed and active.
58
- await plugins.ensurePluginsLoaded(client);
59
48
  // Log plugin details
60
49
  await printPluginDetails(client);
61
- // Ensure server deployment type is as expected
62
- await ensureServerDeployment(client);
63
50
  }
64
51
  async function printLicenseInfo(client) {
65
52
  const license = await client.getClientLicenseOld();
@@ -111,25 +98,6 @@ async function printPluginDetails(client) {
111
98
  // eslint-disable-next-line no-console
112
99
  console.log('');
113
100
  }
114
- async function ensureServerDeployment(client) {
115
- if (test_config.testConfig.haClusterEnabled) {
116
- const { haClusterNodeCount, haClusterName } = test_config.testConfig;
117
- const { Enable, ClusterName } = (await client.getConfig()).ClusterSettings;
118
- test.expect(Enable, Enable ? '' : 'Should have cluster enabled').toBe(true);
119
- const sameClusterName = ClusterName === haClusterName;
120
- test.expect(sameClusterName, sameClusterName
121
- ? ''
122
- : `Should have cluster name set and as expected. Got "${ClusterName}" but expected "${haClusterName}"`).toBe(true);
123
- const clusterInfo = await client.getClusterStatus();
124
- const sameCount = clusterInfo?.length === haClusterNodeCount;
125
- test.expect(sameCount, sameCount
126
- ? ''
127
- : `Should match number of nodes in a cluster as expected. Got "${clusterInfo?.length}" but expected "${haClusterNodeCount}"`).toBe(true);
128
- clusterInfo.forEach((info) =>
129
- // eslint-disable-next-line no-console
130
- console.log(`hostname: ${info.hostname}, version: ${info.version}, config_hash: ${info.config_hash}`));
131
- }
132
- }
133
101
  async function savePreferences(client, userId) {
134
102
  try {
135
103
  if (!userId) {
@@ -146,6 +114,3 @@ async function savePreferences(client, userId) {
146
114
  console.log('Error saving preferences', error);
147
115
  }
148
116
  }
149
-
150
- exports.baseGlobalSetup = baseGlobalSetup;
151
- //# sourceMappingURL=global_setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global_setup.js","sources":["../src/global_setup.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {expect} from '@playwright/test';\nimport {Client4} from '@mattermost/client';\nimport {UserProfile} from '@mattermost/types/users';\nimport {PluginManifest} from '@mattermost/types/plugins';\nimport {PreferenceType} from '@mattermost/types/preferences';\n\nimport {defaultTeam} from './util';\nimport {createRandomTeam, ensurePluginsLoaded, getAdminClient, getDefaultAdminUser, makeClient} from './server';\nimport {testConfig} from './test_config';\n\nexport async function baseGlobalSetup() {\n let adminClient: Client4;\n let adminUser: UserProfile | null;\n ({adminClient, adminUser} = await getAdminClient({skipLog: true}));\n\n if (!adminUser) {\n const firstClient = new Client4();\n firstClient.setUrl(testConfig.baseURL);\n const defaultAdmin = getDefaultAdminUser();\n await firstClient.createUser(defaultAdmin, '', '');\n\n ({client: adminClient, user: adminUser} = await makeClient(defaultAdmin));\n }\n\n await sysadminSetup(adminClient, adminUser);\n}\n\nasync function sysadminSetup(client: Client4, user: UserProfile | null) {\n // Ensure admin's email is verified.\n if (!user) {\n await client.verifyUserEmail(client.token);\n }\n\n // Log license and config info\n await printLicenseInfo(client);\n await printClientInfo(client);\n\n // Create default team if not present.\n // Otherwise, create other teams and channels other than the default team cna channels (town-square and off-topic).\n const myTeams = await client.getMyTeams();\n const myDefaultTeam = myTeams && myTeams.length > 0 && myTeams.find((team) => team.name === defaultTeam.name);\n if (!myDefaultTeam) {\n await client.createTeam(createRandomTeam(defaultTeam.name, defaultTeam.displayName, 'O', false));\n } else if (myDefaultTeam && testConfig.resetBeforeTest) {\n await Promise.all(\n myTeams.filter((team) => team.name !== defaultTeam.name).map((team) => client.deleteTeam(team.id)),\n );\n\n const myChannels = await client.getMyChannels(myDefaultTeam.id);\n await Promise.all(\n myChannels\n .filter((channel) => {\n return (\n channel.team_id === myDefaultTeam.id &&\n channel.name !== 'town-square' &&\n channel.name !== 'off-topic'\n );\n })\n .map((channel) => client.deleteChannel(channel.id)),\n );\n }\n\n // Set default preferences\n await savePreferences(client, user?.id ?? '');\n\n // Ensure all products as plugin are installed and active.\n await ensurePluginsLoaded(client);\n\n // Log plugin details\n await printPluginDetails(client);\n\n // Ensure server deployment type is as expected\n await ensureServerDeployment(client);\n}\n\nasync function printLicenseInfo(client: Client4) {\n const license = await client.getClientLicenseOld();\n // eslint-disable-next-line no-console\n console.log(`Server License:\n - IsLicensed = ${license.IsLicensed}\n - IsTrial = ${license.IsTrial}\n - SkuName = ${license.SkuName}\n - SkuShortName = ${license.SkuShortName}\n - Cloud = ${license.Cloud}\n - Users = ${license.Users}`);\n}\n\nasync function printClientInfo(client: Client4) {\n const config = await client.getClientConfigOld();\n // eslint-disable-next-line no-console\n console.log(`Build Info:\n - BuildNumber = ${config.BuildNumber}\n - BuildDate = ${config.BuildDate}\n - Version = ${config.Version}\n - BuildHash = ${config.BuildHash}\n - BuildHashEnterprise = ${config.BuildHashEnterprise}\n - BuildEnterpriseReady = ${config.BuildEnterpriseReady}\n - TelemetryId = ${config.TelemetryId}\n - ServiceEnvironment = ${config.ServiceEnvironment}`);\n\n const {LogSettings, ServiceSettings} = await client.getConfig();\n // eslint-disable-next-line no-console\n console.log(`Notable Server Config:\n - ServiceSettings.EnableSecurityFixAlert = ${ServiceSettings?.EnableSecurityFixAlert}\n - LogSettings.EnableDiagnostics = ${LogSettings?.EnableDiagnostics}`);\n}\n\nasync function printPluginDetails(client: Client4) {\n const plugins = await client.getPlugins();\n\n if (plugins.active.length) {\n // eslint-disable-next-line no-console\n console.log('Active plugins:');\n }\n\n plugins.active.forEach((plugin: PluginManifest) => {\n // eslint-disable-next-line no-console\n console.log(` - ${plugin.id}@${plugin.version} | min_server@${plugin.min_server_version}`);\n });\n\n if (plugins.inactive.length) {\n // eslint-disable-next-line no-console\n console.log('Inactive plugins:');\n }\n\n plugins.inactive.forEach((plugin: PluginManifest) => {\n // eslint-disable-next-line no-console\n console.log(` - ${plugin.id}@${plugin.version} | min_server@${plugin.min_server_version}`);\n });\n\n // eslint-disable-next-line no-console\n console.log('');\n}\n\nasync function ensureServerDeployment(client: Client4) {\n if (testConfig.haClusterEnabled) {\n const {haClusterNodeCount, haClusterName} = testConfig;\n\n const {Enable, ClusterName} = (await client.getConfig()).ClusterSettings;\n expect(Enable, Enable ? '' : 'Should have cluster enabled').toBe(true);\n\n const sameClusterName = ClusterName === haClusterName;\n expect(\n sameClusterName,\n sameClusterName\n ? ''\n : `Should have cluster name set and as expected. Got \"${ClusterName}\" but expected \"${haClusterName}\"`,\n ).toBe(true);\n\n const clusterInfo = await client.getClusterStatus();\n const sameCount = clusterInfo?.length === haClusterNodeCount;\n expect(\n sameCount,\n sameCount\n ? ''\n : `Should match number of nodes in a cluster as expected. Got \"${clusterInfo?.length}\" but expected \"${haClusterNodeCount}\"`,\n ).toBe(true);\n\n clusterInfo.forEach((info) =>\n // eslint-disable-next-line no-console\n console.log(`hostname: ${info.hostname}, version: ${info.version}, config_hash: ${info.config_hash}`),\n );\n }\n}\n\nasync function savePreferences(client: Client4, userId: UserProfile['id']) {\n try {\n if (!userId) {\n throw new Error('userId is not defined');\n }\n\n const preferences: PreferenceType[] = [\n {user_id: userId, category: 'tutorial_step', name: userId, value: '999'},\n {user_id: userId, category: 'crt_thread_pane_step', name: userId, value: '999'},\n ];\n\n await client.savePreferences(userId, preferences);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log('Error saving preferences', error);\n }\n}\n"],"names":["getAdminClient","Client4","testConfig","getDefaultAdminUser","makeClient","defaultTeam","createRandomTeam","ensurePluginsLoaded","expect"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AAYO,eAAe,eAAe,GAAA;AACjC,IAAA,IAAI,WAAoB;AACxB,IAAA,IAAI,SAA6B;AACjC,IAAA,CAAC,EAAC,WAAW,EAAE,SAAS,EAAC,GAAG,MAAMA,mBAAc,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;IAEjE,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,MAAM,WAAW,GAAG,IAAIC,cAAO,EAAE;AACjC,QAAA,WAAW,CAAC,MAAM,CAACC,sBAAU,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,YAAY,GAAGC,wBAAmB,EAAE;QAC1C,MAAM,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC;AAElD,QAAA,CAAC,EAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,MAAMC,mBAAU,CAAC,YAAY,CAAC;;AAG5E,IAAA,MAAM,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/C;AAEA,eAAe,aAAa,CAAC,MAAe,EAAE,IAAwB,EAAA;;IAElE,IAAI,CAAC,IAAI,EAAE;QACP,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;;;AAI9C,IAAA,MAAM,gBAAgB,CAAC,MAAM,CAAC;AAC9B,IAAA,MAAM,eAAe,CAAC,MAAM,CAAC;;;AAI7B,IAAA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE;IACzC,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAKC,gBAAW,CAAC,IAAI,CAAC;IAC7G,IAAI,CAAC,aAAa,EAAE;AAChB,QAAA,MAAM,MAAM,CAAC,UAAU,CAACC,qBAAgB,CAACD,gBAAW,CAAC,IAAI,EAAEA,gBAAW,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;;AAC7F,SAAA,IAAI,aAAa,IAAIH,sBAAU,CAAC,eAAe,EAAE;AACpD,QAAA,MAAM,OAAO,CAAC,GAAG,CACb,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAKG,gBAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACrG;QAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;AAC/D,QAAA,MAAM,OAAO,CAAC,GAAG,CACb;AACK,aAAA,MAAM,CAAC,CAAC,OAAO,KAAI;AAChB,YAAA,QACI,OAAO,CAAC,OAAO,KAAK,aAAa,CAAC,EAAE;gBACpC,OAAO,CAAC,IAAI,KAAK,aAAa;AAC9B,gBAAA,OAAO,CAAC,IAAI,KAAK,WAAW;AAEpC,SAAC;AACA,aAAA,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAC1D;;;IAIL,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;;AAG7C,IAAA,MAAME,2BAAmB,CAAC,MAAM,CAAC;;AAGjC,IAAA,MAAM,kBAAkB,CAAC,MAAM,CAAC;;AAGhC,IAAA,MAAM,sBAAsB,CAAC,MAAM,CAAC;AACxC;AAEA,eAAe,gBAAgB,CAAC,MAAe,EAAA;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE;;IAElD,OAAO,CAAC,GAAG,CAAC,CAAA;AACQ,sBAAA,EAAA,OAAO,CAAC,UAAU;AAClB,sBAAA,EAAA,OAAO,CAAC,OAAO;AACf,sBAAA,EAAA,OAAO,CAAC,OAAO;AACf,sBAAA,EAAA,OAAO,CAAC,YAAY;AACpB,sBAAA,EAAA,OAAO,CAAC,KAAK;AACb,sBAAA,EAAA,OAAO,CAAC,KAAK,CAAE,CAAA,CAAC;AACxC;AAEA,eAAe,eAAe,CAAC,MAAe,EAAA;AAC1C,IAAA,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE;;IAEhD,OAAO,CAAC,GAAG,CAAC,CAAA;AACoB,kCAAA,EAAA,MAAM,CAAC,WAAW;AAClB,kCAAA,EAAA,MAAM,CAAC,SAAS;AAChB,kCAAA,EAAA,MAAM,CAAC,OAAO;AACd,kCAAA,EAAA,MAAM,CAAC,SAAS;AAChB,kCAAA,EAAA,MAAM,CAAC,mBAAmB;AAC1B,kCAAA,EAAA,MAAM,CAAC,oBAAoB;AAC3B,kCAAA,EAAA,MAAM,CAAC,WAAW;AAClB,kCAAA,EAAA,MAAM,CAAC,kBAAkB,CAAE,CAAA,CAAC;IAE5D,MAAM,EAAC,WAAW,EAAE,eAAe,EAAC,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE;;IAE/D,OAAO,CAAC,GAAG,CAAC,CAAA;AACgC,8CAAA,EAAA,eAAe,EAAE,sBAAsB;AACvC,8CAAA,EAAA,WAAW,EAAE,iBAAiB,CAAE,CAAA,CAAC;AACjF;AAEA,eAAe,kBAAkB,CAAC,MAAe,EAAA;AAC7C,IAAA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE;AAEzC,IAAA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;;AAEvB,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;;IAGlC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAsB,KAAI;;AAE9C,QAAA,OAAO,CAAC,GAAG,CAAC,CAAO,IAAA,EAAA,MAAM,CAAC,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAiB,cAAA,EAAA,MAAM,CAAC,kBAAkB,CAAA,CAAE,CAAC;AAC/F,KAAC,CAAC;AAEF,IAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAEzB,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;;IAGpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAsB,KAAI;;AAEhD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAO,IAAA,EAAA,MAAM,CAAC,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAiB,cAAA,EAAA,MAAM,CAAC,kBAAkB,CAAA,CAAE,CAAC;AAC/F,KAAC,CAAC;;AAGF,IAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB;AAEA,eAAe,sBAAsB,CAAC,MAAe,EAAA;AACjD,IAAA,IAAIL,sBAAU,CAAC,gBAAgB,EAAE;AAC7B,QAAA,MAAM,EAAC,kBAAkB,EAAE,aAAa,EAAC,GAAGA,sBAAU;AAEtD,QAAA,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,eAAe;AACxE,QAAAM,WAAM,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAEtE,QAAA,MAAM,eAAe,GAAG,WAAW,KAAK,aAAa;QACrDA,WAAM,CACF,eAAe,EACf;AACI,cAAE;AACF,cAAE,CAAA,mDAAA,EAAsD,WAAW,CAAA,gBAAA,EAAmB,aAAa,CAAA,CAAA,CAAG,CAC7G,CAAC,IAAI,CAAC,IAAI,CAAC;AAEZ,QAAA,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE;AACnD,QAAA,MAAM,SAAS,GAAG,WAAW,EAAE,MAAM,KAAK,kBAAkB;QAC5DA,WAAM,CACF,SAAS,EACT;AACI,cAAE;AACF,cAAE,CAAA,4DAAA,EAA+D,WAAW,EAAE,MAAM,CAAmB,gBAAA,EAAA,kBAAkB,CAAG,CAAA,CAAA,CACnI,CAAC,IAAI,CAAC,IAAI,CAAC;AAEZ,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI;;AAErB,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAc,WAAA,EAAA,IAAI,CAAC,OAAO,kBAAkB,IAAI,CAAC,WAAW,CAAE,CAAA,CAAC,CACxG;;AAET;AAEA,eAAe,eAAe,CAAC,MAAe,EAAE,MAAyB,EAAA;AACrE,IAAA,IAAI;QACA,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;AAG5C,QAAA,MAAM,WAAW,GAAqB;AAClC,YAAA,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAC;AACxE,YAAA,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAC;SAClF;QAED,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC;;IACnD,OAAO,KAAK,EAAE;;AAEZ,QAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC;;AAEtD;;;;"}
1
+ {"version":3,"file":"global_setup.js","sources":["../src/global_setup.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Client4} from '@mattermost/client';\nimport {UserProfile} from '@mattermost/types/users';\nimport {PluginManifest} from '@mattermost/types/plugins';\nimport {PreferenceType} from '@mattermost/types/preferences';\n\nimport {defaultTeam} from './util';\nimport {createRandomTeam, getAdminClient, getDefaultAdminUser, makeClient} from './server';\nimport {testConfig} from './test_config';\n\nexport async function baseGlobalSetup() {\n let adminClient: Client4;\n let adminUser: UserProfile | null;\n ({adminClient, adminUser} = await getAdminClient({skipLog: true}));\n\n if (!adminUser) {\n const firstClient = new Client4();\n firstClient.setUrl(testConfig.baseURL);\n const defaultAdmin = getDefaultAdminUser();\n await firstClient.createUser(defaultAdmin, '', '');\n\n ({client: adminClient, user: adminUser} = await makeClient(defaultAdmin));\n }\n\n await sysadminSetup(adminClient, adminUser);\n}\n\nasync function sysadminSetup(client: Client4, user: UserProfile | null) {\n // Ensure admin's email is verified.\n if (!user) {\n await client.verifyUserEmail(client.token);\n }\n\n // Log license and config info\n await printLicenseInfo(client);\n await printClientInfo(client);\n\n // Create default team if not present.\n // Otherwise, create other teams and channels other than the default team cna channels (town-square and off-topic).\n const myTeams = await client.getMyTeams();\n const myDefaultTeam = myTeams && myTeams.length > 0 && myTeams.find((team) => team.name === defaultTeam.name);\n if (!myDefaultTeam) {\n await client.createTeam(createRandomTeam(defaultTeam.name, defaultTeam.displayName, 'O', false));\n } else if (myDefaultTeam && testConfig.resetBeforeTest) {\n await Promise.all(\n myTeams.filter((team) => team.name !== defaultTeam.name).map((team) => client.deleteTeam(team.id)),\n );\n\n const myChannels = await client.getMyChannels(myDefaultTeam.id);\n await Promise.all(\n myChannels\n .filter((channel) => {\n return (\n channel.team_id === myDefaultTeam.id &&\n channel.name !== 'town-square' &&\n channel.name !== 'off-topic'\n );\n })\n .map((channel) => client.deleteChannel(channel.id)),\n );\n }\n\n // Set default preferences\n await savePreferences(client, user?.id ?? '');\n\n // Log plugin details\n await printPluginDetails(client);\n}\n\nasync function printLicenseInfo(client: Client4) {\n const license = await client.getClientLicenseOld();\n // eslint-disable-next-line no-console\n console.log(`Server License:\n - IsLicensed = ${license.IsLicensed}\n - IsTrial = ${license.IsTrial}\n - SkuName = ${license.SkuName}\n - SkuShortName = ${license.SkuShortName}\n - Cloud = ${license.Cloud}\n - Users = ${license.Users}`);\n}\n\nasync function printClientInfo(client: Client4) {\n const config = await client.getClientConfigOld();\n // eslint-disable-next-line no-console\n console.log(`Build Info:\n - BuildNumber = ${config.BuildNumber}\n - BuildDate = ${config.BuildDate}\n - Version = ${config.Version}\n - BuildHash = ${config.BuildHash}\n - BuildHashEnterprise = ${config.BuildHashEnterprise}\n - BuildEnterpriseReady = ${config.BuildEnterpriseReady}\n - TelemetryId = ${config.TelemetryId}\n - ServiceEnvironment = ${config.ServiceEnvironment}`);\n\n const {LogSettings, ServiceSettings} = await client.getConfig();\n // eslint-disable-next-line no-console\n console.log(`Notable Server Config:\n - ServiceSettings.EnableSecurityFixAlert = ${ServiceSettings?.EnableSecurityFixAlert}\n - LogSettings.EnableDiagnostics = ${LogSettings?.EnableDiagnostics}`);\n}\n\nasync function printPluginDetails(client: Client4) {\n const plugins = await client.getPlugins();\n\n if (plugins.active.length) {\n // eslint-disable-next-line no-console\n console.log('Active plugins:');\n }\n\n plugins.active.forEach((plugin: PluginManifest) => {\n // eslint-disable-next-line no-console\n console.log(` - ${plugin.id}@${plugin.version} | min_server@${plugin.min_server_version}`);\n });\n\n if (plugins.inactive.length) {\n // eslint-disable-next-line no-console\n console.log('Inactive plugins:');\n }\n\n plugins.inactive.forEach((plugin: PluginManifest) => {\n // eslint-disable-next-line no-console\n console.log(` - ${plugin.id}@${plugin.version} | min_server@${plugin.min_server_version}`);\n });\n\n // eslint-disable-next-line no-console\n console.log('');\n}\n\nasync function savePreferences(client: Client4, userId: UserProfile['id']) {\n try {\n if (!userId) {\n throw new Error('userId is not defined');\n }\n\n const preferences: PreferenceType[] = [\n {user_id: userId, category: 'tutorial_step', name: userId, value: '999'},\n {user_id: userId, category: 'crt_thread_pane_step', name: userId, value: '999'},\n ];\n\n await client.savePreferences(userId, preferences);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log('Error saving preferences', error);\n }\n}\n"],"names":["getAdminClient","Client4","testConfig","getDefaultAdminUser","makeClient","defaultTeam","createRandomTeam"],"mappings":";;;;;;;;;;;;AAAA;AACA;AAWO,eAAe,eAAe,GAAA;AACjC,IAAA,IAAI,WAAoB;AACxB,IAAA,IAAI,SAA6B;AACjC,IAAA,CAAC,EAAC,WAAW,EAAE,SAAS,EAAC,GAAG,MAAMA,mBAAc,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;IAEjE,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,MAAM,WAAW,GAAG,IAAIC,cAAO,EAAE;AACjC,QAAA,WAAW,CAAC,MAAM,CAACC,sBAAU,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,YAAY,GAAGC,wBAAmB,EAAE;QAC1C,MAAM,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC;AAElD,QAAA,CAAC,EAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,MAAMC,mBAAU,CAAC,YAAY,CAAC;;AAG5E,IAAA,MAAM,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/C;AAEA,eAAe,aAAa,CAAC,MAAe,EAAE,IAAwB,EAAA;;IAElE,IAAI,CAAC,IAAI,EAAE;QACP,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;;;AAI9C,IAAA,MAAM,gBAAgB,CAAC,MAAM,CAAC;AAC9B,IAAA,MAAM,eAAe,CAAC,MAAM,CAAC;;;AAI7B,IAAA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE;IACzC,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAKC,gBAAW,CAAC,IAAI,CAAC;IAC7G,IAAI,CAAC,aAAa,EAAE;AAChB,QAAA,MAAM,MAAM,CAAC,UAAU,CAACC,qBAAgB,CAACD,gBAAW,CAAC,IAAI,EAAEA,gBAAW,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;;AAC7F,SAAA,IAAI,aAAa,IAAIH,sBAAU,CAAC,eAAe,EAAE;AACpD,QAAA,MAAM,OAAO,CAAC,GAAG,CACb,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAKG,gBAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACrG;QAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;AAC/D,QAAA,MAAM,OAAO,CAAC,GAAG,CACb;AACK,aAAA,MAAM,CAAC,CAAC,OAAO,KAAI;AAChB,YAAA,QACI,OAAO,CAAC,OAAO,KAAK,aAAa,CAAC,EAAE;gBACpC,OAAO,CAAC,IAAI,KAAK,aAAa;AAC9B,gBAAA,OAAO,CAAC,IAAI,KAAK,WAAW;AAEpC,SAAC;AACA,aAAA,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAC1D;;;IAIL,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;;AAG7C,IAAA,MAAM,kBAAkB,CAAC,MAAM,CAAC;AACpC;AAEA,eAAe,gBAAgB,CAAC,MAAe,EAAA;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE;;IAElD,OAAO,CAAC,GAAG,CAAC,CAAA;AACQ,sBAAA,EAAA,OAAO,CAAC,UAAU;AAClB,sBAAA,EAAA,OAAO,CAAC,OAAO;AACf,sBAAA,EAAA,OAAO,CAAC,OAAO;AACf,sBAAA,EAAA,OAAO,CAAC,YAAY;AACpB,sBAAA,EAAA,OAAO,CAAC,KAAK;AACb,sBAAA,EAAA,OAAO,CAAC,KAAK,CAAE,CAAA,CAAC;AACxC;AAEA,eAAe,eAAe,CAAC,MAAe,EAAA;AAC1C,IAAA,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE;;IAEhD,OAAO,CAAC,GAAG,CAAC,CAAA;AACoB,kCAAA,EAAA,MAAM,CAAC,WAAW;AAClB,kCAAA,EAAA,MAAM,CAAC,SAAS;AAChB,kCAAA,EAAA,MAAM,CAAC,OAAO;AACd,kCAAA,EAAA,MAAM,CAAC,SAAS;AAChB,kCAAA,EAAA,MAAM,CAAC,mBAAmB;AAC1B,kCAAA,EAAA,MAAM,CAAC,oBAAoB;AAC3B,kCAAA,EAAA,MAAM,CAAC,WAAW;AAClB,kCAAA,EAAA,MAAM,CAAC,kBAAkB,CAAE,CAAA,CAAC;IAE5D,MAAM,EAAC,WAAW,EAAE,eAAe,EAAC,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE;;IAE/D,OAAO,CAAC,GAAG,CAAC,CAAA;AACgC,8CAAA,EAAA,eAAe,EAAE,sBAAsB;AACvC,8CAAA,EAAA,WAAW,EAAE,iBAAiB,CAAE,CAAA,CAAC;AACjF;AAEA,eAAe,kBAAkB,CAAC,MAAe,EAAA;AAC7C,IAAA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE;AAEzC,IAAA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;;AAEvB,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;;IAGlC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAsB,KAAI;;AAE9C,QAAA,OAAO,CAAC,GAAG,CAAC,CAAO,IAAA,EAAA,MAAM,CAAC,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAiB,cAAA,EAAA,MAAM,CAAC,kBAAkB,CAAA,CAAE,CAAC;AAC/F,KAAC,CAAC;AAEF,IAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAEzB,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;;IAGpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAsB,KAAI;;AAEhD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAO,IAAA,EAAA,MAAM,CAAC,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAiB,cAAA,EAAA,MAAM,CAAC,kBAAkB,CAAA,CAAE,CAAC;AAC/F,KAAC,CAAC;;AAGF,IAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB;AAEA,eAAe,eAAe,CAAC,MAAe,EAAE,MAAyB,EAAA;AACrE,IAAA,IAAI;QACA,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;AAG5C,QAAA,MAAM,WAAW,GAAqB;AAClC,YAAA,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAC;AACxE,YAAA,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAC;SAClF;QAED,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC;;IACnD,OAAO,KAAK,EAAE;;AAEZ,QAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC;;AAEtD;;;;"}
package/dist/index.js CHANGED
@@ -1,42 +1,9 @@
1
- 'use strict';
2
-
3
- var test_fixture = require('./test_fixture.js');
4
- var test_config = require('./test_config.js');
5
- var global_setup = require('./global_setup.js');
6
- var browser_context = require('./browser_context.js');
7
- var file = require('./file.js');
8
- var util = require('./util.js');
9
- var channels = require('./ui/pages/channels.js');
10
- var landing_login = require('./ui/pages/landing_login.js');
11
- var login = require('./ui/pages/login.js');
12
- var reset_password = require('./ui/pages/reset_password.js');
13
- var signup = require('./ui/pages/signup.js');
14
- var system_console = require('./ui/pages/system_console.js');
15
- var scheduled_draft = require('./ui/pages/scheduled_draft.js');
16
- var drafts = require('./ui/pages/drafts.js');
17
- var test = require('@playwright/test');
18
-
19
-
20
-
21
- exports.PlaywrightExtended = test_fixture.PlaywrightExtended;
22
- exports.test = test_fixture.test;
23
- exports.testConfig = test_config.testConfig;
24
- exports.baseGlobalSetup = global_setup.baseGlobalSetup;
25
- exports.TestBrowser = browser_context.TestBrowser;
26
- exports.getBlobFromAsset = file.getBlobFromAsset;
27
- exports.getFileFromAsset = file.getFileFromAsset;
28
- exports.duration = util.duration;
29
- exports.wait = util.wait;
30
- exports.ChannelsPage = channels;
31
- exports.LandingLoginPage = landing_login;
32
- exports.LoginPage = login;
33
- exports.ResetPasswordPage = reset_password;
34
- exports.SignupPage = signup;
35
- exports.SystemConsolePage = system_console;
36
- exports.ScheduledDraftPage = scheduled_draft;
37
- exports.DraftPage = drafts;
38
- Object.defineProperty(exports, "expect", {
39
- enumerable: true,
40
- get: function () { return test.expect; }
41
- });
42
- //# sourceMappingURL=index.js.map
1
+ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
2
+ // See LICENSE.txt for license information.
3
+ export { test, expect, PlaywrightExtended } from './test_fixture';
4
+ export { testConfig } from './test_config';
5
+ export { baseGlobalSetup } from './global_setup';
6
+ export { TestBrowser } from './browser_context';
7
+ export { getBlobFromAsset, getFileFromAsset } from './file';
8
+ export { duration, wait } from './util';
9
+ export { ChannelsPage, LandingLoginPage, LoginPage, ResetPasswordPage, SignupPage, ScheduledDraftPage, SystemConsolePage, DraftPage, } from './ui/pages';
@@ -1,5 +1,3 @@
1
- 'use strict';
2
-
3
1
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
4
2
  // See LICENSE.txt for license information.
5
3
  /**
@@ -12,7 +10,7 @@
12
10
  * @param page Page object
13
11
  * @param permission Permission setting for notifications, with possible values: "default" | "granted" | "denied". Note: A notification sound may still occur even when set to "denied", as the browser might attempt to trigger system notifications.
14
12
  */
15
- async function stubNotification(page, permission) {
13
+ export async function stubNotification(page, permission) {
16
14
  await page.evaluate((notificationPermission) => {
17
15
  // Override the Notification.requestPermission method
18
16
  window.Notification.requestPermission = () => Promise.resolve(permission);
@@ -52,7 +50,7 @@ async function stubNotification(page, permission) {
52
50
  * @param timeout Wait time in milliseconds. (default: 5000ms)
53
51
  * @returns An array of notifications received
54
52
  */
55
- async function waitForNotification(page, expectedCount = 1, timeout = 5000) {
53
+ export async function waitForNotification(page, expectedCount = 1, timeout = 5000) {
56
54
  const start = Date.now();
57
55
  while (Date.now() - start < timeout) {
58
56
  const notifications = await page.evaluate(() => window.getNotifications());
@@ -65,7 +63,3 @@ async function waitForNotification(page, expectedCount = 1, timeout = 5000) {
65
63
  console.error(`Notification not received within the timeout period of ${timeout}ms`);
66
64
  return [];
67
65
  }
68
-
69
- exports.stubNotification = stubNotification;
70
- exports.waitForNotification = waitForNotification;
71
- //# sourceMappingURL=mock_browser_api.js.map
@@ -1,10 +1,7 @@
1
- 'use strict';
2
-
3
- var util = require('../util.js');
4
-
5
1
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
6
2
  // See LICENSE.txt for license information.
7
- function createRandomChannel(channelInput) {
3
+ import { getRandomId } from '@/util';
4
+ export function createRandomChannel(channelInput) {
8
5
  const channel = {
9
6
  team_id: channelInput.teamId,
10
7
  name: channelInput.name,
@@ -14,12 +11,9 @@ function createRandomChannel(channelInput) {
14
11
  header: channelInput.type || '',
15
12
  };
16
13
  if (channelInput.unique) {
17
- const randomSuffix = util.getRandomId();
14
+ const randomSuffix = getRandomId();
18
15
  channel.name = `${channelInput.name}-${randomSuffix}`;
19
16
  channel.display_name = `${channelInput.displayName} ${randomSuffix}`;
20
17
  }
21
18
  return channel;
22
19
  }
23
-
24
- exports.createRandomChannel = createRandomChannel;
25
- //# sourceMappingURL=channel.js.map