@camunda/e2e-test-suite 0.0.36 → 0.0.38
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/pages/8.8/ClusterSecretsPage.d.ts +11 -5
- package/dist/pages/8.8/ClusterSecretsPage.js +45 -32
- package/dist/pages/8.9/ClusterSecretsPage.d.ts +23 -4
- package/dist/pages/8.9/ClusterSecretsPage.js +89 -32
- package/dist/tests/8.8/connectors-user-flows.spec.js +83 -26
- package/dist/tests/8.8/idp-user-flows.spec.js +2 -2
- package/dist/tests/8.8/test-setup.spec.js +8 -6
- package/dist/tests/8.9/connectors-user-flows.spec.js +83 -26
- package/dist/tests/8.9/idp-user-flows.spec.js +54 -23
- package/dist/tests/8.9/test-setup.spec.js +9 -113
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@ declare class ClusterSecretsPage {
|
|
|
5
5
|
readonly keyInput: Locator;
|
|
6
6
|
readonly valueInput: Locator;
|
|
7
7
|
readonly createButton: Locator;
|
|
8
|
-
readonly
|
|
8
|
+
readonly optionsButton: Locator;
|
|
9
9
|
readonly deleteConnectorSecretButton: Locator;
|
|
10
10
|
readonly deleteConnectorSecretSubButton: Locator;
|
|
11
11
|
readonly dialog: Locator;
|
|
@@ -14,20 +14,26 @@ declare class ClusterSecretsPage {
|
|
|
14
14
|
readonly bulkImportTextArea: Locator;
|
|
15
15
|
readonly dialogImportButton: Locator;
|
|
16
16
|
readonly secretsSearchBox: Locator;
|
|
17
|
+
readonly clusterBanner: Locator;
|
|
18
|
+
readonly clusterLink: (name: string) => Locator;
|
|
19
|
+
readonly clusterSecretTab: Locator;
|
|
20
|
+
readonly confirmDeleteInput: Locator;
|
|
17
21
|
constructor(page: Page);
|
|
18
22
|
deleteConnectorSecretsIfExist(): Promise<void>;
|
|
19
|
-
clickCreateNewSecretButton(): Promise<void>;
|
|
23
|
+
clickCreateNewSecretButton(cluster: string): Promise<void>;
|
|
24
|
+
clickClusterBanner(): Promise<void>;
|
|
25
|
+
clickCluster(name: string): Promise<void>;
|
|
20
26
|
clickKeyInput(): Promise<void>;
|
|
21
27
|
fillKeyInput(key: string): Promise<void>;
|
|
22
28
|
clickValueInput(): Promise<void>;
|
|
23
29
|
fillValueInput(value: string): Promise<void>;
|
|
24
30
|
clickCreateButton(): Promise<void>;
|
|
25
|
-
createNewSecret(key: string, value: string): Promise<void>;
|
|
26
|
-
createSetOfSecrets(secrets: {
|
|
31
|
+
createNewSecret(key: string, value: string, cluster: string): Promise<void>;
|
|
32
|
+
createSetOfSecrets(cluster: string, secrets: {
|
|
27
33
|
name: string;
|
|
28
34
|
value: string;
|
|
29
35
|
}[]): Promise<void>;
|
|
30
|
-
assertSecretsOrCreate(secrets: {
|
|
36
|
+
assertSecretsOrCreate(cluster: string, secrets: {
|
|
31
37
|
name: string;
|
|
32
38
|
value: string;
|
|
33
39
|
}[]): Promise<void>;
|
|
@@ -10,7 +10,7 @@ class ClusterSecretsPage {
|
|
|
10
10
|
keyInput;
|
|
11
11
|
valueInput;
|
|
12
12
|
createButton;
|
|
13
|
-
|
|
13
|
+
optionsButton;
|
|
14
14
|
deleteConnectorSecretButton;
|
|
15
15
|
deleteConnectorSecretSubButton;
|
|
16
16
|
dialog;
|
|
@@ -19,6 +19,10 @@ class ClusterSecretsPage {
|
|
|
19
19
|
bulkImportTextArea;
|
|
20
20
|
dialogImportButton;
|
|
21
21
|
secretsSearchBox;
|
|
22
|
+
clusterBanner;
|
|
23
|
+
clusterLink;
|
|
24
|
+
clusterSecretTab;
|
|
25
|
+
confirmDeleteInput;
|
|
22
26
|
constructor(page) {
|
|
23
27
|
this.page = page;
|
|
24
28
|
this.createNewSecretButton = page.getByRole('button', {
|
|
@@ -27,12 +31,12 @@ class ClusterSecretsPage {
|
|
|
27
31
|
this.keyInput = page.getByLabel('Key');
|
|
28
32
|
this.valueInput = page.getByLabel('Value', { exact: true });
|
|
29
33
|
this.createButton = page.getByRole('button', { name: 'Create', exact: true });
|
|
30
|
-
this.
|
|
31
|
-
name: '
|
|
32
|
-
|
|
33
|
-
});
|
|
34
|
+
this.optionsButton = page
|
|
35
|
+
.getByRole('cell', { name: 'Options' })
|
|
36
|
+
.getByRole('button');
|
|
34
37
|
this.deleteConnectorSecretButton = page.getByRole('menuitem', {
|
|
35
|
-
name: '
|
|
38
|
+
name: 'Delete',
|
|
39
|
+
exact: true,
|
|
36
40
|
});
|
|
37
41
|
this.deleteConnectorSecretSubButton = page.getByRole('button', {
|
|
38
42
|
name: 'danger Delete',
|
|
@@ -45,10 +49,20 @@ class ClusterSecretsPage {
|
|
|
45
49
|
.getByRole('dialog')
|
|
46
50
|
.getByRole('button', { name: 'Import', exact: true });
|
|
47
51
|
this.secretsSearchBox = page.getByRole('searchbox', { name: 'Filter table' });
|
|
52
|
+
this.clusterBanner = this.page
|
|
53
|
+
.getByRole('banner')
|
|
54
|
+
.getByRole('link', { name: 'Clusters' });
|
|
55
|
+
this.clusterLink = (name) => page.getByRole('link', { name: name });
|
|
56
|
+
this.clusterSecretTab = this.page.getByRole('tab', {
|
|
57
|
+
name: 'Connector Secrets',
|
|
58
|
+
});
|
|
59
|
+
this.confirmDeleteInput = page.getByRole('textbox', {
|
|
60
|
+
name: 'Type the word DELETE to confirm',
|
|
61
|
+
});
|
|
48
62
|
}
|
|
49
63
|
async deleteConnectorSecretsIfExist() {
|
|
50
64
|
try {
|
|
51
|
-
await (0, test_1.expect)(this.
|
|
65
|
+
await (0, test_1.expect)(this.optionsButton.first()).toBeVisible({
|
|
52
66
|
timeout: 10000,
|
|
53
67
|
});
|
|
54
68
|
}
|
|
@@ -56,9 +70,9 @@ class ClusterSecretsPage {
|
|
|
56
70
|
return; //No Connector Secrets found in the list
|
|
57
71
|
}
|
|
58
72
|
try {
|
|
59
|
-
let
|
|
60
|
-
while (
|
|
61
|
-
const operationButton =
|
|
73
|
+
let options = await this.optionsButton.all();
|
|
74
|
+
while (options.length > 0) {
|
|
75
|
+
const operationButton = options[0];
|
|
62
76
|
if (await operationButton.isVisible()) {
|
|
63
77
|
await operationButton.click({ timeout: 60000 });
|
|
64
78
|
await this.deleteConnectorSecretButton.click({ timeout: 60000 });
|
|
@@ -70,9 +84,9 @@ class ClusterSecretsPage {
|
|
|
70
84
|
}
|
|
71
85
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
72
86
|
await sleep(3000);
|
|
73
|
-
|
|
87
|
+
options = await this.optionsButton.all();
|
|
74
88
|
}
|
|
75
|
-
await (0, test_1.expect)(this.
|
|
89
|
+
await (0, test_1.expect)(this.optionsButton).not.toBeVisible({
|
|
76
90
|
timeout: 30000,
|
|
77
91
|
});
|
|
78
92
|
}
|
|
@@ -80,26 +94,25 @@ class ClusterSecretsPage {
|
|
|
80
94
|
console.error('Error during Connector Secrets deletion: ', error);
|
|
81
95
|
}
|
|
82
96
|
}
|
|
83
|
-
async clickCreateNewSecretButton() {
|
|
97
|
+
async clickCreateNewSecretButton(cluster) {
|
|
84
98
|
try {
|
|
85
99
|
await this.createNewSecretButton.click({ timeout: 60000 });
|
|
86
100
|
}
|
|
87
101
|
catch (error) {
|
|
88
|
-
await this.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
await this.page
|
|
93
|
-
.getByRole('link', { name: 'Test Cluster' })
|
|
94
|
-
.click({ timeout: 60000 });
|
|
95
|
-
await this.page
|
|
96
|
-
.getByRole('tab', {
|
|
97
|
-
name: 'Connector Secrets',
|
|
98
|
-
})
|
|
99
|
-
.click({ timeout: 60000 });
|
|
100
|
-
await this.createNewSecretButton.click({ timeout: 60000 });
|
|
102
|
+
await this.clickClusterBanner();
|
|
103
|
+
await this.clickCluster(cluster);
|
|
104
|
+
await this.clusterSecretTab.click({ timeout: 30000 });
|
|
105
|
+
await this.createNewSecretButton.click({ timeout: 30000 });
|
|
101
106
|
}
|
|
102
107
|
}
|
|
108
|
+
async clickClusterBanner() {
|
|
109
|
+
await (0, test_1.expect)(this.clusterBanner).toBeVisible({ timeout: 30000 });
|
|
110
|
+
await this.clusterBanner.click({ timeout: 60000 });
|
|
111
|
+
}
|
|
112
|
+
async clickCluster(name) {
|
|
113
|
+
await (0, test_1.expect)(this.clusterLink(name)).toBeVisible({ timeout: 30000 });
|
|
114
|
+
await this.clusterLink(name).click();
|
|
115
|
+
}
|
|
103
116
|
async clickKeyInput() {
|
|
104
117
|
await (0, test_1.expect)(this.keyInput).toBeVisible({ timeout: 60000 });
|
|
105
118
|
await this.keyInput.click({ timeout: 30000 });
|
|
@@ -137,8 +150,8 @@ class ClusterSecretsPage {
|
|
|
137
150
|
await (0, test_1.expect)(this.createButton).toBeVisible({ timeout: 60000 });
|
|
138
151
|
await this.createButton.click({ timeout: 30000 });
|
|
139
152
|
}
|
|
140
|
-
async createNewSecret(key, value) {
|
|
141
|
-
await this.clickCreateNewSecretButton();
|
|
153
|
+
async createNewSecret(key, value, cluster) {
|
|
154
|
+
await this.clickCreateNewSecretButton(cluster);
|
|
142
155
|
await this.clickKeyInput();
|
|
143
156
|
await this.fillKeyInput(key);
|
|
144
157
|
await (0, sleep_1.sleep)(1000);
|
|
@@ -153,11 +166,11 @@ class ClusterSecretsPage {
|
|
|
153
166
|
timeout: 60000,
|
|
154
167
|
});
|
|
155
168
|
}
|
|
156
|
-
async createSetOfSecrets(secrets) {
|
|
169
|
+
async createSetOfSecrets(cluster, secrets) {
|
|
157
170
|
await this.bulkImportSecrets(secrets);
|
|
158
|
-
await this.assertSecretsOrCreate(secrets);
|
|
171
|
+
await this.assertSecretsOrCreate(cluster, secrets);
|
|
159
172
|
}
|
|
160
|
-
async assertSecretsOrCreate(secrets) {
|
|
173
|
+
async assertSecretsOrCreate(cluster, secrets) {
|
|
161
174
|
for (const secret of secrets) {
|
|
162
175
|
try {
|
|
163
176
|
await (0, test_1.expect)(this.secretsSearchBox).toBeVisible();
|
|
@@ -170,7 +183,7 @@ class ClusterSecretsPage {
|
|
|
170
183
|
}
|
|
171
184
|
catch (error) {
|
|
172
185
|
console.error(`Creating secret for ${secret.name}`);
|
|
173
|
-
await this.createNewSecret(secret.name, secret.value);
|
|
186
|
+
await this.createNewSecret(secret.name, secret.value, cluster);
|
|
174
187
|
}
|
|
175
188
|
}
|
|
176
189
|
}
|
|
@@ -5,20 +5,39 @@ declare class ClusterSecretsPage {
|
|
|
5
5
|
readonly keyInput: Locator;
|
|
6
6
|
readonly valueInput: Locator;
|
|
7
7
|
readonly createButton: Locator;
|
|
8
|
-
readonly
|
|
8
|
+
readonly optionsButton: Locator;
|
|
9
9
|
readonly deleteConnectorSecretButton: Locator;
|
|
10
10
|
readonly deleteConnectorSecretSubButton: Locator;
|
|
11
11
|
readonly dialog: Locator;
|
|
12
|
+
readonly importButton: Locator;
|
|
13
|
+
readonly fromFileButton: Locator;
|
|
14
|
+
readonly bulkImportTextArea: Locator;
|
|
15
|
+
readonly dialogImportButton: Locator;
|
|
16
|
+
readonly secretsSearchBox: Locator;
|
|
17
|
+
readonly clusterBanner: Locator;
|
|
18
|
+
readonly clusterLink: (name: string) => Locator;
|
|
19
|
+
readonly clusterSecretTab: Locator;
|
|
20
|
+
readonly confirmDeleteInput: Locator;
|
|
12
21
|
constructor(page: Page);
|
|
13
22
|
deleteConnectorSecretsIfExist(): Promise<void>;
|
|
14
|
-
clickCreateNewSecretButton(): Promise<void>;
|
|
23
|
+
clickCreateNewSecretButton(cluster: string): Promise<void>;
|
|
24
|
+
clickClusterBanner(): Promise<void>;
|
|
25
|
+
clickCluster(name: string): Promise<void>;
|
|
15
26
|
clickKeyInput(): Promise<void>;
|
|
16
27
|
fillKeyInput(key: string): Promise<void>;
|
|
17
28
|
clickValueInput(): Promise<void>;
|
|
18
29
|
fillValueInput(value: string): Promise<void>;
|
|
19
30
|
clickCreateButton(): Promise<void>;
|
|
20
|
-
createNewSecret(key: string, value: string): Promise<void>;
|
|
21
|
-
createSetOfSecrets(secrets: {
|
|
31
|
+
createNewSecret(key: string, value: string, cluster: string): Promise<void>;
|
|
32
|
+
createSetOfSecrets(cluster: string, secrets: {
|
|
33
|
+
name: string;
|
|
34
|
+
value: string;
|
|
35
|
+
}[]): Promise<void>;
|
|
36
|
+
assertSecretsOrCreate(cluster: string, secrets: {
|
|
37
|
+
name: string;
|
|
38
|
+
value: string;
|
|
39
|
+
}[]): Promise<void>;
|
|
40
|
+
bulkImportSecrets(secrets: {
|
|
22
41
|
name: string;
|
|
23
42
|
value: string;
|
|
24
43
|
}[]): Promise<void>;
|
|
@@ -3,16 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ClusterSecretsPage = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const sleep_1 = require("../../utils/sleep");
|
|
6
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
6
7
|
class ClusterSecretsPage {
|
|
7
8
|
page;
|
|
8
9
|
createNewSecretButton;
|
|
9
10
|
keyInput;
|
|
10
11
|
valueInput;
|
|
11
12
|
createButton;
|
|
12
|
-
|
|
13
|
+
optionsButton;
|
|
13
14
|
deleteConnectorSecretButton;
|
|
14
15
|
deleteConnectorSecretSubButton;
|
|
15
16
|
dialog;
|
|
17
|
+
importButton;
|
|
18
|
+
fromFileButton;
|
|
19
|
+
bulkImportTextArea;
|
|
20
|
+
dialogImportButton;
|
|
21
|
+
secretsSearchBox;
|
|
22
|
+
clusterBanner;
|
|
23
|
+
clusterLink;
|
|
24
|
+
clusterSecretTab;
|
|
25
|
+
confirmDeleteInput;
|
|
16
26
|
constructor(page) {
|
|
17
27
|
this.page = page;
|
|
18
28
|
this.createNewSecretButton = page.getByRole('button', {
|
|
@@ -21,21 +31,38 @@ class ClusterSecretsPage {
|
|
|
21
31
|
this.keyInput = page.getByLabel('Key');
|
|
22
32
|
this.valueInput = page.getByLabel('Value', { exact: true });
|
|
23
33
|
this.createButton = page.getByRole('button', { name: 'Create', exact: true });
|
|
24
|
-
this.
|
|
25
|
-
name: '
|
|
26
|
-
|
|
27
|
-
});
|
|
34
|
+
this.optionsButton = page
|
|
35
|
+
.getByRole('cell', { name: 'Options' })
|
|
36
|
+
.getByRole('button');
|
|
28
37
|
this.deleteConnectorSecretButton = page.getByRole('menuitem', {
|
|
29
|
-
name: '
|
|
38
|
+
name: 'Delete',
|
|
39
|
+
exact: true,
|
|
30
40
|
});
|
|
31
41
|
this.deleteConnectorSecretSubButton = page.getByRole('button', {
|
|
32
42
|
name: 'danger Delete',
|
|
33
43
|
});
|
|
34
44
|
this.dialog = page.getByRole('dialog');
|
|
45
|
+
this.importButton = page.getByRole('button', { name: 'Import', exact: true });
|
|
46
|
+
this.fromFileButton = page.getByText('from File', { exact: true });
|
|
47
|
+
this.bulkImportTextArea = page.locator('[id="env-content-input-secrets-bulk-import"]');
|
|
48
|
+
this.dialogImportButton = this.page
|
|
49
|
+
.getByRole('dialog')
|
|
50
|
+
.getByRole('button', { name: 'Import', exact: true });
|
|
51
|
+
this.secretsSearchBox = page.getByRole('searchbox', { name: 'Filter table' });
|
|
52
|
+
this.clusterBanner = this.page
|
|
53
|
+
.getByRole('banner')
|
|
54
|
+
.getByRole('link', { name: 'Clusters' });
|
|
55
|
+
this.clusterLink = (name) => page.getByRole('link', { name: name });
|
|
56
|
+
this.clusterSecretTab = this.page.getByRole('tab', {
|
|
57
|
+
name: 'Connector Secrets',
|
|
58
|
+
});
|
|
59
|
+
this.confirmDeleteInput = page.getByRole('textbox', {
|
|
60
|
+
name: 'Type the word DELETE to confirm',
|
|
61
|
+
});
|
|
35
62
|
}
|
|
36
63
|
async deleteConnectorSecretsIfExist() {
|
|
37
64
|
try {
|
|
38
|
-
await (0, test_1.expect)(this.
|
|
65
|
+
await (0, test_1.expect)(this.optionsButton.first()).toBeVisible({
|
|
39
66
|
timeout: 10000,
|
|
40
67
|
});
|
|
41
68
|
}
|
|
@@ -43,9 +70,9 @@ class ClusterSecretsPage {
|
|
|
43
70
|
return; //No Connector Secrets found in the list
|
|
44
71
|
}
|
|
45
72
|
try {
|
|
46
|
-
let
|
|
47
|
-
while (
|
|
48
|
-
const operationButton =
|
|
73
|
+
let options = await this.optionsButton.all();
|
|
74
|
+
while (options.length > 0) {
|
|
75
|
+
const operationButton = options[0];
|
|
49
76
|
if (await operationButton.isVisible()) {
|
|
50
77
|
await operationButton.click({ timeout: 60000 });
|
|
51
78
|
await this.deleteConnectorSecretButton.click({ timeout: 60000 });
|
|
@@ -57,9 +84,9 @@ class ClusterSecretsPage {
|
|
|
57
84
|
}
|
|
58
85
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
59
86
|
await sleep(3000);
|
|
60
|
-
|
|
87
|
+
options = await this.optionsButton.all();
|
|
61
88
|
}
|
|
62
|
-
await (0, test_1.expect)(this.
|
|
89
|
+
await (0, test_1.expect)(this.optionsButton).not.toBeVisible({
|
|
63
90
|
timeout: 30000,
|
|
64
91
|
});
|
|
65
92
|
}
|
|
@@ -67,26 +94,25 @@ class ClusterSecretsPage {
|
|
|
67
94
|
console.error('Error during Connector Secrets deletion: ', error);
|
|
68
95
|
}
|
|
69
96
|
}
|
|
70
|
-
async clickCreateNewSecretButton() {
|
|
97
|
+
async clickCreateNewSecretButton(cluster) {
|
|
71
98
|
try {
|
|
72
99
|
await this.createNewSecretButton.click({ timeout: 60000 });
|
|
73
100
|
}
|
|
74
101
|
catch (error) {
|
|
75
|
-
await this.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
await this.page
|
|
80
|
-
.getByRole('link', { name: 'Test Cluster' })
|
|
81
|
-
.click({ timeout: 60000 });
|
|
82
|
-
await this.page
|
|
83
|
-
.getByRole('tab', {
|
|
84
|
-
name: 'Connector Secrets',
|
|
85
|
-
})
|
|
86
|
-
.click({ timeout: 60000 });
|
|
87
|
-
await this.createNewSecretButton.click({ timeout: 60000 });
|
|
102
|
+
await this.clickClusterBanner();
|
|
103
|
+
await this.clickCluster(cluster);
|
|
104
|
+
await this.clusterSecretTab.click({ timeout: 30000 });
|
|
105
|
+
await this.createNewSecretButton.click({ timeout: 30000 });
|
|
88
106
|
}
|
|
89
107
|
}
|
|
108
|
+
async clickClusterBanner() {
|
|
109
|
+
await (0, test_1.expect)(this.clusterBanner).toBeVisible({ timeout: 30000 });
|
|
110
|
+
await this.clusterBanner.click({ timeout: 60000 });
|
|
111
|
+
}
|
|
112
|
+
async clickCluster(name) {
|
|
113
|
+
await (0, test_1.expect)(this.clusterLink(name)).toBeVisible({ timeout: 30000 });
|
|
114
|
+
await this.clusterLink(name).click();
|
|
115
|
+
}
|
|
90
116
|
async clickKeyInput() {
|
|
91
117
|
await (0, test_1.expect)(this.keyInput).toBeVisible({ timeout: 60000 });
|
|
92
118
|
await this.keyInput.click({ timeout: 30000 });
|
|
@@ -124,8 +150,8 @@ class ClusterSecretsPage {
|
|
|
124
150
|
await (0, test_1.expect)(this.createButton).toBeVisible({ timeout: 60000 });
|
|
125
151
|
await this.createButton.click({ timeout: 30000 });
|
|
126
152
|
}
|
|
127
|
-
async createNewSecret(key, value) {
|
|
128
|
-
await this.clickCreateNewSecretButton();
|
|
153
|
+
async createNewSecret(key, value, cluster) {
|
|
154
|
+
await this.clickCreateNewSecretButton(cluster);
|
|
129
155
|
await this.clickKeyInput();
|
|
130
156
|
await this.fillKeyInput(key);
|
|
131
157
|
await (0, sleep_1.sleep)(1000);
|
|
@@ -140,16 +166,47 @@ class ClusterSecretsPage {
|
|
|
140
166
|
timeout: 60000,
|
|
141
167
|
});
|
|
142
168
|
}
|
|
143
|
-
async createSetOfSecrets(secrets) {
|
|
169
|
+
async createSetOfSecrets(cluster, secrets) {
|
|
170
|
+
await this.bulkImportSecrets(secrets);
|
|
171
|
+
await this.assertSecretsOrCreate(cluster, secrets);
|
|
172
|
+
}
|
|
173
|
+
async assertSecretsOrCreate(cluster, secrets) {
|
|
144
174
|
for (const secret of secrets) {
|
|
145
175
|
try {
|
|
146
|
-
|
|
147
|
-
await this.
|
|
176
|
+
await (0, test_1.expect)(this.secretsSearchBox).toBeVisible();
|
|
177
|
+
await this.secretsSearchBox.click();
|
|
178
|
+
await this.secretsSearchBox.fill(secret.name);
|
|
179
|
+
const row = this.page.getByRole('row', {
|
|
180
|
+
name: new RegExp(`^${secret.name}\\b`, 'i'),
|
|
181
|
+
});
|
|
182
|
+
await (0, test_1.expect)(row).toBeVisible({ timeout: 5000 });
|
|
148
183
|
}
|
|
149
184
|
catch (error) {
|
|
150
|
-
|
|
185
|
+
console.error(`Creating secret for ${secret.name}`);
|
|
186
|
+
await this.createNewSecret(secret.name, secret.value, cluster);
|
|
151
187
|
}
|
|
152
188
|
}
|
|
153
189
|
}
|
|
190
|
+
async bulkImportSecrets(secrets) {
|
|
191
|
+
const mapped = secrets
|
|
192
|
+
.map((secret) => `${secret.name}=${secret.value}`)
|
|
193
|
+
.join('\n');
|
|
194
|
+
await this.importButton.click();
|
|
195
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.fromFileButton, {
|
|
196
|
+
postAction: async () => {
|
|
197
|
+
await this.importButton.click();
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
await this.fromFileButton.click();
|
|
201
|
+
await this.bulkImportTextArea.click();
|
|
202
|
+
await this.bulkImportTextArea.fill(mapped);
|
|
203
|
+
await this.dialogImportButton.click();
|
|
204
|
+
await (0, test_1.expect)(this.page.getByText('Importing secrets...')).not.toBeVisible({
|
|
205
|
+
timeout: 60000,
|
|
206
|
+
});
|
|
207
|
+
await (0, test_1.expect)(this.createNewSecretButton).toBeVisible({
|
|
208
|
+
timeout: 60000,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
154
211
|
}
|
|
155
212
|
exports.ClusterSecretsPage = ClusterSecretsPage;
|
|
@@ -9,9 +9,11 @@ const UtilitiesPage_1 = require("../../pages/8.8/UtilitiesPage");
|
|
|
9
9
|
const UtilitiesPage_2 = require("../../pages/8.8/UtilitiesPage");
|
|
10
10
|
const UtilitiesPage_3 = require("../../pages/8.8/UtilitiesPage");
|
|
11
11
|
const apiHelpers_1 = require("../../utils/apiHelpers");
|
|
12
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
12
13
|
_8_8_1.test.describe.configure({ mode: 'parallel' });
|
|
13
14
|
_8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
14
|
-
const
|
|
15
|
+
const defaultClusterName = 'Test Cluster';
|
|
16
|
+
const awsCluster = 'AWS Cluster';
|
|
15
17
|
_8_8_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
16
18
|
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
17
19
|
});
|
|
@@ -39,7 +41,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
39
41
|
});
|
|
40
42
|
await _8_8_1.test.step('Create BPMN Diagram with REST Connector and Start Process Instance', async () => {
|
|
41
43
|
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/no-auth-test', 'noAuth', 'body');
|
|
42
|
-
await modelerCreatePage.runProcessInstance(
|
|
44
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
43
45
|
});
|
|
44
46
|
await _8_8_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
45
47
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -77,7 +79,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
77
79
|
});
|
|
78
80
|
await _8_8_1.test.step('Create BPMN Diagram with REST Connector with Bearer Token Auth and Start Process Instance', async () => {
|
|
79
81
|
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'bearer', '{message:response.body}');
|
|
80
|
-
await modelerCreatePage.runProcessInstance(
|
|
82
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
81
83
|
await (0, _setup_1.performBearerTokenAuthPostRequest)('https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'thisisabearertoken');
|
|
82
84
|
});
|
|
83
85
|
await _8_8_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
@@ -129,7 +131,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
129
131
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
130
132
|
await (0, sleep_1.sleep)(20000);
|
|
131
133
|
await page.reload();
|
|
132
|
-
await modelerCreatePage.deployDiagram(
|
|
134
|
+
await modelerCreatePage.deployDiagram(defaultClusterName);
|
|
133
135
|
});
|
|
134
136
|
await _8_8_1.test.step('Assert Webhook Is Active In Cluster And Make Authorization Request', async () => {
|
|
135
137
|
await modelerCreatePage.clickStartEventElement();
|
|
@@ -145,7 +147,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
145
147
|
});
|
|
146
148
|
await _8_8_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
|
|
147
149
|
await appsPage.clickCamundaApps();
|
|
148
|
-
await appsPage.clickOperate(
|
|
150
|
+
await appsPage.clickOperate(defaultClusterName);
|
|
149
151
|
await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({
|
|
150
152
|
timeout: 120000,
|
|
151
153
|
});
|
|
@@ -155,7 +157,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
155
157
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateProcessInstancePage, operateProcessInstancePage.completedIcon, 'Completed icon', 60000);
|
|
156
158
|
});
|
|
157
159
|
});
|
|
158
|
-
(0, _8_8_1.test)('Connector Secrets User Flow', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, }) => {
|
|
160
|
+
(0, _8_8_1.test)('Connector Secrets User Flow - GCP', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
159
161
|
_8_8_1.test.slow();
|
|
160
162
|
const processName = 'REST_Connector_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
161
163
|
await _8_8_1.test.step('Navigate to Web Modeler', async () => {
|
|
@@ -163,10 +165,9 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
163
165
|
timeout: 20000,
|
|
164
166
|
});
|
|
165
167
|
await appsPage.clickCamundaApps();
|
|
166
|
-
await (0, test_1.expect)(appsPage.modelerLink).toBeVisible({ timeout: 20000 });
|
|
167
168
|
await appsPage.clickModeler();
|
|
168
169
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
169
|
-
timeout:
|
|
170
|
+
timeout: 30000,
|
|
170
171
|
});
|
|
171
172
|
});
|
|
172
173
|
await _8_8_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
@@ -176,21 +177,77 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
176
177
|
});
|
|
177
178
|
await _8_8_1.test.step('Create BPMN Diagram with REST Connector using secrets and Start Process Instance', async () => {
|
|
178
179
|
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'secrets.endpoint_url', 'basic', '{message:response.body.message}', 'result', { username: 'secrets.username', password: 'secrets.password' });
|
|
179
|
-
await modelerCreatePage.runProcessInstance(
|
|
180
|
-
await (0,
|
|
180
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
181
|
+
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible();
|
|
181
182
|
});
|
|
182
183
|
await _8_8_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
183
|
-
await
|
|
184
|
-
|
|
184
|
+
await appsPage.clickCamundaApps();
|
|
185
|
+
await appsPage.clickOperate(defaultClusterName);
|
|
186
|
+
await (0, test_1.expect)(operateHomePage.operateBanner).toBeVisible();
|
|
187
|
+
await operateHomePage.clickProcessesTab();
|
|
188
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
189
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
190
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.completedIcon, {
|
|
191
|
+
postAction: async () => {
|
|
192
|
+
await page.reload();
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.variablesList, {
|
|
196
|
+
postAction: async () => {
|
|
197
|
+
await page.reload();
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.messageVariable.getByText('"Message from Mock!"'), {
|
|
201
|
+
postAction: async () => {
|
|
202
|
+
await page.reload();
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
(0, _8_8_1.test)('Connector Secrets User Flow - AWS', async ({ page, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
208
|
+
_8_8_1.test.slow();
|
|
209
|
+
const processName = 'REST_Connector_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
210
|
+
await _8_8_1.test.step('Navigate to Web Modeler', async () => {
|
|
211
|
+
await appsPage.clickCamundaApps();
|
|
212
|
+
await appsPage.clickModeler();
|
|
213
|
+
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
214
|
+
timeout: 30000,
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
await _8_8_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
218
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
219
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
220
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
221
|
+
});
|
|
222
|
+
await _8_8_1.test.step('Create BPMN Diagram with REST Connector using secrets and Start Process Instance', async () => {
|
|
223
|
+
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'secrets.endpoint_url', 'basic', '{message:response.body.message}', 'result', { username: 'secrets.username', password: 'secrets.password' });
|
|
224
|
+
await modelerCreatePage.runProcessInstance(awsCluster);
|
|
225
|
+
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible();
|
|
226
|
+
});
|
|
227
|
+
await _8_8_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
228
|
+
await appsPage.clickCamundaApps();
|
|
229
|
+
await appsPage.clickOperate(awsCluster);
|
|
230
|
+
await (0, test_1.expect)(operateHomePage.operateBanner).toBeVisible({
|
|
231
|
+
timeout: 30000,
|
|
232
|
+
});
|
|
233
|
+
await operateHomePage.clickProcessesTab();
|
|
234
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
235
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
236
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.completedIcon, {
|
|
237
|
+
postAction: async () => {
|
|
238
|
+
await page.reload();
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.variablesList, {
|
|
242
|
+
postAction: async () => {
|
|
243
|
+
await page.reload();
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.messageVariable.getByText('"Message from Mock!"'), {
|
|
247
|
+
postAction: async () => {
|
|
248
|
+
await page.reload();
|
|
249
|
+
},
|
|
185
250
|
});
|
|
186
|
-
await modelerCreatePage.clickViewProcessInstanceLink();
|
|
187
|
-
const operateTab = await page.waitForEvent('popup', { timeout: 60000 });
|
|
188
|
-
const operateTabProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(operateTab);
|
|
189
|
-
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTab, operateTabProcessInstancePage.completedIcon, 'Completed icon');
|
|
190
|
-
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTab, operateTab.getByTestId('variables-list'), 'Variable list', 60000);
|
|
191
|
-
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTab, operateTab
|
|
192
|
-
.getByTestId('variable-message')
|
|
193
|
-
.getByText('"Message from Mock!"'), 'Connector response message', 60000);
|
|
194
251
|
});
|
|
195
252
|
});
|
|
196
253
|
(0, _8_8_1.test)('Marketplace Connector User Flow', async ({ page, homePage, appsPage, modelerHomePage, modelerCreatePage, connectorMarketplacePage, connectorSettingsPage, }) => {
|
|
@@ -241,7 +298,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
241
298
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
242
299
|
await modelerCreatePage.clickCanvas();
|
|
243
300
|
await modelerCreatePage.assertThreeElementsVisible();
|
|
244
|
-
await modelerCreatePage.runProcessInstance(
|
|
301
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
245
302
|
});
|
|
246
303
|
await _8_8_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
247
304
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -295,7 +352,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
295
352
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
296
353
|
await (0, sleep_1.sleep)(10000);
|
|
297
354
|
await page.reload();
|
|
298
|
-
await modelerCreatePage.runProcessInstance(
|
|
355
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
299
356
|
});
|
|
300
357
|
await _8_8_1.test.step('Assert Webhook Is Active In Cluster And Make Authorization Request', async () => {
|
|
301
358
|
await modelerCreatePage.clickSecondElement();
|
|
@@ -315,7 +372,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
315
372
|
await _8_8_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
|
|
316
373
|
await (0, sleep_1.sleep)(90000);
|
|
317
374
|
await appsPage.clickCamundaApps();
|
|
318
|
-
await appsPage.clickOperate(
|
|
375
|
+
await appsPage.clickOperate(defaultClusterName);
|
|
319
376
|
await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({ timeout: 120000 });
|
|
320
377
|
await operateHomePage.clickProcessesTab();
|
|
321
378
|
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
@@ -331,7 +388,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
331
388
|
let credentials = {};
|
|
332
389
|
await _8_8_1.test.step('Create Zeebe API Client', async () => {
|
|
333
390
|
await homePage.clickClusters();
|
|
334
|
-
await clusterPage.clickClusterLink(
|
|
391
|
+
await clusterPage.clickClusterLink(defaultClusterName);
|
|
335
392
|
await clusterDetailsPage.clickAPITab();
|
|
336
393
|
credentials = await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName, false);
|
|
337
394
|
await clusterDetailsPage.clickCloseModalButton();
|
|
@@ -344,7 +401,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
344
401
|
});
|
|
345
402
|
});
|
|
346
403
|
await _8_8_1.test.step('Open Cross Component Test Project and Create a REST Connector Document Handling Flow', async () => {
|
|
347
|
-
await (0, UtilitiesPage_3.modelAndRunConnectorsDocHandlingDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage,
|
|
404
|
+
await (0, UtilitiesPage_3.modelAndRunConnectorsDocHandlingDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, defaultClusterName, `"${credentials.zeebeUrl}"`, `"${credentials.zeebeClientId}"`, `"${credentials.zeebeClientSecret}"`);
|
|
348
405
|
});
|
|
349
406
|
await _8_8_1.test.step('View Process Instance in Operate, assert it completes and assert variable values are correct', async () => {
|
|
350
407
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -383,7 +440,7 @@ _8_8_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
383
440
|
});
|
|
384
441
|
});
|
|
385
442
|
await _8_8_1.test.step('Open Cross Component Test Project and Create a REST Connector Document Handling Flow', async () => {
|
|
386
|
-
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage,
|
|
443
|
+
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, defaultClusterName, connectorTemplatePage);
|
|
387
444
|
});
|
|
388
445
|
await _8_8_1.test.step('View Process Instance in Operate, assert it completes and assert variable values are correct', async () => {
|
|
389
446
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -68,7 +68,7 @@ _8_8_1.test.describe('IDP User Flow Tests', () => {
|
|
|
68
68
|
await homePage.clickClusters();
|
|
69
69
|
await clusterPage.clickClusterLink(clusterName);
|
|
70
70
|
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
71
|
-
await clusterSecretsPage.assertSecretsOrCreate(connectorSecrets_1.allConnectorSecrets[params.provider]);
|
|
71
|
+
await clusterSecretsPage.assertSecretsOrCreate(clusterName, connectorSecrets_1.allConnectorSecrets[params.provider]);
|
|
72
72
|
});
|
|
73
73
|
await _8_8_1.test.step('Navigate to Web Modeler', async () => {
|
|
74
74
|
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
@@ -140,7 +140,7 @@ _8_8_1.test.describe('IDP User Flow Tests', () => {
|
|
|
140
140
|
await homePage.clickClusters();
|
|
141
141
|
await clusterPage.clickClusterLink(clusterName);
|
|
142
142
|
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
143
|
-
await clusterSecretsPage.assertSecretsOrCreate(connectorSecrets_1.allConnectorSecrets[params.provider]);
|
|
143
|
+
await clusterSecretsPage.assertSecretsOrCreate(clusterName, connectorSecrets_1.allConnectorSecrets[params.provider]);
|
|
144
144
|
});
|
|
145
145
|
await _8_8_1.test.step('Navigate to Web Modeler', async () => {
|
|
146
146
|
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
@@ -43,13 +43,13 @@ _8_8_1.test.describe('Cluster Setup Tests', () => {
|
|
|
43
43
|
await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName);
|
|
44
44
|
await clusterDetailsPage.clickCloseModalButton();
|
|
45
45
|
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
46
|
-
await clusterSecretsPage.createSetOfSecrets(connectorSecrets_1.awsSecretsValues);
|
|
47
|
-
await clusterSecretsPage.createSetOfSecrets(connectorSecrets_1.openAiSecretsValues);
|
|
48
|
-
await clusterSecretsPage.createSetOfSecrets(connectorSecrets_1.gcpSecretsValues);
|
|
49
|
-
await clusterSecretsPage.createSetOfSecrets(connectorSecrets_1.azureSecretsValues);
|
|
50
|
-
await clusterSecretsPage.createSetOfSecrets(connectorSecrets_1.connectorSecretsValues);
|
|
46
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.awsSecretsValues);
|
|
47
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.openAiSecretsValues);
|
|
48
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.gcpSecretsValues);
|
|
49
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.azureSecretsValues);
|
|
50
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
|
|
51
51
|
});
|
|
52
|
-
(0, _8_8_1.test)('Create AWS Cluster', async ({ homePage, clusterPage, clusterDetailsPage, }) => {
|
|
52
|
+
(0, _8_8_1.test)('Create AWS Cluster', async ({ homePage, clusterPage, clusterDetailsPage, clusterSecretsPage, }) => {
|
|
53
53
|
_8_8_1.test.slow();
|
|
54
54
|
const clusterName = 'AWS Cluster';
|
|
55
55
|
await homePage.clickClusters();
|
|
@@ -57,6 +57,8 @@ _8_8_1.test.describe('Cluster Setup Tests', () => {
|
|
|
57
57
|
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName);
|
|
58
58
|
await clusterPage.clickClusterLink(clusterName);
|
|
59
59
|
await clusterDetailsPage.assertComponentsHealth();
|
|
60
|
+
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
61
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
|
|
60
62
|
});
|
|
61
63
|
(0, _8_8_1.test)('Create Project Folder', async ({ homePage, appsPage, modelerHomePage, }) => {
|
|
62
64
|
await _8_8_1.test.step('Navigate to Web Modeler', async () => {
|
|
@@ -9,9 +9,11 @@ const UtilitiesPage_1 = require("../../pages/8.9/UtilitiesPage");
|
|
|
9
9
|
const UtilitiesPage_2 = require("../../pages/8.9/UtilitiesPage");
|
|
10
10
|
const UtilitiesPage_3 = require("../../pages/8.9/UtilitiesPage");
|
|
11
11
|
const apiHelpers_1 = require("../../utils/apiHelpers");
|
|
12
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
12
13
|
_8_9_1.test.describe.configure({ mode: 'parallel' });
|
|
13
14
|
_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
14
|
-
const
|
|
15
|
+
const defaultClusterName = 'Test Cluster';
|
|
16
|
+
const awsCluster = 'AWS Cluster';
|
|
15
17
|
_8_9_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
16
18
|
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
17
19
|
});
|
|
@@ -39,7 +41,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
39
41
|
});
|
|
40
42
|
await _8_9_1.test.step('Create BPMN Diagram with REST Connector and Start Process Instance', async () => {
|
|
41
43
|
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/no-auth-test', 'noAuth', 'body');
|
|
42
|
-
await modelerCreatePage.runProcessInstance(
|
|
44
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
43
45
|
});
|
|
44
46
|
await _8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
45
47
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -79,7 +81,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
79
81
|
});
|
|
80
82
|
await _8_9_1.test.step('Create BPMN Diagram with REST Connector with Bearer Token Auth and Start Process Instance', async () => {
|
|
81
83
|
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'bearer', '{message:response.body}');
|
|
82
|
-
await modelerCreatePage.runProcessInstance(
|
|
84
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
83
85
|
await (0, _setup_1.performBearerTokenAuthPostRequest)('https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'thisisabearertoken');
|
|
84
86
|
});
|
|
85
87
|
await _8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
@@ -133,7 +135,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
133
135
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
134
136
|
await (0, sleep_1.sleep)(20000);
|
|
135
137
|
await page.reload();
|
|
136
|
-
await modelerCreatePage.deployDiagram(
|
|
138
|
+
await modelerCreatePage.deployDiagram(defaultClusterName);
|
|
137
139
|
});
|
|
138
140
|
await _8_9_1.test.step('Assert Webhook Is Active In Cluster And Make Authorization Request', async () => {
|
|
139
141
|
await modelerCreatePage.clickStartEventElement();
|
|
@@ -149,7 +151,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
149
151
|
});
|
|
150
152
|
await _8_9_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
|
|
151
153
|
await appsPage.clickCamundaApps();
|
|
152
|
-
await appsPage.clickOperate(
|
|
154
|
+
await appsPage.clickOperate(defaultClusterName);
|
|
153
155
|
await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({
|
|
154
156
|
timeout: 120000,
|
|
155
157
|
});
|
|
@@ -159,7 +161,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
159
161
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateProcessInstancePage, operateProcessInstancePage.completedIcon, 'Completed icon', 60000);
|
|
160
162
|
});
|
|
161
163
|
});
|
|
162
|
-
(0, _8_9_1.test)('Connector Secrets User Flow', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, }) => {
|
|
164
|
+
(0, _8_9_1.test)('Connector Secrets User Flow - GCP', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
163
165
|
_8_9_1.test.slow();
|
|
164
166
|
const processName = 'REST_Connector_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
165
167
|
await _8_9_1.test.step('Navigate to Web Modeler', async () => {
|
|
@@ -167,10 +169,9 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
167
169
|
timeout: 20000,
|
|
168
170
|
});
|
|
169
171
|
await appsPage.clickCamundaApps();
|
|
170
|
-
await (0, test_1.expect)(appsPage.modelerLink).toBeVisible({ timeout: 20000 });
|
|
171
172
|
await appsPage.clickModeler();
|
|
172
173
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
173
|
-
timeout:
|
|
174
|
+
timeout: 30000,
|
|
174
175
|
});
|
|
175
176
|
});
|
|
176
177
|
await _8_9_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
@@ -180,21 +181,77 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
180
181
|
});
|
|
181
182
|
await _8_9_1.test.step('Create BPMN Diagram with REST Connector using secrets and Start Process Instance', async () => {
|
|
182
183
|
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'secrets.endpoint_url', 'basic', '{message:response.body.message}', 'result', { username: 'secrets.username', password: 'secrets.password' });
|
|
183
|
-
await modelerCreatePage.runProcessInstance(
|
|
184
|
-
await (0,
|
|
184
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
185
|
+
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible();
|
|
185
186
|
});
|
|
186
187
|
await _8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
187
|
-
await
|
|
188
|
-
|
|
188
|
+
await appsPage.clickCamundaApps();
|
|
189
|
+
await appsPage.clickOperate(defaultClusterName);
|
|
190
|
+
await (0, test_1.expect)(operateHomePage.operateBanner).toBeVisible();
|
|
191
|
+
await operateHomePage.clickProcessesTab();
|
|
192
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
193
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
194
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.completedIcon, {
|
|
195
|
+
postAction: async () => {
|
|
196
|
+
await page.reload();
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.variablesList, {
|
|
200
|
+
postAction: async () => {
|
|
201
|
+
await page.reload();
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.messageVariable.getByText('"Message from Mock!"'), {
|
|
205
|
+
postAction: async () => {
|
|
206
|
+
await page.reload();
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
(0, _8_9_1.test)('Connector Secrets User Flow - AWS', async ({ page, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
212
|
+
_8_9_1.test.slow();
|
|
213
|
+
const processName = 'REST_Connector_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
214
|
+
await _8_9_1.test.step('Navigate to Web Modeler', async () => {
|
|
215
|
+
await appsPage.clickCamundaApps();
|
|
216
|
+
await appsPage.clickModeler();
|
|
217
|
+
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
218
|
+
timeout: 30000,
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
await _8_9_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
222
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
223
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
224
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
225
|
+
});
|
|
226
|
+
await _8_9_1.test.step('Create BPMN Diagram with REST Connector using secrets and Start Process Instance', async () => {
|
|
227
|
+
await (0, UtilitiesPage_2.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'secrets.endpoint_url', 'basic', '{message:response.body.message}', 'result', { username: 'secrets.username', password: 'secrets.password' });
|
|
228
|
+
await modelerCreatePage.runProcessInstance(awsCluster);
|
|
229
|
+
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible();
|
|
230
|
+
});
|
|
231
|
+
await _8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
232
|
+
await appsPage.clickCamundaApps();
|
|
233
|
+
await appsPage.clickOperate(awsCluster);
|
|
234
|
+
await (0, test_1.expect)(operateHomePage.operateBanner).toBeVisible({
|
|
235
|
+
timeout: 30000,
|
|
236
|
+
});
|
|
237
|
+
await operateHomePage.clickProcessesTab();
|
|
238
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
239
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
240
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.completedIcon, {
|
|
241
|
+
postAction: async () => {
|
|
242
|
+
await page.reload();
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.variablesList, {
|
|
246
|
+
postAction: async () => {
|
|
247
|
+
await page.reload();
|
|
248
|
+
},
|
|
249
|
+
});
|
|
250
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.messageVariable.getByText('"Message from Mock!"'), {
|
|
251
|
+
postAction: async () => {
|
|
252
|
+
await page.reload();
|
|
253
|
+
},
|
|
189
254
|
});
|
|
190
|
-
await modelerCreatePage.clickViewProcessInstanceLink();
|
|
191
|
-
const operateTab = await page.waitForEvent('popup', { timeout: 60000 });
|
|
192
|
-
const operateTabProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(operateTab);
|
|
193
|
-
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTab, operateTabProcessInstancePage.completedIcon, 'Completed icon');
|
|
194
|
-
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTab, operateTab.getByTestId('variables-list'), 'Variable list', 60000);
|
|
195
|
-
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTab, operateTab
|
|
196
|
-
.getByTestId('variable-message')
|
|
197
|
-
.getByText('"Message from Mock!"'), 'Connector response message', 60000);
|
|
198
255
|
});
|
|
199
256
|
});
|
|
200
257
|
(0, _8_9_1.test)('Marketplace Connector User Flow', async ({ page, homePage, appsPage, modelerHomePage, modelerCreatePage, connectorMarketplacePage, connectorSettingsPage, }) => {
|
|
@@ -245,7 +302,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
245
302
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
246
303
|
await modelerCreatePage.clickCanvas();
|
|
247
304
|
await modelerCreatePage.assertThreeElementsVisible();
|
|
248
|
-
await modelerCreatePage.runProcessInstance(
|
|
305
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
249
306
|
});
|
|
250
307
|
await _8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
251
308
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -299,7 +356,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
299
356
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
300
357
|
await (0, sleep_1.sleep)(10000);
|
|
301
358
|
await page.reload();
|
|
302
|
-
await modelerCreatePage.runProcessInstance(
|
|
359
|
+
await modelerCreatePage.runProcessInstance(defaultClusterName);
|
|
303
360
|
});
|
|
304
361
|
await _8_9_1.test.step('Assert Webhook Is Active In Cluster And Make Authorization Request', async () => {
|
|
305
362
|
await modelerCreatePage.clickSecondElement();
|
|
@@ -319,7 +376,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
319
376
|
await _8_9_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
|
|
320
377
|
await (0, sleep_1.sleep)(90000);
|
|
321
378
|
await appsPage.clickCamundaApps();
|
|
322
|
-
await appsPage.clickOperate(
|
|
379
|
+
await appsPage.clickOperate(defaultClusterName);
|
|
323
380
|
await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({ timeout: 120000 });
|
|
324
381
|
await operateHomePage.clickProcessesTab();
|
|
325
382
|
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
@@ -335,7 +392,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
335
392
|
let credentials = {};
|
|
336
393
|
await _8_9_1.test.step('Create Zeebe API Client', async () => {
|
|
337
394
|
await homePage.clickClusters();
|
|
338
|
-
await clusterPage.clickClusterLink(
|
|
395
|
+
await clusterPage.clickClusterLink(defaultClusterName);
|
|
339
396
|
await clusterDetailsPage.clickAPITab();
|
|
340
397
|
credentials = await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName, false);
|
|
341
398
|
await clusterDetailsPage.clickCloseModalButton();
|
|
@@ -348,7 +405,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
348
405
|
});
|
|
349
406
|
});
|
|
350
407
|
await _8_9_1.test.step('Open Cross Component Test Project and Create a REST Connector Document Handling Flow', async () => {
|
|
351
|
-
await (0, UtilitiesPage_3.modelAndRunConnectorsDocHandlingDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage,
|
|
408
|
+
await (0, UtilitiesPage_3.modelAndRunConnectorsDocHandlingDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, defaultClusterName, `"${credentials.zeebeUrl}"`, `"${credentials.zeebeClientId}"`, `"${credentials.zeebeClientSecret}"`);
|
|
352
409
|
});
|
|
353
410
|
await _8_9_1.test.step('View Process Instance in Operate, assert it completes and assert variable values are correct', async () => {
|
|
354
411
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -387,7 +444,7 @@ _8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
387
444
|
});
|
|
388
445
|
});
|
|
389
446
|
await _8_9_1.test.step('Open Cross Component Test Project and Create a REST Connector Document Handling Flow', async () => {
|
|
390
|
-
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage,
|
|
447
|
+
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, defaultClusterName, connectorTemplatePage);
|
|
391
448
|
});
|
|
392
449
|
await _8_9_1.test.step('View Process Instance in Operate, assert it completes and assert variable values are correct', async () => {
|
|
393
450
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
@@ -6,6 +6,7 @@ const _setup_1 = require("../../test-setup.js");
|
|
|
6
6
|
const UtilitiesPage_1 = require("../../pages/8.9/UtilitiesPage");
|
|
7
7
|
const randomName_1 = require("../../utils/randomName");
|
|
8
8
|
const fileUpload_1 = require("../../utils/fileUpload");
|
|
9
|
+
const connectorSecrets_1 = require("../../utils/connectorSecrets");
|
|
9
10
|
let idpApplicationName;
|
|
10
11
|
let idpDocumentExtractionTemplateName;
|
|
11
12
|
const unstructuredTestCases = [
|
|
@@ -50,37 +51,43 @@ const structuredTestCases = [
|
|
|
50
51
|
_8_9_1.test.describe.configure({ mode: 'parallel' });
|
|
51
52
|
_8_9_1.test.describe('IDP User Flow Tests', () => {
|
|
52
53
|
const clusterName = 'Test Cluster';
|
|
53
|
-
_8_9_1.test.beforeEach(async ({ page, loginPage, homePage, appsPage, modelerHomePage }, testInfo) => {
|
|
54
|
-
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 9000);
|
|
55
|
-
await _8_9_1.test.step('Navigate to Web Modeler', async () => {
|
|
56
|
-
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
57
|
-
timeout: 120000,
|
|
58
|
-
});
|
|
59
|
-
await appsPage.clickCamundaApps();
|
|
60
|
-
await appsPage.clickModeler();
|
|
61
|
-
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
62
|
-
timeout: 120000,
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
await _8_9_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
66
|
-
await modelerHomePage.clickMessageBanner();
|
|
67
|
-
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
68
|
-
});
|
|
69
|
-
await _8_9_1.test.step('Add an IDP application to the project', async () => {
|
|
70
|
-
await modelerHomePage.clickDiagramTypeDropdown();
|
|
71
|
-
await modelerHomePage.clickIdpApplicationTemplateOption();
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
54
|
_8_9_1.test.afterEach(async ({ page }, testInfo) => {
|
|
75
55
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
76
56
|
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
77
57
|
});
|
|
58
|
+
_8_9_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
59
|
+
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, (testInfo.workerIndex + 1) * 1000);
|
|
60
|
+
});
|
|
78
61
|
_8_9_1.test.describe('Unstructured Extraction', () => {
|
|
79
62
|
for (const params of unstructuredTestCases) {
|
|
80
|
-
(0, _8_9_1.test)(`${params.provider} unstructured (${params.model}) - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, }) => {
|
|
63
|
+
(0, _8_9_1.test)(`${params.provider} unstructured (${params.model}) - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
81
64
|
_8_9_1.test.slow();
|
|
82
65
|
idpApplicationName = await (0, randomName_1.randomNameAgregator)(`${params.provider} unstructured` + ' - IDP_Application_Name');
|
|
83
66
|
idpDocumentExtractionTemplateName = await (0, randomName_1.randomNameAgregator)(`${params.provider} unstructured` + ' - IDP_Extraction_Template_Name');
|
|
67
|
+
await _8_9_1.test.step('Navigate to Connectors Secrets', async () => {
|
|
68
|
+
await homePage.clickClusters();
|
|
69
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
70
|
+
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
71
|
+
await clusterSecretsPage.assertSecretsOrCreate(clusterName, connectorSecrets_1.allConnectorSecrets[params.provider]);
|
|
72
|
+
});
|
|
73
|
+
await _8_9_1.test.step('Navigate to Web Modeler', async () => {
|
|
74
|
+
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
75
|
+
timeout: 120000,
|
|
76
|
+
});
|
|
77
|
+
await appsPage.clickCamundaApps();
|
|
78
|
+
await appsPage.clickModeler();
|
|
79
|
+
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
80
|
+
timeout: 120000,
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
await _8_9_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
84
|
+
await modelerHomePage.clickMessageBanner();
|
|
85
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
86
|
+
});
|
|
87
|
+
await _8_9_1.test.step('Add an IDP application to the project', async () => {
|
|
88
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
89
|
+
await modelerHomePage.clickIdpApplicationTemplateOption();
|
|
90
|
+
});
|
|
84
91
|
await _8_9_1.test.step('Creates a document extraction template', async () => {
|
|
85
92
|
await modelerHomePage.enterIdpApplicationName(idpApplicationName);
|
|
86
93
|
await modelerHomePage.selectCluster(clusterName);
|
|
@@ -125,10 +132,34 @@ _8_9_1.test.describe('IDP User Flow Tests', () => {
|
|
|
125
132
|
});
|
|
126
133
|
_8_9_1.test.describe('Structured Extraction', () => {
|
|
127
134
|
for (const params of structuredTestCases) {
|
|
128
|
-
(0, _8_9_1.test)(`${params.provider} structured - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, }) => {
|
|
135
|
+
(0, _8_9_1.test)(`${params.provider} structured - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
129
136
|
_8_9_1.test.slow();
|
|
130
137
|
idpApplicationName = await (0, randomName_1.randomNameAgregator)(`${params.provider} structured` + ' - IDP_Application_Name');
|
|
131
138
|
idpDocumentExtractionTemplateName = await (0, randomName_1.randomNameAgregator)(`${params.provider} structured` + ' - IDP_Extraction_Template_Name');
|
|
139
|
+
await _8_9_1.test.step('Navigate to Connectors Secrets', async () => {
|
|
140
|
+
await homePage.clickClusters();
|
|
141
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
142
|
+
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
143
|
+
await clusterSecretsPage.assertSecretsOrCreate(clusterName, connectorSecrets_1.allConnectorSecrets[params.provider]);
|
|
144
|
+
});
|
|
145
|
+
await _8_9_1.test.step('Navigate to Web Modeler', async () => {
|
|
146
|
+
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
147
|
+
timeout: 120000,
|
|
148
|
+
});
|
|
149
|
+
await appsPage.clickCamundaApps();
|
|
150
|
+
await appsPage.clickModeler();
|
|
151
|
+
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
152
|
+
timeout: 120000,
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
await _8_9_1.test.step('Navigate to Cross Component Test Project', async () => {
|
|
156
|
+
await modelerHomePage.clickMessageBanner();
|
|
157
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
158
|
+
});
|
|
159
|
+
await _8_9_1.test.step('Add an IDP application to the project', async () => {
|
|
160
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
161
|
+
await modelerHomePage.clickIdpApplicationTemplateOption();
|
|
162
|
+
});
|
|
132
163
|
await _8_9_1.test.step('Creates a document extraction template', async () => {
|
|
133
164
|
await modelerHomePage.enterIdpApplicationName(idpApplicationName);
|
|
134
165
|
await modelerHomePage.selectCluster(clusterName);
|
|
@@ -4,113 +4,7 @@ const test_1 = require("@playwright/test");
|
|
|
4
4
|
const _8_9_1 = require("../../fixtures/8.9");
|
|
5
5
|
const _setup_1 = require("../../test-setup.js");
|
|
6
6
|
const sleep_1 = require("../../utils/sleep");
|
|
7
|
-
const
|
|
8
|
-
{
|
|
9
|
-
name: 'endpoint_url',
|
|
10
|
-
value: 'https://camunda.proxy.beeceptor.com/pre-prod/basic-auth-test',
|
|
11
|
-
},
|
|
12
|
-
{ name: 'username', value: 'username' },
|
|
13
|
-
{ name: 'password', value: 'password' },
|
|
14
|
-
];
|
|
15
|
-
const awsSecretsValues = [
|
|
16
|
-
{ name: 'IDP_AWS_REGION', value: process.env.IDP_AWS_REGION },
|
|
17
|
-
{ name: 'IDP_AWS_BUCKET_NAME', value: process.env.IDP_AWS_BUCKET_NAME },
|
|
18
|
-
{ name: 'IDP_AWS_SECRETKEY', value: process.env.IDP_AWS_SECRETKEY },
|
|
19
|
-
{ name: 'IDP_AWS_ACCESSKEY', value: process.env.IDP_AWS_ACCESSKEY },
|
|
20
|
-
];
|
|
21
|
-
const openAiSecretsValues = [
|
|
22
|
-
{ name: 'OPENAI_API_KEY', value: process.env.OPENAI_API_KEY },
|
|
23
|
-
{
|
|
24
|
-
name: 'DB_VECTOR_OPENAI_API_KEY',
|
|
25
|
-
value: process.env.DB_VECTOR_OPENAI_API_KEY,
|
|
26
|
-
},
|
|
27
|
-
];
|
|
28
|
-
const gcpSecretsValues = [
|
|
29
|
-
{
|
|
30
|
-
name: 'IDP_GCP_SERVICE_ACCOUNT',
|
|
31
|
-
value: process.env.IDP_GCP_SERVICE_ACCOUNT,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: 'IDP_GCP_VERTEX_BUCKET_NAME',
|
|
35
|
-
value: process.env.IDP_GCP_VERTEX_BUCKET_NAME,
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'IDP_GCP_VERTEX_PROJECT_ID',
|
|
39
|
-
value: process.env.IDP_GCP_VERTEX_PROJECT_ID,
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'IDP_GCP_DOCUMENT_AI_PROJECT_ID',
|
|
43
|
-
value: process.env.IDP_GCP_DOCUMENT_AI_PROJECT_ID,
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'IDP_GCP_DOCUMENT_AI_PROCESSOR_ID',
|
|
47
|
-
value: process.env.IDP_GCP_DOCUMENT_AI_PROCESSOR_ID,
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'IDP_GCP_DOCUMENT_AI_REGION',
|
|
51
|
-
value: process.env.IDP_GCP_DOCUMENT_AI_REGION,
|
|
52
|
-
},
|
|
53
|
-
{ name: 'IDP_GCP_VERTEX_REGION', value: process.env.IDP_GCP_VERTEX_REGION },
|
|
54
|
-
];
|
|
55
|
-
const azureSecretsValues = [
|
|
56
|
-
{
|
|
57
|
-
name: 'IDP_AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT',
|
|
58
|
-
value: process.env.IDP_AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: 'IDP_AZURE_DOCUMENT_INTELLIGENCE_KEY',
|
|
62
|
-
value: process.env.IDP_AZURE_DOCUMENT_INTELLIGENCE_KEY,
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: 'IDP_AZURE_AI_FOUNDRY_ENDPOINT',
|
|
66
|
-
value: process.env.IDP_AZURE_AI_FOUNDRY_ENDPOINT,
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
name: 'IDP_AZURE_AI_FOUNDRY_KEY',
|
|
70
|
-
value: process.env.IDP_AZURE_AI_FOUNDRY_KEY,
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: 'IDP_AZURE_OPEN_AI_ENDPOINT',
|
|
74
|
-
value: process.env.IDP_AZURE_OPEN_AI_ENDPOINT,
|
|
75
|
-
},
|
|
76
|
-
{ name: 'IDP_AZURE_OPEN_AI_KEY', value: process.env.IDP_AZURE_OPEN_AI_KEY },
|
|
77
|
-
{
|
|
78
|
-
name: 'DB_VECTOR_AZURE_OPENAI_ENDPOINT',
|
|
79
|
-
value: process.env.DB_VECTOR_AZURE_OPENAI_ENDPOINT,
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: 'DB_VECTOR_AZURE_OPENAI_API_KEY',
|
|
83
|
-
value: process.env.DB_VECTOR_AZURE_OPENAI_API_KEY,
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
name: 'DB_VECTOR_MODEL_DEPLOYMENT_NAME',
|
|
87
|
-
value: process.env.DB_VECTOR_MODEL_DEPLOYMENT_NAME,
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: 'DB_VECTOR_AZURE_AI_SEARCH_ENDPOINT',
|
|
91
|
-
value: process.env.DB_VECTOR_AZURE_AI_SEARCH_ENDPOINT,
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
name: 'DB_VECTOR_AZURE_AI_SEARCH_KEY',
|
|
95
|
-
value: process.env.DB_VECTOR_AZURE_AI_SEARCH_KEY,
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
name: 'DB_VECTOR_AZURE_COSMOS_DB_ENDPOINT',
|
|
99
|
-
value: process.env.DB_VECTOR_AZURE_COSMOS_DB_ENDPOINT,
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
name: 'DB_VECTOR_AZURE_COSMOS_DB_KEY',
|
|
103
|
-
value: process.env.DB_VECTOR_AZURE_COSMOS_DB_KEY,
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
name: 'DB_VECTOR_AZURE_COSMOS_DB_DATABASE',
|
|
107
|
-
value: process.env.DB_VECTOR_AZURE_COSMOS_DB_DATABASE,
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
name: 'DB_VECTOR_AZURE_COSMOS_DB_CONTAINER',
|
|
111
|
-
value: process.env.DB_VECTOR_AZURE_COSMOS_DB_CONTAINER,
|
|
112
|
-
},
|
|
113
|
-
];
|
|
7
|
+
const connectorSecrets_1 = require("../../utils/connectorSecrets");
|
|
114
8
|
_8_9_1.test.describe.configure({ mode: 'parallel' });
|
|
115
9
|
_8_9_1.test.describe('Cluster Setup Tests', () => {
|
|
116
10
|
_8_9_1.test.beforeEach(async ({ page, loginPage }) => {
|
|
@@ -149,13 +43,13 @@ _8_9_1.test.describe('Cluster Setup Tests', () => {
|
|
|
149
43
|
await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName);
|
|
150
44
|
await clusterDetailsPage.clickCloseModalButton();
|
|
151
45
|
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
152
|
-
await clusterSecretsPage.createSetOfSecrets(awsSecretsValues);
|
|
153
|
-
await clusterSecretsPage.createSetOfSecrets(openAiSecretsValues);
|
|
154
|
-
await clusterSecretsPage.createSetOfSecrets(gcpSecretsValues);
|
|
155
|
-
await clusterSecretsPage.createSetOfSecrets(azureSecretsValues);
|
|
156
|
-
await clusterSecretsPage.createSetOfSecrets(connectorSecretsValues);
|
|
46
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.awsSecretsValues);
|
|
47
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.openAiSecretsValues);
|
|
48
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.gcpSecretsValues);
|
|
49
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.azureSecretsValues);
|
|
50
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
|
|
157
51
|
});
|
|
158
|
-
(0, _8_9_1.test)('Create AWS Cluster', async ({ homePage, clusterPage, clusterDetailsPage, }) => {
|
|
52
|
+
(0, _8_9_1.test)('Create AWS Cluster', async ({ homePage, clusterPage, clusterDetailsPage, clusterSecretsPage, }) => {
|
|
159
53
|
_8_9_1.test.slow();
|
|
160
54
|
const clusterName = 'AWS Cluster';
|
|
161
55
|
await homePage.clickClusters();
|
|
@@ -163,6 +57,8 @@ _8_9_1.test.describe('Cluster Setup Tests', () => {
|
|
|
163
57
|
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName, 300000);
|
|
164
58
|
await clusterPage.clickClusterLink(clusterName);
|
|
165
59
|
await clusterDetailsPage.assertComponentsHealth();
|
|
60
|
+
await clusterPage.clickConnectorSecretsTab(clusterName);
|
|
61
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
|
|
166
62
|
});
|
|
167
63
|
(0, _8_9_1.test)('Create Project Folder', async ({ homePage, appsPage, modelerHomePage, }) => {
|
|
168
64
|
await _8_9_1.test.step('Navigate to Web Modeler', async () => {
|