@camunda/e2e-test-suite 0.0.807 → 0.0.809
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.
- package/dist/fixtures/8.10.d.ts +2 -0
- package/dist/fixtures/8.10.js +4 -0
- package/dist/pages/8.10/DataFiltersPage.d.ts +30 -0
- package/dist/pages/8.10/DataFiltersPage.js +135 -0
- package/dist/tests/8.10/optimize-data-filters-ui.spec.d.ts +1 -0
- package/dist/tests/8.10/optimize-data-filters-ui.spec.js +299 -0
- package/dist/tests/SM-8.8/hto-user-flows.spec.js +1 -2
- package/package.json +1 -1
package/dist/fixtures/8.10.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ import { OCIdentityAuthorizationsPage } from '../pages/8.10/OCIdentityAuthorizat
|
|
|
35
35
|
import { OCIdentityClusterVariablesPage } from '../pages/8.10/OCIdentityClusterVariablesPage';
|
|
36
36
|
import { ClientCredentialsDetailsPage } from '../pages/8.10/ClientCredentialsDetailsPage';
|
|
37
37
|
import { AuditLogPage } from '../pages/8.10/AuditLogPage';
|
|
38
|
+
import { DataFiltersPage } from '../pages/8.10/DataFiltersPage';
|
|
38
39
|
type PlaywrightFixtures = {
|
|
39
40
|
makeAxeBuilder: () => AxeBuilder;
|
|
40
41
|
loginPage: LoginPage;
|
|
@@ -73,6 +74,7 @@ type PlaywrightFixtures = {
|
|
|
73
74
|
ocIdentityClusterVariablesPage: OCIdentityClusterVariablesPage;
|
|
74
75
|
clientCredentialsDetailsPage: ClientCredentialsDetailsPage;
|
|
75
76
|
auditLogPage: AuditLogPage;
|
|
77
|
+
dataFiltersPage: DataFiltersPage;
|
|
76
78
|
overrideTrackingScripts: void;
|
|
77
79
|
};
|
|
78
80
|
declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & PlaywrightFixtures, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
|
package/dist/fixtures/8.10.js
CHANGED
|
@@ -42,6 +42,7 @@ const OCIdentityAuthorizationsPage_1 = require("../pages/8.10/OCIdentityAuthoriz
|
|
|
42
42
|
const OCIdentityClusterVariablesPage_1 = require("../pages/8.10/OCIdentityClusterVariablesPage");
|
|
43
43
|
const ClientCredentialsDetailsPage_1 = require("../pages/8.10/ClientCredentialsDetailsPage");
|
|
44
44
|
const AuditLogPage_1 = require("../pages/8.10/AuditLogPage");
|
|
45
|
+
const DataFiltersPage_1 = require("../pages/8.10/DataFiltersPage");
|
|
45
46
|
const test = test_1.test.extend({
|
|
46
47
|
makeAxeBuilder: async ({ page }, use) => {
|
|
47
48
|
const makeAxeBuilder = () => new playwright_1.default({ page }).withTags([
|
|
@@ -162,6 +163,9 @@ const test = test_1.test.extend({
|
|
|
162
163
|
auditLogPage: async ({ page }, use) => {
|
|
163
164
|
await use(new AuditLogPage_1.AuditLogPage(page));
|
|
164
165
|
},
|
|
166
|
+
dataFiltersPage: async ({ page }, use) => {
|
|
167
|
+
await use(new DataFiltersPage_1.DataFiltersPage(page));
|
|
168
|
+
},
|
|
165
169
|
overrideTrackingScripts: [
|
|
166
170
|
async ({ context }, use) => {
|
|
167
171
|
await context.route('https://cmp.osano.com/16CVvwSNKHi9t1grQ/9403708a-488b-4f3b-aea6-613825dec79f/osano.js', (route) => route.fulfill({
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Page, Locator } from '@playwright/test';
|
|
2
|
+
declare class DataFiltersPage {
|
|
3
|
+
private page;
|
|
4
|
+
readonly dataFiltersSection: Locator;
|
|
5
|
+
readonly dataFiltersHeading: Locator;
|
|
6
|
+
readonly variableFilterToggle: Locator;
|
|
7
|
+
readonly includeVariableNamesInput: Locator;
|
|
8
|
+
readonly excludeVariableNamesInput: Locator;
|
|
9
|
+
readonly includeProcessDefinitionsInput: Locator;
|
|
10
|
+
readonly excludeProcessDefinitionsInput: Locator;
|
|
11
|
+
readonly saveButton: Locator;
|
|
12
|
+
readonly rollingRestartNotice: Locator;
|
|
13
|
+
readonly validationError: Locator;
|
|
14
|
+
readonly confirmSaveButton: Locator;
|
|
15
|
+
constructor(page: Page);
|
|
16
|
+
assertDataFiltersSectionVisible(): Promise<void>;
|
|
17
|
+
enableVariableFilter(): Promise<void>;
|
|
18
|
+
disableVariableFilter(): Promise<void>;
|
|
19
|
+
addIncludeVariableName(value: string): Promise<void>;
|
|
20
|
+
addExcludeVariableName(value: string): Promise<void>;
|
|
21
|
+
addIncludeProcessDefinition(value: string): Promise<void>;
|
|
22
|
+
addExcludeProcessDefinition(value: string): Promise<void>;
|
|
23
|
+
save(): Promise<void>;
|
|
24
|
+
assertRollingRestartNotice(): Promise<void>;
|
|
25
|
+
assertValidationError(): Promise<void>;
|
|
26
|
+
assertChipVisible(value: string): Promise<void>;
|
|
27
|
+
removeChip(value: string): Promise<void>;
|
|
28
|
+
assertControlsDisabled(): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export { DataFiltersPage };
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataFiltersPage = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
class DataFiltersPage {
|
|
6
|
+
page;
|
|
7
|
+
dataFiltersSection;
|
|
8
|
+
dataFiltersHeading;
|
|
9
|
+
variableFilterToggle;
|
|
10
|
+
includeVariableNamesInput;
|
|
11
|
+
excludeVariableNamesInput;
|
|
12
|
+
includeProcessDefinitionsInput;
|
|
13
|
+
excludeProcessDefinitionsInput;
|
|
14
|
+
saveButton;
|
|
15
|
+
rollingRestartNotice;
|
|
16
|
+
validationError;
|
|
17
|
+
confirmSaveButton;
|
|
18
|
+
constructor(page) {
|
|
19
|
+
this.page = page;
|
|
20
|
+
this.dataFiltersHeading = page
|
|
21
|
+
.getByRole('heading', { name: /data filters/i })
|
|
22
|
+
.or(page.getByText(/data filters/i))
|
|
23
|
+
.first();
|
|
24
|
+
this.dataFiltersSection = page
|
|
25
|
+
.getByRole('region', { name: /data filters/i })
|
|
26
|
+
.or(page
|
|
27
|
+
.locator('section, div')
|
|
28
|
+
.filter({ has: page.getByText(/data filters/i) }))
|
|
29
|
+
.first();
|
|
30
|
+
this.variableFilterToggle = page
|
|
31
|
+
.getByRole('switch', { name: /variable filter/i })
|
|
32
|
+
.or(page.locator('.cds--toggle').filter({ hasText: /variable filter/i }))
|
|
33
|
+
.first();
|
|
34
|
+
this.includeVariableNamesInput = page
|
|
35
|
+
.getByRole('textbox', { name: /include variable names/i })
|
|
36
|
+
.or(page.getByLabel(/include variable names/i))
|
|
37
|
+
.first();
|
|
38
|
+
this.excludeVariableNamesInput = page
|
|
39
|
+
.getByRole('textbox', { name: /exclude variable names/i })
|
|
40
|
+
.or(page.getByLabel(/exclude variable names/i))
|
|
41
|
+
.first();
|
|
42
|
+
this.includeProcessDefinitionsInput = page
|
|
43
|
+
.getByRole('textbox', { name: /include process definitions/i })
|
|
44
|
+
.or(page.getByLabel(/include process definitions/i))
|
|
45
|
+
.first();
|
|
46
|
+
this.excludeProcessDefinitionsInput = page
|
|
47
|
+
.getByRole('textbox', { name: /exclude process definitions/i })
|
|
48
|
+
.or(page.getByLabel(/exclude process definitions/i))
|
|
49
|
+
.first();
|
|
50
|
+
this.saveButton = page
|
|
51
|
+
.getByRole('button', { name: /^save/i })
|
|
52
|
+
.or(page.locator('button.cds--btn--primary').filter({ hasText: /save/i }))
|
|
53
|
+
.first();
|
|
54
|
+
this.confirmSaveButton = page
|
|
55
|
+
.getByRole('dialog')
|
|
56
|
+
.getByRole('button', { name: /save|confirm|continue/i })
|
|
57
|
+
.first();
|
|
58
|
+
this.rollingRestartNotice = page.getByText(/rolling restart/i).first();
|
|
59
|
+
this.validationError = page
|
|
60
|
+
.locator('.cds--form-requirement, [role="alert"]')
|
|
61
|
+
.or(page.getByText(/invalid|required|cannot be empty|maximum length/i))
|
|
62
|
+
.first();
|
|
63
|
+
}
|
|
64
|
+
async assertDataFiltersSectionVisible() {
|
|
65
|
+
await (0, test_1.expect)(this.dataFiltersHeading).toBeVisible({ timeout: 60000 });
|
|
66
|
+
}
|
|
67
|
+
async enableVariableFilter() {
|
|
68
|
+
if (await this.variableFilterToggle.isVisible({ timeout: 30000 })) {
|
|
69
|
+
const checked = await this.variableFilterToggle
|
|
70
|
+
.getAttribute('aria-checked')
|
|
71
|
+
.catch(() => null);
|
|
72
|
+
if (checked !== 'true') {
|
|
73
|
+
await this.variableFilterToggle.click({ timeout: 30000 });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async disableVariableFilter() {
|
|
78
|
+
if (await this.variableFilterToggle.isVisible({ timeout: 30000 })) {
|
|
79
|
+
const checked = await this.variableFilterToggle
|
|
80
|
+
.getAttribute('aria-checked')
|
|
81
|
+
.catch(() => null);
|
|
82
|
+
if (checked === 'true') {
|
|
83
|
+
await this.variableFilterToggle.click({ timeout: 30000 });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async addIncludeVariableName(value) {
|
|
88
|
+
await this.includeVariableNamesInput.fill(value, { timeout: 30000 });
|
|
89
|
+
await this.includeVariableNamesInput.press('Enter');
|
|
90
|
+
}
|
|
91
|
+
async addExcludeVariableName(value) {
|
|
92
|
+
await this.excludeVariableNamesInput.fill(value, { timeout: 30000 });
|
|
93
|
+
await this.excludeVariableNamesInput.press('Enter');
|
|
94
|
+
}
|
|
95
|
+
async addIncludeProcessDefinition(value) {
|
|
96
|
+
await this.includeProcessDefinitionsInput.fill(value, { timeout: 30000 });
|
|
97
|
+
await this.includeProcessDefinitionsInput.press('Enter');
|
|
98
|
+
}
|
|
99
|
+
async addExcludeProcessDefinition(value) {
|
|
100
|
+
await this.excludeProcessDefinitionsInput.fill(value, { timeout: 30000 });
|
|
101
|
+
await this.excludeProcessDefinitionsInput.press('Enter');
|
|
102
|
+
}
|
|
103
|
+
async save() {
|
|
104
|
+
await this.saveButton.click({ timeout: 30000 });
|
|
105
|
+
if (await this.confirmSaveButton
|
|
106
|
+
.isVisible({ timeout: 10000 })
|
|
107
|
+
.catch(() => false)) {
|
|
108
|
+
await this.confirmSaveButton.click({ timeout: 30000 });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async assertRollingRestartNotice() {
|
|
112
|
+
await (0, test_1.expect)(this.rollingRestartNotice).toBeVisible({ timeout: 30000 });
|
|
113
|
+
}
|
|
114
|
+
async assertValidationError() {
|
|
115
|
+
await (0, test_1.expect)(this.validationError).toBeVisible({ timeout: 30000 });
|
|
116
|
+
}
|
|
117
|
+
async assertChipVisible(value) {
|
|
118
|
+
await (0, test_1.expect)(this.page.getByText(value, { exact: false }).first()).toBeVisible({ timeout: 30000 });
|
|
119
|
+
}
|
|
120
|
+
async removeChip(value) {
|
|
121
|
+
const chip = this.page
|
|
122
|
+
.locator('.cds--tag, [class*="chip"], [class*="tag"]')
|
|
123
|
+
.filter({ hasText: value })
|
|
124
|
+
.first();
|
|
125
|
+
const removeButton = chip
|
|
126
|
+
.getByRole('button')
|
|
127
|
+
.or(chip.locator('button, [aria-label*="remove" i], [aria-label*="clear" i]'))
|
|
128
|
+
.first();
|
|
129
|
+
await removeButton.click({ timeout: 30000 });
|
|
130
|
+
}
|
|
131
|
+
async assertControlsDisabled() {
|
|
132
|
+
await (0, test_1.expect)(this.saveButton).toBeDisabled({ timeout: 30000 });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.DataFiltersPage = DataFiltersPage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,299 @@
|
|
|
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 LoginPage_1 = require("../../pages/8.10/LoginPage");
|
|
8
|
+
const HomePage_1 = require("../../pages/8.10/HomePage");
|
|
9
|
+
const ClusterPage_1 = require("../../pages/8.10/ClusterPage");
|
|
10
|
+
const ClusterDetailsPage_1 = require("../../pages/8.10/ClusterDetailsPage");
|
|
11
|
+
const DataFiltersPage_1 = require("../../pages/8.10/DataFiltersPage");
|
|
12
|
+
const users_1 = require("../../utils/users");
|
|
13
|
+
const testUser = (0, users_1.getTestUser)('twentyFourthUser');
|
|
14
|
+
const readOnlyUser = (0, users_1.getTestUser)('twentyFifthUser');
|
|
15
|
+
const clusterName = 'Test Cluster';
|
|
16
|
+
let dataFiltersAvailable = false;
|
|
17
|
+
const skipIfUnavailable = () => {
|
|
18
|
+
_8_10_1.test.skip(!dataFiltersAvailable, 'Data Filters section is not available on this cluster (feature not yet enabled)');
|
|
19
|
+
};
|
|
20
|
+
_8_10_1.test.describe.configure({ mode: 'serial' });
|
|
21
|
+
_8_10_1.test.describe('Optimize Data Filters UI @tasklistV2', () => {
|
|
22
|
+
_8_10_1.test.slow();
|
|
23
|
+
_8_10_1.test.beforeAll(async ({ browser }) => {
|
|
24
|
+
const context = await browser.newContext();
|
|
25
|
+
const page = await context.newPage();
|
|
26
|
+
try {
|
|
27
|
+
const loginPage = new LoginPage_1.LoginPage(page);
|
|
28
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, 1000);
|
|
29
|
+
const homePage = new HomePage_1.HomePage(page);
|
|
30
|
+
const clusterPage = new ClusterPage_1.ClusterPage(page);
|
|
31
|
+
const clusterDetailsPage = new ClusterDetailsPage_1.ClusterDetailsPage(page);
|
|
32
|
+
const dataFiltersPage = new DataFiltersPage_1.DataFiltersPage(page);
|
|
33
|
+
await homePage.clickClusters();
|
|
34
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
35
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
36
|
+
dataFiltersAvailable = await dataFiltersPage.dataFiltersHeading
|
|
37
|
+
.isVisible({ timeout: 20000 })
|
|
38
|
+
.catch(() => false);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
dataFiltersAvailable = false;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
await context.close();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
_8_10_1.test.afterEach(async ({ page }, testInfo) => {
|
|
48
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
49
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
50
|
+
});
|
|
51
|
+
_8_10_1.test.describe('Authorized operator', () => {
|
|
52
|
+
_8_10_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
53
|
+
skipIfUnavailable();
|
|
54
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
55
|
+
});
|
|
56
|
+
(0, _8_10_1.test)('T11728018 view the Data Filters section', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
57
|
+
await _8_10_1.test.step('Open cluster settings and assert Data Filters section', async () => {
|
|
58
|
+
await homePage.clickClusters();
|
|
59
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
60
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
61
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
(0, _8_10_1.test)('T11728020 enable and set a variable filter pattern', async ({ page, homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
65
|
+
const pattern = 'business_*';
|
|
66
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
67
|
+
await homePage.clickClusters();
|
|
68
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
69
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
70
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
71
|
+
});
|
|
72
|
+
await _8_10_1.test.step('Enable the variable filter and add a pattern', async () => {
|
|
73
|
+
await dataFiltersPage.enableVariableFilter();
|
|
74
|
+
await dataFiltersPage.addIncludeVariableName(pattern);
|
|
75
|
+
await dataFiltersPage.assertChipVisible(pattern);
|
|
76
|
+
});
|
|
77
|
+
await _8_10_1.test.step('Save and verify persistence', async () => {
|
|
78
|
+
await dataFiltersPage.save();
|
|
79
|
+
await page.reload({ waitUntil: 'domcontentloaded' });
|
|
80
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
81
|
+
await dataFiltersPage.assertChipVisible(pattern);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
(0, _8_10_1.test)('T11728021 modify an existing variable filter pattern', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
85
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
86
|
+
await homePage.clickClusters();
|
|
87
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
88
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
89
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
90
|
+
});
|
|
91
|
+
await _8_10_1.test.step('Add an updated pattern and save', async () => {
|
|
92
|
+
await dataFiltersPage.enableVariableFilter();
|
|
93
|
+
await dataFiltersPage.addIncludeVariableName('business_updated_*');
|
|
94
|
+
await dataFiltersPage.assertChipVisible('business_updated_*');
|
|
95
|
+
await dataFiltersPage.save();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
(0, _8_10_1.test)('T11728022 disable the variable filter', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
99
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
100
|
+
await homePage.clickClusters();
|
|
101
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
102
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
103
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
104
|
+
});
|
|
105
|
+
await _8_10_1.test.step('Disable the variable filter and save', async () => {
|
|
106
|
+
await dataFiltersPage.disableVariableFilter();
|
|
107
|
+
await dataFiltersPage.save();
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
(0, _8_10_1.test)('T11728023 cannot save an empty variable filter pattern', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
111
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
112
|
+
await homePage.clickClusters();
|
|
113
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
114
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
115
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
116
|
+
});
|
|
117
|
+
await _8_10_1.test.step('Attempt to add an empty pattern', async () => {
|
|
118
|
+
await dataFiltersPage.enableVariableFilter();
|
|
119
|
+
await dataFiltersPage.addIncludeVariableName('');
|
|
120
|
+
await dataFiltersPage.assertValidationError();
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
(0, _8_10_1.test)('T11728024 cannot save a variable filter pattern with invalid characters', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
124
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
125
|
+
await homePage.clickClusters();
|
|
126
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
127
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
128
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
129
|
+
});
|
|
130
|
+
await _8_10_1.test.step('Attempt to add a pattern with invalid characters', async () => {
|
|
131
|
+
await dataFiltersPage.enableVariableFilter();
|
|
132
|
+
await dataFiltersPage.addIncludeVariableName('bad name!@#');
|
|
133
|
+
await dataFiltersPage.assertValidationError();
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
(0, _8_10_1.test)('T11728025 cannot save a variable filter pattern exceeding max length', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
137
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
138
|
+
await homePage.clickClusters();
|
|
139
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
140
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
141
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
142
|
+
});
|
|
143
|
+
await _8_10_1.test.step('Attempt to add an over-length pattern', async () => {
|
|
144
|
+
await dataFiltersPage.enableVariableFilter();
|
|
145
|
+
await dataFiltersPage.addIncludeVariableName('a'.repeat(300));
|
|
146
|
+
await dataFiltersPage.assertValidationError();
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
(0, _8_10_1.test)('T11728026 exclude a process definition from Optimize import', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
150
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
151
|
+
await homePage.clickClusters();
|
|
152
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
153
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
154
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
155
|
+
});
|
|
156
|
+
await _8_10_1.test.step('Add a process definition to the exclusion list', async () => {
|
|
157
|
+
await dataFiltersPage.addExcludeProcessDefinition('dev_test_process');
|
|
158
|
+
await dataFiltersPage.assertChipVisible('dev_test_process');
|
|
159
|
+
await dataFiltersPage.save();
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
(0, _8_10_1.test)('T11728027 remove a process definition from the exclusion list', async ({ page, homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
163
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
164
|
+
await homePage.clickClusters();
|
|
165
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
166
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
167
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
168
|
+
});
|
|
169
|
+
await _8_10_1.test.step('Add then remove a process definition exclusion', async () => {
|
|
170
|
+
await dataFiltersPage.addExcludeProcessDefinition('removable_process');
|
|
171
|
+
await dataFiltersPage.assertChipVisible('removable_process');
|
|
172
|
+
await dataFiltersPage.removeChip('removable_process');
|
|
173
|
+
await (0, test_1.expect)(page.getByText('removable_process', { exact: false })).toHaveCount(0);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
(0, _8_10_1.test)('T11728028 view the current process definition filter list', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
177
|
+
await _8_10_1.test.step('Open Data Filters section and assert process definition fields render', async () => {
|
|
178
|
+
await homePage.clickClusters();
|
|
179
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
180
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
181
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
182
|
+
await (0, test_1.expect)(dataFiltersPage.includeProcessDefinitionsInput.or(dataFiltersPage.excludeProcessDefinitionsInput)).toBeVisible({ timeout: 30000 });
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
(0, _8_10_1.test)('T11728035 informed of rolling restart on save', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
186
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
187
|
+
await homePage.clickClusters();
|
|
188
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
189
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
190
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
191
|
+
});
|
|
192
|
+
await _8_10_1.test.step('Change a filter and assert rolling restart notice', async () => {
|
|
193
|
+
await dataFiltersPage.enableVariableFilter();
|
|
194
|
+
await dataFiltersPage.addIncludeVariableName('restart_notice_*');
|
|
195
|
+
await dataFiltersPage.saveButton.click({ timeout: 30000 });
|
|
196
|
+
await dataFiltersPage.assertRollingRestartNotice();
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
(0, _8_10_1.test)('T11735082 add a value to the Exclude variable names field', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
200
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
201
|
+
await homePage.clickClusters();
|
|
202
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
203
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
204
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
205
|
+
});
|
|
206
|
+
await _8_10_1.test.step('Add a single exclude variable name', async () => {
|
|
207
|
+
await dataFiltersPage.addExcludeVariableName('secret_var');
|
|
208
|
+
await dataFiltersPage.assertChipVisible('secret_var');
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
(0, _8_10_1.test)('T11735083 add multiple values to the Exclude variable names field', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
212
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
213
|
+
await homePage.clickClusters();
|
|
214
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
215
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
216
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
217
|
+
});
|
|
218
|
+
await _8_10_1.test.step('Add multiple exclude variable names', async () => {
|
|
219
|
+
await dataFiltersPage.addExcludeVariableName('secret_a');
|
|
220
|
+
await dataFiltersPage.addExcludeVariableName('secret_b');
|
|
221
|
+
await dataFiltersPage.assertChipVisible('secret_a');
|
|
222
|
+
await dataFiltersPage.assertChipVisible('secret_b');
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
(0, _8_10_1.test)('T11735084 add multiple values to the Include variable names field', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
226
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
227
|
+
await homePage.clickClusters();
|
|
228
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
229
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
230
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
231
|
+
});
|
|
232
|
+
await _8_10_1.test.step('Add multiple include variable names', async () => {
|
|
233
|
+
await dataFiltersPage.enableVariableFilter();
|
|
234
|
+
await dataFiltersPage.addIncludeVariableName('business_a');
|
|
235
|
+
await dataFiltersPage.addIncludeVariableName('business_b');
|
|
236
|
+
await dataFiltersPage.assertChipVisible('business_a');
|
|
237
|
+
await dataFiltersPage.assertChipVisible('business_b');
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
(0, _8_10_1.test)('T11735085 add a value to the Include process definitions field', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
241
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
242
|
+
await homePage.clickClusters();
|
|
243
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
244
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
245
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
246
|
+
});
|
|
247
|
+
await _8_10_1.test.step('Add a single include process definition', async () => {
|
|
248
|
+
await dataFiltersPage.addIncludeProcessDefinition('prod_process');
|
|
249
|
+
await dataFiltersPage.assertChipVisible('prod_process');
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
(0, _8_10_1.test)('T11735086 add multiple values to the Include process definitions field', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
253
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
254
|
+
await homePage.clickClusters();
|
|
255
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
256
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
257
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
258
|
+
});
|
|
259
|
+
await _8_10_1.test.step('Add multiple include process definitions', async () => {
|
|
260
|
+
await dataFiltersPage.addIncludeProcessDefinition('prod_a');
|
|
261
|
+
await dataFiltersPage.addIncludeProcessDefinition('prod_b');
|
|
262
|
+
await dataFiltersPage.assertChipVisible('prod_a');
|
|
263
|
+
await dataFiltersPage.assertChipVisible('prod_b');
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
(0, _8_10_1.test)('T11735088 set both Include and Exclude process definitions simultaneously', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
267
|
+
await _8_10_1.test.step('Open Data Filters section', async () => {
|
|
268
|
+
await homePage.clickClusters();
|
|
269
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
270
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
271
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
272
|
+
});
|
|
273
|
+
await _8_10_1.test.step('Set include and exclude process definitions', async () => {
|
|
274
|
+
await dataFiltersPage.addIncludeProcessDefinition('include_proc');
|
|
275
|
+
await dataFiltersPage.addExcludeProcessDefinition('exclude_proc');
|
|
276
|
+
await dataFiltersPage.assertChipVisible('include_proc');
|
|
277
|
+
await dataFiltersPage.assertChipVisible('exclude_proc');
|
|
278
|
+
await dataFiltersPage.save();
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
_8_10_1.test.describe('Read-only operator', () => {
|
|
283
|
+
_8_10_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
284
|
+
skipIfUnavailable();
|
|
285
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, readOnlyUser, (testInfo.workerIndex + 1) * 1000);
|
|
286
|
+
});
|
|
287
|
+
(0, _8_10_1.test)('T11728019 read-only user cannot modify Data Filters', async ({ homePage, clusterPage, clusterDetailsPage, dataFiltersPage, }) => {
|
|
288
|
+
await _8_10_1.test.step('Open Data Filters section as read-only user', async () => {
|
|
289
|
+
await homePage.clickClusters();
|
|
290
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
291
|
+
await clusterDetailsPage.clickSettingsTab();
|
|
292
|
+
await dataFiltersPage.assertDataFiltersSectionVisible();
|
|
293
|
+
});
|
|
294
|
+
await _8_10_1.test.step('Assert modification controls are not actionable', async () => {
|
|
295
|
+
await dataFiltersPage.assertControlsDisabled();
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
});
|
|
@@ -15,8 +15,7 @@ SM_8_8_1.test.describe('HTO User Flow Tests', () => {
|
|
|
15
15
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
16
16
|
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
17
17
|
});
|
|
18
|
-
|
|
19
|
-
SM_8_8_1.test.skip('Job Worker User Task Most Common Flow @tasklistV1', async ({ modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, taskDetailsPage, taskPanelPage, operateProcessInstancePage, page, }) => {
|
|
18
|
+
(0, SM_8_8_1.test)('Job Worker User Task Most Common Flow @tasklistV1', async ({ modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, taskDetailsPage, taskPanelPage, operateProcessInstancePage, page, }) => {
|
|
20
19
|
SM_8_8_1.test.slow();
|
|
21
20
|
const processName = 'User_Task_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
22
21
|
await SM_8_8_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|