@camunda/e2e-test-suite 0.0.588 → 0.0.590
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.
|
@@ -101,13 +101,40 @@ class Authorization {
|
|
|
101
101
|
}
|
|
102
102
|
await this.createAuthorizationSubmitButton.click();
|
|
103
103
|
await (0, test_1.expect)(this.createAuthorizationModal).not.toBeVisible();
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
// Match the created authorization row by chaining filters on owner ID and
|
|
105
|
+
// resource ID. A single concatenated `hasText` does not match because
|
|
106
|
+
// Playwright whitespace-normalizes cell text and the rendered table
|
|
107
|
+
// separates adjacent cells with whitespace (e.g. tab characters).
|
|
108
|
+
const item = this.page
|
|
109
|
+
.getByRole('row')
|
|
110
|
+
.filter({ hasText: authorization.ownerId })
|
|
111
|
+
.filter({ hasText: authorization.resourceId });
|
|
112
|
+
// Retry to handle eventual consistency after the submit. We cannot use the
|
|
113
|
+
// shared `assertLocatorVisibleWithRetry` helper here because the row may
|
|
114
|
+
// be on a later pagination page (Carbon DataTable does not render rows
|
|
115
|
+
// outside the current page), so we have to narrow the visible result set
|
|
116
|
+
// by typing the owner ID into the table search input (placeholder reads
|
|
117
|
+
// "Search by owner ID"). The filter input is cleared on every reload so we
|
|
118
|
+
// re-apply it on each attempt.
|
|
119
|
+
const maxAttempts = 10;
|
|
120
|
+
let lastError;
|
|
121
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
122
|
+
try {
|
|
123
|
+
await this.selectResourceTypeTab(authorization.resourceType).click();
|
|
124
|
+
await this.tableFilter.click();
|
|
125
|
+
await this.tableFilter.fill(authorization.ownerId);
|
|
126
|
+
await (0, test_1.expect)(item).toBeVisible({ timeout: 5000 });
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
lastError = error;
|
|
131
|
+
console.warn(`Attempt ${attempt + 1}/${maxAttempts} failed asserting ${authorization.resourceType} authorization row (${authorization.ownerId} / ${authorization.resourceId}). Retrying...`);
|
|
132
|
+
if (attempt < maxAttempts - 1) {
|
|
133
|
+
await this.page.reload();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
throw new Error(`Authorization row not visible after ${maxAttempts} attempts: ${authorization.ownerId} / ${authorization.resourceId} (${authorization.resourceType}). Last error: ${lastError}`);
|
|
111
138
|
}
|
|
112
139
|
async deleteAuthorization(resourceId, resourceType) {
|
|
113
140
|
await this.deleteAuthorizationButton(resourceId).click();
|
|
@@ -135,6 +135,10 @@ class OCIdentityRolesPage {
|
|
|
135
135
|
async deleteRole(name, options) {
|
|
136
136
|
const { throwError = true } = options || {};
|
|
137
137
|
try {
|
|
138
|
+
// The role may be on a later pagination page of the Carbon DataTable
|
|
139
|
+
// (off-page rows are not rendered in the DOM), so paginate to it before
|
|
140
|
+
// attempting to click the Delete button on its row.
|
|
141
|
+
await (0, expectLocatorWithPagination_1.expectLocatorWithPagination)(this.page, this.rolesList.getByRole('cell', { name }).first());
|
|
138
142
|
await this.deleteRoleButton(name).click();
|
|
139
143
|
await (0, test_1.expect)(this.deleteRoleModal).toBeVisible();
|
|
140
144
|
await this.deleteRoleModalDeleteButton.click();
|
|
@@ -79,7 +79,10 @@ _8_10_1.test.describe('Cluster Setup Tests', () => {
|
|
|
79
79
|
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
|
|
80
80
|
await homePage.clickClusters();
|
|
81
81
|
await clusterPage.createCluster(clusterName, 'AWS');
|
|
82
|
-
|
|
82
|
+
// AWS clusters on SaaS INT can take 10+ min to reach Healthy. The helper's
|
|
83
|
+
// default totalTimeout (500s) only fits ~2 attempts at the 300s per-attempt
|
|
84
|
+
// wait above — bump to 25 min to allow the full 5 retries to complete.
|
|
85
|
+
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName, 300000, 1500000);
|
|
83
86
|
await clusterPage.clickClusterLink(clusterName);
|
|
84
87
|
await clusterDetailsPage.assertComponentsHealth();
|
|
85
88
|
if (process.env.IS_AG !== 'true') {
|