@camunda/e2e-test-suite 0.0.310 → 0.0.312

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.
Files changed (30) hide show
  1. package/README.md +35 -11
  2. package/dist/pages/8.10/ClusterDetailsPage.d.ts +6 -0
  3. package/dist/pages/8.10/ClusterDetailsPage.js +22 -0
  4. package/dist/pages/8.6/ClusterDetailsPage.d.ts +6 -0
  5. package/dist/pages/8.6/ClusterDetailsPage.js +22 -0
  6. package/dist/pages/8.7/ClusterDetailsPage.d.ts +6 -0
  7. package/dist/pages/8.7/ClusterDetailsPage.js +22 -0
  8. package/dist/pages/8.8/ClusterDetailsPage.d.ts +6 -0
  9. package/dist/pages/8.8/ClusterDetailsPage.js +22 -0
  10. package/dist/pages/8.8/ClusterPage.js +1 -1
  11. package/dist/pages/8.8/OperateHomePage.js +2 -2
  12. package/dist/pages/8.8/UtilitiesPage.js +1 -1
  13. package/dist/pages/8.9/ClusterDetailsPage.d.ts +6 -0
  14. package/dist/pages/8.9/ClusterDetailsPage.js +22 -0
  15. package/dist/tests/8.10/saas-migration-path-user-flows.spec.d.ts +1 -0
  16. package/dist/tests/8.10/saas-migration-path-user-flows.spec.js +176 -0
  17. package/dist/tests/8.6/smoke-tests.spec.js +8 -2
  18. package/dist/tests/8.7/saas-migration-path-user-flows.spec.d.ts +1 -0
  19. package/dist/tests/8.7/saas-migration-path-user-flows.spec.js +150 -0
  20. package/dist/tests/8.7/smoke-tests.spec.js +8 -2
  21. package/dist/tests/8.8/saas-migration-path-user-flows.spec.d.ts +1 -0
  22. package/dist/tests/8.8/saas-migration-path-user-flows.spec.js +173 -0
  23. package/dist/tests/8.8/smoke-tests.spec.js +13 -3
  24. package/dist/tests/8.8/test-setup.spec.js +2 -1
  25. package/dist/tests/8.9/saas-migration-path-user-flows.spec.d.ts +1 -0
  26. package/dist/tests/8.9/saas-migration-path-user-flows.spec.js +176 -0
  27. package/dist/tests/8.9/smoke-tests.spec.js +11 -3
  28. package/dist/tests/c8Run-8.10/api-tests-v1.spec.js +67 -70
  29. package/dist/tests/c8Run-8.9/api-tests-v1.spec.js +67 -70
  30. package/package.json +1 -1
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * SaaS Migration Path User Flows (8.6 → 8.7)
5
+ *
6
+ * This test suite focuses on UI upgrade automation and basic validation.
7
+ * Comprehensive functionality validation is handled by smoke test comparison
8
+ * rather than custom data validation to avoid code duplication.
9
+ *
10
+ * The complete upgrade testing flow:
11
+ * 1. Pre-upgrade: Infrastructure setup + smoke test baseline capture
12
+ * 2. Upgrade UI: This file's @saasUpgrade test (UI automation)
13
+ * 3. Post-upgrade: Smoke test comparison for comprehensive validation
14
+ *
15
+ */
16
+ const _setup_1 = require("../../test-setup.js");
17
+ const _8_7_1 = require("../../fixtures/8.7");
18
+ const test_1 = require("@playwright/test");
19
+ const UtilitiesPage_1 = require("../../pages/8.7/UtilitiesPage");
20
+ const users_1 = require("../../utils/users");
21
+ // For SaaS upgrade testing, use dynamically created organization owner credentials
22
+ // For regular testing, fall back to predefined test user
23
+ const testUser = process.env.IS_MIGRATION === 'true'
24
+ ? {
25
+ username: process.env.C8_USERNAME,
26
+ password: process.env.C8_PASSWORD,
27
+ }
28
+ : (0, users_1.getTestUser)('twentyFirstUser');
29
+ _8_7_1.test.describe.configure({ mode: 'serial' });
30
+ _8_7_1.test.describe('SaaS Migration Path Tests', () => {
31
+ _8_7_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
32
+ if (process.env.IS_MIGRATION !== 'true') {
33
+ _8_7_1.test.skip(true, 'Skipping migration tests outside of migration mode');
34
+ }
35
+ await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
36
+ });
37
+ _8_7_1.test.afterEach(async ({ page }, testInfo) => {
38
+ await (0, _setup_1.captureScreenshot)(page, testInfo);
39
+ await (0, _setup_1.captureFailureVideo)(page, testInfo);
40
+ });
41
+ (0, _8_7_1.test)('SaaS UI Upgrade Flow Automation @saasUpgrade', async ({ page, homePage, clusterPage, clusterDetailsPage, }) => {
42
+ _8_7_1.test.slow();
43
+ await _8_7_1.test.step('Navigate to SaaS Upgrade Section', async () => {
44
+ await homePage.clickClusters();
45
+ await clusterPage.clickClusterLink('Test Cluster');
46
+ await clusterDetailsPage.performClusterUpdate();
47
+ await homePage.clickClusters();
48
+ await clusterPage.assertClusterHealthyStatusWithRetry('Test Cluster');
49
+ await (0, test_1.expect)(page.getByText(process.env.MINOR_VERSION)).toBeVisible();
50
+ });
51
+ });
52
+ (0, _8_7_1.test)('Basic Navigation After SaaS Upgrade', async ({ homePage, appsPage, modelerHomePage, operateHomePage, optimizeHomePage, taskPanelPage, }) => {
53
+ const clusterName = 'Test Cluster';
54
+ await _8_7_1.test.step('Assert Web Modeler Navigation', async () => {
55
+ await appsPage.clickCamundaApps();
56
+ await appsPage.clickModeler();
57
+ await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
58
+ timeout: 120000,
59
+ });
60
+ await modelerHomePage.clickMessageBanner();
61
+ });
62
+ await _8_7_1.test.step('Assert Console Navigation', async () => {
63
+ await appsPage.clickCamundaApps();
64
+ await appsPage.clickConsoleLink();
65
+ await (0, test_1.expect)(homePage.consoleBanner).toBeVisible({
66
+ timeout: 120000,
67
+ });
68
+ });
69
+ await _8_7_1.test.step('Assert Operate Navigation', async () => {
70
+ await appsPage.clickCamundaApps();
71
+ await appsPage.clickOperate(clusterName);
72
+ await (0, test_1.expect)(operateHomePage.operateBanner).toBeVisible({
73
+ timeout: 120000,
74
+ });
75
+ });
76
+ await _8_7_1.test.step('Assert Optimize Navigation', async () => {
77
+ await appsPage.clickCamundaApps();
78
+ await appsPage.clickOptimize(clusterName);
79
+ await (0, test_1.expect)(optimizeHomePage.optimizeBanner).toBeVisible({
80
+ timeout: 120000,
81
+ });
82
+ });
83
+ await _8_7_1.test.step('Assert Tasklist Navigation', async () => {
84
+ await appsPage.clickCamundaApps();
85
+ await appsPage.clickTasklist(clusterName);
86
+ await (0, test_1.expect)(taskPanelPage.taskListPageBanner).toBeVisible({
87
+ timeout: 120000,
88
+ });
89
+ });
90
+ });
91
+ (0, _8_7_1.test)('Assert Process Instances Persist After SaaS Upgrade', async ({ page, appsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeReportPage, taskPanelPage, }) => {
92
+ _8_7_1.test.slow();
93
+ // Use the same fixed names that were created in the pre-upgrade smoke tests
94
+ const processName = 'Zeebe_User_Task_ProcessUpgradeTest';
95
+ const reportName = 'UpgradeTestReport';
96
+ const clusterName = 'Test Cluster';
97
+ await _8_7_1.test.step('View Process Instance in Operate', async () => {
98
+ await appsPage.clickCamundaApps();
99
+ await appsPage.clickOperate(clusterName);
100
+ await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({
101
+ timeout: 120000,
102
+ });
103
+ await operateHomePage.clickProcessesTab();
104
+ await operateProcessesPage.clickProcessCompletedCheckbox();
105
+ await operateProcessesPage.clickProcessInstanceLink(processName);
106
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
107
+ });
108
+ await _8_7_1.test.step('View Process Instance in Tasklist', async () => {
109
+ await appsPage.clickCamundaApps();
110
+ await appsPage.clickTasklist(clusterName);
111
+ await taskPanelPage.filterBy('Completed');
112
+ await (0, test_1.expect)(page.getByRole('heading', { name: 'completed' })).toBeVisible({
113
+ timeout: 45000,
114
+ });
115
+ await (0, test_1.expect)(page.getByText(processName)).toBeVisible({ timeout: 60000 });
116
+ });
117
+ await _8_7_1.test.step('View Report in Optimize', async () => {
118
+ await appsPage.clickCamundaApps();
119
+ await appsPage.clickOptimize(clusterName);
120
+ await optimizeHomePage.clickCollectionsLink();
121
+ await (0, test_1.expect)(page.getByText(reportName)).toBeVisible({
122
+ timeout: 60000,
123
+ });
124
+ await page.getByText(reportName).click();
125
+ await optimizeReportPage.waitUntilLocatorIsVisible(optimizeReportPage.oneUserTaskInstance, page);
126
+ await (0, test_1.expect)(optimizeReportPage.oneUserTaskInstance).toBeVisible({
127
+ timeout: 90000,
128
+ });
129
+ });
130
+ });
131
+ (0, _8_7_1.test)('Assert Connectors Still Function After SaaS Upgrade', async ({ operateHomePage, appsPage, operateProcessesPage, operateProcessInstancePage, }) => {
132
+ _8_7_1.test.slow();
133
+ // Use the same fixed name that was created in the pre-upgrade smoke tests
134
+ const processName = 'REST_Connector_Basic_Auth_ProcessUpgradeTest';
135
+ const clusterName = 'Test Cluster';
136
+ await _8_7_1.test.step('View Connector Process Instance in Operate', async () => {
137
+ await appsPage.clickCamundaApps();
138
+ await appsPage.clickOperate(clusterName);
139
+ await operateHomePage.clickProcessesTab();
140
+ await operateProcessesPage.clickProcessCompletedCheckbox();
141
+ await operateProcessesPage.clickProcessInstanceLink(processName);
142
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
143
+ await (0, test_1.expect)(operateProcessInstancePage.variablesList).toBeVisible({
144
+ timeout: 60000,
145
+ });
146
+ await (0, test_1.expect)(operateProcessInstancePage.connectorResultVariableName('message')).toBeVisible({ timeout: 60000 });
147
+ await (0, test_1.expect)(operateProcessInstancePage.messageVariable.getByText('"Message from Mock!"')).toBeVisible({ timeout: 60000 });
148
+ });
149
+ });
150
+ });
@@ -20,6 +20,8 @@ _8_7_1.test.describe.configure({ mode: 'parallel' });
20
20
  _8_7_1.test.describe('Smoke Tests', () => {
21
21
  _8_7_1.test.skip(process.env.IS_AG === 'true', 'Skipping Smoke Tests due to console breaking changes');
22
22
  const clusterName = 'Test Cluster';
23
+ // Use fixed names for upgrade testing validation, random names for regular testing
24
+ const useFixedNames = process.env.UPGRADE_BASELINE === 'true';
23
25
  _8_7_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
24
26
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
25
27
  });
@@ -29,11 +31,15 @@ _8_7_1.test.describe('Smoke Tests', () => {
29
31
  });
30
32
  (0, _8_7_1.test)('Most Common Flow User Flow With All Apps', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, formJsPage, }) => {
31
33
  _8_7_1.test.slow();
32
- const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
34
+ const randomString = useFixedNames
35
+ ? 'UpgradeTest'
36
+ : await (0, _setup_1.generateRandomStringAsync)(3);
33
37
  const formName = 'New form' + randomString;
34
38
  const processName = 'Zeebe_User_Task_Process' + randomString;
35
39
  const userTaskName = 'zeebeUserTaskWithForm' + randomString;
36
- const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
40
+ const reportName = useFixedNames
41
+ ? 'UpgradeTestReport'
42
+ : await (0, _setup_1.generateRandomStringAsync)(5);
37
43
  await _8_7_1.test.step('Navigate to Web Modeler', async () => {
38
44
  await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
39
45
  timeout: 30000,
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * SaaS Migration Path User Flows (8.8 → 8.9)
5
+ *
6
+ * This test suite focuses on UI upgrade automation and basic validation.
7
+ * Comprehensive functionality validation is handled by smoke test comparison
8
+ * rather than custom data validation to avoid code duplication.
9
+ *
10
+ * The complete upgrade testing flow:
11
+ * 1. Pre-upgrade: Infrastructure setup + smoke test baseline capture
12
+ * 2. Upgrade UI: This file's @saasUpgrade test (UI automation)
13
+ * 3. Post-upgrade: Smoke test comparison for comprehensive validation
14
+ *
15
+ */
16
+ const _setup_1 = require("../../test-setup.js");
17
+ const _8_8_1 = require("../../fixtures/8.8");
18
+ const test_1 = require("@playwright/test");
19
+ const UtilitiesPage_1 = require("../../pages/8.8/UtilitiesPage");
20
+ const users_1 = require("../../utils/users");
21
+ const testUser = process.env.IS_MIGRATION === 'true'
22
+ ? {
23
+ username: process.env.C8_USERNAME,
24
+ password: process.env.C8_PASSWORD,
25
+ }
26
+ : (0, users_1.getTestUser)('twentyFirstUser');
27
+ _8_8_1.test.describe.configure({ mode: 'serial' });
28
+ _8_8_1.test.describe('SaaS Migration Path Tests', () => {
29
+ _8_8_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
30
+ if (process.env.IS_MIGRATION !== 'true') {
31
+ _8_8_1.test.skip(true, 'Skipping migration tests outside of migration mode');
32
+ }
33
+ await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
34
+ });
35
+ _8_8_1.test.afterEach(async ({ page }, testInfo) => {
36
+ await (0, _setup_1.captureScreenshot)(page, testInfo);
37
+ await (0, _setup_1.captureFailureVideo)(page, testInfo);
38
+ });
39
+ (0, _8_8_1.test)('SaaS UI Upgrade Flow Automation @saasUpgrade', async ({ page, homePage, clusterPage, clusterDetailsPage, }) => {
40
+ _8_8_1.test.slow();
41
+ await _8_8_1.test.step('Navigate to SaaS Upgrade Section', async () => {
42
+ await homePage.clickClusters();
43
+ await clusterPage.clickClusterLink('Test Cluster');
44
+ await clusterDetailsPage.performClusterUpdate();
45
+ await homePage.clickClusters();
46
+ await clusterPage.assertClusterHealthyStatusWithRetry('Test Cluster');
47
+ await (0, test_1.expect)(page.getByText(process.env.MINOR_VERSION)).toBeVisible();
48
+ });
49
+ });
50
+ (0, _8_8_1.test)('Basic Navigation After SaaS Upgrade', async ({ homePage, appsPage, modelerHomePage, operateHomePage, optimizeHomePage, taskPanelPage, ocIdentityHomePage, }) => {
51
+ const clusterName = 'Test Cluster';
52
+ await _8_8_1.test.step('Assert Web Modeler Navigation', async () => {
53
+ await appsPage.clickCamundaApps();
54
+ await appsPage.clickModeler();
55
+ await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
56
+ timeout: 120000,
57
+ });
58
+ await modelerHomePage.clickMessageBanner();
59
+ });
60
+ await _8_8_1.test.step('Assert Console Navigation', async () => {
61
+ await appsPage.clickCamundaApps();
62
+ await appsPage.clickConsoleLink();
63
+ await (0, test_1.expect)(homePage.consoleBanner).toBeVisible({
64
+ timeout: 120000,
65
+ });
66
+ });
67
+ await _8_8_1.test.step('Assert Operate Navigation', async () => {
68
+ await appsPage.clickCamundaApps();
69
+ await appsPage.clickOperate(clusterName);
70
+ await (0, test_1.expect)(operateHomePage.operateBanner).toBeVisible({
71
+ timeout: 120000,
72
+ });
73
+ });
74
+ await _8_8_1.test.step('Assert Optimize Navigation', async () => {
75
+ await appsPage.clickCamundaApps();
76
+ await appsPage.clickOptimize(clusterName);
77
+ await (0, test_1.expect)(optimizeHomePage.optimizeBanner).toBeVisible({
78
+ timeout: 120000,
79
+ });
80
+ });
81
+ await _8_8_1.test.step('Assert Tasklist Navigation', async () => {
82
+ await appsPage.clickCamundaApps();
83
+ await appsPage.clickTasklist(clusterName);
84
+ await (0, test_1.expect)(taskPanelPage.taskListPageBanner).toBeVisible({
85
+ timeout: 120000,
86
+ });
87
+ });
88
+ await _8_8_1.test.step('Assert Admin Navigation', async () => {
89
+ await appsPage.clickCamundaApps();
90
+ await appsPage.clickIdentity(clusterName);
91
+ await (0, test_1.expect)(ocIdentityHomePage.identityBanner).toBeVisible({
92
+ timeout: 120000,
93
+ });
94
+ });
95
+ });
96
+ (0, _8_8_1.test)('Assert Process Instances Persist After SaaS Upgrade', async ({ page, appsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeReportPage, taskPanelPage, }) => {
97
+ _8_8_1.test.slow();
98
+ // Use the same fixed names that were created in the pre-upgrade smoke tests
99
+ const processName = 'Zeebe_User_Task_ProcessUpgradeTest';
100
+ const reportName = 'UpgradeTestReport';
101
+ const clusterName = 'Test Cluster';
102
+ await _8_8_1.test.step('View Process Instance in Operate', async () => {
103
+ await appsPage.clickCamundaApps();
104
+ await appsPage.clickOperate(clusterName);
105
+ await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({
106
+ timeout: 120000,
107
+ });
108
+ await operateHomePage.clickProcessesTab();
109
+ await operateProcessesPage.clickProcessCompletedCheckbox();
110
+ await operateProcessesPage.clickProcessInstanceLink(processName);
111
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
112
+ });
113
+ await _8_8_1.test.step('View Process Instance in Tasklist', async () => {
114
+ await appsPage.clickCamundaApps();
115
+ await appsPage.clickTasklist(clusterName);
116
+ await taskPanelPage.filterBy('Completed');
117
+ await (0, test_1.expect)(page.getByRole('heading', { name: 'completed' })).toBeVisible({
118
+ timeout: 45000,
119
+ });
120
+ await (0, test_1.expect)(page.getByText(processName)).toBeVisible({ timeout: 60000 });
121
+ });
122
+ await _8_8_1.test.step('View Report in Optimize', async () => {
123
+ await appsPage.clickCamundaApps();
124
+ await appsPage.clickOptimize(clusterName);
125
+ await optimizeHomePage.clickCollectionsLink();
126
+ // Look for the specific report created during pre-upgrade smoke tests
127
+ await (0, test_1.expect)(page.getByText(reportName)).toBeVisible({
128
+ timeout: 60000,
129
+ });
130
+ await page.getByText(reportName).click();
131
+ await optimizeReportPage.waitUntilLocatorIsVisible(optimizeReportPage.oneUserTaskInstance, page);
132
+ await (0, test_1.expect)(optimizeReportPage.oneUserTaskInstance).toBeVisible({
133
+ timeout: 90000,
134
+ });
135
+ });
136
+ });
137
+ (0, _8_8_1.test)('Assert SaaS Organization Data Persists After Upgrade', async ({ page, appsPage, }) => {
138
+ await _8_8_1.test.step('Verify Organization Settings Persist', async () => {
139
+ await appsPage.clickCamundaApps();
140
+ await appsPage.clickConsoleLink();
141
+ await page.getByRole('button', { name: 'Organization Settings' }).click();
142
+ // Verify organization name and settings
143
+ await (0, test_1.expect)(page.getByTestId('organization-name')).toBeVisible();
144
+ await (0, test_1.expect)(page.getByTestId('organization-members')).toBeVisible();
145
+ });
146
+ await _8_8_1.test.step('Verify User Roles and Permissions Persist', async () => {
147
+ await page.getByRole('tab', { name: 'Members' }).click();
148
+ // Verify existing users still have correct roles
149
+ await (0, test_1.expect)(page.getByText('Owner')).toBeVisible();
150
+ await (0, test_1.expect)(page.getByText('Developer')).toBeVisible();
151
+ await (0, test_1.expect)(page.getByText('Modeler')).toBeVisible();
152
+ });
153
+ });
154
+ (0, _8_8_1.test)('Assert Connectors Still Function After SaaS Upgrade @tasklistV2', async ({ operateHomePage, appsPage, operateProcessesPage, operateProcessInstancePage, }) => {
155
+ _8_8_1.test.slow();
156
+ // Use the same fixed name that was created in the pre-upgrade smoke tests
157
+ const processName = 'REST_Connector_Basic_Auth_ProcessUpgradeTest';
158
+ const clusterName = 'Test Cluster';
159
+ await _8_8_1.test.step('View Connector Process Instance in Operate', async () => {
160
+ await appsPage.clickCamundaApps();
161
+ await appsPage.clickOperate(clusterName);
162
+ await operateHomePage.clickProcessesTab();
163
+ await operateProcessesPage.clickProcessCompletedCheckbox();
164
+ await operateProcessesPage.clickProcessInstanceLink(processName);
165
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
166
+ await (0, test_1.expect)(operateProcessInstancePage.variablesList).toBeVisible({
167
+ timeout: 60000,
168
+ });
169
+ await (0, test_1.expect)(operateProcessInstancePage.connectorResultVariableName('message')).toBeVisible({ timeout: 60000 });
170
+ await (0, test_1.expect)(operateProcessInstancePage.messageVariable.getByText('"Message from Mock!"')).toBeVisible({ timeout: 60000 });
171
+ });
172
+ });
173
+ });
@@ -15,10 +15,13 @@ const OptimizeCollectionsPage_1 = require("../../pages/8.8/OptimizeCollectionsPa
15
15
  const OptimizeReportPage_1 = require("../../pages/8.8/OptimizeReportPage");
16
16
  const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
17
17
  const users_1 = require("../../utils/users");
18
+ const sleep_1 = require("../../utils/sleep");
18
19
  const testUser = (0, users_1.getTestUser)('thirteenthUser');
19
20
  _8_8_1.test.describe.configure({ mode: 'parallel' });
20
21
  _8_8_1.test.describe('Smoke Tests', () => {
21
22
  const clusterName = 'Test Cluster';
23
+ // Use fixed names for upgrade testing validation, random names for regular testing
24
+ const useFixedNames = process.env.UPGRADE_BASELINE === 'true';
22
25
  _8_8_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
23
26
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
24
27
  });
@@ -28,11 +31,15 @@ _8_8_1.test.describe('Smoke Tests', () => {
28
31
  });
29
32
  (0, _8_8_1.test)('Most Common Flow User Flow With All Apps', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, formJsPage, }) => {
30
33
  _8_8_1.test.slow();
31
- const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
34
+ const randomString = useFixedNames
35
+ ? 'UpgradeTest'
36
+ : await (0, _setup_1.generateRandomStringAsync)(3);
32
37
  const formName = 'New form' + randomString;
33
38
  const processName = 'Zeebe_User_Task_Process' + randomString;
34
39
  const userTaskName = 'zeebeUserTaskWithForm' + randomString;
35
- const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
40
+ const reportName = useFixedNames
41
+ ? 'UpgradeTestReport'
42
+ : await (0, _setup_1.generateRandomStringAsync)(5);
36
43
  await _8_8_1.test.step('Navigate to Web Modeler', async () => {
37
44
  await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
38
45
  timeout: 30000,
@@ -58,6 +65,7 @@ _8_8_1.test.describe('Smoke Tests', () => {
58
65
  timeout: 60000,
59
66
  });
60
67
  await modelerCreatePage.enterDiagramName(processName);
68
+ await (0, sleep_1.sleep)(15000);
61
69
  await modelerCreatePage.assertDiagramNameSet(processName);
62
70
  await modelerCreatePage.addParallelUserTasks(2, userTaskName);
63
71
  await modelerCreatePage.clickAppendElementButton();
@@ -140,7 +148,9 @@ _8_8_1.test.describe('Smoke Tests', () => {
140
148
  });
141
149
  (0, _8_8_1.test)('Most Common REST Connector User Flow', async ({ page, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
142
150
  _8_8_1.test.slow();
143
- const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
151
+ const randomString = useFixedNames
152
+ ? 'UpgradeTest'
153
+ : await (0, _setup_1.generateRandomStringAsync)(3);
144
154
  const processName = 'REST_Connector_Basic_Auth_Process' + randomString;
145
155
  await _8_8_1.test.step('Navigate to Web Modeler', async () => {
146
156
  await appsPage.clickCamundaApps();
@@ -37,7 +37,7 @@ _8_8_1.test.describe('Cluster Setup Tests', () => {
37
37
  await clusterPage.assertClusterHealthyStatusWithRetry(clusterName);
38
38
  await clusterPage.clickClusterLink(clusterName);
39
39
  await clusterDetailsPage.assertComponentsHealth();
40
- if (process.env.IS_AG !== 'true') {
40
+ if (process.env.IS_AG !== 'true' && process.env.IS_MIGRATION !== 'true') {
41
41
  await clusterDetailsPage.clickAPITab();
42
42
  await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName);
43
43
  await clusterDetailsPage.clickCloseModalButton();
@@ -50,6 +50,7 @@ _8_8_1.test.describe('Cluster Setup Tests', () => {
50
50
  }
51
51
  });
52
52
  (0, _8_8_1.test)('Create AWS Cluster', async ({ page, loginPage, homePage, clusterPage, clusterDetailsPage, clusterSecretsPage, }, testInfo) => {
53
+ _8_8_1.test.skip(process.env.IS_MIGRATION === 'true', 'Skipping AWS Cluster creation during upgrade testing');
53
54
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
54
55
  _8_8_1.test.slow();
55
56
  const clusterName = 'AWS Cluster';
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * SaaS Migration Path User Flows (8.8 → 8.9)
5
+ *
6
+ * This test suite focuses on UI upgrade automation and basic validation.
7
+ * Comprehensive functionality validation is handled by smoke test comparison
8
+ * rather than custom data validation to avoid code duplication.
9
+ *
10
+ * The complete upgrade testing flow:
11
+ * 1. Pre-upgrade: Infrastructure setup + smoke test baseline capture
12
+ * 2. Upgrade UI: This file's @saasUpgrade test (UI automation)
13
+ * 3. Post-upgrade: Smoke test comparison for comprehensive validation
14
+ *
15
+ */
16
+ const _setup_1 = require("../../test-setup.js");
17
+ const _8_9_1 = require("../../fixtures/8.9");
18
+ const test_1 = require("@playwright/test");
19
+ const UtilitiesPage_1 = require("../../pages/8.9/UtilitiesPage");
20
+ const users_1 = require("../../utils/users");
21
+ // For SaaS upgrade testing, use dynamically created organization owner credentials
22
+ // For regular testing, fall back to predefined test user
23
+ const testUser = process.env.IS_MIGRATION === 'true'
24
+ ? {
25
+ username: process.env.C8_USERNAME,
26
+ password: process.env.C8_PASSWORD,
27
+ }
28
+ : (0, users_1.getTestUser)('twentyFirstUser');
29
+ _8_9_1.test.describe.configure({ mode: 'serial' });
30
+ _8_9_1.test.describe('SaaS Migration Path Tests', () => {
31
+ _8_9_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
32
+ // Skip if not in migration mode
33
+ if (process.env.IS_MIGRATION !== 'true') {
34
+ _8_9_1.test.skip(true, 'Skipping migration tests outside of migration mode');
35
+ }
36
+ await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
37
+ });
38
+ _8_9_1.test.afterEach(async ({ page }, testInfo) => {
39
+ await (0, _setup_1.captureScreenshot)(page, testInfo);
40
+ await (0, _setup_1.captureFailureVideo)(page, testInfo);
41
+ });
42
+ (0, _8_9_1.test)('SaaS UI Upgrade Flow Automation @saasUpgrade', async ({ page, homePage, clusterPage, clusterDetailsPage, }) => {
43
+ _8_9_1.test.slow();
44
+ await _8_9_1.test.step('Navigate to SaaS Upgrade Section', async () => {
45
+ await homePage.clickClusters();
46
+ await clusterPage.clickClusterLink('Test Cluster');
47
+ await clusterDetailsPage.performClusterUpdate();
48
+ await homePage.clickClusters();
49
+ await clusterPage.assertClusterHealthyStatusWithRetry('Test Cluster');
50
+ await (0, test_1.expect)(page.getByText(process.env.MINOR_VERSION)).toBeVisible();
51
+ });
52
+ });
53
+ (0, _8_9_1.test)('Basic Navigation After SaaS Upgrade', async ({ homePage, appsPage, modelerHomePage, operateHomePage, optimizeHomePage, taskPanelPage, ocIdentityHomePage, }) => {
54
+ const clusterName = 'Test Cluster';
55
+ await _8_9_1.test.step('Assert Web Modeler Navigation', async () => {
56
+ await appsPage.clickCamundaApps();
57
+ await appsPage.clickModeler();
58
+ await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
59
+ timeout: 120000,
60
+ });
61
+ await modelerHomePage.clickMessageBanner();
62
+ });
63
+ await _8_9_1.test.step('Assert Console Navigation', async () => {
64
+ await appsPage.clickCamundaApps();
65
+ await appsPage.clickConsoleLink();
66
+ await (0, test_1.expect)(homePage.consoleBanner).toBeVisible({
67
+ timeout: 120000,
68
+ });
69
+ });
70
+ await _8_9_1.test.step('Assert Operate Navigation', async () => {
71
+ await appsPage.clickCamundaApps();
72
+ await appsPage.clickOperate(clusterName);
73
+ await (0, test_1.expect)(operateHomePage.operateBanner).toBeVisible({
74
+ timeout: 120000,
75
+ });
76
+ });
77
+ await _8_9_1.test.step('Assert Optimize Navigation', async () => {
78
+ await appsPage.clickCamundaApps();
79
+ await appsPage.clickOptimize(clusterName);
80
+ await (0, test_1.expect)(optimizeHomePage.optimizeBanner).toBeVisible({
81
+ timeout: 120000,
82
+ });
83
+ });
84
+ await _8_9_1.test.step('Assert Tasklist Navigation', async () => {
85
+ await appsPage.clickCamundaApps();
86
+ await appsPage.clickTasklist(clusterName);
87
+ await (0, test_1.expect)(taskPanelPage.taskListPageBanner).toBeVisible({
88
+ timeout: 120000,
89
+ });
90
+ });
91
+ await _8_9_1.test.step('Assert Admin Navigation', async () => {
92
+ await appsPage.clickCamundaApps();
93
+ await appsPage.clickAdmin(clusterName);
94
+ await (0, test_1.expect)(ocIdentityHomePage.adminBanner).toBeVisible({
95
+ timeout: 120000,
96
+ });
97
+ });
98
+ });
99
+ (0, _8_9_1.test)('Assert Process Instances Persist After SaaS Upgrade', async ({ page, appsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeReportPage, taskPanelPage, }) => {
100
+ _8_9_1.test.slow();
101
+ // Use the same fixed names that were created in the pre-upgrade smoke tests
102
+ const processName = 'Zeebe_User_Task_ProcessUpgradeTest';
103
+ const reportName = 'UpgradeTestReport';
104
+ const clusterName = 'Test Cluster';
105
+ await _8_9_1.test.step('View Process Instance in Operate', async () => {
106
+ await appsPage.clickCamundaApps();
107
+ await appsPage.clickOperate(clusterName);
108
+ await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({
109
+ timeout: 120000,
110
+ });
111
+ await operateHomePage.clickProcessesTab();
112
+ await operateProcessesPage.clickProcessCompletedCheckbox();
113
+ await operateProcessesPage.clickProcessInstanceLink(processName);
114
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
115
+ });
116
+ await _8_9_1.test.step('View Process Instance in Tasklist', async () => {
117
+ await appsPage.clickCamundaApps();
118
+ await appsPage.clickTasklist(clusterName);
119
+ await taskPanelPage.filterBy('Completed');
120
+ await (0, test_1.expect)(page.getByRole('heading', { name: 'completed' })).toBeVisible({
121
+ timeout: 45000,
122
+ });
123
+ await (0, test_1.expect)(page.getByText(processName)).toBeVisible({ timeout: 60000 });
124
+ });
125
+ await _8_9_1.test.step('View Report in Optimize', async () => {
126
+ await appsPage.clickCamundaApps();
127
+ await appsPage.clickOptimize(clusterName);
128
+ await optimizeHomePage.clickCollectionsLink();
129
+ // Look for the specific report created during pre-upgrade smoke tests
130
+ await (0, test_1.expect)(page.getByText(reportName)).toBeVisible({
131
+ timeout: 60000,
132
+ });
133
+ await page.getByText(reportName).click();
134
+ await optimizeReportPage.waitUntilLocatorIsVisible(optimizeReportPage.oneUserTaskInstance, page);
135
+ await (0, test_1.expect)(optimizeReportPage.oneUserTaskInstance).toBeVisible({
136
+ timeout: 90000,
137
+ });
138
+ });
139
+ });
140
+ (0, _8_9_1.test)('Assert SaaS Organization Data Persists After Upgrade', async ({ page, appsPage, }) => {
141
+ await _8_9_1.test.step('Verify Organization Settings Persist', async () => {
142
+ await appsPage.clickCamundaApps();
143
+ await appsPage.clickConsoleLink();
144
+ await page.getByRole('button', { name: 'Organization Settings' }).click();
145
+ // Verify organization name and settings
146
+ await (0, test_1.expect)(page.getByTestId('organization-name')).toBeVisible();
147
+ await (0, test_1.expect)(page.getByTestId('organization-members')).toBeVisible();
148
+ });
149
+ await _8_9_1.test.step('Verify User Roles and Permissions Persist', async () => {
150
+ await page.getByRole('tab', { name: 'Members' }).click();
151
+ // Verify existing users still have correct roles
152
+ await (0, test_1.expect)(page.getByText('Owner')).toBeVisible();
153
+ await (0, test_1.expect)(page.getByText('Developer')).toBeVisible();
154
+ await (0, test_1.expect)(page.getByText('Modeler')).toBeVisible();
155
+ });
156
+ });
157
+ (0, _8_9_1.test)('Assert Connectors Still Function After SaaS Upgrade @tasklistV2', async ({ operateHomePage, appsPage, operateProcessesPage, operateProcessInstancePage, }) => {
158
+ _8_9_1.test.slow();
159
+ // Use the same fixed name that was created in the pre-upgrade smoke tests
160
+ const processName = 'REST_Connector_Basic_Auth_ProcessUpgradeTest';
161
+ const clusterName = 'Test Cluster';
162
+ await _8_9_1.test.step('View Connector Process Instance in Operate', async () => {
163
+ await appsPage.clickCamundaApps();
164
+ await appsPage.clickOperate(clusterName);
165
+ await operateHomePage.clickProcessesTab();
166
+ await operateProcessesPage.clickProcessCompletedCheckbox();
167
+ await operateProcessesPage.clickProcessInstanceLink(processName);
168
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
169
+ await (0, test_1.expect)(operateProcessInstancePage.variablesList).toBeVisible({
170
+ timeout: 60000,
171
+ });
172
+ await (0, test_1.expect)(operateProcessInstancePage.connectorResultVariableName('message')).toBeVisible({ timeout: 60000 });
173
+ await (0, test_1.expect)(operateProcessInstancePage.messageVariable.getByText('"Message from Mock!"')).toBeVisible({ timeout: 60000 });
174
+ });
175
+ });
176
+ });
@@ -20,6 +20,8 @@ const testUser = (0, users_1.getTestUser)('thirteenthUser');
20
20
  _8_9_1.test.describe.configure({ mode: 'parallel' });
21
21
  _8_9_1.test.describe('Smoke Tests', () => {
22
22
  const clusterName = 'Test Cluster';
23
+ // Use fixed names for upgrade testing validation, random names for regular testing
24
+ const useFixedNames = process.env.UPGRADE_BASELINE === 'true';
23
25
  _8_9_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
24
26
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
25
27
  });
@@ -28,11 +30,15 @@ _8_9_1.test.describe('Smoke Tests', () => {
28
30
  await (0, _setup_1.captureFailureVideo)(page, testInfo);
29
31
  });
30
32
  (0, _8_9_1.test)('Most Common Flow User Flow With All Apps', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, formJsPage, }) => {
31
- const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
33
+ const randomString = useFixedNames
34
+ ? 'UpgradeTest'
35
+ : await (0, _setup_1.generateRandomStringAsync)(3);
32
36
  const formName = 'New form' + randomString;
33
37
  const processName = 'Zeebe_User_Task_Process' + randomString;
34
38
  const userTaskName = 'zeebeUserTaskWithForm' + randomString;
35
- const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
39
+ const reportName = useFixedNames
40
+ ? 'UpgradeTestReport'
41
+ : await (0, _setup_1.generateRandomStringAsync)(5);
36
42
  await _8_9_1.test.step('Navigate to Web Modeler', async () => {
37
43
  await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
38
44
  timeout: 30000,
@@ -145,7 +151,9 @@ _8_9_1.test.describe('Smoke Tests', () => {
145
151
  });
146
152
  (0, _8_9_1.test)('Most Common REST Connector User Flow', async ({ page, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
147
153
  _8_9_1.test.slow();
148
- const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
154
+ const randomString = useFixedNames
155
+ ? 'UpgradeTest'
156
+ : await (0, _setup_1.generateRandomStringAsync)(3);
149
157
  const processName = 'REST_Connector_Basic_Auth_Process' + randomString;
150
158
  await _8_9_1.test.step('Navigate to Web Modeler', async () => {
151
159
  await appsPage.clickCamundaApps();