@camunda/e2e-test-suite 0.0.893 → 0.0.895
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.7/ModelerHomePage.d.ts +14 -0
- package/dist/pages/8.7/ModelerHomePage.js +25 -0
- package/dist/pages/8.8/ModelerHomePage.js +33 -20
- package/dist/tests/8.7/test-setup.spec.js +1 -3
- package/dist/tests/8.7/web-modeler-user-flows.spec.js +2 -1
- package/dist/tests/8.8/access-user-role-management.spec.js +1 -1
- package/dist/tests/8.8/web-modeler-user-flows.spec.js +0 -1
- package/package.json +1 -1
|
@@ -48,6 +48,20 @@ declare class ModelerHomePage {
|
|
|
48
48
|
clickOpenOrganizationsButton(): Promise<void>;
|
|
49
49
|
clickCrossComponentProjectFolder(): Promise<void>;
|
|
50
50
|
createCrossComponentProjectFolder(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Asserts the Cross Component project folder is listed on the Modeler home
|
|
53
|
+
* page.
|
|
54
|
+
*
|
|
55
|
+
* A freshly created project is renamed in place (`POST /projects` then
|
|
56
|
+
* `PATCH /projects/<id>`), but the home page renders from the project list
|
|
57
|
+
* that was fetched at creation time — i.e. before the rename landed — and
|
|
58
|
+
* clicking the Home breadcrumb is client-side routing that does not
|
|
59
|
+
* re-fetch it. The row therefore keeps showing the placeholder
|
|
60
|
+
* "New project" name indefinitely, so a plain visibility wait can never
|
|
61
|
+
* resolve however long it is given. Reload between attempts so the
|
|
62
|
+
* assertion sees the committed name.
|
|
63
|
+
*/
|
|
64
|
+
assertCrossComponentProjectFolderVisible(): Promise<void>;
|
|
51
65
|
clickManageButton(retries?: number): Promise<void>;
|
|
52
66
|
clickUploadFilesButton(): Promise<void>;
|
|
53
67
|
clickMessageBanner(): Promise<void>;
|
|
@@ -4,6 +4,7 @@ exports.ModelerHomePage = void 0;
|
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const sleep_1 = require("../../utils/sleep");
|
|
6
6
|
const clickLocatorWithRetry_1 = require("../../utils/assertionHelpers/clickLocatorWithRetry");
|
|
7
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
7
8
|
class ModelerHomePage {
|
|
8
9
|
defaultFolderName = 'Cross Component Test Project';
|
|
9
10
|
page;
|
|
@@ -227,6 +228,30 @@ class ModelerHomePage {
|
|
|
227
228
|
await this.clickCreateNewProjectButton();
|
|
228
229
|
await this.enterNewProjectName(this.defaultFolderName);
|
|
229
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Asserts the Cross Component project folder is listed on the Modeler home
|
|
233
|
+
* page.
|
|
234
|
+
*
|
|
235
|
+
* A freshly created project is renamed in place (`POST /projects` then
|
|
236
|
+
* `PATCH /projects/<id>`), but the home page renders from the project list
|
|
237
|
+
* that was fetched at creation time — i.e. before the rename landed — and
|
|
238
|
+
* clicking the Home breadcrumb is client-side routing that does not
|
|
239
|
+
* re-fetch it. The row therefore keeps showing the placeholder
|
|
240
|
+
* "New project" name indefinitely, so a plain visibility wait can never
|
|
241
|
+
* resolve however long it is given. Reload between attempts so the
|
|
242
|
+
* assertion sees the committed name.
|
|
243
|
+
*/
|
|
244
|
+
async assertCrossComponentProjectFolderVisible() {
|
|
245
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.crossComponentProjectFolder, {
|
|
246
|
+
totalTimeout: 120000,
|
|
247
|
+
visibilityTimeout: 20000,
|
|
248
|
+
maxRetries: 4,
|
|
249
|
+
postAction: async () => {
|
|
250
|
+
await this.page.reload();
|
|
251
|
+
await this.dismissOverlays();
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
}
|
|
230
255
|
async clickManageButton(retries = 3) {
|
|
231
256
|
await this.optionsButton.click({ timeout: 30000 });
|
|
232
257
|
for (let i = 0; i < retries; i++) {
|
|
@@ -103,28 +103,41 @@ class ModelerHomePage {
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
async enterNewProjectName(name) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
106
|
+
// The inline rename silently drops the value when the editable title field
|
|
107
|
+
// is not yet in edit mode as fill() runs, leaving the project named
|
|
108
|
+
// "New project". Re-enter until the field reflects the requested name.
|
|
109
|
+
//
|
|
110
|
+
// Once the rename commits, the editable input unmounts and the name
|
|
111
|
+
// renders as static text: on the projects list as a `[title="<name>"]`
|
|
112
|
+
// link, and on the project detail page (where this inline rename runs) as
|
|
113
|
+
// the breadcrumb project button's text. Treat either committed-name
|
|
114
|
+
// rendering as success, and confirm it reflects the PERSISTED state (the
|
|
115
|
+
// breadcrumb can optimistically show the typed name then revert to
|
|
116
|
+
// "New project"), so verify after a reload.
|
|
117
|
+
const committedProjectName = this.page
|
|
118
|
+
.getByTitle(name, { exact: true })
|
|
119
|
+
.or(this.page
|
|
120
|
+
.locator('[data-test="breadcrumb-project-menu"]')
|
|
121
|
+
.filter({ hasText: name }));
|
|
122
|
+
await (0, test_1.expect)(async () => {
|
|
123
|
+
if (await committedProjectName.first().isVisible()) {
|
|
116
124
|
return;
|
|
117
125
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
await this.projectNameInput.first().click({ timeout: 15000 });
|
|
127
|
+
await this.projectNameInput.first().fill(name);
|
|
128
|
+
// Confirm the value actually landed in the edit field before committing;
|
|
129
|
+
// if fill() ran before edit mode was active the input stays empty/default
|
|
130
|
+
// and this fails, so toPass retries with a fresh click.
|
|
131
|
+
await (0, test_1.expect)(this.projectNameInput.first()).toHaveValue(name, {
|
|
132
|
+
timeout: 5000,
|
|
133
|
+
});
|
|
134
|
+
await this.projectNameInput.first().press('Enter');
|
|
135
|
+
await (0, sleep_1.sleep)(1000);
|
|
136
|
+
// Reload so the check reflects the PERSISTED server state, not the
|
|
137
|
+
// optimistic client render that can silently revert to "New project".
|
|
138
|
+
await this.page.reload();
|
|
139
|
+
await (0, test_1.expect)(committedProjectName.first()).toBeVisible({ timeout: 15000 });
|
|
140
|
+
}).toPass({ timeout: 120000 });
|
|
128
141
|
}
|
|
129
142
|
async enterIdpApplicationName(name) {
|
|
130
143
|
await this.idpApplicationNameInput.click({ timeout: 60000 });
|
|
@@ -75,9 +75,7 @@ _8_7_1.test.describe('Cluster Setup Tests', () => {
|
|
|
75
75
|
await homePage.clickSkipCustomization();
|
|
76
76
|
await modelerHomePage.createCrossComponentProjectFolder();
|
|
77
77
|
await modelerHomePage.clickHomeBreadcrumb();
|
|
78
|
-
await
|
|
79
|
-
timeout: 60000,
|
|
80
|
-
});
|
|
78
|
+
await modelerHomePage.assertCrossComponentProjectFolderVisible();
|
|
81
79
|
});
|
|
82
80
|
});
|
|
83
81
|
}
|
|
@@ -419,7 +419,8 @@ _8_7_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
419
419
|
await (0, UtilitiesPage_1.assertPageTextWithRetry)(page, emailAddress, false, 60000);
|
|
420
420
|
});
|
|
421
421
|
});
|
|
422
|
-
|
|
422
|
+
// Skipped due to bug #4677: https://github.com/camunda/web-modeler/issues/4677
|
|
423
|
+
_8_7_1.test.skip('Invite Existing C8 member to Web Modeler flow', async ({ page, loginPage, signUpPage, homePage, modelerUserInvitePage, appsPage, modelerHomePage, settingsPage, }, testInfo) => {
|
|
423
424
|
_8_7_1.test.slow();
|
|
424
425
|
const { id, emailAddress } = await (0, mailSlurpClient_1.createInbox)();
|
|
425
426
|
inboxes[testInfo.title] = id;
|
|
@@ -35,7 +35,7 @@ _8_8_1.test.describe('User Roles User Flow', () => {
|
|
|
35
35
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
36
36
|
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
37
37
|
});
|
|
38
|
-
//Skipped due to bug
|
|
38
|
+
// Skipped due to bug #58514: https://github.com/camunda/camunda/issues/58514
|
|
39
39
|
_8_8_1.test.skip('Modeler Role User Flow', async ({ page, modelerHomePage, appsPage, homePage, clusterPage, clusterDetailsPage, context, consoleOrganizationsPage, settingsPage, operateHomePage, ocIdentityHomePage, taskPanelPage, optimizeHomePage, modelerCreatePage, }) => {
|
|
40
40
|
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
41
41
|
const processName = 'User Roles User Flow' + randomString;
|
|
@@ -405,7 +405,6 @@ _8_8_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
405
405
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateProcessInstancePage, operateProcessInstancePage.completedIcon, 'Completed icon', 60000, false, 5);
|
|
406
406
|
});
|
|
407
407
|
});
|
|
408
|
-
//Skipped due to bug 22577: https://github.com/camunda/camunda-hub/issues/22577
|
|
409
408
|
(0, _8_8_1.test)('Public Start Form @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, formJsPage, taskDetailsPage, taskPanelPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, browser, }) => {
|
|
410
409
|
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
411
410
|
const processName = 'User_Task_Process_With_Public_Form' + randomString;
|