@camunda/e2e-test-suite 0.0.811 → 0.0.812

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.
@@ -4,14 +4,27 @@ declare class OptimizeCollectionsPage {
4
4
  readonly collectionsPageHeader: Locator;
5
5
  readonly createNewButton: Locator;
6
6
  readonly reportOption: Locator;
7
+ readonly collectionOption: Locator;
7
8
  readonly modalCloseButton: Locator;
8
9
  readonly processReport: Locator;
9
10
  readonly collectionsLink: Locator;
11
+ readonly collectionNameInput: Locator;
12
+ readonly createCollectionConfirmButton: Locator;
13
+ readonly collectionContextMenuButton: Locator;
14
+ readonly editContextMenuOption: Locator;
15
+ readonly deleteContextMenuOption: Locator;
16
+ readonly confirmDeleteButton: Locator;
10
17
  constructor(page: Page);
11
18
  clickCollectionsLink(): Promise<void>;
12
19
  clickCreateNewButton(): Promise<void>;
13
20
  clickCreateNewButtonWithRetry(): Promise<void>;
14
21
  clickReportOption(): Promise<void>;
15
22
  clickMostRecentProcessReport(reportName: string): Promise<void>;
23
+ createCollection(name: string): Promise<void>;
24
+ finalizeCollectionCreationIfNeeded(): Promise<void>;
25
+ assertCollectionVisible(name: string): Promise<void>;
26
+ renameCollection(newName: string): Promise<void>;
27
+ deleteCollection(): Promise<void>;
28
+ assertCollectionNotVisible(name: string): Promise<void>;
16
29
  }
17
30
  export { OptimizeCollectionsPage };
@@ -8,9 +8,16 @@ class OptimizeCollectionsPage {
8
8
  collectionsPageHeader;
9
9
  createNewButton;
10
10
  reportOption;
11
+ collectionOption;
11
12
  modalCloseButton;
12
13
  processReport;
13
14
  collectionsLink;
15
+ collectionNameInput;
16
+ createCollectionConfirmButton;
17
+ collectionContextMenuButton;
18
+ editContextMenuOption;
19
+ deleteContextMenuOption;
20
+ confirmDeleteButton;
14
21
  constructor(page) {
15
22
  this.page = page;
16
23
  this.collectionsPageHeader = page.getByRole('heading', {
@@ -21,11 +28,48 @@ class OptimizeCollectionsPage {
21
28
  exact: true,
22
29
  });
23
30
  this.reportOption = page.getByText('Report', { exact: true });
31
+ this.collectionOption = page
32
+ .getByRole('menuitem', { name: 'Collection', exact: true })
33
+ .or(page.getByRole('button', { name: 'Collection', exact: true }));
24
34
  this.modalCloseButton = page.locator('button').filter({ hasText: /^Close$/ });
25
35
  this.processReport = page.getByText('Process Report').first();
26
36
  this.collectionsLink = page
27
37
  .getByRole('banner')
28
38
  .getByRole('link', { name: 'Collections' });
39
+ this.collectionNameInput = page
40
+ .getByRole('dialog')
41
+ .getByRole('textbox')
42
+ .first();
43
+ this.createCollectionConfirmButton = page
44
+ .getByRole('dialog')
45
+ .getByRole('button', { name: /add data sources|create collection|save/i })
46
+ .or(page.locator('.cds--modal button.confirm.cds--btn--primary'))
47
+ .first();
48
+ this.collectionContextMenuButton = page
49
+ .locator('button.cds--overflow-menu')
50
+ .or(page.getByRole('button', {
51
+ name: /options|context menu|open menu|more|actions/i,
52
+ }))
53
+ .first();
54
+ this.editContextMenuOption = page
55
+ .getByRole('menuitem', { name: /edit/i })
56
+ .or(page.getByRole('button', { name: /edit/i }))
57
+ .or(page.locator('button.cds--overflow-menu-options__btn', {
58
+ hasText: /edit/i,
59
+ }))
60
+ .first();
61
+ this.deleteContextMenuOption = page
62
+ .getByRole('menuitem', { name: /delete/i })
63
+ .or(page.getByRole('button', { name: /delete/i }))
64
+ .or(page.locator('button.cds--overflow-menu-options__btn', {
65
+ hasText: /delete/i,
66
+ }))
67
+ .first();
68
+ this.confirmDeleteButton = page
69
+ .locator('.cds--modal button.confirm')
70
+ .or(page.locator('.Deleter button.confirm'))
71
+ .or(page.getByRole('dialog').getByRole('button', { name: /delete/i }))
72
+ .first();
29
73
  }
30
74
  async clickCollectionsLink() {
31
75
  await (0, test_1.expect)(this.collectionsLink).toBeVisible({ timeout: 60000 });
@@ -64,5 +108,66 @@ class OptimizeCollectionsPage {
64
108
  async clickMostRecentProcessReport(reportName) {
65
109
  await this.page.getByText(reportName).click({ timeout: 60000 });
66
110
  }
111
+ async createCollection(name) {
112
+ await this.clickCreateNewButton();
113
+ await (0, test_1.expect)(this.collectionOption).toBeVisible({ timeout: 30000 });
114
+ await this.collectionOption.click({ timeout: 30000 });
115
+ await (0, test_1.expect)(this.collectionNameInput).toBeVisible({ timeout: 30000 });
116
+ await this.collectionNameInput.click();
117
+ await this.collectionNameInput.fill(name);
118
+ await (0, test_1.expect)(this.createCollectionConfirmButton).toBeVisible({
119
+ timeout: 30000,
120
+ });
121
+ await this.createCollectionConfirmButton.click({ timeout: 30000 });
122
+ await this.finalizeCollectionCreationIfNeeded();
123
+ }
124
+ async finalizeCollectionCreationIfNeeded() {
125
+ const addSourceModal = this.page.getByRole('dialog', {
126
+ name: /add source/i,
127
+ });
128
+ if (await addSourceModal.isVisible({ timeout: 15000 }).catch(() => false)) {
129
+ const createCollectionButton = addSourceModal.getByRole('button', {
130
+ name: /^create collection$/i,
131
+ });
132
+ await (0, test_1.expect)(createCollectionButton).toBeVisible({ timeout: 30000 });
133
+ await createCollectionButton.click({ timeout: 30000 });
134
+ }
135
+ }
136
+ async assertCollectionVisible(name) {
137
+ await (0, test_1.expect)(this.page
138
+ .getByRole('heading', { name })
139
+ .or(this.page.getByText(name))
140
+ .first()).toBeVisible({ timeout: 60000 });
141
+ }
142
+ async renameCollection(newName) {
143
+ await (0, test_1.expect)(this.collectionContextMenuButton).toBeVisible({
144
+ timeout: 30000,
145
+ });
146
+ await this.collectionContextMenuButton.click({ timeout: 30000 });
147
+ await (0, test_1.expect)(this.editContextMenuOption).toBeVisible({ timeout: 30000 });
148
+ await this.editContextMenuOption.click({ timeout: 30000 });
149
+ await (0, test_1.expect)(this.collectionNameInput).toBeVisible({ timeout: 30000 });
150
+ await this.collectionNameInput.click();
151
+ await this.collectionNameInput.fill(newName);
152
+ await (0, test_1.expect)(this.createCollectionConfirmButton).toBeVisible({
153
+ timeout: 30000,
154
+ });
155
+ await this.createCollectionConfirmButton.click({ timeout: 30000 });
156
+ }
157
+ async deleteCollection() {
158
+ await (0, test_1.expect)(this.collectionContextMenuButton).toBeVisible({
159
+ timeout: 30000,
160
+ });
161
+ await this.collectionContextMenuButton.click({ timeout: 30000 });
162
+ await (0, test_1.expect)(this.deleteContextMenuOption).toBeVisible({ timeout: 30000 });
163
+ await this.deleteContextMenuOption.click({ timeout: 30000 });
164
+ await (0, test_1.expect)(this.confirmDeleteButton).toBeVisible({ timeout: 30000 });
165
+ await this.confirmDeleteButton.click({ timeout: 30000 });
166
+ }
167
+ async assertCollectionNotVisible(name) {
168
+ await (0, test_1.expect)(this.page.getByText(name).first()).toBeHidden({
169
+ timeout: 60000,
170
+ });
171
+ }
67
172
  }
68
173
  exports.OptimizeCollectionsPage = OptimizeCollectionsPage;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_1 = require("@playwright/test");
4
+ const _8_10_1 = require("../../fixtures/8.10");
5
+ const _setup_1 = require("../../test-setup.js");
6
+ const UtilitiesPage_1 = require("../../pages/8.10/UtilitiesPage");
7
+ const users_1 = require("../../utils/users");
8
+ const testUser = (0, users_1.getTestUser)('twentySecondUser');
9
+ const clusterName = 'Test Cluster';
10
+ _8_10_1.test.describe.configure({ mode: 'parallel' });
11
+ _8_10_1.test.describe('Optimize Collections Lifecycle UI Tests @optimize-collections-ui @8.10', () => {
12
+ _8_10_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
13
+ await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
14
+ });
15
+ _8_10_1.test.afterEach(async ({ page }, testInfo) => {
16
+ await (0, _setup_1.captureScreenshot)(page, testInfo);
17
+ await (0, _setup_1.captureFailureVideo)(page, testInfo);
18
+ });
19
+ (0, _8_10_1.test)('Create, rename and delete a collection', async ({ appsPage, optimizeHomePage, optimizeCollectionsPage, }) => {
20
+ _8_10_1.test.slow();
21
+ const collectionName = 'E2E Collection ' + (await (0, _setup_1.generateRandomStringAsync)(5));
22
+ const renamedCollectionName = 'E2E Collection Renamed ' + (await (0, _setup_1.generateRandomStringAsync)(5));
23
+ await _8_10_1.test.step('Navigate to Optimize from the Camunda apps menu', async () => {
24
+ await appsPage.clickCamundaApps();
25
+ await appsPage.clickOptimize(clusterName);
26
+ await test_1.expect
27
+ .poll(async () => optimizeHomePage.optimizeBanner.isVisible({ timeout: 5000 }), { timeout: 120000 })
28
+ .toBe(true);
29
+ });
30
+ await _8_10_1.test.step('Open the Collections page', async () => {
31
+ await optimizeHomePage.clickCollectionsLink();
32
+ });
33
+ await _8_10_1.test.step('Create a new collection and verify it is created', async () => {
34
+ await optimizeCollectionsPage.createCollection(collectionName);
35
+ await optimizeCollectionsPage.assertCollectionVisible(collectionName);
36
+ });
37
+ await _8_10_1.test.step('Rename the collection and verify the new name', async () => {
38
+ await optimizeCollectionsPage.renameCollection(renamedCollectionName);
39
+ await optimizeCollectionsPage.assertCollectionVisible(renamedCollectionName);
40
+ });
41
+ await _8_10_1.test.step('Delete the collection and verify it is removed', async () => {
42
+ await optimizeCollectionsPage.deleteCollection();
43
+ await optimizeCollectionsPage.assertCollectionNotVisible(renamedCollectionName);
44
+ });
45
+ });
46
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.811",
3
+ "version": "0.0.812",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",