@camunda/e2e-test-suite 0.0.279 → 0.0.281
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/README.md +11 -1
- package/dist/pages/8.6/ClusterDetailsPage.js +8 -2
- package/dist/pages/8.6/ConsoleOrganizationPage.js +7 -1
- package/dist/pages/SM-8.8/FormJsPage.js +3 -1
- package/dist/pages/SM-8.8/ModelerCreatePage.js +9 -1
- package/dist/pages/SM-8.8/ModelerHomePage.js +2 -0
- package/dist/tests/SM-8.8/idp-user-flows.spec.js +0 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -53,7 +53,17 @@ GitHub Actions can be used to facilitate testing across various cluster versions
|
|
|
53
53
|
|
|
54
54
|
#### SaaS
|
|
55
55
|
|
|
56
|
-
For SaaS, a test run can be manually triggered for specific minor versions and their associated cluster generation. This can be done through the [SaaS On-Demand GitHub Action](https://github.com/camunda/c8-cross-component-e2e-tests/actions/workflows/playwright_saas_manual.yml).
|
|
56
|
+
For SaaS, a test run can be manually triggered for specific minor versions and their associated cluster generation. This can be done through the [SaaS On-Demand GitHub Action](https://github.com/camunda/c8-cross-component-e2e-tests/actions/workflows/playwright_saas_manual.yml). These tests run against the INT environment.
|
|
57
|
+
|
|
58
|
+
The workflow expects the following arguments:
|
|
59
|
+
|
|
60
|
+
| Argument | Description | Examples |
|
|
61
|
+
|-------------------------|----------------------------------------------------|--------------------------------------------|
|
|
62
|
+
| C8 Minor Version | Minor version on format `<major>.<minor>` |`8.9`, `8.8` |
|
|
63
|
+
| Cluster Generation Name | The full name of the cluster generation (not UUID) | `Camunda 8.8+gen16`, `Camunda 8.9.0-alpha5`|
|
|
64
|
+
|
|
65
|
+
> [!NOTE]
|
|
66
|
+
> The cluster generation name used in the workflow run must be part of the Stable, Internal Dev, QA, or Alpha channel for it to be testable. A generation can be added to a channel in the [Camunda Accounts dashboard](https://accounts.ultrawombat.com/consoleadmin/channels)
|
|
57
67
|
|
|
58
68
|
#### SM with Helm
|
|
59
69
|
|
|
@@ -5,6 +5,7 @@ const test_1 = require("@playwright/test");
|
|
|
5
5
|
const sleep_1 = require("../../utils/sleep");
|
|
6
6
|
const ClientCredentialsDetailsPage_1 = require("../8.6/ClientCredentialsDetailsPage");
|
|
7
7
|
const clickLocatorWithRetry_1 = require("../../utils/assertionHelpers/clickLocatorWithRetry");
|
|
8
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
8
9
|
class ClusterDetailsPage {
|
|
9
10
|
page;
|
|
10
11
|
apiTab;
|
|
@@ -395,8 +396,13 @@ class ClusterDetailsPage {
|
|
|
395
396
|
}
|
|
396
397
|
async assertComponentsHealth(components = ['Zeebe', 'Tasklist', 'Operate', 'Optimize']) {
|
|
397
398
|
for (const component of components) {
|
|
398
|
-
await (0,
|
|
399
|
-
|
|
399
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.page.getByText(`${component}Healthy`, { exact: true }), {
|
|
400
|
+
visibilityTimeout: 60000,
|
|
401
|
+
totalTimeout: 400000,
|
|
402
|
+
maxRetries: 7,
|
|
403
|
+
preAction: async () => {
|
|
404
|
+
await this.page.reload();
|
|
405
|
+
},
|
|
400
406
|
});
|
|
401
407
|
}
|
|
402
408
|
}
|
|
@@ -165,11 +165,17 @@ class ConsoleOrganizationPage {
|
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
async clickUsersTab() {
|
|
168
|
+
await (0, test_1.expect)(this.usersTab).toBeVisible({ timeout: 60000 });
|
|
168
169
|
await this.usersTab.click({ timeout: 60000 });
|
|
170
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.filterTableSearchbox, {
|
|
171
|
+
postAction: async () => {
|
|
172
|
+
await this.usersTab.click({ timeout: 60000 });
|
|
173
|
+
},
|
|
174
|
+
});
|
|
169
175
|
}
|
|
170
176
|
async clickMainUser(email) {
|
|
171
177
|
await this.filterTable([email]);
|
|
172
|
-
const user = this.rows.filter({ hasText: email }).first();
|
|
178
|
+
const user = this.rows.filter({ hasText: email }).getByRole('link').first();
|
|
173
179
|
await (0, test_1.expect)(user).toBeVisible({ timeout: 60000 });
|
|
174
180
|
await user.click();
|
|
175
181
|
}
|
|
@@ -22,7 +22,9 @@ class FormJsPage {
|
|
|
22
22
|
this.generateFormButton = page.getByRole('button', { name: 'Generate form' });
|
|
23
23
|
this.formEditor = page.getByLabel('Form Definition');
|
|
24
24
|
this.filePicker = page.locator('button[data-field-type="filepicker"]');
|
|
25
|
-
this.generalPanel = page
|
|
25
|
+
this.generalPanel = this.generalPanel = page
|
|
26
|
+
.locator('[data-group-id="group-general"]')
|
|
27
|
+
.first();
|
|
26
28
|
this.keyInput = page.getByRole('textbox', { name: 'key' });
|
|
27
29
|
this.uploadMultipleFilesToggle = page.locator('div[data-entry-id="multiple"] .bio-properties-panel-toggle-switch__switcher');
|
|
28
30
|
this.documentReferenceInput = page.getByRole('textbox', {
|
|
@@ -93,7 +93,10 @@ class ModelerCreatePage {
|
|
|
93
93
|
constructor(page) {
|
|
94
94
|
this.page = page;
|
|
95
95
|
this.generalPanel = page.locator('[data-group-id="group-general"]');
|
|
96
|
-
this.taskDefinitionPanel = page
|
|
96
|
+
this.taskDefinitionPanel = page
|
|
97
|
+
.locator('div')
|
|
98
|
+
.filter({ hasText: /^Task definition$/ })
|
|
99
|
+
.first();
|
|
97
100
|
this.processIdInput = page.getByLabel('ID', { exact: true });
|
|
98
101
|
this.elemendIdInput = page.getByLabel('ID', { exact: true });
|
|
99
102
|
this.startEventElement = page.locator('.djs-hit').first();
|
|
@@ -787,6 +790,7 @@ class ModelerCreatePage {
|
|
|
787
790
|
}
|
|
788
791
|
async fillPriorityInput(priority) {
|
|
789
792
|
await this.priorityInput.fill(priority, { timeout: 60000 });
|
|
793
|
+
await (0, sleep_1.sleep)(1000);
|
|
790
794
|
}
|
|
791
795
|
async clickCanvas() {
|
|
792
796
|
await this.canvas.click({ timeout: 60000 });
|
|
@@ -843,6 +847,7 @@ class ModelerCreatePage {
|
|
|
843
847
|
await priorityUserTask.click();
|
|
844
848
|
await this.clickPriorityInput();
|
|
845
849
|
await this.fillPriorityInput(priority.toString());
|
|
850
|
+
await (0, sleep_1.sleep)(3000);
|
|
846
851
|
await this.clickCanvas();
|
|
847
852
|
priority += 25;
|
|
848
853
|
}
|
|
@@ -875,18 +880,21 @@ class ModelerCreatePage {
|
|
|
875
880
|
}
|
|
876
881
|
async fillCandidateUsersInput(candidateUser) {
|
|
877
882
|
await this.candidateUsersInput.fill(candidateUser, { timeout: 60000 });
|
|
883
|
+
await this.page.waitForTimeout(1000);
|
|
878
884
|
}
|
|
879
885
|
async clickCandidateGroupsInput() {
|
|
880
886
|
await this.candidateGroupsInput.click({ timeout: 60000 });
|
|
881
887
|
}
|
|
882
888
|
async fillCandidateGroupsInput(candidateGroup) {
|
|
883
889
|
await this.candidateGroupsInput.fill(candidateGroup, { timeout: 60000 });
|
|
890
|
+
await (0, sleep_1.sleep)(1000);
|
|
884
891
|
}
|
|
885
892
|
async clickAssigneeInput() {
|
|
886
893
|
await this.assigneeInput.click({ timeout: 60000 });
|
|
887
894
|
}
|
|
888
895
|
async fillAssigneeInput(name) {
|
|
889
896
|
await this.assigneeInput.fill(name, { timeout: 60000 });
|
|
897
|
+
await (0, sleep_1.sleep)(1000);
|
|
890
898
|
}
|
|
891
899
|
async clickTenantIdInput() {
|
|
892
900
|
await (0, test_1.expect)(this.tenantIdInput).toBeVisible({ timeout: 60000 });
|
|
@@ -88,6 +88,7 @@ class ModelerHomePage {
|
|
|
88
88
|
await this.createNewProjectButton.click();
|
|
89
89
|
}
|
|
90
90
|
async enterNewProjectName(name) {
|
|
91
|
+
await (0, sleep_1.sleep)(1000);
|
|
91
92
|
await this.projectNameInput.click({ timeout: 60000 });
|
|
92
93
|
await this.projectNameInput.fill(name);
|
|
93
94
|
await this.projectNameInput.press('Enter');
|
|
@@ -157,6 +158,7 @@ class ModelerHomePage {
|
|
|
157
158
|
await this.formTemplateOption.click();
|
|
158
159
|
}
|
|
159
160
|
async enterFormName(name) {
|
|
161
|
+
await (0, sleep_1.sleep)(1000);
|
|
160
162
|
await this.formNameInput.click({ timeout: 60000 });
|
|
161
163
|
await this.formNameInput.fill(name);
|
|
162
164
|
await this.formNameInput.press('Enter');
|
|
@@ -38,7 +38,6 @@ if (process.env.IS_DS === 'true') {
|
|
|
38
38
|
idpDocumentExtractionTemplateName = await (0, randomName_1.randomNameAgregator)(`${params.provider} unstructured` +
|
|
39
39
|
' - IDP_Extraction_Template_Name');
|
|
40
40
|
await SM_8_8_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
41
|
-
await modelerHomePage.clickMessageBanner();
|
|
42
41
|
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
43
42
|
});
|
|
44
43
|
await SM_8_8_1.test.step('Add an IDP application to the project', async () => {
|
|
@@ -93,7 +92,6 @@ if (process.env.IS_DS === 'true') {
|
|
|
93
92
|
idpApplicationName = await (0, randomName_1.randomNameAgregator)(`${params.provider} structured` + ' - IDP_Application_Name');
|
|
94
93
|
idpDocumentExtractionTemplateName = await (0, randomName_1.randomNameAgregator)(`${params.provider} structured` + ' - IDP_Extraction_Template_Name');
|
|
95
94
|
await SM_8_8_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
96
|
-
await modelerHomePage.clickMessageBanner();
|
|
97
95
|
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
98
96
|
});
|
|
99
97
|
await SM_8_8_1.test.step('Add an IDP application to the project', async () => {
|