@camunda/e2e-test-suite 0.0.713 → 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 (203) hide show
  1. package/.github/c8_versions.json +0 -3
  2. package/README.md +0 -6
  3. package/dist/pages/8.8/ClusterDetailsPage.js +5 -2
  4. package/dist/pages/8.8/ModelerCreatePage.js +10 -14
  5. package/dist/utils/clusterVersions.d.ts +0 -1
  6. package/dist/utils/clusterVersions.js +0 -1
  7. package/package.json +1 -1
  8. package/dist/fixtures/8.6.d.ts +0 -63
  9. package/dist/fixtures/8.6.js +0 -162
  10. package/dist/fixtures/SM-8.6.d.ts +0 -63
  11. package/dist/fixtures/SM-8.6.js +0 -149
  12. package/dist/fixtures/c8Run-8.6.d.ts +0 -20
  13. package/dist/fixtures/c8Run-8.6.js +0 -56
  14. package/dist/pages/8.6/AppsPage.d.ts +0 -33
  15. package/dist/pages/8.6/AppsPage.js +0 -337
  16. package/dist/pages/8.6/ClientCredentialsDetailsPage.d.ts +0 -12
  17. package/dist/pages/8.6/ClientCredentialsDetailsPage.js +0 -36
  18. package/dist/pages/8.6/ClusterDetailsPage.d.ts +0 -75
  19. package/dist/pages/8.6/ClusterDetailsPage.js +0 -443
  20. package/dist/pages/8.6/ClusterPage.d.ts +0 -59
  21. package/dist/pages/8.6/ClusterPage.js +0 -320
  22. package/dist/pages/8.6/ClusterSecretsPage.d.ts +0 -28
  23. package/dist/pages/8.6/ClusterSecretsPage.js +0 -134
  24. package/dist/pages/8.6/ConnectorMarketplacePage.d.ts +0 -19
  25. package/dist/pages/8.6/ConnectorMarketplacePage.js +0 -60
  26. package/dist/pages/8.6/ConnectorSettingsPage.d.ts +0 -38
  27. package/dist/pages/8.6/ConnectorSettingsPage.js +0 -133
  28. package/dist/pages/8.6/ConnectorTemplatePage.d.ts +0 -11
  29. package/dist/pages/8.6/ConnectorTemplatePage.js +0 -34
  30. package/dist/pages/8.6/ConsoleOrganizationPage.d.ts +0 -87
  31. package/dist/pages/8.6/ConsoleOrganizationPage.js +0 -495
  32. package/dist/pages/8.6/FormJsPage.d.ts +0 -30
  33. package/dist/pages/8.6/FormJsPage.js +0 -112
  34. package/dist/pages/8.6/HomePage.d.ts +0 -27
  35. package/dist/pages/8.6/HomePage.js +0 -101
  36. package/dist/pages/8.6/LoginPage.d.ts +0 -30
  37. package/dist/pages/8.6/LoginPage.js +0 -85
  38. package/dist/pages/8.6/ModelerCreatePage.d.ts +0 -211
  39. package/dist/pages/8.6/ModelerCreatePage.js +0 -1125
  40. package/dist/pages/8.6/ModelerHomePage.d.ts +0 -48
  41. package/dist/pages/8.6/ModelerHomePage.js +0 -213
  42. package/dist/pages/8.6/ModelerUserInvitePage.d.ts +0 -28
  43. package/dist/pages/8.6/ModelerUserInvitePage.js +0 -106
  44. package/dist/pages/8.6/OperateHomePage.d.ts +0 -21
  45. package/dist/pages/8.6/OperateHomePage.js +0 -57
  46. package/dist/pages/8.6/OperateProcessInstancePage.d.ts +0 -17
  47. package/dist/pages/8.6/OperateProcessInstancePage.js +0 -58
  48. package/dist/pages/8.6/OperateProcessesPage.d.ts +0 -21
  49. package/dist/pages/8.6/OperateProcessesPage.js +0 -77
  50. package/dist/pages/8.6/OptimizeCollectionsPage.d.ts +0 -15
  51. package/dist/pages/8.6/OptimizeCollectionsPage.js +0 -44
  52. package/dist/pages/8.6/OptimizeDashboardPage.d.ts +0 -11
  53. package/dist/pages/8.6/OptimizeDashboardPage.js +0 -65
  54. package/dist/pages/8.6/OptimizeHomePage.d.ts +0 -12
  55. package/dist/pages/8.6/OptimizeHomePage.js +0 -32
  56. package/dist/pages/8.6/OptimizeReportPage.d.ts +0 -48
  57. package/dist/pages/8.6/OptimizeReportPage.js +0 -163
  58. package/dist/pages/8.6/PlayPage.d.ts +0 -14
  59. package/dist/pages/8.6/PlayPage.js +0 -66
  60. package/dist/pages/8.6/SettingsPage.d.ts +0 -10
  61. package/dist/pages/8.6/SettingsPage.js +0 -43
  62. package/dist/pages/8.6/SignUpPage.d.ts +0 -43
  63. package/dist/pages/8.6/SignUpPage.js +0 -136
  64. package/dist/pages/8.6/TaskDetailsPage.d.ts +0 -66
  65. package/dist/pages/8.6/TaskDetailsPage.js +0 -214
  66. package/dist/pages/8.6/TaskPanelPage.d.ts +0 -18
  67. package/dist/pages/8.6/TaskPanelPage.js +0 -54
  68. package/dist/pages/8.6/TaskProcessesPage.d.ts +0 -11
  69. package/dist/pages/8.6/TaskProcessesPage.js +0 -35
  70. package/dist/pages/8.6/UtilitiesPage.d.ts +0 -38
  71. package/dist/pages/8.6/UtilitiesPage.js +0 -328
  72. package/dist/pages/SM-8.6/ConnectorMarketplacePage.d.ts +0 -16
  73. package/dist/pages/SM-8.6/ConnectorMarketplacePage.js +0 -48
  74. package/dist/pages/SM-8.6/ConnectorSettingsPage.d.ts +0 -28
  75. package/dist/pages/SM-8.6/ConnectorSettingsPage.js +0 -82
  76. package/dist/pages/SM-8.6/ConnectorTemplatePage.d.ts +0 -11
  77. package/dist/pages/SM-8.6/ConnectorTemplatePage.js +0 -34
  78. package/dist/pages/SM-8.6/ConsoleHomePage.d.ts +0 -9
  79. package/dist/pages/SM-8.6/ConsoleHomePage.js +0 -22
  80. package/dist/pages/SM-8.6/ConsoleOrganizationPage.d.ts +0 -22
  81. package/dist/pages/SM-8.6/ConsoleOrganizationPage.js +0 -68
  82. package/dist/pages/SM-8.6/FormJsPage.d.ts +0 -13
  83. package/dist/pages/SM-8.6/FormJsPage.js +0 -30
  84. package/dist/pages/SM-8.6/HomePage.d.ts +0 -20
  85. package/dist/pages/SM-8.6/HomePage.js +0 -49
  86. package/dist/pages/SM-8.6/IdentityPage.d.ts +0 -67
  87. package/dist/pages/SM-8.6/IdentityPage.js +0 -266
  88. package/dist/pages/SM-8.6/IdentityTenantPage.d.ts +0 -50
  89. package/dist/pages/SM-8.6/IdentityTenantPage.js +0 -196
  90. package/dist/pages/SM-8.6/IdentityUsersPage.d.ts +0 -90
  91. package/dist/pages/SM-8.6/IdentityUsersPage.js +0 -505
  92. package/dist/pages/SM-8.6/KeycloakAdminPage.d.ts +0 -15
  93. package/dist/pages/SM-8.6/KeycloakAdminPage.js +0 -56
  94. package/dist/pages/SM-8.6/KeycloakLoginPage.d.ts +0 -11
  95. package/dist/pages/SM-8.6/KeycloakLoginPage.js +0 -25
  96. package/dist/pages/SM-8.6/KeycloakUtils.d.ts +0 -15
  97. package/dist/pages/SM-8.6/KeycloakUtils.js +0 -58
  98. package/dist/pages/SM-8.6/LoginPage.d.ts +0 -22
  99. package/dist/pages/SM-8.6/LoginPage.js +0 -123
  100. package/dist/pages/SM-8.6/ModelerCreatePage.d.ts +0 -167
  101. package/dist/pages/SM-8.6/ModelerCreatePage.js +0 -852
  102. package/dist/pages/SM-8.6/ModelerHomePage.d.ts +0 -41
  103. package/dist/pages/SM-8.6/ModelerHomePage.js +0 -150
  104. package/dist/pages/SM-8.6/NavigationPage.d.ts +0 -42
  105. package/dist/pages/SM-8.6/NavigationPage.js +0 -119
  106. package/dist/pages/SM-8.6/OperateHomePage.d.ts +0 -23
  107. package/dist/pages/SM-8.6/OperateHomePage.js +0 -65
  108. package/dist/pages/SM-8.6/OperateProcessInstancePage.d.ts +0 -22
  109. package/dist/pages/SM-8.6/OperateProcessInstancePage.js +0 -139
  110. package/dist/pages/SM-8.6/OperateProcessesPage.d.ts +0 -33
  111. package/dist/pages/SM-8.6/OperateProcessesPage.js +0 -166
  112. package/dist/pages/SM-8.6/OptimizeCollectionsPage.d.ts +0 -15
  113. package/dist/pages/SM-8.6/OptimizeCollectionsPage.js +0 -44
  114. package/dist/pages/SM-8.6/OptimizeDashboardPage.d.ts +0 -14
  115. package/dist/pages/SM-8.6/OptimizeDashboardPage.js +0 -56
  116. package/dist/pages/SM-8.6/OptimizeHomePage.d.ts +0 -19
  117. package/dist/pages/SM-8.6/OptimizeHomePage.js +0 -62
  118. package/dist/pages/SM-8.6/OptimizeReportPage.d.ts +0 -50
  119. package/dist/pages/SM-8.6/OptimizeReportPage.js +0 -162
  120. package/dist/pages/SM-8.6/PlayPage.d.ts +0 -19
  121. package/dist/pages/SM-8.6/PlayPage.js +0 -103
  122. package/dist/pages/SM-8.6/SettingsPage.d.ts +0 -10
  123. package/dist/pages/SM-8.6/SettingsPage.js +0 -20
  124. package/dist/pages/SM-8.6/TaskDetailsPage.d.ts +0 -64
  125. package/dist/pages/SM-8.6/TaskDetailsPage.js +0 -240
  126. package/dist/pages/SM-8.6/TaskPanelPage.d.ts +0 -22
  127. package/dist/pages/SM-8.6/TaskPanelPage.js +0 -68
  128. package/dist/pages/SM-8.6/TaskProcessesPage.d.ts +0 -11
  129. package/dist/pages/SM-8.6/TaskProcessesPage.js +0 -31
  130. package/dist/pages/SM-8.6/UtlitiesPage.d.ts +0 -21
  131. package/dist/pages/SM-8.6/UtlitiesPage.js +0 -207
  132. package/dist/pages/SM-8.6/optimizeReportUtils.d.ts +0 -6
  133. package/dist/pages/SM-8.6/optimizeReportUtils.js +0 -42
  134. package/dist/pages/c8Run-8.6/OperateHomePage.d.ts +0 -20
  135. package/dist/pages/c8Run-8.6/OperateHomePage.js +0 -52
  136. package/dist/pages/c8Run-8.6/OperateLoginPage.d.ts +0 -14
  137. package/dist/pages/c8Run-8.6/OperateLoginPage.js +0 -37
  138. package/dist/pages/c8Run-8.6/OperateProcessInstancePage.d.ts +0 -17
  139. package/dist/pages/c8Run-8.6/OperateProcessInstancePage.js +0 -76
  140. package/dist/pages/c8Run-8.6/OperateProcessesPage.d.ts +0 -20
  141. package/dist/pages/c8Run-8.6/OperateProcessesPage.js +0 -84
  142. package/dist/pages/c8Run-8.6/TaskDetailsPage.d.ts +0 -65
  143. package/dist/pages/c8Run-8.6/TaskDetailsPage.js +0 -219
  144. package/dist/pages/c8Run-8.6/TaskListLoginPage.d.ts +0 -14
  145. package/dist/pages/c8Run-8.6/TaskListLoginPage.js +0 -37
  146. package/dist/pages/c8Run-8.6/TaskPanelPage.d.ts +0 -23
  147. package/dist/pages/c8Run-8.6/TaskPanelPage.js +0 -76
  148. package/dist/pages/c8Run-8.6/UtilitiesPage.d.ts +0 -6
  149. package/dist/pages/c8Run-8.6/UtilitiesPage.js +0 -45
  150. package/dist/tests/8.6/connectors-user-flows.spec.d.ts +0 -1
  151. package/dist/tests/8.6/connectors-user-flows.spec.js +0 -435
  152. package/dist/tests/8.6/console-user-flows.spec.d.ts +0 -1
  153. package/dist/tests/8.6/console-user-flows.spec.js +0 -193
  154. package/dist/tests/8.6/hto-user-flows.spec.d.ts +0 -1
  155. package/dist/tests/8.6/hto-user-flows.spec.js +0 -365
  156. package/dist/tests/8.6/login.spec.d.ts +0 -1
  157. package/dist/tests/8.6/login.spec.js +0 -27
  158. package/dist/tests/8.6/navigation.spec.d.ts +0 -1
  159. package/dist/tests/8.6/navigation.spec.js +0 -57
  160. package/dist/tests/8.6/operate-access-flow.spec.d.ts +0 -1
  161. package/dist/tests/8.6/operate-access-flow.spec.js +0 -57
  162. package/dist/tests/8.6/optimize-user-flows.spec.d.ts +0 -1
  163. package/dist/tests/8.6/optimize-user-flows.spec.js +0 -231
  164. package/dist/tests/8.6/play.spec.d.ts +0 -1
  165. package/dist/tests/8.6/play.spec.js +0 -94
  166. package/dist/tests/8.6/rba-enabled-user-flows.spec.d.ts +0 -1
  167. package/dist/tests/8.6/rba-enabled-user-flows.spec.js +0 -288
  168. package/dist/tests/8.6/smoke-tests.spec.d.ts +0 -1
  169. package/dist/tests/8.6/smoke-tests.spec.js +0 -188
  170. package/dist/tests/8.6/test-setup.spec.d.ts +0 -1
  171. package/dist/tests/8.6/test-setup.spec.js +0 -68
  172. package/dist/tests/8.6/web-modeler-user-flows.spec.d.ts +0 -1
  173. package/dist/tests/8.6/web-modeler-user-flows.spec.js +0 -692
  174. package/dist/tests/SM-8.6/connectors-user-flows.spec.d.ts +0 -1
  175. package/dist/tests/SM-8.6/connectors-user-flows.spec.js +0 -247
  176. package/dist/tests/SM-8.6/console-user-flows.spec.d.ts +0 -1
  177. package/dist/tests/SM-8.6/console-user-flows.spec.js +0 -55
  178. package/dist/tests/SM-8.6/hto-user-flows.spec.d.ts +0 -1
  179. package/dist/tests/SM-8.6/hto-user-flows.spec.js +0 -393
  180. package/dist/tests/SM-8.6/license-key-user-flows.spec.d.ts +0 -1
  181. package/dist/tests/SM-8.6/license-key-user-flows.spec.js +0 -462
  182. package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.d.ts +0 -1
  183. package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.js +0 -500
  184. package/dist/tests/SM-8.6/optimize-user-flows.spec.d.ts +0 -1
  185. package/dist/tests/SM-8.6/optimize-user-flows.spec.js +0 -186
  186. package/dist/tests/SM-8.6/play.spec.d.ts +0 -1
  187. package/dist/tests/SM-8.6/play.spec.js +0 -87
  188. package/dist/tests/SM-8.6/rba-enabled-user-flows.spec.d.ts +0 -1
  189. package/dist/tests/SM-8.6/rba-enabled-user-flows.spec.js +0 -242
  190. package/dist/tests/SM-8.6/smoke-tests.spec.d.ts +0 -1
  191. package/dist/tests/SM-8.6/smoke-tests.spec.js +0 -158
  192. package/dist/tests/SM-8.6/test-setup.spec.d.ts +0 -1
  193. package/dist/tests/SM-8.6/test-setup.spec.js +0 -134
  194. package/dist/tests/SM-8.6/web-modeler-user-flows.spec.d.ts +0 -1
  195. package/dist/tests/SM-8.6/web-modeler-user-flows.spec.js +0 -126
  196. package/dist/tests/c8Run-8.6/api-tests.spec.d.ts +0 -1
  197. package/dist/tests/c8Run-8.6/api-tests.spec.js +0 -67
  198. package/dist/tests/c8Run-8.6/connectors-user-flows.spec.d.ts +0 -1
  199. package/dist/tests/c8Run-8.6/connectors-user-flows.spec.js +0 -119
  200. package/dist/tests/c8Run-8.6/hto-user-flows.spec.d.ts +0 -1
  201. package/dist/tests/c8Run-8.6/hto-user-flows.spec.js +0 -199
  202. package/dist/tests/c8Run-8.6/login.spec.d.ts +0 -1
  203. 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 };