Skip to content

Commit 3ab06f4

Browse files
authored
Merge pull request #4281 from RedisInsight/e2e/feature/RI-6451
E2e/feature/ri 6451
2 parents 0d860d4 + f9ecc3d commit 3ab06f4

File tree

8 files changed

+37
-7
lines changed

8 files changed

+37
-7
lines changed

.github/workflows/tests-e2e-docker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
fail-fast: false
3838
matrix:
3939
# Number of threads to run tests
40-
parallel: [0, 1, 2, 3, 4, 5]
40+
parallel: [0, 1, 2, 3]
4141

4242
steps:
4343
- uses: actions/checkout@v4
@@ -66,7 +66,7 @@ jobs:
6666
- name: Generate short list of the test files
6767
working-directory: ./tests/e2e
6868
run: |
69-
testFiles=$(find tests/web -type f -name '*.e2e.ts' | sort | awk "NR % 6 == ${{ matrix.parallel }}")
69+
testFiles=$(find tests/web -type f -name '*.e2e.ts' | sort | awk "NR % 4 == ${{ matrix.parallel }}")
7070
7171
echo $testFiles
7272

tests/e2e/pageObjects/dialogs/add-redis-database-dialog.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ export class AddRedisDatabaseDialog {
2828
cancelButton = Selector('[data-testid=btn-cancel]');
2929
testConnectionBtn = Selector('[data-testid=btn-test-connection]');
3030
backButton = Selector('[data-testid=back-btn]');
31+
generalTab = Selector('[data-testid=manual-form-tab-general]');
32+
securityTab = Selector('[data-testid=manual-form-tab-security]');
33+
decompressionTab = Selector('[data-testid=manual-form-tab-decompression]');
3134

3235
// TEXT INPUTS (also referred to as 'Text fields')
3336
disabledDatabaseInfo = Selector('[class=euiListGroupItem__label]');
@@ -103,7 +106,6 @@ export class AddRedisDatabaseDialog {
103106
* @param index the logical index of database
104107
*/
105108
async addLogicalRedisDatabase(parameters: AddNewDatabaseParameters, index: string): Promise<void> {
106-
107109
await t
108110
.click(this.addDatabaseButton)
109111
.click(this.customSettingsButton);
@@ -147,6 +149,7 @@ export class AddRedisDatabaseDialog {
147149
await t.typeText(this.passwordInput, databaseParameters.databasePassword, { replace: true, paste: true });
148150
}
149151
// Select SSH Tunnel checkbox
152+
await t.click(this.securityTab);
150153
await t.click(this.useSSHCheckbox);
151154
// Enter SSH fields
152155
await t
@@ -250,10 +253,10 @@ export class AddRedisDatabaseDialog {
250253
* @param compressor - compressor value
251254
*/
252255
async setCompressorValue(compressor: string): Promise<void> {
253-
254256
if(!await this.selectCompressor.exists) {
255257
await t.click(this.dataCompressorLabel);
256258
}
259+
257260
await t.click(this.selectCompressor);
258261
await t.click(Selector(`[id="${compressor}"]`));
259262
}
@@ -264,7 +267,7 @@ export class AddRedisDatabaseDialog {
264267
* @param name - name of the certificate
265268
*/
266269
async removeCertificateButton(certificate: TlsCertificates, name: string): Promise<void> {
267-
270+
await t.click(this.securityTab);
268271
const row = Selector('button')
269272
.find('div')
270273
.withText(name);

tests/e2e/tests/electron/critical-path/database/add-ssh-db.e2e.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ test
7373
await t
7474
.click(myRedisDatabasePage.AddRedisDatabaseDialog.addDatabaseButton)
7575
.click(myRedisDatabasePage.AddRedisDatabaseDialog.customSettingsButton)
76+
.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab)
7677
.click(myRedisDatabasePage.AddRedisDatabaseDialog.useSSHCheckbox)
7778
.click(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyRadioBtn)
7879
.hover(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton);
@@ -100,19 +101,22 @@ test
100101
// Verify that user can edit SSH parameters for existing database connections
101102
await t.click(browserPage.OverviewPanel.myRedisDBLink);
102103
await myRedisDatabasePage.clickOnEditDBByName(sshDbPrivateKey.databaseName);
104+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
103105
await t
104106
.typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput, sshWithPassphrase.sshPrivateKey, { replace: true, paste: true })
105107
.typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPassphraseInput, sshWithPassphrase.sshPassphrase, { replace: true, paste: true });
106108
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton);
107109
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton.exists).notOk('Edit database panel still displayed');
108110
await databaseHelper.clickOnEditDatabaseByName(sshDbPrivateKey.databaseName);
111+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
109112
// Verify that password, passphrase and private key are hidden for SSH option
110113
await t
111114
.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput.textContent).eql(hiddenPass, 'Edited Private key not saved')
112115
.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPassphraseInput.value).eql(hiddenPass, 'Edited Passphrase not saved');
113116

114117
// Verify that user can clone database with SSH tunnel
115118
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cloneDatabaseButton);
119+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.generalTab);
116120
// Edit Database alias before cloning
117121
await t.typeText(myRedisDatabasePage.AddRedisDatabaseDialog.databaseAliasInput, newClonedDatabaseAlias, { replace: true });
118122
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton);

tests/e2e/tests/web/critical-path/database/connecting-to-the-db.e2e.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ test
125125

126126
await t
127127
.click(myRedisDatabasePage.AddRedisDatabaseDialog.addDatabaseButton)
128-
.click(myRedisDatabasePage.AddRedisDatabaseDialog.customSettingsButton);
129-
128+
.click(myRedisDatabasePage.AddRedisDatabaseDialog.customSettingsButton)
129+
.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
130130
await t
131131
.click(myRedisDatabasePage.AddRedisDatabaseDialog.useSSHCheckbox)
132132
.click(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyRadioBtn)
@@ -155,12 +155,14 @@ test
155155
// Verify that user can edit SSH parameters for existing database connections
156156
await t.click(browserPage.OverviewPanel.myRedisDBLink);
157157
await myRedisDatabasePage.clickOnEditDBByName(sshDbPrivateKey.databaseName);
158+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
158159
await t
159160
.typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput, sshWithPassphrase.sshPrivateKey, { replace: true, paste: true })
160161
.typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPassphraseInput, sshWithPassphrase.sshPassphrase, { replace: true, paste: true });
161162
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton);
162163
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton.exists).notOk('Edit database panel still displayed');
163164
await databaseHelper.clickOnEditDatabaseByName(sshDbPrivateKey.databaseName);
165+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
164166
// Verify that password, passphrase and private key are hidden for SSH option
165167
await t
166168
.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput.textContent).eql(hiddenPass, 'Edited Private key not saved')

tests/e2e/tests/web/critical-path/database/export-databases.e2e.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ test
5050
const compressor = 'Brotli';
5151

5252
await databaseHelper.clickOnEditDatabaseByName(ossStandaloneConfig.databaseName);
53+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.decompressionTab);
5354
await myRedisDatabasePage.AddRedisDatabaseDialog.setCompressorValue(compressor);
5455
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton);
5556

@@ -89,11 +90,13 @@ test
8990
await t.expect(modulesDbRedisStackIcon.exists).ok('module icon is displayed');
9091

9192
await databaseHelper.clickOnEditDatabaseByName(databaseNames[1]);
93+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
9294
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).contains('ca', 'CA certificate import incorrect');
9395
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).contains('client', 'Client certificate import incorrect');
9496
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
9597

9698
await databaseHelper.clickOnEditDatabaseByName(ossStandaloneConfig.databaseName);
99+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.decompressionTab);
97100
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.selectCompressor.textContent).eql(compressor, 'Compressor import incorrect');
98101
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
99102
});

tests/e2e/tests/web/critical-path/database/import-databases.e2e.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,28 +164,33 @@ test('Connection import from JSON', async t => {
164164
Verify that user can see the certificate name as the certificate file name
165165
*/
166166
await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmHost+Port+Name+CaCert'));
167+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
167168
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('ca', 'CA certificate import incorrect');
168169
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.exists).notOk('Client certificate was imported');
169170
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
170171

171172
// Verify that user can import database with Client certificate, Client private key
172173
await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmHost+Port+Name+clientCert+privateKey'));
174+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
173175
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('No CA Certificate', 'CA certificate was imported');
174176
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('client', 'Client certificate import incorrect');
175177
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
176178

177179
// Verify that user can import database with all certificates
178180
await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmHost+Port+Name+CaCert+clientCert+privateKey'));
181+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
179182
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('ca', 'CA certificate import incorrect');
180183
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('client', 'Client certificate import incorrect');
181184
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
182185

183186
// Verify that certificate not imported when any certificate field has not been parsed
184187
await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmCaCertInvalidBody'));
188+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
185189
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('No CA Certificate', 'CA certificate was imported');
186190
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.exists).notOk('Client certificate was imported');
187191
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
188192
await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmInvalidClientCert'));
193+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
189194
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('No CA Certificate', 'CA certificate was imported');
190195
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.exists).notOk('Client certificate was imported');
191196
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
@@ -210,34 +215,40 @@ test('Certificates import with/without path', async t => {
210215

211216
// Verify that when user imports a certificate and the same certificate body already exists, the existing certificate (with its name) is applied
212217
await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[0].name);
218+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
213219
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql(rdmListOfCertsDB[0].caCert.name, 'CA certificate import incorrect');
214220
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql(rdmListOfCertsDB[0].clientCert.name, 'Client certificate import incorrect');
215221
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
216222

217223
await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[1].name);
224+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
218225
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql(rdmListOfCertsDB[0].caCert.name, 'CA certificate name with the same body is incorrect');
219226
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql(rdmListOfCertsDB[0].clientCert.name, 'Client certificate name with the same body is incorrect');
220227
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
221228

222229
// Verify that when user imports a certificate and the same certificate name exists but with a different body, the certificate imported with "({incremental_number})_certificate_name" name
223230
await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[2].name);
231+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
224232
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql(`1_${rdmListOfCertsDB[0].caCert.name}`, 'CA certificate name with the same body is incorrect');
225233
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql(`1_${rdmListOfCertsDB[0].clientCert.name}`, 'Client certificate name with the same body is incorrect');
226234
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
227235

228236
// Verify that when user imports a certificate by path and the same certificate body already exists, the existing certificate (with its name) is applied
229237
await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[3].name);
238+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
230239
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('caPath', 'CA certificate import incorrect');
231240
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('clientPath', 'Client certificate import incorrect');
232241
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
233242

234243
await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[4].name);
244+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
235245
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('caPath', 'CA certificate import incorrect');
236246
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('clientPath', 'Client certificate import incorrect');
237247
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
238248

239249
// Verify that when user imports a certificate by path and the same certificate name exists but with a different body, the certificate imported with "({incremental_number})certificate_name" name
240250
await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[5].name);
251+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
241252
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('1_caPath', 'CA certificate import incorrect');
242253
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('1_clientPath', 'Client certificate import incorrect');
243254
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
@@ -262,6 +273,7 @@ test('Import SSH parameters', async t => {
262273

263274
await t.click(myRedisDatabasePage.closeImportBtn);
264275
await databaseHelper.clickOnEditDatabaseByName(racompListOfSSHDB[0].name);
276+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
265277
// Verify that user can import the SSH parameters with Password
266278
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshHostInput.value).eql(racompListOfSSHDB[0].sshHost, 'SSH host import incorrect');
267279
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPortInput.value).eql((racompListOfSSHDB[0].sshPort).toString(), 'SSH port import incorrect');
@@ -271,6 +283,7 @@ test('Import SSH parameters', async t => {
271283
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton);
272284

273285
await databaseHelper.clickOnEditDatabaseByName(racompListOfSSHDB[1].name);
286+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
274287
// Verify that user can import the SSH Private Key both by its value specified in the file and by the file path
275288
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput.textContent).contains(hiddenPassword, 'SSH Private key import incorrect');
276289
// Verify that user can import the SSH parameters with Passcode

tests/e2e/tests/web/regression/database-overview/database-tls-certificates.e2e.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ fixture `tls certificates`
2626
test('Verify that user can remove added certificates', async t => {
2727
await t.click(browserPage.NavigationPanel.myRedisDBButton);
2828
await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName);
29+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
2930
await myRedisDatabasePage.AddRedisDatabaseDialog.removeCertificateButton(TlsCertificates.CA, 'ca');
3031
// remove if other Certificates were added
3132
if( await myRedisDatabasePage.AddRedisDatabaseDialog.getDeleteCertificate(TlsCertificates.CA).exists){
@@ -35,6 +36,7 @@ test('Verify that user can remove added certificates', async t => {
3536
// wait for dbs are displayed
3637
await t.expect(myRedisDatabasePage.dbNameList.count).gt(0);
3738
await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName);
39+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
3840
//verify that ca certificate is deleted
3941
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).contains('No CA Certificate', 'CA certificate was not deleted');
4042
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField);
@@ -47,11 +49,13 @@ test('Verify that user can remove added certificates', async t => {
4749
// wait for dbs are displayed
4850
await t.expect(myRedisDatabasePage.dbNameList.count).gt(0);
4951
await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName);
52+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
5053
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.requiresTlsClientCheckbox);
5154
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).contains('Add new certificate', 'Client certificate was not deleted');
5255
await myRedisDatabasePage.reloadPage();
5356

5457
await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName);
58+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
5559
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.requiresTlsClientCheckbox.checked).notOk('the certificate was not removed');
5660
await myRedisDatabasePage.reloadPage();
5761

tests/e2e/tests/web/regression/url-handling/url-handling.e2e.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ test
5050
];
5151

5252
await t.navigateTo(generateLink(connectUrlParams));
53+
await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab);
5354
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).contains('Add new CA certificate', 'add CA certificate is not shown');
5455
await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).contains('Add new certificate', 'add client certificate is not shown');
5556
await t.hover(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton);

0 commit comments

Comments
 (0)