@camunda/e2e-test-suite 0.0.714 → 0.0.715

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 (201) hide show
  1. package/.github/c8_versions.json +0 -3
  2. package/README.md +0 -6
  3. package/dist/utils/clusterVersions.d.ts +0 -1
  4. package/dist/utils/clusterVersions.js +0 -1
  5. package/package.json +1 -1
  6. package/dist/fixtures/8.6.d.ts +0 -63
  7. package/dist/fixtures/8.6.js +0 -162
  8. package/dist/fixtures/SM-8.6.d.ts +0 -63
  9. package/dist/fixtures/SM-8.6.js +0 -149
  10. package/dist/fixtures/c8Run-8.6.d.ts +0 -20
  11. package/dist/fixtures/c8Run-8.6.js +0 -56
  12. package/dist/pages/8.6/AppsPage.d.ts +0 -33
  13. package/dist/pages/8.6/AppsPage.js +0 -337
  14. package/dist/pages/8.6/ClientCredentialsDetailsPage.d.ts +0 -12
  15. package/dist/pages/8.6/ClientCredentialsDetailsPage.js +0 -36
  16. package/dist/pages/8.6/ClusterDetailsPage.d.ts +0 -75
  17. package/dist/pages/8.6/ClusterDetailsPage.js +0 -443
  18. package/dist/pages/8.6/ClusterPage.d.ts +0 -59
  19. package/dist/pages/8.6/ClusterPage.js +0 -320
  20. package/dist/pages/8.6/ClusterSecretsPage.d.ts +0 -28
  21. package/dist/pages/8.6/ClusterSecretsPage.js +0 -134
  22. package/dist/pages/8.6/ConnectorMarketplacePage.d.ts +0 -19
  23. package/dist/pages/8.6/ConnectorMarketplacePage.js +0 -60
  24. package/dist/pages/8.6/ConnectorSettingsPage.d.ts +0 -38
  25. package/dist/pages/8.6/ConnectorSettingsPage.js +0 -133
  26. package/dist/pages/8.6/ConnectorTemplatePage.d.ts +0 -11
  27. package/dist/pages/8.6/ConnectorTemplatePage.js +0 -34
  28. package/dist/pages/8.6/ConsoleOrganizationPage.d.ts +0 -87
  29. package/dist/pages/8.6/ConsoleOrganizationPage.js +0 -495
  30. package/dist/pages/8.6/FormJsPage.d.ts +0 -30
  31. package/dist/pages/8.6/FormJsPage.js +0 -112
  32. package/dist/pages/8.6/HomePage.d.ts +0 -27
  33. package/dist/pages/8.6/HomePage.js +0 -101
  34. package/dist/pages/8.6/LoginPage.d.ts +0 -30
  35. package/dist/pages/8.6/LoginPage.js +0 -85
  36. package/dist/pages/8.6/ModelerCreatePage.d.ts +0 -211
  37. package/dist/pages/8.6/ModelerCreatePage.js +0 -1125
  38. package/dist/pages/8.6/ModelerHomePage.d.ts +0 -48
  39. package/dist/pages/8.6/ModelerHomePage.js +0 -213
  40. package/dist/pages/8.6/ModelerUserInvitePage.d.ts +0 -28
  41. package/dist/pages/8.6/ModelerUserInvitePage.js +0 -106
  42. package/dist/pages/8.6/OperateHomePage.d.ts +0 -21
  43. package/dist/pages/8.6/OperateHomePage.js +0 -57
  44. package/dist/pages/8.6/OperateProcessInstancePage.d.ts +0 -17
  45. package/dist/pages/8.6/OperateProcessInstancePage.js +0 -58
  46. package/dist/pages/8.6/OperateProcessesPage.d.ts +0 -21
  47. package/dist/pages/8.6/OperateProcessesPage.js +0 -77
  48. package/dist/pages/8.6/OptimizeCollectionsPage.d.ts +0 -15
  49. package/dist/pages/8.6/OptimizeCollectionsPage.js +0 -44
  50. package/dist/pages/8.6/OptimizeDashboardPage.d.ts +0 -11
  51. package/dist/pages/8.6/OptimizeDashboardPage.js +0 -65
  52. package/dist/pages/8.6/OptimizeHomePage.d.ts +0 -12
  53. package/dist/pages/8.6/OptimizeHomePage.js +0 -32
  54. package/dist/pages/8.6/OptimizeReportPage.d.ts +0 -48
  55. package/dist/pages/8.6/OptimizeReportPage.js +0 -163
  56. package/dist/pages/8.6/PlayPage.d.ts +0 -14
  57. package/dist/pages/8.6/PlayPage.js +0 -66
  58. package/dist/pages/8.6/SettingsPage.d.ts +0 -10
  59. package/dist/pages/8.6/SettingsPage.js +0 -43
  60. package/dist/pages/8.6/SignUpPage.d.ts +0 -43
  61. package/dist/pages/8.6/SignUpPage.js +0 -136
  62. package/dist/pages/8.6/TaskDetailsPage.d.ts +0 -66
  63. package/dist/pages/8.6/TaskDetailsPage.js +0 -214
  64. package/dist/pages/8.6/TaskPanelPage.d.ts +0 -18
  65. package/dist/pages/8.6/TaskPanelPage.js +0 -54
  66. package/dist/pages/8.6/TaskProcessesPage.d.ts +0 -11
  67. package/dist/pages/8.6/TaskProcessesPage.js +0 -35
  68. package/dist/pages/8.6/UtilitiesPage.d.ts +0 -38
  69. package/dist/pages/8.6/UtilitiesPage.js +0 -328
  70. package/dist/pages/SM-8.6/ConnectorMarketplacePage.d.ts +0 -16
  71. package/dist/pages/SM-8.6/ConnectorMarketplacePage.js +0 -48
  72. package/dist/pages/SM-8.6/ConnectorSettingsPage.d.ts +0 -28
  73. package/dist/pages/SM-8.6/ConnectorSettingsPage.js +0 -82
  74. package/dist/pages/SM-8.6/ConnectorTemplatePage.d.ts +0 -11
  75. package/dist/pages/SM-8.6/ConnectorTemplatePage.js +0 -34
  76. package/dist/pages/SM-8.6/ConsoleHomePage.d.ts +0 -9
  77. package/dist/pages/SM-8.6/ConsoleHomePage.js +0 -22
  78. package/dist/pages/SM-8.6/ConsoleOrganizationPage.d.ts +0 -22
  79. package/dist/pages/SM-8.6/ConsoleOrganizationPage.js +0 -68
  80. package/dist/pages/SM-8.6/FormJsPage.d.ts +0 -13
  81. package/dist/pages/SM-8.6/FormJsPage.js +0 -30
  82. package/dist/pages/SM-8.6/HomePage.d.ts +0 -20
  83. package/dist/pages/SM-8.6/HomePage.js +0 -49
  84. package/dist/pages/SM-8.6/IdentityPage.d.ts +0 -67
  85. package/dist/pages/SM-8.6/IdentityPage.js +0 -266
  86. package/dist/pages/SM-8.6/IdentityTenantPage.d.ts +0 -50
  87. package/dist/pages/SM-8.6/IdentityTenantPage.js +0 -196
  88. package/dist/pages/SM-8.6/IdentityUsersPage.d.ts +0 -90
  89. package/dist/pages/SM-8.6/IdentityUsersPage.js +0 -505
  90. package/dist/pages/SM-8.6/KeycloakAdminPage.d.ts +0 -15
  91. package/dist/pages/SM-8.6/KeycloakAdminPage.js +0 -56
  92. package/dist/pages/SM-8.6/KeycloakLoginPage.d.ts +0 -11
  93. package/dist/pages/SM-8.6/KeycloakLoginPage.js +0 -25
  94. package/dist/pages/SM-8.6/KeycloakUtils.d.ts +0 -15
  95. package/dist/pages/SM-8.6/KeycloakUtils.js +0 -58
  96. package/dist/pages/SM-8.6/LoginPage.d.ts +0 -22
  97. package/dist/pages/SM-8.6/LoginPage.js +0 -123
  98. package/dist/pages/SM-8.6/ModelerCreatePage.d.ts +0 -167
  99. package/dist/pages/SM-8.6/ModelerCreatePage.js +0 -852
  100. package/dist/pages/SM-8.6/ModelerHomePage.d.ts +0 -41
  101. package/dist/pages/SM-8.6/ModelerHomePage.js +0 -150
  102. package/dist/pages/SM-8.6/NavigationPage.d.ts +0 -42
  103. package/dist/pages/SM-8.6/NavigationPage.js +0 -119
  104. package/dist/pages/SM-8.6/OperateHomePage.d.ts +0 -23
  105. package/dist/pages/SM-8.6/OperateHomePage.js +0 -65
  106. package/dist/pages/SM-8.6/OperateProcessInstancePage.d.ts +0 -22
  107. package/dist/pages/SM-8.6/OperateProcessInstancePage.js +0 -139
  108. package/dist/pages/SM-8.6/OperateProcessesPage.d.ts +0 -33
  109. package/dist/pages/SM-8.6/OperateProcessesPage.js +0 -166
  110. package/dist/pages/SM-8.6/OptimizeCollectionsPage.d.ts +0 -15
  111. package/dist/pages/SM-8.6/OptimizeCollectionsPage.js +0 -44
  112. package/dist/pages/SM-8.6/OptimizeDashboardPage.d.ts +0 -14
  113. package/dist/pages/SM-8.6/OptimizeDashboardPage.js +0 -56
  114. package/dist/pages/SM-8.6/OptimizeHomePage.d.ts +0 -19
  115. package/dist/pages/SM-8.6/OptimizeHomePage.js +0 -62
  116. package/dist/pages/SM-8.6/OptimizeReportPage.d.ts +0 -50
  117. package/dist/pages/SM-8.6/OptimizeReportPage.js +0 -162
  118. package/dist/pages/SM-8.6/PlayPage.d.ts +0 -19
  119. package/dist/pages/SM-8.6/PlayPage.js +0 -103
  120. package/dist/pages/SM-8.6/SettingsPage.d.ts +0 -10
  121. package/dist/pages/SM-8.6/SettingsPage.js +0 -20
  122. package/dist/pages/SM-8.6/TaskDetailsPage.d.ts +0 -64
  123. package/dist/pages/SM-8.6/TaskDetailsPage.js +0 -240
  124. package/dist/pages/SM-8.6/TaskPanelPage.d.ts +0 -22
  125. package/dist/pages/SM-8.6/TaskPanelPage.js +0 -68
  126. package/dist/pages/SM-8.6/TaskProcessesPage.d.ts +0 -11
  127. package/dist/pages/SM-8.6/TaskProcessesPage.js +0 -31
  128. package/dist/pages/SM-8.6/UtlitiesPage.d.ts +0 -21
  129. package/dist/pages/SM-8.6/UtlitiesPage.js +0 -207
  130. package/dist/pages/SM-8.6/optimizeReportUtils.d.ts +0 -6
  131. package/dist/pages/SM-8.6/optimizeReportUtils.js +0 -42
  132. package/dist/pages/c8Run-8.6/OperateHomePage.d.ts +0 -20
  133. package/dist/pages/c8Run-8.6/OperateHomePage.js +0 -52
  134. package/dist/pages/c8Run-8.6/OperateLoginPage.d.ts +0 -14
  135. package/dist/pages/c8Run-8.6/OperateLoginPage.js +0 -37
  136. package/dist/pages/c8Run-8.6/OperateProcessInstancePage.d.ts +0 -17
  137. package/dist/pages/c8Run-8.6/OperateProcessInstancePage.js +0 -76
  138. package/dist/pages/c8Run-8.6/OperateProcessesPage.d.ts +0 -20
  139. package/dist/pages/c8Run-8.6/OperateProcessesPage.js +0 -84
  140. package/dist/pages/c8Run-8.6/TaskDetailsPage.d.ts +0 -65
  141. package/dist/pages/c8Run-8.6/TaskDetailsPage.js +0 -219
  142. package/dist/pages/c8Run-8.6/TaskListLoginPage.d.ts +0 -14
  143. package/dist/pages/c8Run-8.6/TaskListLoginPage.js +0 -37
  144. package/dist/pages/c8Run-8.6/TaskPanelPage.d.ts +0 -23
  145. package/dist/pages/c8Run-8.6/TaskPanelPage.js +0 -76
  146. package/dist/pages/c8Run-8.6/UtilitiesPage.d.ts +0 -6
  147. package/dist/pages/c8Run-8.6/UtilitiesPage.js +0 -45
  148. package/dist/tests/8.6/connectors-user-flows.spec.d.ts +0 -1
  149. package/dist/tests/8.6/connectors-user-flows.spec.js +0 -435
  150. package/dist/tests/8.6/console-user-flows.spec.d.ts +0 -1
  151. package/dist/tests/8.6/console-user-flows.spec.js +0 -193
  152. package/dist/tests/8.6/hto-user-flows.spec.d.ts +0 -1
  153. package/dist/tests/8.6/hto-user-flows.spec.js +0 -365
  154. package/dist/tests/8.6/login.spec.d.ts +0 -1
  155. package/dist/tests/8.6/login.spec.js +0 -27
  156. package/dist/tests/8.6/navigation.spec.d.ts +0 -1
  157. package/dist/tests/8.6/navigation.spec.js +0 -57
  158. package/dist/tests/8.6/operate-access-flow.spec.d.ts +0 -1
  159. package/dist/tests/8.6/operate-access-flow.spec.js +0 -57
  160. package/dist/tests/8.6/optimize-user-flows.spec.d.ts +0 -1
  161. package/dist/tests/8.6/optimize-user-flows.spec.js +0 -231
  162. package/dist/tests/8.6/play.spec.d.ts +0 -1
  163. package/dist/tests/8.6/play.spec.js +0 -94
  164. package/dist/tests/8.6/rba-enabled-user-flows.spec.d.ts +0 -1
  165. package/dist/tests/8.6/rba-enabled-user-flows.spec.js +0 -288
  166. package/dist/tests/8.6/smoke-tests.spec.d.ts +0 -1
  167. package/dist/tests/8.6/smoke-tests.spec.js +0 -188
  168. package/dist/tests/8.6/test-setup.spec.d.ts +0 -1
  169. package/dist/tests/8.6/test-setup.spec.js +0 -68
  170. package/dist/tests/8.6/web-modeler-user-flows.spec.d.ts +0 -1
  171. package/dist/tests/8.6/web-modeler-user-flows.spec.js +0 -692
  172. package/dist/tests/SM-8.6/connectors-user-flows.spec.d.ts +0 -1
  173. package/dist/tests/SM-8.6/connectors-user-flows.spec.js +0 -247
  174. package/dist/tests/SM-8.6/console-user-flows.spec.d.ts +0 -1
  175. package/dist/tests/SM-8.6/console-user-flows.spec.js +0 -55
  176. package/dist/tests/SM-8.6/hto-user-flows.spec.d.ts +0 -1
  177. package/dist/tests/SM-8.6/hto-user-flows.spec.js +0 -393
  178. package/dist/tests/SM-8.6/license-key-user-flows.spec.d.ts +0 -1
  179. package/dist/tests/SM-8.6/license-key-user-flows.spec.js +0 -462
  180. package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.d.ts +0 -1
  181. package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.js +0 -500
  182. package/dist/tests/SM-8.6/optimize-user-flows.spec.d.ts +0 -1
  183. package/dist/tests/SM-8.6/optimize-user-flows.spec.js +0 -186
  184. package/dist/tests/SM-8.6/play.spec.d.ts +0 -1
  185. package/dist/tests/SM-8.6/play.spec.js +0 -87
  186. package/dist/tests/SM-8.6/rba-enabled-user-flows.spec.d.ts +0 -1
  187. package/dist/tests/SM-8.6/rba-enabled-user-flows.spec.js +0 -242
  188. package/dist/tests/SM-8.6/smoke-tests.spec.d.ts +0 -1
  189. package/dist/tests/SM-8.6/smoke-tests.spec.js +0 -158
  190. package/dist/tests/SM-8.6/test-setup.spec.d.ts +0 -1
  191. package/dist/tests/SM-8.6/test-setup.spec.js +0 -134
  192. package/dist/tests/SM-8.6/web-modeler-user-flows.spec.d.ts +0 -1
  193. package/dist/tests/SM-8.6/web-modeler-user-flows.spec.js +0 -126
  194. package/dist/tests/c8Run-8.6/api-tests.spec.d.ts +0 -1
  195. package/dist/tests/c8Run-8.6/api-tests.spec.js +0 -67
  196. package/dist/tests/c8Run-8.6/connectors-user-flows.spec.d.ts +0 -1
  197. package/dist/tests/c8Run-8.6/connectors-user-flows.spec.js +0 -119
  198. package/dist/tests/c8Run-8.6/hto-user-flows.spec.d.ts +0 -1
  199. package/dist/tests/c8Run-8.6/hto-user-flows.spec.js +0 -199
  200. package/dist/tests/c8Run-8.6/login.spec.d.ts +0 -1
  201. package/dist/tests/c8Run-8.6/login.spec.js +0 -22
@@ -1,41 +0,0 @@
1
- import { Page, Locator } from '@playwright/test';
2
- declare class ModelerHomePage {
3
- private page;
4
- private defaultFolderName;
5
- readonly modelerPageBanner: Locator;
6
- readonly createNewProjectButton: Locator;
7
- readonly projectNameInput: Locator;
8
- readonly chooseBpmnTemplateButton: Locator;
9
- readonly diagramTypeDropdown: Locator;
10
- readonly bpmnTemplateOption: Locator;
11
- readonly formTemplateOption: Locator;
12
- readonly projectBreadcrumb: Locator;
13
- readonly openOrganizationsButton: Locator;
14
- readonly manageButton: Locator;
15
- readonly crossComponentProjectFolder: Locator;
16
- readonly homeBreadcrumb: Locator;
17
- readonly formNameInput: Locator;
18
- readonly rows: Locator;
19
- readonly licenseKeyTagNonProduction: Locator;
20
- readonly licenseKeyTagNonCommercial: Locator;
21
- readonly licenseKeyTagProduction: Locator;
22
- readonly licenseKeyTagCommercial: Locator;
23
- readonly uploadFilesButton: Locator;
24
- constructor(page: Page);
25
- clickCreateNewProjectButton(): Promise<void>;
26
- enterNewProjectName(name: string): Promise<void>;
27
- createCrossComponentProjectFolder(): Promise<void>;
28
- clickCrossComponentProjectFolder(): Promise<void>;
29
- clickProcessDiagram(name: string): Promise<void>;
30
- clickHomeBreadcrumb(): Promise<void>;
31
- clickChooseBpmnTemplateButton(): Promise<void>;
32
- clickDiagramTypeDropdown(): Promise<void>;
33
- clickBpmnTemplateOption(): Promise<void>;
34
- clickFormOption(): Promise<void>;
35
- enterFormName(name: string): Promise<void>;
36
- clickProjectBreadcrumb(): Promise<void>;
37
- clickOpenOrganizationsButton(): Promise<void>;
38
- clickManageButton(): Promise<void>;
39
- clickUploadFilesButton(): Promise<void>;
40
- }
41
- export { ModelerHomePage };
@@ -1,150 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModelerHomePage = void 0;
4
- const test_1 = require("@playwright/test");
5
- const sleep_1 = require("../../utils/sleep");
6
- class ModelerHomePage {
7
- page;
8
- defaultFolderName = 'Cross Component Test Project';
9
- modelerPageBanner;
10
- createNewProjectButton;
11
- projectNameInput;
12
- chooseBpmnTemplateButton;
13
- diagramTypeDropdown;
14
- bpmnTemplateOption;
15
- formTemplateOption;
16
- projectBreadcrumb;
17
- openOrganizationsButton;
18
- manageButton;
19
- crossComponentProjectFolder;
20
- homeBreadcrumb;
21
- formNameInput;
22
- rows;
23
- licenseKeyTagNonProduction;
24
- licenseKeyTagNonCommercial;
25
- licenseKeyTagProduction;
26
- licenseKeyTagCommercial;
27
- uploadFilesButton;
28
- constructor(page) {
29
- this.page = page;
30
- this.modelerPageBanner = page
31
- .locator('a')
32
- .filter({ hasText: 'Camunda logoModeler' });
33
- this.createNewProjectButton = page.getByRole('button', {
34
- name: 'New project',
35
- });
36
- this.projectNameInput = page.locator('[data-test="editable-input"]');
37
- this.chooseBpmnTemplateButton = page.getByRole('button', {
38
- name: 'Choose BPMN template',
39
- });
40
- this.diagramTypeDropdown = page.locator('[data-test="diagram-dropdown"]');
41
- this.bpmnTemplateOption = page
42
- .locator('[data-test="create-bpmn-diagram"]')
43
- .getByText('BPMN Diagram');
44
- this.formTemplateOption = page
45
- .locator('[data-test="create-form"]')
46
- .getByText('Form');
47
- this.projectBreadcrumb = page.locator('[data-test="breadcrumb-project"]');
48
- this.openOrganizationsButton = page.getByLabel('Open Organizations');
49
- this.manageButton = page.getByRole('button', { name: 'Manage' });
50
- this.crossComponentProjectFolder = page.getByTitle(this.defaultFolderName);
51
- this.homeBreadcrumb = page.locator('[data-test="breadcrumb-home"]');
52
- this.formNameInput = page.locator('[data-test="editable-input"]');
53
- this.rows = page.getByRole('row');
54
- this.licenseKeyTagNonProduction = page
55
- .getByText('Non-production license')
56
- .first();
57
- this.licenseKeyTagNonCommercial = page.getByText('Non-commercial license');
58
- this.licenseKeyTagProduction = page.getByText('Production license').first();
59
- this.licenseKeyTagCommercial = page.getByText('Commercial license');
60
- this.uploadFilesButton = page.getByRole('menuitem', { name: 'Upload files' });
61
- }
62
- async clickCreateNewProjectButton() {
63
- await this.createNewProjectButton.click({ timeout: 60000 });
64
- }
65
- async enterNewProjectName(name) {
66
- await this.projectNameInput.click({ timeout: 60000 });
67
- await this.projectNameInput.fill(name);
68
- await this.projectNameInput.press('Enter');
69
- }
70
- async createCrossComponentProjectFolder() {
71
- await (0, sleep_1.sleep)(10000);
72
- if (await this.crossComponentProjectFolder.isVisible()) {
73
- console.log('Cross Component Project folder already exists. Clicking into it');
74
- await this.clickCrossComponentProjectFolder();
75
- return;
76
- }
77
- await this.clickCreateNewProjectButton();
78
- await this.enterNewProjectName(this.defaultFolderName);
79
- await (0, sleep_1.sleep)(5000);
80
- }
81
- async clickCrossComponentProjectFolder() {
82
- let attempts = 0;
83
- const maxAttempts = 3;
84
- const timeout = 60000;
85
- while (attempts < maxAttempts) {
86
- try {
87
- await (0, test_1.expect)(this.crossComponentProjectFolder).toBeVisible({ timeout });
88
- await this.crossComponentProjectFolder.click();
89
- return;
90
- }
91
- catch (error) {
92
- attempts++;
93
- if (attempts < maxAttempts) {
94
- console.log(`Attempt ${attempts} failed. Reloading page and retrying...`);
95
- await this.page.reload();
96
- await (0, sleep_1.sleep)(10000);
97
- }
98
- else {
99
- throw new Error('Failed to click crossComponentProjectFolder after 3 attempts.');
100
- }
101
- }
102
- }
103
- }
104
- async clickProcessDiagram(name) {
105
- const process = this.rows.filter({ hasText: name }).getByTitle(name).first();
106
- await (0, test_1.expect)(process).toBeVisible({ timeout: 90000 });
107
- await process.click();
108
- }
109
- async clickHomeBreadcrumb() {
110
- try {
111
- await this.homeBreadcrumb.click();
112
- }
113
- catch (error) {
114
- await this.page.getByText('Home', { exact: true }).first().click();
115
- }
116
- }
117
- async clickChooseBpmnTemplateButton() {
118
- await this.chooseBpmnTemplateButton.click();
119
- }
120
- async clickDiagramTypeDropdown() {
121
- await (0, test_1.expect)(this.diagramTypeDropdown).toBeVisible({
122
- timeout: 60000,
123
- });
124
- await this.diagramTypeDropdown.click();
125
- }
126
- async clickBpmnTemplateOption() {
127
- await this.bpmnTemplateOption.click();
128
- }
129
- async clickFormOption() {
130
- await this.formTemplateOption.click();
131
- }
132
- async enterFormName(name) {
133
- await this.formNameInput.click({ timeout: 60000 });
134
- await this.formNameInput.fill(name);
135
- await this.formNameInput.press('Enter');
136
- }
137
- async clickProjectBreadcrumb() {
138
- await this.projectBreadcrumb.click();
139
- }
140
- async clickOpenOrganizationsButton() {
141
- await this.openOrganizationsButton.click({ timeout: 30000 });
142
- }
143
- async clickManageButton() {
144
- await this.manageButton.click({ timeout: 30000 });
145
- }
146
- async clickUploadFilesButton() {
147
- await this.uploadFilesButton.click({ timeout: 60000 });
148
- }
149
- }
150
- exports.ModelerHomePage = ModelerHomePage;
@@ -1,42 +0,0 @@
1
- import { Locator, Page } from '@playwright/test';
2
- declare class NavigationPage {
3
- private page;
4
- readonly modelerPageBanner: Locator;
5
- readonly operatePageBanner: Locator;
6
- readonly tasklistPageBanner: Locator;
7
- readonly optimizePageBanner: Locator;
8
- readonly identityPageBanner: Locator;
9
- readonly consolePageBanner: Locator;
10
- readonly keyboardPageBanner: Locator;
11
- constructor(page: Page);
12
- goTo(url: string, banner: Locator, sleepTimeout?: number, { username, password, }?: {
13
- username?: string;
14
- password?: string;
15
- }, maxRetries?: number): Promise<void>;
16
- goToModeler(sleepTimeout?: number, credentials?: {
17
- username: string;
18
- password: string;
19
- }): Promise<void>;
20
- goToTasklist(sleepTimeout?: number, credentials?: {
21
- username: string;
22
- password: string;
23
- }): Promise<void>;
24
- goToOperate(sleepTimeout?: number, credentials?: {
25
- username: string;
26
- password: string;
27
- }): Promise<void>;
28
- goToOptimize(sleepTimeout?: number, credentials?: {
29
- username: string;
30
- password: string;
31
- }): Promise<void>;
32
- goToKeycloak(): Promise<void>;
33
- goToIdentity(sleepTimeout?: number, credentials?: {
34
- username: string;
35
- password: string;
36
- }): Promise<void>;
37
- goToConsole(sleepTimeout?: number, credentials?: {
38
- username: string;
39
- password: string;
40
- }): Promise<void>;
41
- }
42
- export { NavigationPage };
@@ -1,119 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NavigationPage = void 0;
4
- const test_1 = require("@playwright/test");
5
- const LoginPage_1 = require("./LoginPage");
6
- const sleep_1 = require("../../utils/sleep");
7
- const constants_1 = require("../../utils/constants");
8
- class NavigationPage {
9
- page;
10
- modelerPageBanner;
11
- operatePageBanner;
12
- tasklistPageBanner;
13
- optimizePageBanner;
14
- identityPageBanner;
15
- consolePageBanner;
16
- keyboardPageBanner;
17
- constructor(page) {
18
- this.page = page;
19
- this.operatePageBanner = page.getByRole('link', {
20
- name: 'Camunda logo Operate',
21
- });
22
- this.modelerPageBanner = page
23
- .locator('a')
24
- .filter({ hasText: 'Camunda logoModeler' });
25
- this.tasklistPageBanner = page.getByRole('link', {
26
- name: 'Camunda logo Tasklist',
27
- });
28
- this.optimizePageBanner = page.getByRole('link', {
29
- name: 'Camunda logo Optimize',
30
- });
31
- this.identityPageBanner = page.getByRole('link', {
32
- name: 'Camunda logo Identity',
33
- });
34
- this.consolePageBanner = page.getByRole('link', {
35
- name: 'Camunda logo Console',
36
- });
37
- this.keyboardPageBanner = page.locator('#keycloak-bg');
38
- }
39
- async goTo(url, banner, sleepTimeout, { username = 'demo', password = process.env.DISTRO_QA_E2E_TESTS_IDENTITY_FIRSTUSER_PASSWORD ??
40
- 'demo', } = {}, maxRetries = 3) {
41
- const startTime = Date.now();
42
- let timeout = constants_1._1_SECOND_IN_MS * 1;
43
- if (url === '/modeler') {
44
- timeout = constants_1._1_SECOND_IN_MS * 10;
45
- }
46
- for (let attempt = 0; attempt < maxRetries; attempt++) {
47
- try {
48
- if (sleepTimeout) {
49
- await (0, sleep_1.sleep)(sleepTimeout);
50
- }
51
- await this.page.goto(url, {
52
- timeout: 60000,
53
- waitUntil: 'domcontentloaded',
54
- });
55
- const loginPage = new LoginPage_1.LoginPage(this.page);
56
- const loginSelector = loginPage.usernameInput;
57
- await (0, test_1.expect)(banner.or(loginSelector)).toBeVisible({ timeout: 60000 });
58
- const isBannerVisible = await banner.isVisible();
59
- if (isBannerVisible) {
60
- try {
61
- await (0, test_1.expect)(loginSelector).toBeVisible({ timeout: 5000 });
62
- await loginPage.login(username, password);
63
- }
64
- catch (error) {
65
- // The login selector did NOT appear. The banner is real. We are on the correct page.
66
- // The navigation was successful, so we can just return.
67
- }
68
- }
69
- else {
70
- await loginPage.login(username, password);
71
- }
72
- return;
73
- }
74
- catch (error) {
75
- const now = new Date();
76
- const elapsed = Date.now() - startTime;
77
- if (attempt < maxRetries - 1) {
78
- await (0, sleep_1.sleep)(5000);
79
- if (!this.page.isClosed()) {
80
- try {
81
- await this.page.waitForLoadState('load', { timeout: timeout });
82
- }
83
- catch (error) {
84
- const now2 = new Date();
85
- const elapsed2 = Date.now() - startTime;
86
- console.warn(`[${now2.toISOString()}] (+${elapsed2}ms) [NavigationPage] Load state timeout or error: ${error}`);
87
- }
88
- }
89
- }
90
- else {
91
- console.error(`[${now.toISOString()}] (+${elapsed}ms) [NavigationPage] Login (${url}) failed after ${maxRetries} attempts`);
92
- throw new Error(`Login (${url}) failed after ${maxRetries} attempts`);
93
- }
94
- }
95
- }
96
- }
97
- async goToModeler(sleepTimeout, credentials) {
98
- await this.goTo('/modeler', this.modelerPageBanner, sleepTimeout, credentials);
99
- }
100
- async goToTasklist(sleepTimeout, credentials) {
101
- await this.goTo('/tasklist', this.tasklistPageBanner, sleepTimeout, credentials);
102
- }
103
- async goToOperate(sleepTimeout, credentials) {
104
- await this.goTo('/operate', this.operatePageBanner, sleepTimeout, credentials);
105
- }
106
- async goToOptimize(sleepTimeout, credentials) {
107
- await this.goTo('/optimize', this.optimizePageBanner, sleepTimeout, credentials);
108
- }
109
- async goToKeycloak() {
110
- await this.page.goto('/auth');
111
- }
112
- async goToIdentity(sleepTimeout, credentials) {
113
- await this.goTo('/identity', this.identityPageBanner, sleepTimeout, credentials);
114
- }
115
- async goToConsole(sleepTimeout, credentials) {
116
- await this.goTo('/console', this.consolePageBanner, sleepTimeout, credentials);
117
- }
118
- }
119
- exports.NavigationPage = NavigationPage;
@@ -1,23 +0,0 @@
1
- import { Page, Locator } from '@playwright/test';
2
- declare class OperateHomePage {
3
- private page;
4
- readonly operateBanner: Locator;
5
- readonly processesTab: Locator;
6
- readonly informationDialog: Locator;
7
- readonly editVariableButton: Locator;
8
- readonly variableValueInput: Locator;
9
- readonly saveVariableButton: Locator;
10
- readonly editVariableSpinner: Locator;
11
- readonly licenseKeyTagNonProduction: Locator;
12
- readonly licenseKeyTagProduction: Locator;
13
- constructor(page: Page);
14
- clickProcessesTab(): Promise<void>;
15
- closeInformationDialog(): Promise<void>;
16
- clickEditVariableButton(variableName: string): Promise<void>;
17
- clickVariableValueInput(): Promise<void>;
18
- clearVariableValueInput(): Promise<void>;
19
- fillVariableValueInput(value: string): Promise<void>;
20
- clickSaveVariableButton(): Promise<void>;
21
- openProcess(processName: string): Promise<void>;
22
- }
23
- export { OperateHomePage };
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperateHomePage = void 0;
4
- const test_1 = require("@playwright/test");
5
- class OperateHomePage {
6
- page;
7
- operateBanner;
8
- processesTab;
9
- informationDialog;
10
- editVariableButton;
11
- variableValueInput;
12
- saveVariableButton;
13
- editVariableSpinner;
14
- licenseKeyTagNonProduction;
15
- licenseKeyTagProduction;
16
- constructor(page) {
17
- this.page = page;
18
- this.operateBanner = page.getByRole('link', { name: 'Camunda logo Operate' });
19
- this.processesTab = page.getByRole('link', {
20
- name: 'Processes',
21
- exact: true,
22
- });
23
- this.informationDialog = page.getByRole('button', {
24
- name: 'Close this dialog',
25
- });
26
- this.editVariableButton = page.getByTestId('edit-variable-button');
27
- this.variableValueInput = page.getByTestId('edit-variable-value');
28
- this.saveVariableButton = page.getByLabel('Save variable');
29
- this.editVariableSpinner = page
30
- .getByTestId('variable-operation-spinner')
31
- .locator('circle')
32
- .nth(1);
33
- this.licenseKeyTagNonProduction = page
34
- .getByText('Non-production license')
35
- .first();
36
- this.licenseKeyTagProduction = page.getByText('Production license').first();
37
- }
38
- async clickProcessesTab() {
39
- await (0, test_1.expect)(this.processesTab).toBeVisible({ timeout: 120000 });
40
- await this.processesTab.click();
41
- }
42
- async closeInformationDialog() {
43
- await this.informationDialog.click();
44
- }
45
- async clickEditVariableButton(variableName) {
46
- const editVariableButton = 'Edit variable ' + variableName;
47
- await this.page.getByLabel(editVariableButton).click();
48
- }
49
- async clickVariableValueInput() {
50
- await this.variableValueInput.click();
51
- }
52
- async clearVariableValueInput() {
53
- await this.variableValueInput.clear();
54
- }
55
- async fillVariableValueInput(value) {
56
- await this.variableValueInput.fill(value);
57
- }
58
- async clickSaveVariableButton() {
59
- await this.saveVariableButton.click();
60
- }
61
- async openProcess(processName) {
62
- await this.page.getByText(processName).click();
63
- }
64
- }
65
- exports.OperateHomePage = OperateHomePage;
@@ -1,22 +0,0 @@
1
- import { Page, Locator } from '@playwright/test';
2
- declare class OperateProcessInstancePage {
3
- private page;
4
- readonly diagram: Locator;
5
- readonly completedIcon: Locator;
6
- readonly diagramSpinner: Locator;
7
- readonly activeIcon: Locator;
8
- readonly incidentIcon: Locator;
9
- constructor(page: Page);
10
- connectorResultVariableName(name: string): Promise<Locator>;
11
- connectorResultVariableValue(variableName: string): Promise<Locator>;
12
- incidentIconAssertion(): Promise<void>;
13
- assertEitherIncidentOrActiveIconVisible(): Promise<string>;
14
- assertEitherIncidentOrCompletedIconVisible(): Promise<string>;
15
- completedIconAssertion(): Promise<void>;
16
- activeIconAssertion(): Promise<void>;
17
- activeUserTaskIconVisibleAssertion(taskName: string): Promise<void>;
18
- activeUserTaskIconNotVisibleAssertion(taskName: string): Promise<void>;
19
- tenantNameAssertion(name: string): Promise<void>;
20
- assertTextVisible(text: string): Promise<void>;
21
- }
22
- export { OperateProcessInstancePage };
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperateProcessInstancePage = void 0;
4
- const test_1 = require("@playwright/test");
5
- const sleep_1 = require("../../utils/sleep");
6
- class OperateProcessInstancePage {
7
- page;
8
- diagram;
9
- completedIcon;
10
- diagramSpinner;
11
- activeIcon;
12
- incidentIcon;
13
- constructor(page) {
14
- this.page = page;
15
- this.diagram = page.getByTestId('diagram');
16
- this.completedIcon = page
17
- .getByTestId('instance-header')
18
- .getByTestId('COMPLETED-icon');
19
- this.diagramSpinner = page.getByTestId('diagram-spinner');
20
- this.activeIcon = page
21
- .getByTestId('instance-header')
22
- .getByTestId('ACTIVE-icon');
23
- this.incidentIcon = page
24
- .getByTestId('instance-header')
25
- .getByTestId('INCIDENT-icon');
26
- }
27
- async connectorResultVariableName(name) {
28
- return await this.page.getByTestId(name);
29
- }
30
- async connectorResultVariableValue(variableName) {
31
- return await this.page.getByTestId(variableName).locator('td').last();
32
- }
33
- async incidentIconAssertion() {
34
- await (0, test_1.expect)(this.incidentIcon).toBeVisible({ timeout: 90000 });
35
- }
36
- async assertEitherIncidentOrActiveIconVisible() {
37
- return Promise.race([
38
- this.incidentIcon.waitFor({ timeout: 90000 }).then(() => 'incident'),
39
- this.activeIcon.waitFor({ timeout: 90000 }).then(() => 'active'),
40
- ]);
41
- }
42
- async assertEitherIncidentOrCompletedIconVisible() {
43
- return Promise.race([
44
- this.incidentIcon.waitFor({ timeout: 90000 }).then(() => 'incident'),
45
- this.completedIcon.waitFor({ timeout: 90000 }).then(() => 'completed'),
46
- ]);
47
- }
48
- async completedIconAssertion() {
49
- let retryCount = 0;
50
- const maxRetries = 3;
51
- while (retryCount < maxRetries) {
52
- try {
53
- await (0, test_1.expect)(this.completedIcon).toBeVisible({
54
- timeout: 90000,
55
- });
56
- return; // Exit the function if the expectation is met
57
- }
58
- catch (error) {
59
- // If the active icon isn't found, reload the page and try again
60
- retryCount++;
61
- console.log(`Attempt ${retryCount} failed. Retrying...`);
62
- await this.page.reload();
63
- await (0, sleep_1.sleep)(10000);
64
- }
65
- }
66
- throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
67
- }
68
- async activeIconAssertion() {
69
- let retryCount = 0;
70
- const maxRetries = 3;
71
- while (retryCount < maxRetries) {
72
- try {
73
- await (0, test_1.expect)(this.activeIcon).toBeVisible({
74
- timeout: 90000,
75
- });
76
- return; // Exit the function if the expectation is met
77
- }
78
- catch (error) {
79
- // If the active icon isn't found, reload the page and try again
80
- retryCount++;
81
- console.log(`Attempt ${retryCount} failed. Retrying...`);
82
- await this.page.reload();
83
- await (0, sleep_1.sleep)(10000);
84
- }
85
- }
86
- throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
87
- }
88
- async activeUserTaskIconVisibleAssertion(taskName) {
89
- let retryCount = 0;
90
- const maxRetries = 30;
91
- while (retryCount < maxRetries) {
92
- try {
93
- await (0, test_1.expect)(this.page.getByTestId(taskName)).toBeVisible({
94
- timeout: 5000,
95
- });
96
- return;
97
- }
98
- catch (error) {
99
- retryCount++;
100
- console.log(`Attempt ${retryCount} failed. Retrying...`);
101
- await this.page.reload();
102
- }
103
- }
104
- throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
105
- }
106
- async activeUserTaskIconNotVisibleAssertion(taskName) {
107
- let retryCount = 0;
108
- const maxRetries = 30;
109
- while (retryCount < maxRetries) {
110
- try {
111
- await (0, test_1.expect)(this.page.getByTestId(taskName)).not.toBeVisible({
112
- timeout: 1000,
113
- });
114
- return;
115
- }
116
- catch (error) {
117
- retryCount++;
118
- console.log(`Attempt ${retryCount} failed. Retrying...`);
119
- await this.page.reload();
120
- await this.page.waitForLoadState('domcontentloaded');
121
- }
122
- }
123
- throw new Error(`Active icon visible after ${maxRetries} attempts.`);
124
- }
125
- async tenantNameAssertion(name) {
126
- await (0, test_1.expect)(this.page.getByRole('cell', { name: name, exact: true })).toBeVisible({ timeout: 60000 });
127
- }
128
- async assertTextVisible(text) {
129
- await (0, sleep_1.sleep)(2000); // moving too fast here means the text is not displayed.. clicking the row would fix this but there is no testId on the row so that would be flaky
130
- await this.page.reload();
131
- await (0, test_1.expect)(this.page.getByTestId('variables-list')).toBeVisible({
132
- timeout: 30000,
133
- });
134
- await (0, test_1.expect)(this.page.getByText(text)).toBeVisible({
135
- timeout: 60000,
136
- });
137
- }
138
- }
139
- exports.OperateProcessInstancePage = OperateProcessInstancePage;
@@ -1,33 +0,0 @@
1
- import { Page, Locator } from '@playwright/test';
2
- declare class OperateProcessesPage {
3
- private page;
4
- readonly processResultCount: Locator;
5
- readonly processActiveCheckbox: Locator;
6
- readonly processCompletedCheckbox: Locator;
7
- readonly processRunningInstancesCheckbox: Locator;
8
- readonly processIncidentsCheckbox: Locator;
9
- readonly processPageHeading: Locator;
10
- readonly noMatchingInstancesMessage: Locator;
11
- readonly processFinishedInstancesCheckbox: Locator;
12
- readonly tenantDropdown: Locator;
13
- readonly tenantDropdownOption: (name: string) => Locator;
14
- readonly tenantComboBox: Locator;
15
- constructor(page: Page);
16
- private checkCheckbox;
17
- private uncheckCheckbox;
18
- clickProcessActiveCheckbox(): Promise<void>;
19
- private uncheckActiveCheckbox;
20
- clickProcessCompletedCheckbox(): Promise<void>;
21
- private uncheckCompletedCheckbox;
22
- clickProcessIncidentsCheckbox(): Promise<void>;
23
- clickRunningProcessInstancesCheckbox(): Promise<void>;
24
- clickFinishedProcessInstancesCheckbox(): Promise<void>;
25
- private toggleActiveCheckboxOn;
26
- private toggleCompletedCheckbox;
27
- selectTenant(tenant: string): Promise<void>;
28
- clickTenantDropdown(): Promise<void>;
29
- clickTenantDropdownOption(tenant?: string): Promise<void>;
30
- private checkTableForProcess;
31
- clickProcessInstanceLink(processName: string, type?: 'active' | 'completed'): Promise<void>;
32
- }
33
- export { OperateProcessesPage };