@camunda/e2e-test-suite 0.0.157 → 0.0.159
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 +5 -3
- package/dist/pages/8.6/UtilitiesPage.d.ts +4 -1
- package/dist/pages/8.6/UtilitiesPage.js +2 -2
- package/dist/tests/8.6/connectors-user-flows.spec.js +3 -1
- package/dist/tests/8.6/console-user-flows.spec.js +5 -2
- 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 +21 -13
- 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,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TaskDetailsPage = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
|
+
const clickLocatorWithRetry_1 = require("../../utils/assertionHelpers/clickLocatorWithRetry");
|
|
5
6
|
function cardinalToOrdinal(numberValue) {
|
|
6
7
|
const realOrderIndex = numberValue.toString();
|
|
7
8
|
if (['11', '12', '13'].includes(realOrderIndex.slice(-2))) {
|
|
@@ -195,7 +196,10 @@ class TaskDetailsPage {
|
|
|
195
196
|
}
|
|
196
197
|
}
|
|
197
198
|
async fillTextInput(value) {
|
|
199
|
+
await (0, test_1.expect)(this.textInput).toBeVisible({ timeout: 90000 });
|
|
200
|
+
await this.textInput.click();
|
|
198
201
|
await this.textInput.fill(value, { timeout: 90000 });
|
|
202
|
+
(0, test_1.expect)(await this.textInput.inputValue()).toBe(value);
|
|
199
203
|
}
|
|
200
204
|
async fillTextBox(text) {
|
|
201
205
|
await this.textBox.fill(text);
|
|
@@ -204,9 +208,7 @@ class TaskDetailsPage {
|
|
|
204
208
|
await this.nameInput.fill(nameInput);
|
|
205
209
|
}
|
|
206
210
|
async clickSubmitButton() {
|
|
207
|
-
await (0,
|
|
208
|
-
await (0, test_1.expect)(this.submitButton).toBeEnabled();
|
|
209
|
-
await this.submitButton.click();
|
|
211
|
+
await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.submitButton);
|
|
210
212
|
}
|
|
211
213
|
}
|
|
212
214
|
exports.TaskDetailsPage = TaskDetailsPage;
|
|
@@ -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) {
|
|
@@ -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);
|
|
@@ -81,7 +83,8 @@ _8_6_1.test.describe('Console User Flow Tests', () => {
|
|
|
81
83
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTabProcessInstancePage, operateTabProcessInstancePage.completedIcon, 'completed icon in Operate', 60000);
|
|
82
84
|
});
|
|
83
85
|
});
|
|
84
|
-
|
|
86
|
+
//Waiting infra team to provide DNS configuration for email testing, skipping for now
|
|
87
|
+
_8_6_1.test.skip('Alert Trigger Flow - Email Notification', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, clusterPage, clusterDetailsPage, connectorSettingsPage, }) => {
|
|
85
88
|
_8_6_1.test.slow();
|
|
86
89
|
const processName = 'Email_Alert_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
87
90
|
const invalidURl = 'https://invalid';
|
|
@@ -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,8 +163,10 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
160
163
|
});
|
|
161
164
|
await settingsPage.clickOpenSettingsButton();
|
|
162
165
|
await settingsPage.clickLogoutButton();
|
|
163
|
-
await
|
|
166
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, 1000);
|
|
164
167
|
await (0, sleep_1.sleep)(30000);
|
|
168
|
+
await appsPage.clickCamundaApps();
|
|
169
|
+
await appsPage.clickModeler();
|
|
165
170
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
166
171
|
timeout: 90000,
|
|
167
172
|
});
|
|
@@ -170,7 +175,6 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
170
175
|
timeout: 120000,
|
|
171
176
|
});
|
|
172
177
|
await modelerHomePage.clickOpenOrganizationsButton();
|
|
173
|
-
await modelerHomePage.clickOptionsButton();
|
|
174
178
|
await modelerHomePage.clickManageButton();
|
|
175
179
|
await consoleOrganizationsPage.clickUsersTab();
|
|
176
180
|
await page.reload();
|
|
@@ -221,7 +225,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
221
225
|
});
|
|
222
226
|
await settingsPage.clickOpenSettingsButton();
|
|
223
227
|
await settingsPage.clickLogoutButton();
|
|
224
|
-
await loginPage.login();
|
|
228
|
+
await loginPage.login(testUser);
|
|
225
229
|
await (0, sleep_1.sleep)(20000);
|
|
226
230
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
227
231
|
timeout: 60000,
|
|
@@ -231,7 +235,6 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
231
235
|
timeout: 60000,
|
|
232
236
|
});
|
|
233
237
|
await modelerHomePage.clickOpenOrganizationsButton();
|
|
234
|
-
await modelerHomePage.clickOptionsButton();
|
|
235
238
|
await modelerHomePage.clickManageButton();
|
|
236
239
|
await consoleOrganizationsPage.clickUsersTab();
|
|
237
240
|
await page.reload();
|
|
@@ -396,7 +399,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
396
399
|
timeout: 60000,
|
|
397
400
|
});
|
|
398
401
|
await page.goto('/');
|
|
399
|
-
await loginPage.login();
|
|
402
|
+
await loginPage.login(testUser);
|
|
400
403
|
});
|
|
401
404
|
await _8_6_1.test.step('Navigate to Web Modeler as Project Admin', async () => {
|
|
402
405
|
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
@@ -419,8 +422,11 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
419
422
|
const { id, emailAddress } = await (0, mailSlurpClient_1.createInbox)();
|
|
420
423
|
inboxes[testInfo.title] = id;
|
|
421
424
|
let newOrganizationUuid = '';
|
|
425
|
+
const password = (await (0, _setup_1.generateRandomStringAsync)(5)) +
|
|
426
|
+
(0, node_crypto_1.randomInt)(10000000, 90000000) +
|
|
427
|
+
'*';
|
|
422
428
|
await _8_6_1.test.step('Sign up new user to C8', async () => {
|
|
423
|
-
await signUpPage.signupToC8(emailAddress);
|
|
429
|
+
await signUpPage.signupToC8(emailAddress, password);
|
|
424
430
|
});
|
|
425
431
|
await _8_6_1.test.step('Log in to C8 as New User', async () => {
|
|
426
432
|
await (0, UtilitiesPage_1.clickInvitationLinkInEmail)(page, id);
|
|
@@ -432,7 +438,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
432
438
|
await settingsPage.clickLogoutButton();
|
|
433
439
|
await loginPage.loginWithoutOrgAssertion({
|
|
434
440
|
username: emailAddress,
|
|
435
|
-
password:
|
|
441
|
+
password: password,
|
|
436
442
|
});
|
|
437
443
|
await (0, test_1.expect)(homePage.gettingStartedHeading).toBeVisible({
|
|
438
444
|
timeout: 40000,
|
|
@@ -450,7 +456,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
450
456
|
await _8_6_1.test.step('Login as Project Admin', async () => {
|
|
451
457
|
await settingsPage.clickOpenSettingsButton();
|
|
452
458
|
await settingsPage.clickLogoutButton();
|
|
453
|
-
await loginPage.login();
|
|
459
|
+
await loginPage.login(testUser);
|
|
454
460
|
});
|
|
455
461
|
await _8_6_1.test.step('Navigate to Web Modeler', async () => {
|
|
456
462
|
await appsPage.clickCamundaApps();
|
|
@@ -477,7 +483,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
477
483
|
await (0, sleep_1.sleep)(60000);
|
|
478
484
|
await loginPage.login({
|
|
479
485
|
username: emailAddress,
|
|
480
|
-
password:
|
|
486
|
+
password: password,
|
|
481
487
|
});
|
|
482
488
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(modelerHomePage, modelerHomePage.crossComponentProjectFolder, 'Cross Component Test Project', 60000, 5);
|
|
483
489
|
});
|
|
@@ -486,7 +492,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
486
492
|
await settingsPage.clickLogoutButton();
|
|
487
493
|
});
|
|
488
494
|
await _8_6_1.test.step('Navigate to Web Modeler as Project Admin', async () => {
|
|
489
|
-
await loginPage.login();
|
|
495
|
+
await loginPage.login(testUser);
|
|
490
496
|
await appsPage.clickCamundaApps();
|
|
491
497
|
await appsPage.clickModeler();
|
|
492
498
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
@@ -618,8 +624,10 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
618
624
|
await modelerHomePage.clickFormOption();
|
|
619
625
|
await modelerHomePage.enterFormName(formName);
|
|
620
626
|
await formJsPage.dragAndDrop(formJsPage.textField, formJsPage.formEditor);
|
|
627
|
+
await (0, test_1.expect)(formJsPage.textFieldInForm).toBeVisible();
|
|
621
628
|
await formJsPage.clickGeneralPropertiesPanel();
|
|
622
629
|
await formJsPage.fillKeyInput('Public_Form_Text_Field');
|
|
630
|
+
await (0, sleep_1.sleep)(10000);
|
|
623
631
|
});
|
|
624
632
|
await _8_6_1.test.step('Add A BPMN Template To The Project', async () => {
|
|
625
633
|
await modelerHomePage.clickProjectBreadcrumb();
|
|
@@ -654,7 +662,7 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
654
662
|
});
|
|
655
663
|
});
|
|
656
664
|
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);
|
|
665
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, 5000);
|
|
658
666
|
await appsPage.clickCamundaApps();
|
|
659
667
|
await appsPage.clickTasklist(clusterName);
|
|
660
668
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, taskPanelPage.taskListPageBanner, 'Tasklist banner');
|