Skip to content

Commit e7a9a83

Browse files
committed
e2e/feature/RI-6268_enchance-form-to-add-database-connections
1 parent 03e2dd3 commit e7a9a83

File tree

14 files changed

+53
-63
lines changed

14 files changed

+53
-63
lines changed

tests/e2e/common-actions/databases-actions.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ export class DatabasesActions {
2424
*/
2525
async importDatabase(fileParameters: ImportDatabaseParameters): Promise<void> {
2626
await t
27-
.click(await myRedisDatabasePage.importDatabasesBtn)
27+
.click(myRedisDatabasePage.AddRedisDatabase.addDatabaseButton)
28+
.click(myRedisDatabasePage.importDatabasesBtn)
2829
.setFilesToUpload(myRedisDatabasePage.importDatabaseInput, [fileParameters.path])
29-
.click(myRedisDatabasePage.submitImportBtn)
30-
.expect(myRedisDatabasePage.importDialogTitle.textContent).eql('Import Results', `Databases from ${fileParameters.type} not imported`);
30+
.click(myRedisDatabasePage.submitChangesButton)
31+
.expect(myRedisDatabasePage.successResultsAccordion.exists).ok(`Databases from ${fileParameters.type} not imported`);
3132
}
3233

3334
/**

tests/e2e/pageObjects/components/myRedisDatabase/add-redis-database.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ export class AddRedisDatabase {
1414
// BUTTONS
1515
addDatabaseButton = Selector('[data-testid^=add-redis-database]');
1616
addRedisDatabaseButton = Selector('[data-testid=btn-submit]');
17-
addDatabaseManually = Selector('[data-testid=add-manual]');
18-
addAutoDiscoverDatabase = Selector('[data-testid=add-auto]');
17+
addDatabaseManually = Selector('[data-testid=add-database_tab_manual]');
18+
addAutoDiscoverDatabase = Selector('[data-testid=add-database_tab_software]');
19+
addCloudDatabaseTab = Selector('[data-testid=add-database_tab_cloud]');
1920
redisClusterType = Selector('[data-test-subj=radio-btn-enterprise-cluster]');
2021
redisCloudProType = Selector('[data-test-subj=radio-btn-cloud-pro]');
2122
redisSentinelType = Selector('[data-test-subj=radio-btn-sentinel]');
@@ -27,9 +28,7 @@ export class AddRedisDatabase {
2728
connectToRedisStackButton = Selector('[aria-label="Connect to database"]');
2829
cloneDatabaseButton = Selector('[data-testid=clone-db-btn]');
2930
sentinelNavigation = Selector('[data-testid=sentinel-nav-group]');
30-
cloneSentinelNavigation = Selector('[data-testid=sentinel-nav-group-clone]');
3131
sentinelDatabaseNavigation = Selector('[data-testid=database-nav-group]');
32-
cloneSentinelDatabaseNavigation = Selector('[data-testid=database-nav-group-clone]');
3332
cancelButton = Selector('[data-testid=btn-cancel]');
3433
showPasswordBtn = Selector('[aria-label^="Show password"]');
3534
testConnectionBtn = Selector('[data-testid=btn-test-connection]');
@@ -60,17 +59,17 @@ export class AddRedisDatabase {
6059
caCertField = Selector('[data-testid=select-ca-cert]', { timeout: 500 });
6160
clientCertField = Selector('[data-testid=select-cert]', { timeout: 500 });
6261
selectCompressor = Selector('[data-testid=select-compressor]', { timeout: 1000 });
63-
useCloudAccount = Selector('[data-testid=use-cloud-account-accordion]');
64-
useCloudKeys = Selector('[data-testid=use-cloud-keys-accordion]');
6562
certificateDropdownList = Selector('div.euiSuperSelect__listbox div');
66-
6763
// CHECKBOXES
6864
useSSHCheckbox = Selector('[data-testid=use-ssh]~div', { timeout: 500 });
6965
dataCompressorCheckbox = Selector('[data-testid=showCompressor] ~ label');
7066
requiresTlsClientCheckbox = Selector('[data-testid=tls-required-checkbox] ~ label');
67+
useCloudAccount = Selector('#cloud-account').parent();
68+
useCloudKeys = Selector('#cloud-api-keys').parent();
7169
// RADIO BUTTONS
7270
sshPasswordRadioBtn = Selector('#password~div', { timeout: 500 });
7371
sshPrivateKeyRadioBtn = Selector('#privateKey~div', { timeout: 500 });
72+
cloudOptionsRadioBtn = Selector('[data-testid=cloud-options]');
7473
// LABELS
7574
dataCompressorLabel = Selector('[data-testid=showCompressor] ~ label', { timeout: 1000 });
7675
aiChatMessage = Selector('[data-testid=ai-chat-message-btn]');
@@ -221,7 +220,7 @@ export class AddRedisDatabase {
221220

222221
await t
223222
.click(this.addDatabaseButton)
224-
.click(this.addAutoDiscoverDatabase);
223+
.click(this.addCloudDatabaseTab);
225224

226225
await t
227226
.typeText(this.accessKeyInput, cloudAPIAccessKey, { replace: true, paste: true })

tests/e2e/pageObjects/my-redis-databases-page.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,20 @@ export class MyRedisDatabasePage extends BaseOverviewPage {
3333
deleteButtonInPopover = Selector('#deletePopover button');
3434
confirmDeleteAllDbButton = Selector('[data-testid=delete-selected-dbs]');
3535
editDatabaseButton = Selector('[data-testid^=edit-instance]');
36-
editAliasButton = Selector('[data-testid=edit-alias-btn]');
36+
popoverHeader = Selector('#formModalHeader');
3737
submitChangesButton = Selector('[data-testid=btn-submit]');
3838
promoButton = Selector('[data-testid=promo-btn]');
3939
sortByDatabaseAlias = Selector('span').withAttribute('title', 'Database Alias');
4040
sortByHostAndPort = Selector('span').withAttribute('title', 'Host:Port');
4141
sortByConnectionType = Selector('span').withAttribute('title', 'Connection Type');
42-
importDatabasesBtn = Selector('[data-testid=import-from-file-btn]');
42+
importDatabasesBtn = Selector('[data-testid=add-database_tab_import]');
43+
retryImportBtn = Selector('[data-testid=btn-retry]');
4344
submitImportBtn = Selector('[data-testid=submit-btn]');
44-
okDialogBtn = Selector('[data-testid=ok-btn]');
4545
removeImportedFileBtn = Selector('[aria-label="Clear selected files"]');
4646
exportBtn = Selector('[data-testid=export-btn]');
4747
exportSelectedDbsBtn = Selector('[data-testid=export-selected-dbs]');
4848
userProfileBtn = Selector('[data-testid=user-profile-btn]');
49+
closeImportBtn = Selector('[data-testid=btn-close]');
4950
//CHECKBOXES
5051
selectAllCheckbox = Selector('[data-test-subj=checkboxSelectAll]');
5152
exportPasswordsCheckbox = Selector('[data-testid=export-passwords]~div', { timeout: 500 });
@@ -74,19 +75,18 @@ export class MyRedisDatabasePage extends BaseOverviewPage {
7475
noResultsFoundMessage = Selector('div').withExactText('No results found');
7576
noResultsFoundText = Selector('div').withExactText('No results matched your search. Try reducing the criteria.');
7677
failedImportMessage = Selector('[data-testid=result-failed]');
77-
importDialogTitle = Selector('[data-testid=import-file-modal-title]');
7878
importResult = Selector('[data-testid^=table-result-]');
7979
userProfileAccountInfo = Selector('[data-testid^=profile-account-]');
8080
portCloudDb = Selector('[class*=column_host]');
8181
// DIALOG
82-
importDbDialog = Selector('[data-testid=import-file-modal]');
8382
successResultsAccordion = Selector('[data-testid^=success-results-]');
8483
partialResultsAccordion = Selector('[data-testid^=partial-results-]');
8584
failedResultsAccordion = Selector('[data-testid^=failed-results-]');
8685
// CONTAINERS
8786
databaseContainer = Selector('.databaseContainer');
8887
connectionTypeTitle = Selector('[data-test-subj=tableHeaderCell_connectionType_2]');
8988
signInAgreement = Selector('[class="euiCheckbox__square"]');
89+
addDatabaseImport = Selector('[data-testid=add-db_import]');
9090

9191
/**
9292
* Click on the database by name

tests/e2e/tests/electron/critical-path/database/clone-databases.e2e.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ test('Verify that user can clone Standalone db', async t => {
3333
// Verify that user can cancel the Clone by clicking the “Cancel” or the “x” button
3434
await t.click(myRedisDatabasePage.AddRedisDatabase.cloneDatabaseButton);
3535
await t.click(myRedisDatabasePage.AddRedisDatabase.cancelButton);
36-
await t.expect(myRedisDatabasePage.editAliasButton.withText('Clone ').exists).notOk('Clone panel is still displayed', { timeout: 2000 });
36+
await t.expect(myRedisDatabasePage.popoverHeader.withText('Clone ').exists).notOk('Clone panel is still displayed', { timeout: 2000 });
3737
await databaseHelper.clickOnEditDatabaseByName(ossStandaloneConfig.databaseName);
3838
await t.click(myRedisDatabasePage.AddRedisDatabase.cloneDatabaseButton);
3939
// Verify that user see the “Add Database Manually” form pre-populated with all the connection data when cloning DB
4040
await t
4141
// Verify that name in the header has the prefix “Clone”
42-
.expect(myRedisDatabasePage.editAliasButton.withText('Clone ').exists).ok('Clone panel is not displayed')
42+
.expect(myRedisDatabasePage.popoverHeader.withText('Clone ').exists).ok('Clone panel is not displayed')
4343
.expect(myRedisDatabasePage.AddRedisDatabase.hostInput.getAttribute('value')).eql(ossStandaloneConfig.host, 'Wrong host value')
4444
.expect(myRedisDatabasePage.AddRedisDatabase.portInput.getAttribute('value')).eql(ossStandaloneConfig.port, 'Wrong port value')
4545
.expect(myRedisDatabasePage.AddRedisDatabase.databaseAliasInput.getAttribute('value')).eql(ossStandaloneConfig.databaseName, 'Wrong host value')

tests/e2e/tests/electron/regression/database/cloud-sso.e2e.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ test('Verify that user can see SSO feature if it is enabled in feature config',
4949
// await t.click(myRedisDatabasePage.Modal.closeModalButton);
5050

5151
await t.click(myRedisDatabasePage.AddRedisDatabase.addDatabaseButton);
52-
await t.click(myRedisDatabasePage.AddRedisDatabase.addAutoDiscoverDatabase);
52+
await t.click(myRedisDatabasePage.AddRedisDatabase.addCloudDatabaseTab);
5353
// Verify that RE Cloud auto-discovery options Use Cloud Account and Use Cloud API Keys are displayed on Welcome screen
5454
await t.expect(myRedisDatabasePage.AddRedisDatabase.useCloudAccount.exists).ok('Use Cloud Account accordion not displayed when SSO feature enabled');
5555
await t.expect(myRedisDatabasePage.AddRedisDatabase.useCloudKeys.exists).ok('Use Cloud Keys accordion not displayed when SSO feature enabled');

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ test
3636
// Verify that user can cancel the Clone by clicking the “Cancel” or the “x” button
3737
await t.click(myRedisDatabasePage.AddRedisDatabase.cloneDatabaseButton);
3838
await t.click(myRedisDatabasePage.AddRedisDatabase.cancelButton);
39-
await t.expect(myRedisDatabasePage.editAliasButton.withText('Clone ').exists).notOk('Clone panel is still displayed', { timeout: 2000 });
39+
await t.expect(myRedisDatabasePage.popoverHeader.withText('Clone ').exists).notOk('Clone panel is still displayed', { timeout: 2000 });
4040
await databaseHelper.clickOnEditDatabaseByName(ossStandaloneConfig.databaseName);
4141
await t.click(myRedisDatabasePage.AddRedisDatabase.cloneDatabaseButton);
4242
// Verify that user see the “Add Database Manually” form pre-populated with all the connection data when cloning DB
4343
await t
4444
// Verify that name in the header has the prefix “Clone”
45-
.expect(myRedisDatabasePage.editAliasButton.withText('Clone ').exists).ok('Clone panel is not displayed')
45+
.expect(myRedisDatabasePage.popoverHeader.withText('Clone ').exists).ok('Clone panel is not displayed')
4646
.expect(myRedisDatabasePage.AddRedisDatabase.hostInput.getAttribute('value')).eql(ossStandaloneConfig.host, 'Wrong host value')
4747
.expect(myRedisDatabasePage.AddRedisDatabase.portInput.getAttribute('value')).eql(ossStandaloneConfig.port, 'Wrong port value')
4848
.expect(myRedisDatabasePage.AddRedisDatabase.databaseAliasInput.getAttribute('value')).eql(ossStandaloneConfig.databaseName, 'Wrong host value')
@@ -75,7 +75,7 @@ test
7575

7676
await t.click(myRedisDatabasePage.AddRedisDatabase.cloneDatabaseButton);
7777
await t
78-
.expect(myRedisDatabasePage.editAliasButton.withText('Clone ').exists).ok('Clone panel is not displayed')
78+
.expect(myRedisDatabasePage.popoverHeader.withText('Clone ').exists).ok('Clone panel is not displayed')
7979
.expect(myRedisDatabasePage.AddRedisDatabase.portInput.getAttribute('value')).eql(ossClusterConfig.ossClusterPort, 'Wrong port value')
8080
.expect(myRedisDatabasePage.AddRedisDatabase.databaseAliasInput.getAttribute('value')).eql(ossClusterConfig.ossClusterDatabaseName, 'Wrong host value');
8181
// Edit Database alias before cloning
@@ -111,16 +111,13 @@ test
111111

112112
// Verify that for Sentinel Host and Port fields are replaced with editable Primary Group Name field
113113
await t
114-
.expect(myRedisDatabasePage.editAliasButton.withText('Clone ').exists).ok('Clone panel is not displayed')
114+
.expect(myRedisDatabasePage.popoverHeader.withText('Clone ').exists).ok('Clone panel is not displayed')
115115
.expect(myRedisDatabasePage.AddRedisDatabase.databaseAliasInput.getAttribute('value')).eql(ossSentinelConfig.masters[1].alias, 'Invalid primary group alias value')
116116
.expect(myRedisDatabasePage.AddRedisDatabase.primaryGroupNameInput.getAttribute('value')).eql(ossSentinelConfig.masters[1].name, 'Invalid primary group name value');
117117
// Validate Databases section
118-
await t
119-
.click(myRedisDatabasePage.AddRedisDatabase.cloneSentinelDatabaseNavigation)
120-
.expect(myRedisDatabasePage.AddRedisDatabase.masterGroupPassword.getAttribute('value')).eql(hiddenPassword, 'Invalid sentinel database password');
118+
await t.expect(myRedisDatabasePage.AddRedisDatabase.masterGroupPassword.getAttribute('value')).eql(hiddenPassword, 'Invalid sentinel database password');
121119
// Validate Sentinel section
122120
await t
123-
.click(myRedisDatabasePage.AddRedisDatabase.cloneSentinelNavigation)
124121
.expect(myRedisDatabasePage.AddRedisDatabase.portInput.getAttribute('value')).eql(ossSentinelConfig.sentinelPort, 'Invalid sentinel port')
125122
.expect(myRedisDatabasePage.AddRedisDatabase.passwordInput.getAttribute('value')).eql(hiddenPassword, 'Invalid sentinel password');
126123
// Clone Sentinel Primary Group

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ test
7979
await databasesActions.importDatabase(exportedData);
8080
await t.expect(myRedisDatabasePage.successResultsAccordion.find(myRedisDatabasePage.cssNumberOfDbs).textContent)
8181
.contains(`${exportedData.successNumber}`, 'Not correct successfully imported number');
82-
await t.click(myRedisDatabasePage.okDialogBtn);
82+
await t.click(myRedisDatabasePage.closeImportBtn);
8383
// Verify that user can import exported file with all datatypes and certificates
8484
await databasesActions.verifyDatabasesDisplayed(exportedData.dbImportedNames);
8585

@@ -124,7 +124,7 @@ test
124124
.wait(2000);
125125

126126
foundExportedFiles = await databasesActions.findFilesByFileStarts(fileDownloadPath, 'RedisInsight_connections_');
127-
const parsedExportedJson = await databasesActions.parseDbJsonByPath(joinPath(fileDownloadPath, foundExportedFiles[0]));
127+
const parsedExportedJson = databasesActions.parseDbJsonByPath(joinPath(fileDownloadPath, foundExportedFiles[0]));
128128
// Verify that user can export databases without database passwords and client key when “Export passwords” control not selected
129129
for (const db of parsedExportedJson) {
130130
await t.expect(db.hasOwnProperty('password')).eql(false, 'Databases exported with passwords');

0 commit comments

Comments
 (0)