@camunda/e2e-test-suite 0.0.743 → 0.0.745
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.
|
@@ -10,6 +10,7 @@ declare class NavigationPage {
|
|
|
10
10
|
readonly keyboardPageBanner: Locator;
|
|
11
11
|
readonly managementIdentityPageBanner: Locator;
|
|
12
12
|
constructor(page: Page);
|
|
13
|
+
private isGatewayErrorPage;
|
|
13
14
|
goTo(url: string, banner: Locator, sleepTimeout?: number, { username, password, }?: {
|
|
14
15
|
username?: string;
|
|
15
16
|
password?: string;
|
|
@@ -54,6 +54,15 @@ class NavigationPage {
|
|
|
54
54
|
.first();
|
|
55
55
|
this.keyboardPageBanner = page.locator('#keycloak-bg');
|
|
56
56
|
}
|
|
57
|
+
async isGatewayErrorPage() {
|
|
58
|
+
return this.page
|
|
59
|
+
.getByRole('heading', {
|
|
60
|
+
name: /50[234]\s+(Bad Gateway|Service Temporarily Unavailable|Gateway Time-?out)/i,
|
|
61
|
+
})
|
|
62
|
+
.first()
|
|
63
|
+
.isVisible()
|
|
64
|
+
.catch(() => false);
|
|
65
|
+
}
|
|
57
66
|
async goTo(url, banner, sleepTimeout, { username = IDENTITY_FIRSTUSER_USERNAME, password = IDENTITY_FIRSTUSER_PASSWORD, } = {}, maxRetries = 5) {
|
|
58
67
|
const startTime = Date.now();
|
|
59
68
|
let timeout = constants_1._1_SECOND_IN_MS * 10;
|
|
@@ -69,6 +78,19 @@ class NavigationPage {
|
|
|
69
78
|
timeout: 60000,
|
|
70
79
|
waitUntil: 'domcontentloaded',
|
|
71
80
|
});
|
|
81
|
+
// A transient ingress or pod-reschedule blip on the shared cluster
|
|
82
|
+
// serves an nginx 50x gateway page in place of the app. Reload with a
|
|
83
|
+
// bounded budget so a short blip self-heals; a sustained outage
|
|
84
|
+
// exhausts the budget and still surfaces as a failed navigation.
|
|
85
|
+
let gatewayReloads = 0;
|
|
86
|
+
while (gatewayReloads < 8 && (await this.isGatewayErrorPage())) {
|
|
87
|
+
await (0, sleep_1.sleep)(constants_1._1_SECOND_IN_MS * 5);
|
|
88
|
+
await this.page.goto(url, {
|
|
89
|
+
timeout: 60000,
|
|
90
|
+
waitUntil: 'domcontentloaded',
|
|
91
|
+
});
|
|
92
|
+
gatewayReloads++;
|
|
93
|
+
}
|
|
72
94
|
const loginPage = new LoginPage_1.LoginPage(this.page);
|
|
73
95
|
const loginEntryPoint = banner
|
|
74
96
|
.or(loginPage.usernameInput)
|
|
@@ -35,7 +35,8 @@ if (process.env.IS_MIGRATION === 'true') {
|
|
|
35
35
|
await navigationPage.goToOCAdmin();
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
|
-
|
|
38
|
+
// Skipped due to bug #56406: https://github.com/camunda/camunda/issues/56406
|
|
39
|
+
SM_8_10_1.test.skip('Assert Most Common Flow User Flow With All Apps Process Migration', async ({ page, navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, taskPanelPage, }) => {
|
|
39
40
|
SM_8_10_1.test.slow();
|
|
40
41
|
const processName = 'Zeebe_User_Task_Process';
|
|
41
42
|
await SM_8_10_1.test.step('View Process Instance in Operate', async () => {
|
|
@@ -91,7 +92,8 @@ if (process.env.IS_MIGRATION === 'true') {
|
|
|
91
92
|
});
|
|
92
93
|
});
|
|
93
94
|
});
|
|
94
|
-
|
|
95
|
+
// Skipped due to bug #320: https://github.com/camunda/marketplace-api/issues/320
|
|
96
|
+
SM_8_10_1.test.skip('Assert REST Connector Process Migration @tasklistV2', async ({ page, operateHomePage, navigationPage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
95
97
|
SM_8_10_1.test.slow();
|
|
96
98
|
const processName = 'REST_Connector_Basic_Auth_Process';
|
|
97
99
|
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
@@ -100,8 +100,11 @@ SM_8_10_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
100
100
|
});
|
|
101
101
|
});
|
|
102
102
|
(0, SM_8_10_1.test)('Timer Event User Flow @tasklistV2', async ({ modelerHomePage, modelerCreatePage, operateHomePage, operateProcessInstancePage, operateProcessesPage, navigationPage, }) => {
|
|
103
|
-
// Timer waits
|
|
103
|
+
// Timer waits 180 s before completing; combined with goToOperate retries
|
|
104
104
|
// (5 × ~3 min) this regularly exceeds the default 12-min test timeout.
|
|
105
|
+
// The 180 s active window (vs 60 s) keeps the instance in the "active"
|
|
106
|
+
// Operate list long enough for the reload-based retry loop to catch it
|
|
107
|
+
// before it completes, even when OpenSearch indexing lag exceeds 60 s.
|
|
105
108
|
SM_8_10_1.test.slow();
|
|
106
109
|
const processName = 'Timer_Event_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
107
110
|
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
@@ -126,7 +129,7 @@ SM_8_10_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
126
129
|
await modelerCreatePage.clickTimerEventSettings();
|
|
127
130
|
await modelerCreatePage.selectTimerType('timeDuration');
|
|
128
131
|
await modelerCreatePage.clickTimerValue();
|
|
129
|
-
await modelerCreatePage.fillTimerValue('
|
|
132
|
+
await modelerCreatePage.fillTimerValue('PT180S');
|
|
130
133
|
await modelerCreatePage.clickAppendElementButton();
|
|
131
134
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
132
135
|
await (0, sleep_1.sleep)(1000);
|