@camunda/e2e-test-suite 0.0.1 → 0.0.2

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 (183) hide show
  1. package/README.md +0 -2
  2. package/dist/pages/8.5/ModelerCreatePage.d.ts +1 -1
  3. package/dist/pages/8.5/ModelerCreatePage.js +15 -15
  4. package/dist/pages/8.6/ModelerCreatePage.d.ts +2 -1
  5. package/dist/pages/8.6/ModelerCreatePage.js +30 -16
  6. package/dist/pages/8.6/UtilitiesPage.d.ts +1 -3
  7. package/dist/pages/8.6/UtilitiesPage.js +5 -21
  8. package/dist/pages/8.7/ConsoleOrganizationPage.js +2 -1
  9. package/dist/pages/8.7/IdpCreatePage.d.ts +1 -1
  10. package/dist/pages/8.7/IdpCreatePage.js +16 -4
  11. package/dist/pages/8.7/ModelerCreatePage.d.ts +5 -5
  12. package/dist/pages/8.7/ModelerCreatePage.js +27 -30
  13. package/dist/pages/8.7/ModelerHomePage.d.ts +2 -0
  14. package/dist/pages/8.7/ModelerHomePage.js +26 -2
  15. package/dist/pages/8.8/ConsoleOrganizationPage.d.ts +9 -5
  16. package/dist/pages/8.8/ConsoleOrganizationPage.js +59 -16
  17. package/dist/pages/8.8/ModelerCreatePage.d.ts +5 -3
  18. package/dist/pages/8.8/ModelerCreatePage.js +35 -46
  19. package/dist/pages/8.8/OperateProcessesPage.js +1 -1
  20. package/dist/pages/8.8/UtilitiesPage.js +1 -1
  21. package/dist/pages/SM-8.5/ModelerCreatePage.js +1 -0
  22. package/dist/pages/SM-8.7/ClusterPage.js +1 -1
  23. package/dist/pages/SM-8.7/ModelerHomePage.js +1 -1
  24. package/dist/pages/SM-8.7/NavigationPage.js +1 -1
  25. package/dist/tests/8.6/connectors-user-flows.spec.js +3 -3
  26. package/dist/tests/8.6/web-modeler-user-flows.spec.js +3 -3
  27. package/dist/tests/8.7/hto-user-flows.spec.js +0 -3
  28. package/dist/tests/8.7/idp-user-flows.spec.js +1 -0
  29. package/dist/tests/8.7/web-modeler-user-flows.spec.js +2 -2
  30. package/dist/tests/8.8/aws-cluster-user-flows.spec.js +1 -1
  31. package/dist/tests/8.8/connectors-user-flows.spec.js +0 -2
  32. package/dist/tests/8.8/console-user-flows.spec.js +1 -3
  33. package/dist/tests/8.8/hto-user-flows.spec.js +4 -5
  34. package/dist/tests/8.8/rba-enabled-user-flows.spec.js +5 -3
  35. package/dist/tests/8.8/web-modeler-user-flows.spec.js +29 -39
  36. package/dist/tests/SM-8.5/mt-enabled-user-flows.spec.js +18 -0
  37. package/dist/tests/SM-8.7/mt-enabled-user-flows.spec.js +10 -3
  38. package/dist/tests/SM-8.8/optimize-user-flows.spec.js +7 -7
  39. package/package.json +1 -1
  40. package/dist/fixtures/8.4.d.ts +0 -57
  41. package/dist/fixtures/8.4.js +0 -150
  42. package/dist/fixtures/SM-8.4.d.ts +0 -55
  43. package/dist/fixtures/SM-8.4.js +0 -132
  44. package/dist/pages/8.4/AppsPage.d.ts +0 -33
  45. package/dist/pages/8.4/AppsPage.js +0 -333
  46. package/dist/pages/8.4/ClusterDetailsPage.d.ts +0 -59
  47. package/dist/pages/8.4/ClusterDetailsPage.js +0 -319
  48. package/dist/pages/8.4/ClusterPage.d.ts +0 -50
  49. package/dist/pages/8.4/ClusterPage.js +0 -334
  50. package/dist/pages/8.4/ClusterSecretsPage.d.ts +0 -21
  51. package/dist/pages/8.4/ClusterSecretsPage.js +0 -105
  52. package/dist/pages/8.4/ConnectorMarketplacePage.d.ts +0 -18
  53. package/dist/pages/8.4/ConnectorMarketplacePage.js +0 -59
  54. package/dist/pages/8.4/ConnectorSettingsPage.d.ts +0 -28
  55. package/dist/pages/8.4/ConnectorSettingsPage.js +0 -72
  56. package/dist/pages/8.4/ConnectorTemplatePage.d.ts +0 -11
  57. package/dist/pages/8.4/ConnectorTemplatePage.js +0 -34
  58. package/dist/pages/8.4/ConsoleOrganizationPage.d.ts +0 -69
  59. package/dist/pages/8.4/ConsoleOrganizationPage.js +0 -366
  60. package/dist/pages/8.4/FormJsPage.d.ts +0 -14
  61. package/dist/pages/8.4/FormJsPage.js +0 -44
  62. package/dist/pages/8.4/HomePage.d.ts +0 -27
  63. package/dist/pages/8.4/HomePage.js +0 -87
  64. package/dist/pages/8.4/LoginPage.d.ts +0 -30
  65. package/dist/pages/8.4/LoginPage.js +0 -83
  66. package/dist/pages/8.4/ModelerCreatePage.d.ts +0 -145
  67. package/dist/pages/8.4/ModelerCreatePage.js +0 -660
  68. package/dist/pages/8.4/ModelerHomePage.d.ts +0 -39
  69. package/dist/pages/8.4/ModelerHomePage.js +0 -153
  70. package/dist/pages/8.4/ModelerUserInvitePage.d.ts +0 -27
  71. package/dist/pages/8.4/ModelerUserInvitePage.js +0 -83
  72. package/dist/pages/8.4/OperateHomePage.d.ts +0 -21
  73. package/dist/pages/8.4/OperateHomePage.js +0 -53
  74. package/dist/pages/8.4/OperateProcessInstancePage.d.ts +0 -14
  75. package/dist/pages/8.4/OperateProcessInstancePage.js +0 -35
  76. package/dist/pages/8.4/OperateProcessesPage.d.ts +0 -22
  77. package/dist/pages/8.4/OperateProcessesPage.js +0 -80
  78. package/dist/pages/8.4/OptimizeCollectionsPage.d.ts +0 -15
  79. package/dist/pages/8.4/OptimizeCollectionsPage.js +0 -44
  80. package/dist/pages/8.4/OptimizeDashboardPage.d.ts +0 -8
  81. package/dist/pages/8.4/OptimizeDashboardPage.js +0 -48
  82. package/dist/pages/8.4/OptimizeHomePage.d.ts +0 -12
  83. package/dist/pages/8.4/OptimizeHomePage.js +0 -32
  84. package/dist/pages/8.4/OptimizeReportPage.d.ts +0 -49
  85. package/dist/pages/8.4/OptimizeReportPage.js +0 -160
  86. package/dist/pages/8.4/SettingsPage.d.ts +0 -10
  87. package/dist/pages/8.4/SettingsPage.js +0 -41
  88. package/dist/pages/8.4/SignUpPage.d.ts +0 -44
  89. package/dist/pages/8.4/SignUpPage.js +0 -137
  90. package/dist/pages/8.4/TaskDetailsPage.d.ts +0 -64
  91. package/dist/pages/8.4/TaskDetailsPage.js +0 -198
  92. package/dist/pages/8.4/TaskPanelPage.d.ts +0 -19
  93. package/dist/pages/8.4/TaskPanelPage.js +0 -61
  94. package/dist/pages/8.4/TaskProcessesPage.d.ts +0 -11
  95. package/dist/pages/8.4/TaskProcessesPage.js +0 -31
  96. package/dist/pages/8.4/UtilitiesPage.d.ts +0 -33
  97. package/dist/pages/8.4/UtilitiesPage.js +0 -312
  98. package/dist/pages/SM-8.4/ConnectorMarketplacePage.d.ts +0 -16
  99. package/dist/pages/SM-8.4/ConnectorMarketplacePage.js +0 -48
  100. package/dist/pages/SM-8.4/ConnectorSettingsPage.d.ts +0 -28
  101. package/dist/pages/SM-8.4/ConnectorSettingsPage.js +0 -82
  102. package/dist/pages/SM-8.4/ConsoleHomePage.d.ts +0 -7
  103. package/dist/pages/SM-8.4/ConsoleHomePage.js +0 -14
  104. package/dist/pages/SM-8.4/ConsoleOrganizationPage.d.ts +0 -22
  105. package/dist/pages/SM-8.4/ConsoleOrganizationPage.js +0 -68
  106. package/dist/pages/SM-8.4/FormJsPage.d.ts +0 -13
  107. package/dist/pages/SM-8.4/FormJsPage.js +0 -30
  108. package/dist/pages/SM-8.4/HomePage.d.ts +0 -20
  109. package/dist/pages/SM-8.4/HomePage.js +0 -49
  110. package/dist/pages/SM-8.4/IdentityPage.d.ts +0 -56
  111. package/dist/pages/SM-8.4/IdentityPage.js +0 -219
  112. package/dist/pages/SM-8.4/IdentityTenantPage.d.ts +0 -46
  113. package/dist/pages/SM-8.4/IdentityTenantPage.js +0 -173
  114. package/dist/pages/SM-8.4/IdentityUsersPage.d.ts +0 -90
  115. package/dist/pages/SM-8.4/IdentityUsersPage.js +0 -505
  116. package/dist/pages/SM-8.4/LoginPage.d.ts +0 -16
  117. package/dist/pages/SM-8.4/LoginPage.js +0 -50
  118. package/dist/pages/SM-8.4/ModelerCreatePage.d.ts +0 -142
  119. package/dist/pages/SM-8.4/ModelerCreatePage.js +0 -648
  120. package/dist/pages/SM-8.4/ModelerHomePage.d.ts +0 -35
  121. package/dist/pages/SM-8.4/ModelerHomePage.js +0 -139
  122. package/dist/pages/SM-8.4/NavigationPage.d.ts +0 -26
  123. package/dist/pages/SM-8.4/NavigationPage.js +0 -97
  124. package/dist/pages/SM-8.4/OperateHomePage.d.ts +0 -21
  125. package/dist/pages/SM-8.4/OperateHomePage.js +0 -63
  126. package/dist/pages/SM-8.4/OperateProcessInstancePage.d.ts +0 -23
  127. package/dist/pages/SM-8.4/OperateProcessInstancePage.js +0 -105
  128. package/dist/pages/SM-8.4/OperateProcessesPage.d.ts +0 -22
  129. package/dist/pages/SM-8.4/OperateProcessesPage.js +0 -90
  130. package/dist/pages/SM-8.4/OptimizeCollectionsPage.d.ts +0 -15
  131. package/dist/pages/SM-8.4/OptimizeCollectionsPage.js +0 -50
  132. package/dist/pages/SM-8.4/OptimizeDashboardPage.d.ts +0 -15
  133. package/dist/pages/SM-8.4/OptimizeDashboardPage.js +0 -59
  134. package/dist/pages/SM-8.4/OptimizeHomePage.d.ts +0 -17
  135. package/dist/pages/SM-8.4/OptimizeHomePage.js +0 -56
  136. package/dist/pages/SM-8.4/OptimizeReportPage.d.ts +0 -48
  137. package/dist/pages/SM-8.4/OptimizeReportPage.js +0 -157
  138. package/dist/pages/SM-8.4/SettingsPage.d.ts +0 -10
  139. package/dist/pages/SM-8.4/SettingsPage.js +0 -20
  140. package/dist/pages/SM-8.4/TaskDetailsPage.d.ts +0 -61
  141. package/dist/pages/SM-8.4/TaskDetailsPage.js +0 -175
  142. package/dist/pages/SM-8.4/TaskPanelPage.d.ts +0 -22
  143. package/dist/pages/SM-8.4/TaskPanelPage.js +0 -77
  144. package/dist/pages/SM-8.4/TaskProcessesPage.d.ts +0 -11
  145. package/dist/pages/SM-8.4/TaskProcessesPage.js +0 -31
  146. package/dist/pages/SM-8.4/UtilitiesPage.d.ts +0 -19
  147. package/dist/pages/SM-8.4/UtilitiesPage.js +0 -175
  148. package/dist/tests/8.4/connectors-user-flows.spec.d.ts +0 -1
  149. package/dist/tests/8.4/connectors-user-flows.spec.js +0 -407
  150. package/dist/tests/8.4/console-user-flows.spec.d.ts +0 -1
  151. package/dist/tests/8.4/console-user-flows.spec.js +0 -192
  152. package/dist/tests/8.4/hto-user-flows.spec.d.ts +0 -1
  153. package/dist/tests/8.4/hto-user-flows.spec.js +0 -186
  154. package/dist/tests/8.4/login.spec.d.ts +0 -1
  155. package/dist/tests/8.4/login.spec.js +0 -27
  156. package/dist/tests/8.4/navigation.spec.d.ts +0 -1
  157. package/dist/tests/8.4/navigation.spec.js +0 -62
  158. package/dist/tests/8.4/optimize-user-flows.spec.d.ts +0 -1
  159. package/dist/tests/8.4/optimize-user-flows.spec.js +0 -266
  160. package/dist/tests/8.4/rba-enabled-user-flows.spec.d.ts +0 -1
  161. package/dist/tests/8.4/rba-enabled-user-flows.spec.js +0 -306
  162. package/dist/tests/8.4/smoke-tests.spec.d.ts +0 -1
  163. package/dist/tests/8.4/smoke-tests.spec.js +0 -174
  164. package/dist/tests/8.4/test-setup.spec.d.ts +0 -1
  165. package/dist/tests/8.4/test-setup.spec.js +0 -61
  166. package/dist/tests/8.4/web-modeler-user-flows.spec.d.ts +0 -1
  167. package/dist/tests/8.4/web-modeler-user-flows.spec.js +0 -611
  168. package/dist/tests/SM-8.4/connectors-user-flows.spec.d.ts +0 -1
  169. package/dist/tests/SM-8.4/connectors-user-flows.spec.js +0 -224
  170. package/dist/tests/SM-8.4/hto-user-flows.spec.d.ts +0 -1
  171. package/dist/tests/SM-8.4/hto-user-flows.spec.js +0 -308
  172. package/dist/tests/SM-8.4/mt-enabled-user-flows.spec.d.ts +0 -1
  173. package/dist/tests/SM-8.4/mt-enabled-user-flows.spec.js +0 -537
  174. package/dist/tests/SM-8.4/optimize-user-flows.spec.d.ts +0 -1
  175. package/dist/tests/SM-8.4/optimize-user-flows.spec.js +0 -182
  176. package/dist/tests/SM-8.4/rba-enabled-user-flows.spec.d.ts +0 -1
  177. package/dist/tests/SM-8.4/rba-enabled-user-flows.spec.js +0 -250
  178. package/dist/tests/SM-8.4/smoke-tests.spec.d.ts +0 -1
  179. package/dist/tests/SM-8.4/smoke-tests.spec.js +0 -148
  180. package/dist/tests/SM-8.4/test-setup.spec.d.ts +0 -1
  181. package/dist/tests/SM-8.4/test-setup.spec.js +0 -105
  182. package/dist/tests/SM-8.4/web-modeler-user-flows.spec.d.ts +0 -1
  183. package/dist/tests/SM-8.4/web-modeler-user-flows.spec.js +0 -125
@@ -1,139 +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
- constructor(page) {
24
- this.page = page;
25
- this.modelerPageBanner = page
26
- .locator('a')
27
- .filter({ hasText: 'Camunda logoModeler' });
28
- this.createNewProjectButton = page.getByRole('button', {
29
- name: 'New project',
30
- });
31
- this.projectNameInput = page.locator('[data-test="editable-input"]');
32
- this.chooseBpmnTemplateButton = page.getByRole('button', {
33
- name: 'Choose BPMN template',
34
- });
35
- this.diagramTypeDropdown = page.locator('[data-test="diagram-dropdown"]');
36
- this.bpmnTemplateOption = page
37
- .locator('[data-test="create-bpmn-diagram"]')
38
- .getByText('BPMN Diagram');
39
- this.formTemplateOption = page
40
- .locator('[data-test="create-form"]')
41
- .getByText('Form');
42
- this.projectBreadcrumb = page.locator('[data-test="breadcrumb-project"]');
43
- this.openOrganizationsButton = page.getByLabel('Open Organizations');
44
- this.manageButton = page.getByRole('button', { name: 'Manage' });
45
- this.crossComponentProjectFolder = page
46
- .getByTitle(this.defaultFolderName, {
47
- exact: true,
48
- })
49
- .first();
50
- this.homeBreadcrumb = page.locator('[data-test="breadcrumb-home"]');
51
- this.formNameInput = page.locator('[data-test="editable-input"]');
52
- this.rows = page.getByRole('row');
53
- }
54
- async clickCreateNewProjectButton() {
55
- await this.createNewProjectButton.click({ timeout: 60000 });
56
- }
57
- async enterNewProjectName(name) {
58
- await this.projectNameInput.click({ timeout: 60000 });
59
- await this.projectNameInput.fill(name);
60
- await this.projectNameInput.press('Enter');
61
- }
62
- async createCrossComponentProjectFolder() {
63
- await (0, sleep_1.sleep)(10000);
64
- if (await this.crossComponentProjectFolder.isVisible()) {
65
- console.log('Cross Component Project folder already exists. Clicking into it');
66
- await this.clickCrossComponentProjectFolder();
67
- return;
68
- }
69
- await this.clickCreateNewProjectButton();
70
- await this.enterNewProjectName(this.defaultFolderName);
71
- await (0, sleep_1.sleep)(5000);
72
- }
73
- async clickCrossComponentProjectFolder() {
74
- let attempts = 0;
75
- const maxAttempts = 3;
76
- const timeout = 60000;
77
- while (attempts < maxAttempts) {
78
- try {
79
- await (0, test_1.expect)(this.crossComponentProjectFolder).toBeVisible({ timeout });
80
- await this.crossComponentProjectFolder.click();
81
- return;
82
- }
83
- catch (error) {
84
- attempts++;
85
- if (attempts < maxAttempts) {
86
- console.log(`Attempt ${attempts} failed. Reloading page and retrying...`);
87
- await this.page.reload();
88
- await (0, sleep_1.sleep)(10000);
89
- }
90
- else {
91
- throw new Error('Failed to click crossComponentProjectFolder after 3 attempts.');
92
- }
93
- }
94
- }
95
- }
96
- async clickProcessDiagram(name) {
97
- const process = this.rows.filter({ hasText: name }).getByTitle(name).first();
98
- await (0, test_1.expect)(process).toBeVisible({ timeout: 90000 });
99
- await process.click();
100
- }
101
- async clickHomeBreadcrumb() {
102
- try {
103
- await this.homeBreadcrumb.click();
104
- }
105
- catch (error) {
106
- await this.page.getByText('Home', { exact: true }).first().click();
107
- }
108
- }
109
- async clickChooseBpmnTemplateButton() {
110
- await this.chooseBpmnTemplateButton.click();
111
- }
112
- async clickDiagramTypeDropdown() {
113
- await (0, test_1.expect)(this.diagramTypeDropdown).toBeVisible({
114
- timeout: 60000,
115
- });
116
- await this.diagramTypeDropdown.click();
117
- }
118
- async clickBpmnTemplateOption() {
119
- await this.bpmnTemplateOption.click();
120
- }
121
- async clickFormOption() {
122
- await this.formTemplateOption.click();
123
- }
124
- async enterFormName(name) {
125
- await this.formNameInput.click({ timeout: 60000 });
126
- await this.formNameInput.fill(name);
127
- await this.formNameInput.press('Enter');
128
- }
129
- async clickProjectBreadcrumb() {
130
- await this.projectBreadcrumb.click({ timeout: 60000 });
131
- }
132
- async clickOpenOrganizationsButton() {
133
- await this.openOrganizationsButton.click({ timeout: 30000 });
134
- }
135
- async clickManageButton() {
136
- await this.manageButton.click({ timeout: 30000 });
137
- }
138
- }
139
- exports.ModelerHomePage = ModelerHomePage;
@@ -1,26 +0,0 @@
1
- import { Locator, Page } from '@playwright/test';
2
- type GoToOptions = {
3
- username?: string;
4
- loginPassword?: string;
5
- sleepTimeout?: number;
6
- checkBanner?: boolean;
7
- };
8
- export declare class NavigationPage {
9
- private page;
10
- readonly modelerPageBanner: Locator;
11
- readonly operatePageBanner: Locator;
12
- readonly tasklistPageBanner: Locator;
13
- readonly optimizePageBanner: Locator;
14
- readonly identityPageBanner: Locator;
15
- readonly consolePageBanner: Locator;
16
- constructor(page: Page);
17
- private resolveBaseUrl;
18
- goTo(url: string, banner: Locator, { username, loginPassword, sleepTimeout, checkBanner, }?: GoToOptions, maxRetries?: number): Promise<void>;
19
- goToModeler(options?: GoToOptions): Promise<void>;
20
- goToTasklist(options?: GoToOptions): Promise<void>;
21
- goToOperate(options?: GoToOptions): Promise<void>;
22
- goToOptimize(options?: GoToOptions): Promise<void>;
23
- goToIdentity(options?: GoToOptions): Promise<void>;
24
- goToConsole(options?: GoToOptions): Promise<void>;
25
- }
26
- export {};
@@ -1,97 +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 randomSleep_1 = require("../../utils/randomSleep");
7
- const sleep_1 = require("../../utils/sleep");
8
- class NavigationPage {
9
- page;
10
- modelerPageBanner;
11
- operatePageBanner;
12
- tasklistPageBanner;
13
- optimizePageBanner;
14
- identityPageBanner;
15
- consolePageBanner;
16
- constructor(page) {
17
- this.page = page;
18
- this.operatePageBanner = page.getByRole('link', {
19
- name: 'Camunda logo Operate',
20
- });
21
- this.modelerPageBanner = page
22
- .locator('a')
23
- .filter({ hasText: 'Camunda logoModeler' });
24
- this.tasklistPageBanner = page.getByRole('link', {
25
- name: 'Camunda logo Tasklist',
26
- });
27
- this.optimizePageBanner = page.getByRole('link', {
28
- name: 'Camunda logo Optimize',
29
- });
30
- this.identityPageBanner = page.getByRole('link', {
31
- name: 'Camunda Identity',
32
- });
33
- this.consolePageBanner = page.getByRole('link', {
34
- name: 'Camunda logo Console',
35
- });
36
- }
37
- resolveBaseUrl() {
38
- if (typeof process.env.PLAYWRIGHT_BASE_URL === 'string') {
39
- return process.env.PLAYWRIGHT_BASE_URL;
40
- }
41
- if (process.env.MINOR_VERSION?.includes('SM')) {
42
- return ('https://gke-' + process.env.BASE_URL + '.ci.distro.ultrawombat.com');
43
- }
44
- throw new Error('Base URL environment variables are not properly set.');
45
- }
46
- async goTo(url, banner, { username = 'demo', loginPassword = process.env
47
- .DISTRO_QA_E2E_TESTS_IDENTITY_FIRSTUSER_PASSWORD, sleepTimeout, checkBanner = true, } = {}, maxRetries = 3) {
48
- const baseUrl = this.resolveBaseUrl();
49
- for (let attempt = 0; attempt < maxRetries; attempt++) {
50
- try {
51
- if (sleepTimeout) {
52
- await (0, sleep_1.sleep)(sleepTimeout);
53
- }
54
- const finalUrl = url.startsWith('http') ? url : `${baseUrl}${url}`;
55
- await this.page.context().clearCookies();
56
- await this.page.goto(finalUrl, { timeout: 60000 });
57
- await this.page.waitForLoadState('load').catch(() => { });
58
- const loginPage = new LoginPage_1.LoginPage(this.page);
59
- await loginPage.login(username, loginPassword);
60
- if (checkBanner) {
61
- await (0, test_1.expect)(banner).toBeVisible({ timeout: 120000 });
62
- }
63
- return;
64
- }
65
- catch (error) {
66
- if (attempt < maxRetries - 1) {
67
- await (0, randomSleep_1.randomSleep)(15000, 30000);
68
- if (!this.page.isClosed()) {
69
- await this.page.waitForLoadState('load').catch(() => { });
70
- }
71
- }
72
- else {
73
- throw new Error(`Login (${url}) failed after ${maxRetries} attempts: ${error}`);
74
- }
75
- }
76
- }
77
- }
78
- async goToModeler(options) {
79
- await this.goTo('/modeler', this.modelerPageBanner, options);
80
- }
81
- async goToTasklist(options) {
82
- await this.goTo('/tasklist', this.tasklistPageBanner, options);
83
- }
84
- async goToOperate(options) {
85
- await this.goTo('/operate', this.operatePageBanner, options);
86
- }
87
- async goToOptimize(options) {
88
- await this.goTo('/optimize', this.optimizePageBanner, options);
89
- }
90
- async goToIdentity(options) {
91
- await this.goTo('/identity', this.identityPageBanner, options);
92
- }
93
- async goToConsole(options) {
94
- await this.goTo('/', this.consolePageBanner, options);
95
- }
96
- }
97
- exports.NavigationPage = NavigationPage;
@@ -1,21 +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
- constructor(page: Page);
12
- clickProcessesTab(): Promise<void>;
13
- closeInformationDialog(): Promise<void>;
14
- clickEditVariableButton(variableName: string): Promise<void>;
15
- clickVariableValueInput(): Promise<void>;
16
- clearVariableValueInput(): Promise<void>;
17
- fillVariableValueInput(value: string): Promise<void>;
18
- clickSaveVariableButton(): Promise<void>;
19
- openProcess(processName: string): Promise<void>;
20
- }
21
- export { OperateHomePage };
@@ -1,63 +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
- constructor(page) {
15
- this.page = page;
16
- this.operateBanner = page.getByRole('link', { name: 'Camunda logo Operate' });
17
- this.processesTab = page.getByRole('link', { name: 'Processes' });
18
- this.informationDialog = page.getByRole('button', {
19
- name: 'Close this dialog',
20
- });
21
- this.editVariableButton = page.getByTestId('edit-variable-button');
22
- this.variableValueInput = page.getByTestId('edit-variable-value');
23
- this.saveVariableButton = page.getByLabel('Save variable');
24
- this.editVariableSpinner = page
25
- .getByTestId('variable-operation-spinner')
26
- .locator('circle')
27
- .nth(1);
28
- }
29
- async clickProcessesTab() {
30
- try {
31
- await (0, test_1.expect)(this.processesTab).toBeVisible({ timeout: 120000 });
32
- await this.processesTab.click({ timeout: 120000 });
33
- }
34
- catch {
35
- await this.page.reload();
36
- await (0, test_1.expect)(this.processesTab).toBeVisible({ timeout: 120000 });
37
- await this.processesTab.click({ timeout: 120000 });
38
- }
39
- }
40
- async closeInformationDialog() {
41
- await this.informationDialog.click();
42
- }
43
- async clickEditVariableButton(variableName) {
44
- const editVariableButton = 'Edit variable ' + variableName;
45
- await this.page.getByLabel(editVariableButton).click();
46
- }
47
- async clickVariableValueInput() {
48
- await this.variableValueInput.click();
49
- }
50
- async clearVariableValueInput() {
51
- await this.variableValueInput.clear();
52
- }
53
- async fillVariableValueInput(value) {
54
- await this.variableValueInput.fill(value);
55
- }
56
- async clickSaveVariableButton() {
57
- await this.saveVariableButton.click();
58
- }
59
- async openProcess(processName) {
60
- await this.page.getByText(processName).click();
61
- }
62
- }
63
- exports.OperateHomePage = OperateHomePage;
@@ -1,23 +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 taskActiveIcon: Locator;
9
- readonly processActiveCheckbox: Locator;
10
- readonly processCompletedCheckbox: Locator;
11
- readonly tenantComboBox: Locator;
12
- constructor(page: Page);
13
- connectorResultVariableName(name: string): Promise<Locator>;
14
- connectorResultVariableValue(variableName: string): Promise<Locator>;
15
- completedIconAssertion(): Promise<void>;
16
- activeIconAssertion(): Promise<void>;
17
- taskActiveIconAssertion(count: number): Promise<void>;
18
- tenantNameAssertion(name: string): Promise<void>;
19
- clickProcessActiveCheckbox(): Promise<void>;
20
- clickProcessCompletedCheckbox(): Promise<void>;
21
- selectTenant(tenantName: string): Promise<void>;
22
- }
23
- export { OperateProcessInstancePage };
@@ -1,105 +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
- taskActiveIcon;
13
- processActiveCheckbox;
14
- processCompletedCheckbox;
15
- tenantComboBox;
16
- constructor(page) {
17
- this.page = page;
18
- this.diagram = page.getByTestId('diagram');
19
- this.completedIcon = page
20
- .getByTestId('instance-header')
21
- .getByTestId('COMPLETED-icon');
22
- this.diagramSpinner = page.getByTestId('diagram-spinner');
23
- this.activeIcon = page
24
- .getByTestId('instance-header')
25
- .getByTestId('ACTIVE-icon');
26
- this.taskActiveIcon = page.getByTestId('state-overlay');
27
- this.processActiveCheckbox = page
28
- .locator('label')
29
- .filter({ hasText: 'Active' });
30
- this.processCompletedCheckbox = page
31
- .locator('label')
32
- .filter({ hasText: 'Completed' });
33
- this.tenantComboBox = page.getByRole('combobox', { name: 'Tenant' });
34
- }
35
- async connectorResultVariableName(name) {
36
- return this.page.getByTestId(name);
37
- }
38
- async connectorResultVariableValue(variableName) {
39
- return this.page.getByTestId(variableName).locator('td').last();
40
- }
41
- async completedIconAssertion() {
42
- for (let attempt = 1; attempt <= 5; attempt++) {
43
- try {
44
- await (0, test_1.expect)(this.completedIcon).toBeVisible({ timeout: 60000 });
45
- return;
46
- }
47
- catch (e) {
48
- if (attempt === 5) {
49
- throw e;
50
- }
51
- await this.page.reload();
52
- }
53
- }
54
- }
55
- async activeIconAssertion() {
56
- for (let attempt = 1; attempt <= 5; attempt++) {
57
- try {
58
- await (0, test_1.expect)(this.activeIcon).toBeVisible({ timeout: 60000 });
59
- return;
60
- }
61
- catch (e) {
62
- if (attempt === 5) {
63
- throw e;
64
- }
65
- await this.page.reload();
66
- }
67
- }
68
- }
69
- async taskActiveIconAssertion(count) {
70
- let retryCount = 0;
71
- const maxRetries = 3;
72
- while (retryCount < maxRetries) {
73
- try {
74
- await (0, test_1.expect)(await this.taskActiveIcon.count()).toEqual(count);
75
- return; // Exit the function if the expectation is met
76
- }
77
- catch (error) {
78
- // If the active icon is found, reload the page and try again
79
- retryCount++;
80
- console.log(`Attempt ${retryCount} failed. Retrying...`);
81
- await this.page.reload();
82
- await (0, sleep_1.sleep)(10000);
83
- }
84
- }
85
- throw new Error(`Active icon count is not matching after ${maxRetries} attempts.`);
86
- }
87
- async tenantNameAssertion(name) {
88
- await (0, test_1.expect)(this.page.getByRole('cell', { name: name, exact: true })).toBeVisible({ timeout: 60000 });
89
- }
90
- async clickProcessActiveCheckbox() {
91
- if (!(await this.processActiveCheckbox.isChecked({ timeout: 60000 }))) {
92
- await this.processActiveCheckbox.click({ timeout: 120000 });
93
- }
94
- }
95
- async clickProcessCompletedCheckbox() {
96
- if (!(await this.processCompletedCheckbox.isChecked({ timeout: 60000 }))) {
97
- await this.processCompletedCheckbox.click({ timeout: 120000 });
98
- }
99
- }
100
- async selectTenant(tenantName) {
101
- await this.tenantComboBox.click();
102
- await this.page.getByTestId('expanded-panel').getByText(tenantName).click();
103
- }
104
- }
105
- exports.OperateProcessInstancePage = OperateProcessInstancePage;
@@ -1,22 +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 tenantComboBox: Locator;
13
- constructor(page: Page);
14
- clickProcessActiveCheckbox(): Promise<void>;
15
- clickProcessCompletedCheckbox(): Promise<void>;
16
- clickProcessIncidentsCheckbox(): Promise<void>;
17
- clickRunningProcessInstancesCheckbox(): Promise<void>;
18
- clickFinishedProcessInstancesCheckbox(): Promise<void>;
19
- clickProcessInstanceLink(processName: string): Promise<void>;
20
- selectTenant(tenantName: string): Promise<void>;
21
- }
22
- export { OperateProcessesPage };
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperateProcessesPage = void 0;
4
- const test_1 = require("@playwright/test");
5
- const sleep_1 = require("../../utils/sleep");
6
- class OperateProcessesPage {
7
- page;
8
- processResultCount;
9
- processActiveCheckbox;
10
- processCompletedCheckbox;
11
- processRunningInstancesCheckbox;
12
- processIncidentsCheckbox;
13
- processPageHeading;
14
- noMatchingInstancesMessage;
15
- processFinishedInstancesCheckbox;
16
- tenantComboBox;
17
- constructor(page) {
18
- this.page = page;
19
- this.processResultCount = page.getByTestId('result-count');
20
- this.processActiveCheckbox = page
21
- .locator('label')
22
- .filter({ hasText: 'Active' });
23
- this.processCompletedCheckbox = page
24
- .locator('label')
25
- .filter({ hasText: 'Completed' });
26
- this.processRunningInstancesCheckbox = page
27
- .locator('label')
28
- .filter({ hasText: 'Running Instances' });
29
- this.processIncidentsCheckbox = page
30
- .locator('label')
31
- .filter({ hasText: 'Incidents' });
32
- this.processPageHeading = page
33
- .getByTestId('expanded-panel')
34
- .getByRole('heading', { name: 'Process' });
35
- this.noMatchingInstancesMessage = page.getByText('There are no Instances matching this filter set');
36
- this.processFinishedInstancesCheckbox = page
37
- .getByTestId('filter-finished-instances')
38
- .getByRole('checkbox');
39
- this.tenantComboBox = page.getByRole('combobox', { name: 'Tenant' });
40
- }
41
- async clickProcessActiveCheckbox() {
42
- await this.processActiveCheckbox.click();
43
- }
44
- async clickProcessCompletedCheckbox() {
45
- if (!(await this.processCompletedCheckbox.isChecked({ timeout: 60000 }))) {
46
- await this.processCompletedCheckbox.click({ timeout: 120000 });
47
- }
48
- }
49
- async clickProcessIncidentsCheckbox() {
50
- await this.processIncidentsCheckbox.click({ timeout: 90000 });
51
- }
52
- async clickRunningProcessInstancesCheckbox() {
53
- await this.processRunningInstancesCheckbox.click({ timeout: 90000 });
54
- }
55
- async clickFinishedProcessInstancesCheckbox() {
56
- await this.processFinishedInstancesCheckbox.click({ timeout: 90000 });
57
- }
58
- async clickProcessInstanceLink(processName) {
59
- let retryCount = 0;
60
- const maxRetries = 10;
61
- while (retryCount < maxRetries) {
62
- try {
63
- const process = this.page
64
- .locator(`td:right-of(:text("${processName}"))`)
65
- .first();
66
- await (0, test_1.expect)(process).toBeVisible({ timeout: 60000 });
67
- await process.click({ timeout: 60000 });
68
- await (0, test_1.expect)(this.page.getByText('Instance History').first()).toBeVisible({ timeout: 30000 });
69
- return;
70
- }
71
- catch (error) {
72
- retryCount++;
73
- console.log(`Attempt ${retryCount} failed.`);
74
- console.log('Ensuring Active checkbox is checked...');
75
- await this.clickProcessActiveCheckbox();
76
- console.log('Ensuring Completed checkbox is checked...');
77
- await this.clickProcessCompletedCheckbox();
78
- console.log('Reloading page and retrying...');
79
- await this.page.reload();
80
- await (0, sleep_1.sleep)(60000);
81
- }
82
- }
83
- throw new Error(`Failed to click on process instance link after ${maxRetries} attempts.`);
84
- }
85
- async selectTenant(tenantName) {
86
- await this.tenantComboBox.click();
87
- await this.page.getByText(tenantName).click();
88
- }
89
- }
90
- exports.OperateProcessesPage = OperateProcessesPage;
@@ -1,15 +0,0 @@
1
- import { Page, Locator } from '@playwright/test';
2
- declare class OptimizeCollectionsPage {
3
- private page;
4
- readonly collectionsPageHeader: Locator;
5
- readonly createNewButton: Locator;
6
- readonly reportOption: Locator;
7
- readonly modalCloseButton: Locator;
8
- readonly processReport: Locator;
9
- readonly collectionsLink: Locator;
10
- constructor(page: Page);
11
- clickCreateNewButton(): Promise<void>;
12
- clickReportOption(): Promise<void>;
13
- clickMostRecentProcessReport(reportName: string): Promise<void>;
14
- }
15
- export { OptimizeCollectionsPage };
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OptimizeCollectionsPage = void 0;
4
- class OptimizeCollectionsPage {
5
- page;
6
- collectionsPageHeader;
7
- createNewButton;
8
- reportOption;
9
- modalCloseButton;
10
- processReport;
11
- collectionsLink;
12
- constructor(page) {
13
- this.page = page;
14
- this.collectionsPageHeader = page.getByRole('heading', {
15
- name: 'Collections, Dashboards, and Reports',
16
- });
17
- this.createNewButton = page.getByRole('button', {
18
- name: 'Create new',
19
- exact: true,
20
- });
21
- this.reportOption = page.getByText('Report', { exact: true });
22
- this.modalCloseButton = page.getByText('Close', { exact: true });
23
- this.processReport = page.getByText('Process Report').first();
24
- this.collectionsLink = page.getByRole('link', { name: 'Collections' });
25
- }
26
- async clickCreateNewButton() {
27
- try {
28
- await this.modalCloseButton.click({ timeout: 60000 });
29
- await this.collectionsLink.click({ timeout: 60000 });
30
- await this.createNewButton.click({ timeout: 90000 });
31
- }
32
- catch (error) {
33
- await this.collectionsLink.click({ timeout: 60000 });
34
- await this.createNewButton.click({ timeout: 90000 });
35
- }
36
- }
37
- async clickReportOption() {
38
- await this.reportOption.click();
39
- }
40
- async clickMostRecentProcessReport(reportName) {
41
- try {
42
- await this.page.getByText(reportName).click({ timeout: 120000 });
43
- }
44
- catch {
45
- await this.collectionsLink.click({ timeout: 60000 });
46
- await this.page.getByText(reportName).click({ timeout: 120000 });
47
- }
48
- }
49
- }
50
- exports.OptimizeCollectionsPage = OptimizeCollectionsPage;
@@ -1,15 +0,0 @@
1
- import { Page, Locator } from '@playwright/test';
2
- declare class OptimizeDashboardPage {
3
- private page;
4
- readonly filterTable: Locator;
5
- readonly filterTableSearch: Locator;
6
- constructor(page: Page);
7
- clickFilterTable(): Promise<void>;
8
- fillFilterTable(processName: string): Promise<void>;
9
- processOwnerNameAssertion(processName: string): Promise<void>;
10
- processAssertion(processName: string, { timeout, not }?: {
11
- timeout?: number;
12
- not?: boolean;
13
- }): Promise<void>;
14
- }
15
- export { OptimizeDashboardPage };