@camunda/e2e-test-suite 0.0.156 → 0.0.158
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pages/8.6/AppsPage.js +4 -1
- package/dist/pages/8.6/ConsoleOrganizationPage.d.ts +1 -1
- package/dist/pages/8.6/ConsoleOrganizationPage.js +6 -3
- package/dist/pages/8.6/FormJsPage.d.ts +1 -0
- package/dist/pages/8.6/FormJsPage.js +3 -1
- package/dist/pages/8.6/HomePage.js +12 -2
- package/dist/pages/8.6/ModelerHomePage.d.ts +1 -0
- package/dist/pages/8.6/ModelerHomePage.js +22 -10
- package/dist/pages/8.6/OptimizeDashboardPage.d.ts +1 -1
- package/dist/pages/8.6/OptimizeDashboardPage.js +9 -6
- package/dist/pages/8.6/SignUpPage.d.ts +1 -1
- package/dist/pages/8.6/SignUpPage.js +2 -2
- package/dist/pages/8.6/TaskDetailsPage.js +4 -1
- package/dist/pages/8.6/UtilitiesPage.d.ts +4 -1
- package/dist/pages/8.6/UtilitiesPage.js +2 -2
- package/dist/pages/8.9/ClusterDetailsPage.js +3 -0
- package/dist/pages/8.9/HomePage.js +0 -3
- package/dist/pages/8.9/OptimizeDashboardPage.d.ts +1 -1
- package/dist/pages/8.9/OptimizeDashboardPage.js +8 -5
- package/dist/pages/8.9/UtilitiesPage.d.ts +2 -0
- package/dist/pages/8.9/UtilitiesPage.js +22 -1
- package/dist/tests/8.6/connectors-user-flows.spec.js +3 -1
- package/dist/tests/8.6/console-user-flows.spec.js +3 -1
- package/dist/tests/8.6/hto-user-flows.spec.js +5 -4
- package/dist/tests/8.6/navigation.spec.js +3 -1
- package/dist/tests/8.6/optimize-user-flows.spec.js +4 -2
- package/dist/tests/8.6/play.spec.js +3 -1
- package/dist/tests/8.6/rba-enabled-user-flows.spec.js +7 -4
- package/dist/tests/8.6/smoke-tests.spec.js +3 -1
- package/dist/tests/8.6/test-setup.spec.js +29 -22
- package/dist/tests/8.6/web-modeler-user-flows.spec.js +19 -13
- package/dist/tests/8.8/console-user-flows.spec.js +2 -1
- package/dist/tests/8.9/access-user-role-management.spec.js +3 -0
- package/dist/tests/8.9/console-user-flows.spec.js +20 -16
- package/dist/tests/8.9/optimize-user-flows.spec.js +1 -1
- package/dist/tests/8.9/rba-enabled-v1-user-flows.spec.js +3 -0
- package/dist/tests/8.9/rba-enabled-v2-user-flows.spec.js +1 -0
- package/package.json +1 -1
|
@@ -21,7 +21,10 @@ class AppsPage {
|
|
|
21
21
|
tasklistListItem;
|
|
22
22
|
constructor(page) {
|
|
23
23
|
this.page = page;
|
|
24
|
-
this.modelerLink = page
|
|
24
|
+
this.modelerLink = page
|
|
25
|
+
.getByRole('link', { name: 'Modeler', exact: true })
|
|
26
|
+
.or(page.getByLabel('App Panel').getByLabel('Camunda Modeler'))
|
|
27
|
+
.first();
|
|
25
28
|
this.appSwitcherButton = page.getByLabel('App Switcher');
|
|
26
29
|
this.tasklistLink = page.getByRole('link', { name: 'Tasklist', exact: true });
|
|
27
30
|
this.operateLink = page.getByRole('link', { name: 'Operate', exact: true });
|
|
@@ -45,7 +45,7 @@ declare class ConsoleOrganizationPage {
|
|
|
45
45
|
readonly filterTableSearchbox: Locator;
|
|
46
46
|
constructor(page: Page);
|
|
47
47
|
clickUsersTab(): Promise<void>;
|
|
48
|
-
clickMainUser(): Promise<void>;
|
|
48
|
+
clickMainUser(email: string): Promise<void>;
|
|
49
49
|
clickAuthorizations(): Promise<void>;
|
|
50
50
|
clickCreateAuthorizedResourceButton(): Promise<void>;
|
|
51
51
|
processIdResourceAssertion(processId: string): Promise<void>;
|
|
@@ -166,9 +166,11 @@ class ConsoleOrganizationPage {
|
|
|
166
166
|
async clickUsersTab() {
|
|
167
167
|
await this.usersTab.click({ timeout: 60000 });
|
|
168
168
|
}
|
|
169
|
-
async clickMainUser() {
|
|
170
|
-
await
|
|
171
|
-
|
|
169
|
+
async clickMainUser(email) {
|
|
170
|
+
await this.filterTable([email]);
|
|
171
|
+
const user = this.rows.filter({ hasText: email }).first();
|
|
172
|
+
await (0, test_1.expect)(user).toBeVisible({ timeout: 60000 });
|
|
173
|
+
await user.click();
|
|
172
174
|
}
|
|
173
175
|
async clickAuthorizations() {
|
|
174
176
|
await (0, test_1.expect)(this.authorizedResources).toBeVisible({ timeout: 60000 });
|
|
@@ -448,6 +450,7 @@ class ConsoleOrganizationPage {
|
|
|
448
450
|
}
|
|
449
451
|
async filterTable(names) {
|
|
450
452
|
for (const name of names) {
|
|
453
|
+
await (0, test_1.expect)(this.filterTableSearchbox).toBeVisible({ timeout: 120000 });
|
|
451
454
|
await this.filterTableSearchbox.click({ timeout: 60000 });
|
|
452
455
|
await this.filterTableSearchbox.fill(name);
|
|
453
456
|
}
|
|
@@ -8,6 +8,7 @@ declare class FormJsPage {
|
|
|
8
8
|
readonly formEditor: Locator;
|
|
9
9
|
readonly keyInput: Locator;
|
|
10
10
|
readonly generalPanel: Locator;
|
|
11
|
+
readonly textFieldInForm: Locator;
|
|
11
12
|
constructor(page: Page);
|
|
12
13
|
clickAIFormGeneratorButton(): Promise<void>;
|
|
13
14
|
generateAIForm(request?: string): Promise<void>;
|
|
@@ -12,6 +12,7 @@ class FormJsPage {
|
|
|
12
12
|
formEditor;
|
|
13
13
|
keyInput;
|
|
14
14
|
generalPanel;
|
|
15
|
+
textFieldInForm;
|
|
15
16
|
constructor(page) {
|
|
16
17
|
this.page = page;
|
|
17
18
|
this.aiFormGeneratorButton = page.getByRole('button', {
|
|
@@ -21,8 +22,9 @@ class FormJsPage {
|
|
|
21
22
|
this.generateFormButton = page.getByRole('button', { name: 'Generate form' });
|
|
22
23
|
this.textField = page.locator('button[data-field-type="textfield"]');
|
|
23
24
|
this.formEditor = page.getByLabel('Form Definition');
|
|
24
|
-
this.generalPanel = page.
|
|
25
|
+
this.generalPanel = page.locator('[data-group-id="group-general"]').first();
|
|
25
26
|
this.keyInput = page.getByRole('textbox', { name: 'key' });
|
|
27
|
+
this.textFieldInForm = page.getByLabel('Form Definition');
|
|
26
28
|
}
|
|
27
29
|
async clickAIFormGeneratorButton() {
|
|
28
30
|
await this.aiFormGeneratorButton.click();
|
|
@@ -72,9 +72,19 @@ class HomePage {
|
|
|
72
72
|
await this.openOrganizationButton.click({ timeout: 60000 });
|
|
73
73
|
}
|
|
74
74
|
async clickSkipCustomization() {
|
|
75
|
-
|
|
76
|
-
await this.
|
|
75
|
+
try {
|
|
76
|
+
await (0, test_1.expect)(this.gettingStartedHeading).toBeVisible({
|
|
77
|
+
timeout: 20000,
|
|
78
|
+
});
|
|
79
|
+
await (0, test_1.expect)(this.buttonSkipCustomization).toBeVisible({
|
|
80
|
+
timeout: 30000,
|
|
81
|
+
});
|
|
82
|
+
await this.buttonSkipCustomization.click({ timeout: 60000 });
|
|
77
83
|
await this.closeInformationDialog();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error(error);
|
|
78
88
|
}
|
|
79
89
|
}
|
|
80
90
|
}
|
|
@@ -19,6 +19,7 @@ declare class ModelerHomePage {
|
|
|
19
19
|
readonly uploadFilesButton: Locator;
|
|
20
20
|
readonly messageBanner: Locator;
|
|
21
21
|
readonly closeButton: Locator;
|
|
22
|
+
readonly cancelButton: Locator;
|
|
22
23
|
readonly optionsButton: Locator;
|
|
23
24
|
readonly formNameBreadcrumb: (formName: string) => Locator;
|
|
24
25
|
constructor(page: Page);
|
|
@@ -24,6 +24,7 @@ class ModelerHomePage {
|
|
|
24
24
|
uploadFilesButton;
|
|
25
25
|
messageBanner;
|
|
26
26
|
closeButton;
|
|
27
|
+
cancelButton;
|
|
27
28
|
optionsButton;
|
|
28
29
|
formNameBreadcrumb;
|
|
29
30
|
constructor(page) {
|
|
@@ -59,6 +60,7 @@ class ModelerHomePage {
|
|
|
59
60
|
this.uploadFilesButton = page.getByRole('menuitem', { name: 'Upload files' });
|
|
60
61
|
this.messageBanner = page.locator('[data-test="close-top-banner"]');
|
|
61
62
|
this.closeButton = page.getByRole('button', { name: 'Got it - Dismiss' });
|
|
63
|
+
this.cancelButton = page.getByRole('button', { name: 'Cancel' });
|
|
62
64
|
this.optionsButton = page.getByRole('button', { name: 'Options' });
|
|
63
65
|
this.formNameBreadcrumb = (formName) => page.locator('button[data-test="breadcrumb-form"]', {
|
|
64
66
|
hasText: formName,
|
|
@@ -92,6 +94,7 @@ class ModelerHomePage {
|
|
|
92
94
|
await this.formNameInput.click({ timeout: 60000 });
|
|
93
95
|
await this.formNameInput.fill(name);
|
|
94
96
|
await this.formNameInput.press('Enter');
|
|
97
|
+
await (0, sleep_1.sleep)(200);
|
|
95
98
|
}
|
|
96
99
|
async reload() {
|
|
97
100
|
await this.page.reload();
|
|
@@ -139,16 +142,23 @@ class ModelerHomePage {
|
|
|
139
142
|
await this.enterNewProjectName(this.defaultFolderName);
|
|
140
143
|
}
|
|
141
144
|
async clickManageButton(retries = 3) {
|
|
145
|
+
await this.optionsButton.click({ timeout: 30000 });
|
|
142
146
|
for (let i = 0; i < retries; i++) {
|
|
143
147
|
try {
|
|
144
|
-
await
|
|
145
|
-
|
|
148
|
+
await (0, sleep_1.sleep)(5000);
|
|
149
|
+
if (await this.manageButton.isVisible({ timeout: 30000 })) {
|
|
150
|
+
await this.manageButton.click({ timeout: 10000 });
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
await this.clickOpenOrganizationsButton();
|
|
154
|
+
await this.optionsButton.click({ timeout: 30000 });
|
|
155
|
+
await (0, test_1.expect)(this.manageButton).toBeVisible({ timeout: 30000 });
|
|
156
|
+
await this.manageButton.click({ timeout: 30000 });
|
|
157
|
+
}
|
|
158
|
+
return;
|
|
146
159
|
}
|
|
147
160
|
catch (error) {
|
|
148
|
-
console.error(`Attempt ${i + 1} to click manage button failed: ${error}`);
|
|
149
161
|
await (0, sleep_1.sleep)(10000);
|
|
150
|
-
await this.clickOpenOrganizationsButton();
|
|
151
|
-
await this.clickOptionsButton();
|
|
152
162
|
}
|
|
153
163
|
}
|
|
154
164
|
throw new Error(`Failed to click manage button after ${retries} retries`);
|
|
@@ -158,13 +168,15 @@ class ModelerHomePage {
|
|
|
158
168
|
}
|
|
159
169
|
async clickMessageBanner() {
|
|
160
170
|
try {
|
|
161
|
-
|
|
162
|
-
this.
|
|
163
|
-
this.
|
|
164
|
-
|
|
171
|
+
const button = this.messageBanner
|
|
172
|
+
.or(this.closeButton)
|
|
173
|
+
.or(this.cancelButton)
|
|
174
|
+
.first();
|
|
175
|
+
await (0, test_1.expect)(button).toBeVisible({ timeout: 15000 });
|
|
176
|
+
await button.click();
|
|
165
177
|
}
|
|
166
178
|
catch {
|
|
167
|
-
console.log('No
|
|
179
|
+
console.log('No banner or close button found to click');
|
|
168
180
|
}
|
|
169
181
|
}
|
|
170
182
|
async assertFormBreadcrumbVisible(formName) {
|
|
@@ -6,6 +6,6 @@ declare class OptimizeDashboardPage {
|
|
|
6
6
|
clickFilterTable(): Promise<void>;
|
|
7
7
|
fillFilterTable(processName: string): Promise<void>;
|
|
8
8
|
processLinkAssertion(processName: string, maxRetries: number, retryDelay?: number): Promise<void>;
|
|
9
|
-
processOwnerNameAssertion(processName: string): Promise<void>;
|
|
9
|
+
processOwnerNameAssertion(processName: string, userEmail: string): Promise<void>;
|
|
10
10
|
}
|
|
11
11
|
export { OptimizeDashboardPage };
|
|
@@ -36,24 +36,27 @@ class OptimizeDashboardPage {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
async processOwnerNameAssertion(processName) {
|
|
40
|
-
const maxRetries =
|
|
39
|
+
async processOwnerNameAssertion(processName, userEmail) {
|
|
40
|
+
const maxRetries = 15;
|
|
41
41
|
const retryDelay = 60000;
|
|
42
|
+
const localPart = userEmail.split('@')[0];
|
|
43
|
+
const uuid = localPart.replace('qa-user-', '');
|
|
44
|
+
const result = !uuid ? 'QA Camunda' : `QA User ${uuid}`;
|
|
42
45
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
43
46
|
try {
|
|
44
|
-
await this.page.reload();
|
|
45
47
|
await (0, test_1.expect)(this.page.getByRole('row', {
|
|
46
|
-
name: `${processName}\nProcess\n\
|
|
48
|
+
name: `${processName}\nProcess\n\t${result}`,
|
|
47
49
|
})).toBeVisible({ timeout: 90000 });
|
|
48
50
|
return;
|
|
49
51
|
}
|
|
50
52
|
catch (error) {
|
|
51
53
|
if (attempt < maxRetries - 1) {
|
|
52
|
-
console.warn(`Attempt ${attempt + 1} failed
|
|
54
|
+
console.warn(`Attempt ${attempt + 1} failed for asserting owner name ${result} assertion for ${processName} in Optimize.. Retrying...`);
|
|
55
|
+
await this.page.reload();
|
|
53
56
|
await new Promise((resolve) => setTimeout(resolve, retryDelay));
|
|
54
57
|
}
|
|
55
58
|
else {
|
|
56
|
-
throw new Error(`
|
|
59
|
+
throw new Error(`Owner name ${result} assertion for ${processName} failed after ${maxRetries} attempts`);
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
}
|
|
@@ -27,7 +27,7 @@ declare class SignUpPage {
|
|
|
27
27
|
readonly verifyEmailText: Locator;
|
|
28
28
|
readonly signupFailedText: Locator;
|
|
29
29
|
constructor(page: Page);
|
|
30
|
-
signupToC8(emailAddress: string): Promise<void>;
|
|
30
|
+
signupToC8(emailAddress: string, password: string): Promise<void>;
|
|
31
31
|
clickFirstNameInput(): Promise<void>;
|
|
32
32
|
fillFirstNameInput(firstName: string): Promise<void>;
|
|
33
33
|
clickLastNameInput(): Promise<void>;
|
|
@@ -78,7 +78,7 @@ class SignUpPage {
|
|
|
78
78
|
this.verifyEmailText = page.getByText('Verify your email');
|
|
79
79
|
this.signupFailedText = page.getByText('Sign up failed');
|
|
80
80
|
}
|
|
81
|
-
async signupToC8(emailAddress) {
|
|
81
|
+
async signupToC8(emailAddress, password) {
|
|
82
82
|
await this.page.goto('https://accounts.ultrawombat.com/signup');
|
|
83
83
|
await this.clickFirstNameInput();
|
|
84
84
|
await this.fillFirstNameInput('QA');
|
|
@@ -87,7 +87,7 @@ class SignUpPage {
|
|
|
87
87
|
await this.clickEmailInput();
|
|
88
88
|
await this.fillEmailInput(emailAddress);
|
|
89
89
|
await this.clickPasswordInput();
|
|
90
|
-
await this.fillPasswordInput(
|
|
90
|
+
await this.fillPasswordInput(password);
|
|
91
91
|
await this.clickSignupButton();
|
|
92
92
|
await (0, test_1.expect)(this.verifyEmailText.first()).toBeVisible({
|
|
93
93
|
timeout: 40000,
|
|
@@ -195,7 +195,10 @@ class TaskDetailsPage {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
async fillTextInput(value) {
|
|
198
|
+
await (0, test_1.expect)(this.textInput).toBeVisible({ timeout: 90000 });
|
|
199
|
+
await this.textInput.click();
|
|
198
200
|
await this.textInput.fill(value, { timeout: 90000 });
|
|
201
|
+
(0, test_1.expect)(await this.textInput.inputValue()).toBe(value);
|
|
199
202
|
}
|
|
200
203
|
async fillTextBox(text) {
|
|
201
204
|
await this.textBox.fill(text);
|
|
@@ -204,7 +207,7 @@ class TaskDetailsPage {
|
|
|
204
207
|
await this.nameInput.fill(nameInput);
|
|
205
208
|
}
|
|
206
209
|
async clickSubmitButton() {
|
|
207
|
-
await (0, test_1.expect)(this.submitButton).toBeVisible();
|
|
210
|
+
await (0, test_1.expect)(this.submitButton).toBeVisible({ timeout: 60000 });
|
|
208
211
|
await (0, test_1.expect)(this.submitButton).toBeEnabled();
|
|
209
212
|
await this.submitButton.click();
|
|
210
213
|
}
|
|
@@ -12,7 +12,10 @@ import { OperateProcessesPage } from './OperateProcessesPage';
|
|
|
12
12
|
import { OperateProcessInstancePage } from './OperateProcessInstancePage';
|
|
13
13
|
import { ConnectorSettingsPage } from './ConnectorSettingsPage';
|
|
14
14
|
import { LoginPage } from './LoginPage';
|
|
15
|
-
export declare function loginWithRetry(page: Page, loginPage: LoginPage,
|
|
15
|
+
export declare function loginWithRetry(page: Page, loginPage: LoginPage, testUser: {
|
|
16
|
+
username: string;
|
|
17
|
+
password: string;
|
|
18
|
+
}, timeout: number, maxRetries?: number): Promise<void>;
|
|
16
19
|
export declare function modelRestConnector(modelerCreatePage: ModelerCreatePage, connectorSettingsPage: ConnectorSettingsPage, processName: string, url: string, auth: string, resultExpression: string, resultVariable?: string, basicAuthCredentials?: {
|
|
17
20
|
username: string;
|
|
18
21
|
password: string;
|
|
@@ -8,12 +8,12 @@ const sleep_1 = require("../../utils/sleep");
|
|
|
8
8
|
const randomSleep_1 = require("../../utils/randomSleep");
|
|
9
9
|
const fileUpload_1 = require("../../utils/fileUpload");
|
|
10
10
|
const mailSlurpClient_1 = require("../../utils/mailSlurpClient");
|
|
11
|
-
async function loginWithRetry(page, loginPage, timeout, maxRetries = 3) {
|
|
11
|
+
async function loginWithRetry(page, loginPage, testUser, timeout, maxRetries = 3) {
|
|
12
12
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
13
13
|
try {
|
|
14
14
|
await page.goto('/');
|
|
15
15
|
await (0, sleep_1.sleep)(timeout);
|
|
16
|
-
await loginPage.login();
|
|
16
|
+
await loginPage.login(testUser);
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
19
19
|
catch (error) {
|
|
@@ -73,9 +73,6 @@ class HomePage {
|
|
|
73
73
|
}
|
|
74
74
|
async clickSkipCustomization() {
|
|
75
75
|
try {
|
|
76
|
-
await (0, test_1.expect)(this.gettingStartedHeading).toBeVisible({
|
|
77
|
-
timeout: 20000,
|
|
78
|
-
});
|
|
79
76
|
await (0, test_1.expect)(this.buttonSkipCustomization).toBeVisible({
|
|
80
77
|
timeout: 30000,
|
|
81
78
|
});
|
|
@@ -6,6 +6,6 @@ declare class OptimizeDashboardPage {
|
|
|
6
6
|
clickFilterTable(): Promise<void>;
|
|
7
7
|
fillFilterTable(processName: string): Promise<void>;
|
|
8
8
|
processLinkAssertion(processName: string, maxRetries: number, retryDelay?: number): Promise<void>;
|
|
9
|
-
processOwnerNameAssertion(processName: string): Promise<void>;
|
|
9
|
+
processOwnerNameAssertion(processName: string, userEmail: string): Promise<void>;
|
|
10
10
|
}
|
|
11
11
|
export { OptimizeDashboardPage };
|
|
@@ -36,24 +36,27 @@ class OptimizeDashboardPage {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
async processOwnerNameAssertion(processName) {
|
|
39
|
+
async processOwnerNameAssertion(processName, userEmail) {
|
|
40
40
|
const maxRetries = 15;
|
|
41
41
|
const retryDelay = 60000;
|
|
42
|
+
const localPart = userEmail.split('@')[0];
|
|
43
|
+
const uuid = localPart.replace('qa-user-', '');
|
|
44
|
+
const result = !uuid ? 'QA Camunda' : `QA User ${uuid}`;
|
|
42
45
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
43
46
|
try {
|
|
44
|
-
await this.page.reload();
|
|
45
47
|
await (0, test_1.expect)(this.page.getByRole('row', {
|
|
46
|
-
name: `${processName}\nProcess\n\
|
|
48
|
+
name: `${processName}\nProcess\n\t${result}`,
|
|
47
49
|
})).toBeVisible({ timeout: 90000 });
|
|
48
50
|
return;
|
|
49
51
|
}
|
|
50
52
|
catch (error) {
|
|
51
53
|
if (attempt < maxRetries - 1) {
|
|
52
|
-
console.warn(`Attempt ${attempt + 1} failed for asserting owner name in Optimize.. Retrying...`);
|
|
54
|
+
console.warn(`Attempt ${attempt + 1} failed for asserting owner name ${result} assertion for ${processName} in Optimize.. Retrying...`);
|
|
55
|
+
await this.page.reload();
|
|
53
56
|
await new Promise((resolve) => setTimeout(resolve, retryDelay));
|
|
54
57
|
}
|
|
55
58
|
else {
|
|
56
|
-
throw new Error(`Owner name assertion failed after ${maxRetries} attempts`);
|
|
59
|
+
throw new Error(`Owner name ${result} assertion for ${processName} failed after ${maxRetries} attempts`);
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
}
|
|
@@ -13,6 +13,7 @@ import { ConnectorSettingsPage } from './ConnectorSettingsPage';
|
|
|
13
13
|
import { LoginPage } from './LoginPage';
|
|
14
14
|
import { ConnectorMarketplacePage } from './ConnectorMarketplacePage';
|
|
15
15
|
import { ConnectorTemplatePage } from './ConnectorTemplatePage';
|
|
16
|
+
import { MailSlurp } from 'mailslurp-client';
|
|
16
17
|
export declare function loginWithRetry(page: Page, loginPage: LoginPage, testUser: {
|
|
17
18
|
username: string;
|
|
18
19
|
password: string;
|
|
@@ -34,6 +35,7 @@ export declare function runMultipleProcesses(clusterName: string, page: Page, mo
|
|
|
34
35
|
export declare function disableRBA(clusterName: string, homePage: HomePage, clusterPage: ClusterPage, clusterDetailsPage: ClusterDetailsPage, appsPage: AppsPage): Promise<void>;
|
|
35
36
|
export declare function enableAuthorizations(clusterName: string, homePage: HomePage, clusterPage: ClusterPage, clusterDetailsPage: ClusterDetailsPage, appsPage: AppsPage): Promise<void>;
|
|
36
37
|
export declare function clickInvitationLinkInEmail(page: Page, id: string): Promise<void>;
|
|
38
|
+
export declare function assertLatestAlertEmail(id: string, mailSlurp: MailSlurp, processName: string, alertText: string): Promise<string>;
|
|
37
39
|
export declare function assertTestUsesCorrectOrganization(page: Page): Promise<void>;
|
|
38
40
|
export declare function deleteAllUserGroups(homePage: HomePage, organizationPage: ConsoleOrganizationPage, appsPage: AppsPage): Promise<void>;
|
|
39
41
|
export declare function deleteCluster(clusterName: string, homePage: HomePage, clusterPage: ClusterPage, appsPage: AppsPage): Promise<void>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.waitForLoadingToFinish = exports.assertTestUsesCorrectOrganizationFromModeler = exports.expectCountToBeOneOf = exports.createAPIClient = exports.modelAndRunConnectorsTimerEventDiagram = exports.modelAndRunConnectorsDocHandlingDiagram = exports.deleteCluster = exports.deleteAllUserGroups = exports.assertTestUsesCorrectOrganization = exports.clickInvitationLinkInEmail = exports.enableAuthorizations = exports.disableRBA = exports.runMultipleProcesses = exports.runProcess = exports.completeTaskWithRetry = exports.assertPageTextWithRetry = exports.assertLocatorVisibleWithRetry = exports.modelRestConnector = exports.modelDiagramFromFile = exports.loginWithRetry = void 0;
|
|
3
|
+
exports.waitForLoadingToFinish = exports.assertTestUsesCorrectOrganizationFromModeler = exports.expectCountToBeOneOf = exports.createAPIClient = exports.modelAndRunConnectorsTimerEventDiagram = exports.modelAndRunConnectorsDocHandlingDiagram = exports.deleteCluster = exports.deleteAllUserGroups = exports.assertTestUsesCorrectOrganization = exports.assertLatestAlertEmail = exports.clickInvitationLinkInEmail = exports.enableAuthorizations = exports.disableRBA = exports.runMultipleProcesses = exports.runProcess = exports.completeTaskWithRetry = exports.assertPageTextWithRetry = exports.assertLocatorVisibleWithRetry = exports.modelRestConnector = exports.modelDiagramFromFile = exports.loginWithRetry = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const ModelerHomePage_1 = require("./ModelerHomePage");
|
|
6
6
|
const HomePage_1 = require("./HomePage");
|
|
@@ -281,6 +281,27 @@ async function clickInvitationLinkInEmail(page, id) {
|
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
exports.clickInvitationLinkInEmail = clickInvitationLinkInEmail;
|
|
284
|
+
async function assertLatestAlertEmail(id, mailSlurp, processName, alertText) {
|
|
285
|
+
const maxRetries = 3;
|
|
286
|
+
for (let retries = 0; retries < maxRetries; retries++) {
|
|
287
|
+
try {
|
|
288
|
+
const email = await mailSlurp.waitForLatestEmail(id, 120000);
|
|
289
|
+
if (email && email.body) {
|
|
290
|
+
(0, test_1.expect)(email.body).toContain(processName);
|
|
291
|
+
(0, test_1.expect)(email.body).toContain(alertText);
|
|
292
|
+
return email.body;
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
throw new Error('Email or email body is null or undefined.');
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
console.warn(`Click attempt ${retries + 1} failed: ${error}`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
throw new Error(`Failed to get latest alert (${processName}) email for ${id} after ${maxRetries} attempts.`);
|
|
303
|
+
}
|
|
304
|
+
exports.assertLatestAlertEmail = assertLatestAlertEmail;
|
|
284
305
|
async function assertTestUsesCorrectOrganization(page) {
|
|
285
306
|
const homePage = new HomePage_1.HomePage(page);
|
|
286
307
|
if (page.url().includes('?code=') || page.url().includes('&state=')) {
|
|
@@ -8,12 +8,14 @@ const _setup_1 = require("../../test-setup.js");
|
|
|
8
8
|
const sleep_1 = require("../../utils/sleep");
|
|
9
9
|
const apiHelpers_1 = require("../../utils/apiHelpers");
|
|
10
10
|
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
11
|
+
const users_1 = require("../../utils/users");
|
|
12
|
+
const testUser = (0, users_1.getTestUser)('seventeenthUser');
|
|
11
13
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
12
14
|
_8_6_1.test.describe('Connectors User Flow Tests', () => {
|
|
13
15
|
const defaultClusterName = 'Test Cluster';
|
|
14
16
|
const awsCluster = 'AWS Cluster';
|
|
15
17
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
16
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
18
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
17
19
|
});
|
|
18
20
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
19
21
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -9,12 +9,14 @@ const googleapi_1 = require("../../utils/googleapi");
|
|
|
9
9
|
const formatDate_1 = require("../../utils/formatDate");
|
|
10
10
|
const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
11
11
|
const constants_1 = require("../../utils/constants");
|
|
12
|
+
const users_1 = require("../../utils/users");
|
|
13
|
+
const testUser = (0, users_1.getTestUser)('eighteenthUser');
|
|
12
14
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
13
15
|
_8_6_1.test.describe('Console User Flow Tests', () => {
|
|
14
16
|
const defaultClusterName = 'Test Cluster';
|
|
15
17
|
const awsCluster = 'AWS Cluster';
|
|
16
18
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
17
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
19
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
18
20
|
});
|
|
19
21
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
20
22
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -11,11 +11,13 @@ const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
|
11
11
|
const sleep_1 = require("../../utils/sleep");
|
|
12
12
|
const LoginPage_1 = require("../../pages/8.6/LoginPage");
|
|
13
13
|
const resetSession_1 = require("../../utils/resetSession");
|
|
14
|
+
const users_1 = require("../../utils/users");
|
|
15
|
+
const testUser = (0, users_1.getTestUser)('nineteenthUser');
|
|
14
16
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
15
17
|
_8_6_1.test.describe('HTO User Flow Tests', () => {
|
|
16
18
|
const clusterName = 'Test Cluster';
|
|
17
19
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
18
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
20
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
19
21
|
});
|
|
20
22
|
_8_6_1.test.afterEach(async ({ page, homePage, appsPage, consoleOrganizationsPage }, testInfo) => {
|
|
21
23
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -261,9 +263,7 @@ _8_6_1.test.describe('HTO User Flow Tests', () => {
|
|
|
261
263
|
await _8_6_1.test.step('Assign Users to the Created Groups in Identity', async () => {
|
|
262
264
|
await consoleOrganizationsPage.clickUserGroup('Single User');
|
|
263
265
|
await consoleOrganizationsPage.clickAssignMembers();
|
|
264
|
-
await consoleOrganizationsPage.fillAssignMembers([
|
|
265
|
-
process.env.C8_USERNAME,
|
|
266
|
-
]);
|
|
266
|
+
await consoleOrganizationsPage.fillAssignMembers([testUser.username]);
|
|
267
267
|
await consoleOrganizationsPage.clickAssignSubButton();
|
|
268
268
|
await consoleOrganizationsPage.clickOrganizationManagementLink();
|
|
269
269
|
await consoleOrganizationsPage.clickGroupsTab();
|
|
@@ -348,6 +348,7 @@ _8_6_1.test.describe('HTO User Flow Tests', () => {
|
|
|
348
348
|
const loginPage = new LoginPage_1.LoginPage(page);
|
|
349
349
|
await loginPage.loginWithTestUser({
|
|
350
350
|
username: process.env.C8_USERNAME_TEST_2,
|
|
351
|
+
password: process.env.C8_PASSWORD_TEST_2,
|
|
351
352
|
});
|
|
352
353
|
await appsPage.clickCamundaApps();
|
|
353
354
|
await appsPage.clickTasklist(clusterName);
|
|
@@ -4,11 +4,13 @@ const test_1 = require("@playwright/test");
|
|
|
4
4
|
const _8_6_1 = require("../../fixtures/8.6");
|
|
5
5
|
const _setup_1 = require("../../test-setup.js");
|
|
6
6
|
const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
7
|
+
const users_1 = require("../../utils/users");
|
|
8
|
+
const testUser = (0, users_1.getTestUser)('twentyFirstUser');
|
|
7
9
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
8
10
|
_8_6_1.test.describe('Navigation Tests', () => {
|
|
9
11
|
const clusterName = 'Test Cluster';
|
|
10
12
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
11
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
13
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
12
14
|
});
|
|
13
15
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
14
16
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -10,11 +10,13 @@ const OptimizeHomePage_1 = require("../../pages/8.6/OptimizeHomePage");
|
|
|
10
10
|
const OptimizeDashboardPage_1 = require("../../pages/8.6/OptimizeDashboardPage");
|
|
11
11
|
const sleep_1 = require("../../utils/sleep");
|
|
12
12
|
const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
13
|
+
const users_1 = require("../../utils/users");
|
|
14
|
+
const testUser = (0, users_1.getTestUser)('twentyThirdUser');
|
|
13
15
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
14
16
|
_8_6_1.test.describe('Optimize User Flow Tests', () => {
|
|
15
17
|
const clusterName = 'Test Cluster';
|
|
16
18
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
17
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
19
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
18
20
|
});
|
|
19
21
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
20
22
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -223,7 +225,7 @@ _8_6_1.test.describe('Optimize User Flow Tests', () => {
|
|
|
223
225
|
await optimizeTabOptimizeHomePage.clickDashboardLink();
|
|
224
226
|
await (0, sleep_1.sleep)(120000);
|
|
225
227
|
await operateTabOptimizeDashboardPage.processLinkAssertion(processName, 5);
|
|
226
|
-
await operateTabOptimizeDashboardPage.processOwnerNameAssertion(processName);
|
|
228
|
+
await operateTabOptimizeDashboardPage.processOwnerNameAssertion(processName, testUser.username);
|
|
227
229
|
});
|
|
228
230
|
});
|
|
229
231
|
});
|
|
@@ -5,10 +5,12 @@ const _8_6_1 = require("../../fixtures/8.6");
|
|
|
5
5
|
const _setup_1 = require("../../test-setup.js");
|
|
6
6
|
const sleep_1 = require("../../utils/sleep");
|
|
7
7
|
const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
8
|
+
const users_1 = require("../../utils/users");
|
|
9
|
+
const testUser = (0, users_1.getTestUser)('twentyFourthUser');
|
|
8
10
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
9
11
|
_8_6_1.test.describe('Deploy and run a process in Play', () => {
|
|
10
12
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
11
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
13
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
12
14
|
});
|
|
13
15
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
14
16
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -6,6 +6,8 @@ const _setup_1 = require("../../test-setup.js");
|
|
|
6
6
|
const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
7
7
|
const sleep_1 = require("../../utils/sleep");
|
|
8
8
|
const resetSession_1 = require("../../utils/resetSession");
|
|
9
|
+
const users_1 = require("../../utils/users");
|
|
10
|
+
const mainUser = (0, users_1.getTestUser)('twentyFifthUser');
|
|
9
11
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
10
12
|
_8_6_1.test.describe('RBA Enabled User Flows Test', () => {
|
|
11
13
|
const clusterNames = {
|
|
@@ -14,7 +16,7 @@ _8_6_1.test.describe('RBA Enabled User Flows Test', () => {
|
|
|
14
16
|
'RBA On User Flow - Permission for All Processes': 'Third RBA Cluster',
|
|
15
17
|
};
|
|
16
18
|
_8_6_1.test.beforeEach(async ({ page, homePage, clusterPage, loginPage }, testInfo) => {
|
|
17
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
19
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, mainUser, (testInfo.workerIndex + 1) * 1000);
|
|
18
20
|
await (0, test_1.expect)(homePage.clusterTab).toBeVisible({ timeout: 120000 });
|
|
19
21
|
await homePage.clickClusters();
|
|
20
22
|
(0, test_1.expect)(clusterNames[testInfo.title]).toBeTruthy();
|
|
@@ -55,7 +57,7 @@ _8_6_1.test.describe('RBA Enabled User Flows Test', () => {
|
|
|
55
57
|
await _8_6_1.test.step('Navigate to Users and Make Sure that No Authorized Resources Are Created', async () => {
|
|
56
58
|
await homePage.clickOrganization();
|
|
57
59
|
await consoleOrganizationsPage.clickUsersTab();
|
|
58
|
-
await consoleOrganizationsPage.clickMainUser();
|
|
60
|
+
await consoleOrganizationsPage.clickMainUser(mainUser.username);
|
|
59
61
|
await consoleOrganizationsPage.clickAuthorizations();
|
|
60
62
|
await (0, test_1.expect)(page.getByText(processIdBeforeEnablingRBA + '1', { exact: true })).not.toBeVisible({
|
|
61
63
|
timeout: 120000,
|
|
@@ -125,7 +127,7 @@ _8_6_1.test.describe('RBA Enabled User Flows Test', () => {
|
|
|
125
127
|
await _8_6_1.test.step('Navigate to Users and Create Authorized Resource For Process 1', async () => {
|
|
126
128
|
await homePage.clickOrganization();
|
|
127
129
|
await consoleOrganizationsPage.clickUsersTab();
|
|
128
|
-
await consoleOrganizationsPage.clickMainUser();
|
|
130
|
+
await consoleOrganizationsPage.clickMainUser(mainUser.username);
|
|
129
131
|
await consoleOrganizationsPage.clickAuthorizations();
|
|
130
132
|
await (0, test_1.expect)(page.getByText(processId1, { exact: true })).not.toBeVisible({
|
|
131
133
|
timeout: 60000,
|
|
@@ -172,6 +174,7 @@ _8_6_1.test.describe('RBA Enabled User Flows Test', () => {
|
|
|
172
174
|
await _8_6_1.test.step('Login as Test User', async () => {
|
|
173
175
|
await loginPage.loginWithTestUser({
|
|
174
176
|
username: process.env.C8_USERNAME_TEST_2,
|
|
177
|
+
password: process.env.C8_PASSWORD_TEST_2,
|
|
175
178
|
});
|
|
176
179
|
});
|
|
177
180
|
await _8_6_1.test.step('Navigate to Operate and Check Processes Are Not Accessible', async () => {
|
|
@@ -226,7 +229,7 @@ _8_6_1.test.describe('RBA Enabled User Flows Test', () => {
|
|
|
226
229
|
await appsPage.clickConsoleLink();
|
|
227
230
|
await homePage.clickOrganization();
|
|
228
231
|
await consoleOrganizationsPage.clickUsersTab();
|
|
229
|
-
await consoleOrganizationsPage.clickMainUser();
|
|
232
|
+
await consoleOrganizationsPage.clickMainUser(mainUser.username);
|
|
230
233
|
await consoleOrganizationsPage.clickAuthorizations();
|
|
231
234
|
await consoleOrganizationsPage.authorizedResourceAssertion(processId1);
|
|
232
235
|
await consoleOrganizationsPage.authorizedResourceAssertion(processId2);
|
|
@@ -14,11 +14,13 @@ const OptimizeCollectionsPage_1 = require("../../pages/8.6/OptimizeCollectionsPa
|
|
|
14
14
|
const OptimizeReportPage_1 = require("../../pages/8.6/OptimizeReportPage");
|
|
15
15
|
const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
16
16
|
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
17
|
+
const users_1 = require("../../utils/users");
|
|
18
|
+
const testUser = (0, users_1.getTestUser)('thirteenthUser');
|
|
17
19
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
18
20
|
_8_6_1.test.describe('Smoke Tests', () => {
|
|
19
21
|
const clusterName = 'Test Cluster';
|
|
20
22
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
21
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
23
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
22
24
|
});
|
|
23
25
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
24
26
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -4,20 +4,19 @@ const test_1 = require("@playwright/test");
|
|
|
4
4
|
const _8_6_1 = require("../../fixtures/8.6");
|
|
5
5
|
const _setup_1 = require("../../test-setup.js");
|
|
6
6
|
const sleep_1 = require("../../utils/sleep");
|
|
7
|
+
const users_1 = require("../../utils/users");
|
|
8
|
+
const UtilitiesPage_1 = require("../../pages/8.6/UtilitiesPage");
|
|
7
9
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
8
10
|
_8_6_1.test.describe('Cluster Setup Tests', () => {
|
|
9
|
-
_8_6_1.test.beforeEach(async ({ page, loginPage }) => {
|
|
10
|
-
await page.goto('/');
|
|
11
|
-
await loginPage.login();
|
|
12
|
-
});
|
|
13
11
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
14
12
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
15
13
|
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
16
14
|
});
|
|
17
|
-
(0, _8_6_1.test)('Enable Alpha Features', async ({ page, homePage, consoleOrganizationsPage, }) => {
|
|
15
|
+
(0, _8_6_1.test)('Enable Alpha Features', async ({ page, homePage, loginPage, consoleOrganizationsPage, }, testInfo) => {
|
|
18
16
|
if (process.env.IS_PROD === 'true') {
|
|
19
17
|
_8_6_1.test.skip(true, 'Skipping test because not required on PROD test org');
|
|
20
18
|
}
|
|
19
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
|
|
21
20
|
await homePage.clickOrganization();
|
|
22
21
|
await (0, test_1.expect)(consoleOrganizationsPage.settingsTab).toBeVisible({
|
|
23
22
|
timeout: 60000,
|
|
@@ -29,37 +28,45 @@ _8_6_1.test.describe('Cluster Setup Tests', () => {
|
|
|
29
28
|
await consoleOrganizationsPage.clickSettingsTab();
|
|
30
29
|
await consoleOrganizationsPage.enableAlphaFeature('AI-powered features');
|
|
31
30
|
});
|
|
32
|
-
(0, _8_6_1.test)('Create Default Cluster', async ({ homePage, clusterDetailsPage,
|
|
31
|
+
(0, _8_6_1.test)('Create Default Cluster', async ({ page, loginPage, homePage, clusterPage, clusterDetailsPage, }, testInfo) => {
|
|
33
32
|
_8_6_1.test.slow();
|
|
34
33
|
const clusterName = 'Test Cluster';
|
|
34
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
|
|
35
35
|
await homePage.clickClusters();
|
|
36
36
|
await clusterPage.createCluster(clusterName);
|
|
37
37
|
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName);
|
|
38
38
|
await clusterPage.clickClusterLink(clusterName);
|
|
39
39
|
await clusterDetailsPage.assertComponentsHealth();
|
|
40
40
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
await (
|
|
44
|
-
|
|
41
|
+
for (const [index, user] of (0, users_1.getTestUsers)().entries()) {
|
|
42
|
+
(0, _8_6_1.test)(`Create Project Folder for User ${index + 1}`, async ({ page, loginPage, homePage, appsPage, modelerHomePage, }, testInfo) => {
|
|
43
|
+
await _8_6_1.test.step('Log in', async () => {
|
|
44
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, user, (testInfo.workerIndex + 1) * 1000);
|
|
45
45
|
});
|
|
46
|
-
await
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
await _8_6_1.test.step('Navigate to Web Modeler', async () => {
|
|
47
|
+
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
48
|
+
timeout: 120000,
|
|
49
|
+
});
|
|
50
|
+
await appsPage.clickCamundaApps();
|
|
51
|
+
await appsPage.clickModeler();
|
|
52
|
+
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
53
|
+
timeout: 180000,
|
|
54
|
+
});
|
|
50
55
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
await _8_6_1.test.step('Create Cross Component Project Folder', async () => {
|
|
57
|
+
await homePage.clickSkipCustomization();
|
|
58
|
+
await modelerHomePage.createCrossComponentProjectFolder();
|
|
59
|
+
await modelerHomePage.clickHomeBreadcrumb();
|
|
60
|
+
await (0, test_1.expect)(modelerHomePage.crossComponentProjectFolder).toBeVisible({
|
|
61
|
+
timeout: 60000,
|
|
62
|
+
});
|
|
57
63
|
});
|
|
58
64
|
});
|
|
59
|
-
}
|
|
60
|
-
(0, _8_6_1.test)('Create AWS Cluster', async ({ homePage, clusterPage, clusterDetailsPage, }) => {
|
|
65
|
+
}
|
|
66
|
+
(0, _8_6_1.test)('Create AWS Cluster', async ({ page, loginPage, homePage, clusterPage, clusterDetailsPage, }, testInfo) => {
|
|
61
67
|
_8_6_1.test.slow();
|
|
62
68
|
const clusterName = 'AWS Cluster';
|
|
69
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
|
|
63
70
|
await homePage.clickClusters();
|
|
64
71
|
await clusterPage.createCluster(clusterName, 'AWS');
|
|
65
72
|
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName);
|
|
@@ -12,6 +12,9 @@ const deleteOrg_1 = require("../../utils/deleteOrg");
|
|
|
12
12
|
const sleep_1 = require("../../utils/sleep");
|
|
13
13
|
const mailSlurpClient_1 = require("../../utils/mailSlurpClient");
|
|
14
14
|
const resetSession_1 = require("../../utils/resetSession");
|
|
15
|
+
const users_1 = require("../../utils/users");
|
|
16
|
+
const node_crypto_1 = require("node:crypto");
|
|
17
|
+
const testUser = (0, users_1.getTestUser)('eleventhUser');
|
|
15
18
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
16
19
|
_8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
17
20
|
const clusterName = 'Test Cluster';
|
|
@@ -20,7 +23,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
20
23
|
'Invite Existing C8 member to Web Modeler flow': '',
|
|
21
24
|
};
|
|
22
25
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
23
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
26
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
24
27
|
});
|
|
25
28
|
_8_6_1.test.afterEach(async ({ page }, testInfo) => {
|
|
26
29
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
@@ -106,7 +109,6 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
106
109
|
timeout: 120000,
|
|
107
110
|
});
|
|
108
111
|
await modelerHomePage.clickOpenOrganizationsButton();
|
|
109
|
-
await modelerHomePage.clickOptionsButton();
|
|
110
112
|
await modelerHomePage.clickManageButton();
|
|
111
113
|
await consoleOrganizationsPage.clickUsersTab();
|
|
112
114
|
await consoleOrganizationsPage.filterTable([
|
|
@@ -139,6 +141,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
139
141
|
await (0, test_1.expect)(appsPage.tasklistLink).not.toBeVisible();
|
|
140
142
|
await (0, test_1.expect)(appsPage.modelerLink).toBeVisible();
|
|
141
143
|
await appsPage.clickModeler();
|
|
144
|
+
await homePage.clickSkipCustomization();
|
|
142
145
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
143
146
|
await modelerHomePage.clickDiagramTypeDropdown();
|
|
144
147
|
await modelerHomePage.clickBpmnTemplateOption();
|
|
@@ -160,7 +163,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
160
163
|
});
|
|
161
164
|
await settingsPage.clickOpenSettingsButton();
|
|
162
165
|
await settingsPage.clickLogoutButton();
|
|
163
|
-
await loginPage.login();
|
|
166
|
+
await loginPage.login(testUser);
|
|
164
167
|
await (0, sleep_1.sleep)(30000);
|
|
165
168
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
166
169
|
timeout: 90000,
|
|
@@ -170,7 +173,6 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
170
173
|
timeout: 120000,
|
|
171
174
|
});
|
|
172
175
|
await modelerHomePage.clickOpenOrganizationsButton();
|
|
173
|
-
await modelerHomePage.clickOptionsButton();
|
|
174
176
|
await modelerHomePage.clickManageButton();
|
|
175
177
|
await consoleOrganizationsPage.clickUsersTab();
|
|
176
178
|
await page.reload();
|
|
@@ -221,7 +223,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
221
223
|
});
|
|
222
224
|
await settingsPage.clickOpenSettingsButton();
|
|
223
225
|
await settingsPage.clickLogoutButton();
|
|
224
|
-
await loginPage.login();
|
|
226
|
+
await loginPage.login(testUser);
|
|
225
227
|
await (0, sleep_1.sleep)(20000);
|
|
226
228
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
227
229
|
timeout: 60000,
|
|
@@ -231,7 +233,6 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
231
233
|
timeout: 60000,
|
|
232
234
|
});
|
|
233
235
|
await modelerHomePage.clickOpenOrganizationsButton();
|
|
234
|
-
await modelerHomePage.clickOptionsButton();
|
|
235
236
|
await modelerHomePage.clickManageButton();
|
|
236
237
|
await consoleOrganizationsPage.clickUsersTab();
|
|
237
238
|
await page.reload();
|
|
@@ -396,7 +397,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
396
397
|
timeout: 60000,
|
|
397
398
|
});
|
|
398
399
|
await page.goto('/');
|
|
399
|
-
await loginPage.login();
|
|
400
|
+
await loginPage.login(testUser);
|
|
400
401
|
});
|
|
401
402
|
await _8_6_1.test.step('Navigate to Web Modeler as Project Admin', async () => {
|
|
402
403
|
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
@@ -419,8 +420,11 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
419
420
|
const { id, emailAddress } = await (0, mailSlurpClient_1.createInbox)();
|
|
420
421
|
inboxes[testInfo.title] = id;
|
|
421
422
|
let newOrganizationUuid = '';
|
|
423
|
+
const password = (await (0, _setup_1.generateRandomStringAsync)(5)) +
|
|
424
|
+
(0, node_crypto_1.randomInt)(10000000, 90000000) +
|
|
425
|
+
'*';
|
|
422
426
|
await _8_6_1.test.step('Sign up new user to C8', async () => {
|
|
423
|
-
await signUpPage.signupToC8(emailAddress);
|
|
427
|
+
await signUpPage.signupToC8(emailAddress, password);
|
|
424
428
|
});
|
|
425
429
|
await _8_6_1.test.step('Log in to C8 as New User', async () => {
|
|
426
430
|
await (0, UtilitiesPage_1.clickInvitationLinkInEmail)(page, id);
|
|
@@ -432,7 +436,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
432
436
|
await settingsPage.clickLogoutButton();
|
|
433
437
|
await loginPage.loginWithoutOrgAssertion({
|
|
434
438
|
username: emailAddress,
|
|
435
|
-
password:
|
|
439
|
+
password: password,
|
|
436
440
|
});
|
|
437
441
|
await (0, test_1.expect)(homePage.gettingStartedHeading).toBeVisible({
|
|
438
442
|
timeout: 40000,
|
|
@@ -450,7 +454,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
450
454
|
await _8_6_1.test.step('Login as Project Admin', async () => {
|
|
451
455
|
await settingsPage.clickOpenSettingsButton();
|
|
452
456
|
await settingsPage.clickLogoutButton();
|
|
453
|
-
await loginPage.login();
|
|
457
|
+
await loginPage.login(testUser);
|
|
454
458
|
});
|
|
455
459
|
await _8_6_1.test.step('Navigate to Web Modeler', async () => {
|
|
456
460
|
await appsPage.clickCamundaApps();
|
|
@@ -477,7 +481,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
477
481
|
await (0, sleep_1.sleep)(60000);
|
|
478
482
|
await loginPage.login({
|
|
479
483
|
username: emailAddress,
|
|
480
|
-
password:
|
|
484
|
+
password: password,
|
|
481
485
|
});
|
|
482
486
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(modelerHomePage, modelerHomePage.crossComponentProjectFolder, 'Cross Component Test Project', 60000, 5);
|
|
483
487
|
});
|
|
@@ -486,7 +490,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
486
490
|
await settingsPage.clickLogoutButton();
|
|
487
491
|
});
|
|
488
492
|
await _8_6_1.test.step('Navigate to Web Modeler as Project Admin', async () => {
|
|
489
|
-
await loginPage.login();
|
|
493
|
+
await loginPage.login(testUser);
|
|
490
494
|
await appsPage.clickCamundaApps();
|
|
491
495
|
await appsPage.clickModeler();
|
|
492
496
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
@@ -618,8 +622,10 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
618
622
|
await modelerHomePage.clickFormOption();
|
|
619
623
|
await modelerHomePage.enterFormName(formName);
|
|
620
624
|
await formJsPage.dragAndDrop(formJsPage.textField, formJsPage.formEditor);
|
|
625
|
+
await (0, test_1.expect)(formJsPage.textFieldInForm).toBeVisible();
|
|
621
626
|
await formJsPage.clickGeneralPropertiesPanel();
|
|
622
627
|
await formJsPage.fillKeyInput('Public_Form_Text_Field');
|
|
628
|
+
await (0, sleep_1.sleep)(10000);
|
|
623
629
|
});
|
|
624
630
|
await _8_6_1.test.step('Add A BPMN Template To The Project', async () => {
|
|
625
631
|
await modelerHomePage.clickProjectBreadcrumb();
|
|
@@ -654,7 +660,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
654
660
|
});
|
|
655
661
|
});
|
|
656
662
|
await _8_6_1.test.step('Login to Tasklist and Check User Task Has the Correct Input Values and Can Be Completed', async () => {
|
|
657
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, 5000);
|
|
663
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, 5000);
|
|
658
664
|
await appsPage.clickCamundaApps();
|
|
659
665
|
await appsPage.clickTasklist(clusterName);
|
|
660
666
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, taskPanelPage.taskListPageBanner, 'Tasklist banner');
|
|
@@ -65,7 +65,8 @@ _8_8_1.test.describe('Console User Flow Tests @tasklistV2', () => {
|
|
|
65
65
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTabProcessInstancePage, operateTabProcessInstancePage.completedIcon, 'completed icon in Operate', 60000);
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
|
-
|
|
68
|
+
//Waiting infra team to provide DNS configuration for email testing, skipping for now
|
|
69
|
+
_8_8_1.test.skip('Alert Trigger Flow - Email Notification', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, clusterPage, clusterDetailsPage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
69
70
|
_8_8_1.test.slow();
|
|
70
71
|
const processName = 'Email_Alert_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
71
72
|
const invalidURl = 'https://invalid';
|
|
@@ -110,6 +110,7 @@ _8_9_1.test.describe('User Roles User Flow', () => {
|
|
|
110
110
|
await (0, UtilitiesPage_1.waitForLoadingToFinish)(page);
|
|
111
111
|
await appsPage.clickCamundaApps();
|
|
112
112
|
await appsPage.clickModeler();
|
|
113
|
+
await homePage.clickSkipCustomization();
|
|
113
114
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
114
115
|
await modelerHomePage.clickDiagramTypeDropdown();
|
|
115
116
|
await modelerHomePage.clickBpmnTemplateOption();
|
|
@@ -200,6 +201,7 @@ _8_9_1.test.describe('User Roles User Flow', () => {
|
|
|
200
201
|
await _8_9_1.test.step('Navigate to Modeler and Ensure Diagram Failed To Deploy', async () => {
|
|
201
202
|
await appsPage.clickCamundaApps();
|
|
202
203
|
await appsPage.clickModeler();
|
|
204
|
+
await homePage.clickSkipCustomization();
|
|
203
205
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
204
206
|
await modelerHomePage.clickDiagramTypeDropdown();
|
|
205
207
|
await modelerHomePage.clickBpmnTemplateOption();
|
|
@@ -295,6 +297,7 @@ _8_9_1.test.describe('User Roles User Flow', () => {
|
|
|
295
297
|
await _8_9_1.test.step('Navigate to Modeler and Ensure Diagram Can Be Deployed', async () => {
|
|
296
298
|
await appsPage.clickCamundaApps();
|
|
297
299
|
await appsPage.clickModeler();
|
|
300
|
+
await homePage.clickSkipCustomization();
|
|
298
301
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
299
302
|
await modelerHomePage.clickDiagramTypeDropdown();
|
|
300
303
|
await modelerHomePage.clickBpmnTemplateOption();
|
|
@@ -7,8 +7,8 @@ const OperateProcessInstancePage_1 = require("../../pages/8.9/OperateProcessInst
|
|
|
7
7
|
const formatDate_1 = require("../../utils/formatDate");
|
|
8
8
|
const UtilitiesPage_1 = require("../../pages/8.9/UtilitiesPage");
|
|
9
9
|
const sleep_1 = require("../../utils/sleep");
|
|
10
|
-
const googleapi_1 = require("../../utils/googleapi");
|
|
11
10
|
const users_1 = require("../../utils/users");
|
|
11
|
+
const mailSlurpClient_1 = require("../../utils/mailSlurpClient");
|
|
12
12
|
const testUser = (0, users_1.getTestUser)('eighteenthUser');
|
|
13
13
|
_8_9_1.test.describe.configure({ mode: 'parallel' });
|
|
14
14
|
_8_9_1.test.describe('Console User Flow Tests @tasklistV2', () => {
|
|
@@ -65,19 +65,18 @@ _8_9_1.test.describe('Console User Flow Tests @tasklistV2', () => {
|
|
|
65
65
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTabProcessInstancePage, operateTabProcessInstancePage.completedIcon, 'completed icon in Operate', 60000);
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
|
-
(0, _8_9_1.test)('Alert Trigger Flow - Email Notification', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, clusterPage, clusterDetailsPage, connectorSettingsPage, operateHomePage,
|
|
68
|
+
(0, _8_9_1.test)('Alert Trigger Flow - Email Notification', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, clusterPage, clusterDetailsPage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
69
69
|
_8_9_1.test.slow();
|
|
70
70
|
const processName = 'Email_Alert_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
71
71
|
const invalidURl = 'https://invalid';
|
|
72
|
-
const senderEmail = 'no-reply@camunda.io';
|
|
73
72
|
let lastTriggerTime = 0;
|
|
74
73
|
const alertFlowClusterName = 'Alert Flow Cluster';
|
|
74
|
+
const { id } = await (0, mailSlurpClient_1.createInbox)(testUser.username);
|
|
75
75
|
await _8_9_1.test.step('Create Cluster', async () => {
|
|
76
76
|
await homePage.clickClusters();
|
|
77
77
|
await clusterPage.createClusterIfNotExists(alertFlowClusterName);
|
|
78
78
|
});
|
|
79
79
|
await _8_9_1.test.step('Delete Alert Settings If Exist', async () => {
|
|
80
|
-
await (0, test_1.expect)(homePage.clusterTab).toBeVisible({ timeout: 30000 });
|
|
81
80
|
await homePage.clickClusters();
|
|
82
81
|
await clusterPage.clickClusterLink(alertFlowClusterName);
|
|
83
82
|
await clusterDetailsPage.clickAlertsTab();
|
|
@@ -120,7 +119,7 @@ _8_9_1.test.describe('Console User Flow Tests @tasklistV2', () => {
|
|
|
120
119
|
});
|
|
121
120
|
await operateHomePage.clickProcessesTab();
|
|
122
121
|
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
123
|
-
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(
|
|
122
|
+
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateProcessInstancePage, operateProcessInstancePage.incidentIcon, 'incident icon in Operate');
|
|
124
123
|
});
|
|
125
124
|
await _8_9_1.test.step('Navigate to Clusters', async () => {
|
|
126
125
|
await appsPage.clickCamundaApps();
|
|
@@ -131,17 +130,19 @@ _8_9_1.test.describe('Console User Flow Tests @tasklistV2', () => {
|
|
|
131
130
|
});
|
|
132
131
|
await _8_9_1.test.step('Verify Alert Count Increases to 1 After Trigger', async () => {
|
|
133
132
|
await clusterDetailsPage.clickAlertsTab();
|
|
134
|
-
(0, test_1.expect)(
|
|
133
|
+
await (0, test_1.expect)(async () => {
|
|
134
|
+
await page.reload();
|
|
135
|
+
await (0, test_1.expect)(clusterDetailsPage.alertsList.first()).toBeVisible({
|
|
136
|
+
timeout: 20000,
|
|
137
|
+
});
|
|
138
|
+
(0, test_1.expect)(await clusterDetailsPage.alertsList.count()).toBeGreaterThan(1);
|
|
139
|
+
}).toPass({ timeout: 60000 });
|
|
135
140
|
await (0, test_1.expect)(clusterDetailsPage.alertsList.nth(0)).toContainText(`Email`);
|
|
136
141
|
await clusterDetailsPage.assertAlertText('Amount triggered1');
|
|
137
142
|
});
|
|
138
143
|
await _8_9_1.test.step('Verify Alerts Received via Email for Incident', async () => {
|
|
139
144
|
await (0, sleep_1.sleep)(60000);
|
|
140
|
-
|
|
141
|
-
const messages = await (0, googleapi_1.getGmailMessagesWithRetry)(token, senderEmail, processName);
|
|
142
|
-
(0, test_1.expect)(messages.length).toBe(1);
|
|
143
|
-
const emailDetails = await (0, googleapi_1.getLatestEmailDetails)(token, await messages[0]['id']);
|
|
144
|
-
(0, test_1.expect)(emailDetails).toContain('New Incidents: 1');
|
|
145
|
+
await (0, UtilitiesPage_1.assertLatestAlertEmail)(id, mailSlurpClient_1.mailSlurp, processName, 'New Incidents: 1');
|
|
145
146
|
lastTriggerTime = Math.floor(Date.now() / 1000); // Current time in seconds (Unix timestamp)
|
|
146
147
|
console.log('Captured Target Time:', lastTriggerTime);
|
|
147
148
|
});
|
|
@@ -168,15 +169,18 @@ _8_9_1.test.describe('Console User Flow Tests @tasklistV2', () => {
|
|
|
168
169
|
});
|
|
169
170
|
await _8_9_1.test.step('Verify Alert Count Increases to 3 After Trigger', async () => {
|
|
170
171
|
await clusterDetailsPage.clickAlertsTab();
|
|
171
|
-
(0, test_1.expect)(
|
|
172
|
+
await (0, test_1.expect)(async () => {
|
|
173
|
+
await page.reload();
|
|
174
|
+
await (0, test_1.expect)(clusterDetailsPage.alertsList.first()).toBeVisible({
|
|
175
|
+
timeout: 20000,
|
|
176
|
+
});
|
|
177
|
+
(0, test_1.expect)(await clusterDetailsPage.alertsList.count()).toBeGreaterThan(1);
|
|
178
|
+
}).toPass({ timeout: 60000 });
|
|
172
179
|
await clusterDetailsPage.assertAlertText('Amount triggered3');
|
|
173
180
|
});
|
|
174
181
|
await _8_9_1.test.step('Verify Alerts Received via Email for Incident', async () => {
|
|
175
182
|
await (0, sleep_1.sleep)(60000);
|
|
176
|
-
|
|
177
|
-
const messages = await (0, googleapi_1.getGmailMessagesWithRetry)(token, senderEmail, processName, lastTriggerTime);
|
|
178
|
-
const emailDetails = await (0, googleapi_1.getLatestEmailDetails)(token, await messages[0]['id']);
|
|
179
|
-
(0, test_1.expect)(emailDetails).toContain('New Incidents: 2'); //# of alerts triggered since the last one
|
|
183
|
+
await (0, UtilitiesPage_1.assertLatestAlertEmail)(id, mailSlurpClient_1.mailSlurp, processName, 'New Incidents: 2');
|
|
180
184
|
});
|
|
181
185
|
});
|
|
182
186
|
});
|
|
@@ -246,7 +246,7 @@ _8_9_1.test.describe('Optimize User Flow Tests', () => {
|
|
|
246
246
|
await optimizeTabOptimizeHomePage.clickDashboardLink();
|
|
247
247
|
await (0, sleep_1.sleep)(90000);
|
|
248
248
|
await operateTabOptimizeDashboardPage.processLinkAssertion(processName, 6);
|
|
249
|
-
await operateTabOptimizeDashboardPage.processOwnerNameAssertion(processName);
|
|
249
|
+
await operateTabOptimizeDashboardPage.processOwnerNameAssertion(processName, testUser.username);
|
|
250
250
|
});
|
|
251
251
|
});
|
|
252
252
|
});
|
|
@@ -78,6 +78,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
78
78
|
});
|
|
79
79
|
});
|
|
80
80
|
await _8_9_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
81
|
+
await homePage.clickSkipCustomization();
|
|
81
82
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
82
83
|
});
|
|
83
84
|
await _8_9_1.test.step('Create Two BPMN Diagrams with User Task and Start Process Instance', async () => {
|
|
@@ -202,6 +203,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
202
203
|
});
|
|
203
204
|
});
|
|
204
205
|
await _8_9_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
206
|
+
await homePage.clickSkipCustomization();
|
|
205
207
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
206
208
|
});
|
|
207
209
|
await _8_9_1.test.step('Create Two BPMN Diagrams with User Task and Start Process Instance', async () => {
|
|
@@ -407,6 +409,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
407
409
|
});
|
|
408
410
|
});
|
|
409
411
|
await _8_9_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
412
|
+
await homePage.clickSkipCustomization();
|
|
410
413
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
411
414
|
});
|
|
412
415
|
await _8_9_1.test.step('Create Two BPMN Diagrams with User Task and Start Process Instance', async () => {
|
|
@@ -80,6 +80,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV2', () => {
|
|
|
80
80
|
});
|
|
81
81
|
});
|
|
82
82
|
await _8_9_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
83
|
+
await homePage.clickSkipCustomization();
|
|
83
84
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
84
85
|
});
|
|
85
86
|
await _8_9_1.test.step('Create Two BPMN Diagrams with User Task and Start Process Instance', async () => {
|