Skip to content

Commit 8ae4170

Browse files
authored
Merge pull request #2610 from RedisInsight/e2e/feature/RI-4944_browser_navigation
E2e/feature/ri 4944 browser navigation
2 parents 9d6e8ee + 36b191e commit 8ae4170

File tree

12 files changed

+82
-40
lines changed

12 files changed

+82
-40
lines changed

redisinsight/ui/src/components/database-overview/components/MoreInfoPopover/MoreInfoPopover.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ const MoreInfoPopover = ({ metrics, modules }: IProps) => {
102102
<h4 className={styles.mi_fieldName}>Modules</h4>
103103
{
104104
modules?.map(({ name = '', semanticVersion = '', version = '' }) => (
105-
<div key={name} className={cx(styles.mi_moduleName)}>
105+
<div
106+
key={name}
107+
className={cx(styles.mi_moduleName)}
108+
data-testid={`${truncateText(getModule(name)?.name || DATABASE_LIST_MODULES_TEXT[name] || name, 50)}`}
109+
>
106110
{`${truncateText(getModule(name)?.name || DATABASE_LIST_MODULES_TEXT[name] || name, 50)} `}
107111
{!!(semanticVersion || version) && (
108112
<span className={styles.mi_version}>

tests/e2e/pageObjects/browser-page.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ export class BrowserPage extends InstancePage {
106106
showFilterHistoryBtn = Selector('[data-testid=show-suggestions-btn]');
107107
clearFilterHistoryBtn = Selector('[data-testid=clear-history-btn]');
108108
guideLinksBtn = Selector('[data-testid^=guide-button-]');
109+
backToBrowserBtn = Selector('[data-testid=back-right-panel-btn]');
109110
//CONTAINERS
110111
streamGroupsContainer = Selector('[data-testid=stream-groups-container]');
111112
streamConsumersContainer = Selector('[data-testid=stream-consumers-container]');

tests/e2e/pageObjects/components/overview-panel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export class OverviewPanel {
77
databaseModules = Selector('[data-testid$=module]');
88
overviewTooltipStatTitle = Selector('[data-testid=overview-db-stat-title]');
99
// BUTTONS
10-
myRedisDbIcon = Selector('[data-testid=my-redis-db-icon]');
10+
myRedisDBLink = Selector('[data-testid=my-redis-db-btn]', { timeout: 1000 });
1111
overviewRedisStackLogo = Selector('[data-testid=redis-stack-logo]');
1212
overviewMoreInfo = Selector('[data-testid=overview-more-info-button]');
1313
changeIndexBtn = Selector('[data-testid=change-index-btn]');

tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,19 @@ test('Verify that when user clicks on Close button when bulk delete is completed
185185
await t.expect(browserPage.BulkActions.bulkDeleteCompletedSummary.exists).notOk('Bulk delete completed summary still displayed');
186186
await t.expect(browserPage.BulkActions.bulkDeleteSummary.textContent).contains('Scanned 100% (2/2) and found 1 keys', 'Bulk delete summary is not correct');
187187
});
188+
test
189+
.before(async() => {
190+
await databaseHelper.acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch);
191+
await browserPage.addHashKey(keyNames[0], '100000', Common.generateWord(20), Common.generateWord(20));
192+
})('Verify that user can see the list of keys when click on “Back” button from the bulk actions', async t => {
193+
await t.click(browserPage.bulkActionsButton);
194+
await t.expect(browserPage.backToBrowserBtn.exists).notOk('"< Browser" button displayed for normal screen resolution');
195+
// Minimize the window to check icon
196+
await t.resizeWindow(1200, 900);
197+
await t.expect(browserPage.keyDetailsTable.visible).ok('Bulk actions not opened', { timeout: 1000 });
198+
// Verify that user can see the “Back” button when work with the bulk actions on small resolutions
199+
await t.expect(browserPage.backToBrowserBtn.exists).ok('"< Browser" button not displayed for small screen resolution');
200+
await t.click(browserPage.backToBrowserBtn);
201+
// Verify that key details closed
202+
await t.expect(browserPage.keyDetailsTable.visible).notOk('Bulk actions not closed by clicking on "< Browser" button', { timeout: 1000 });
203+
});
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { DatabaseHelper } from '../../../helpers/database';
2+
import { BrowserPage } from '../../../pageObjects';
3+
import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf';
4+
import { rte } from '../../../helpers/constants';
5+
import { DatabaseAPIRequests } from '../../../helpers/api/api-database';
6+
import { Common } from '../../../helpers/common';
7+
import { APIKeyRequests } from '../../../helpers/api/api-keys';
8+
9+
const browserPage = new BrowserPage();
10+
const databaseHelper = new DatabaseHelper();
11+
const databaseAPIRequests = new DatabaseAPIRequests();
12+
const apiKeyRequests = new APIKeyRequests();
13+
14+
let keyName: string;
15+
16+
fixture `Key Details`
17+
.meta({ type: 'critical_path', rte: rte.standalone })
18+
.page(commonUrl)
19+
.beforeEach(async() => {
20+
await databaseHelper.acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig);
21+
keyName = Common.generateWord(10);
22+
await browserPage.addStringKey(keyName);
23+
})
24+
.afterEach(async() => {
25+
await apiKeyRequests.deleteKeyByNameApi(keyName, ossStandaloneConfig.databaseName);
26+
await databaseAPIRequests.deleteStandaloneDatabaseApi(ossStandaloneConfig);
27+
});
28+
test('Verify that user can see the list of keys when click on “Back” button', async t => {
29+
await t.expect(browserPage.backToBrowserBtn.exists).notOk('"< Browser" button displayed for normal screen resolution');
30+
// Minimize the window to check icon
31+
await t.resizeWindow(1200, 900);
32+
await t.expect(browserPage.keyDetailsTable.visible).ok('Key details not opened', { timeout: 1000 });
33+
// Verify that user can see the “Back” button when work with the values of keys on small resolutions
34+
await t.expect(browserPage.backToBrowserBtn.exists).ok('"< Browser" button not displayed for small screen resolution');
35+
await t.click(browserPage.backToBrowserBtn);
36+
// Verify that key details closed
37+
await t.expect(browserPage.keyDetailsTable.visible).notOk('Key details not closed by clicking on "< Browser" button', { timeout: 1000 });
38+
});

tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ test('Verify that user can delete key in List mode', async t => {
2828
await browserPage.deleteKeyByNameFromList(keyName);
2929
await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyName)).notOk('The Key wasn\'t deleted');
3030
});
31-
3231
test('Verify that user can delete key in Tree view', async t => {
3332
// Add new key
3433
await browserPage.addStringKey(keyName);

tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ test
261261
.after(async() => {
262262
//clear database
263263
await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexNameBigDb}`);
264-
await t.click(browserPage.OverviewPanel.myRedisDbIcon); // go back to database selection page
264+
await t.click(browserPage.OverviewPanel.myRedisDBLink); // go back to database selection page
265265
await myRedisDatabasePage.clickOnDBByName(simpleDbName); // click standalone database
266266
await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexNameSimpleDb}`);
267267
await t.click(browserPage.patternModeBtn);
@@ -290,7 +290,7 @@ test
290290

291291
await browserPage.Cli.sendCommandsInCli(commandsForBigStandalone);
292292

293-
await t.click(browserPage.OverviewPanel.myRedisDbIcon); // go back to database selection page
293+
await t.click(browserPage.OverviewPanel.myRedisDBLink); // go back to database selection page
294294
await myRedisDatabasePage.clickOnDBByName(simpleDbName); // click standalone database
295295

296296
const commandsForStandalone = [
@@ -311,7 +311,7 @@ test
311311

312312
await verifyKeysDisplayedInTheList(keyNames); // verify created keys are visible
313313

314-
await t.click(browserPage.OverviewPanel.myRedisDbIcon); // go back to database selection page
314+
await t.click(browserPage.OverviewPanel.myRedisDBLink); // go back to database selection page
315315
await myRedisDatabasePage.clickOnDBByName(bigDbName); // click database name from ossStandaloneBigConfig.databaseName
316316

317317
await verifyKeysNotDisplayedInTheList(keyNames); // Verify that standandalone database keys are NOT visible

tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Chance } from 'chance';
2+
import { Selector } from 'testcafe';
23
import { DatabaseHelper } from '../../../helpers/database';
34
import { rte } from '../../../helpers/constants';
45
import { Common } from '../../../helpers/common';
@@ -15,6 +16,7 @@ import {
1516
} from '../../../helpers/conf';
1617
import { DatabaseAPIRequests } from '../../../helpers/api/api-database';
1718

19+
1820
const myRedisDatabasePage = new MyRedisDatabasePage();
1921
const browserPage = new BrowserPage();
2022
const chance = new Chance();
@@ -45,35 +47,28 @@ test
4547
await databaseAPIRequests.deleteStandaloneDatabaseApi(ossStandaloneConfig);
4648
await databaseAPIRequests.deleteStandaloneDatabaseApi(ossStandaloneRedisearch);
4749
})('Verify that user can see the list of Modules updated each time when he connects to the database', async t => {
48-
const firstDatabaseModules: string[] = [];
49-
const secondDatabaseModules: string[] = [];
50+
let firstDatabaseModules: string[] = [];
51+
let secondDatabaseModules: string[] = [];
5052
//Remember modules
51-
let countOfModules = await browserPage.modulesButton.count;
53+
await t.click(browserPage.OverviewPanel.overviewMoreInfo);
54+
const moduleIcons = Selector('div').find('[data-testid^=Redi]');
55+
let countOfModules = await moduleIcons.count;
5256
for(let i = 0; i < countOfModules; i++) {
53-
firstDatabaseModules.push(await browserPage.modulesButton.nth(i).getAttribute('data-testid'));
54-
}
55-
//Verify the list of modules in Browser page
56-
for (const module of firstDatabaseModules) {
57-
await t.expect(browserPage.OverviewPanel.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`);
58-
}
59-
//Open the Workbench page and verify modules
60-
await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton);
61-
for (const module of firstDatabaseModules) {
62-
await t.expect(browserPage.OverviewPanel.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`);
57+
firstDatabaseModules.push(await moduleIcons.nth(i).textContent);
6358
}
59+
60+
// Verify that user can be redirected to db list page by clicking on "Databases" link in the top left corner
61+
await t.click(browserPage.OverviewPanel.myRedisDBLink);
6462
//Add database with different modules
65-
await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton);
6663
await databaseAPIRequests.addNewStandaloneDatabaseApi(ossStandaloneRedisearch);
6764
await browserPage.reloadPage();
6865
await myRedisDatabasePage.clickOnDBByName(ossStandaloneRedisearch.databaseName);
69-
countOfModules = await browserPage.modulesButton.count;
66+
await t.click(browserPage.OverviewPanel.overviewMoreInfo);
67+
countOfModules = await moduleIcons.count;
7068
for(let i = 0; i < countOfModules; i++) {
71-
secondDatabaseModules.push(await browserPage.modulesButton.nth(i).getAttribute('data-testid'));
69+
secondDatabaseModules.push(await moduleIcons.nth(i).textContent);
7270
}
7371
//Verify the list of modules
74-
for (const module of secondDatabaseModules) {
75-
await t.expect(browserPage.OverviewPanel.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`);
76-
}
7772
await t.expect(firstDatabaseModules).notEql(secondDatabaseModules, 'The list of Modules updated');
7873
});
7974
test

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,13 @@ test
132132
await Common.checkURLContainsText('browser');
133133

134134
// Verify that user can add SSH tunnel with Private Key
135-
await t.click(browserPage.OverviewPanel.myRedisDbIcon);
135+
await t.click(browserPage.OverviewPanel.myRedisDBLink);
136136
await myRedisDatabasePage.AddRedisDatabase.addStandaloneSSHDatabase(sshDbPrivateKey, sshWithPrivateKey);
137137
await myRedisDatabasePage.clickOnDBByName(sshDbPrivateKey.databaseName);
138138
await Common.checkURLContainsText('browser');
139139

140140
// Verify that user can edit SSH parameters for existing database connections
141-
await t.click(browserPage.OverviewPanel.myRedisDbIcon);
141+
await t.click(browserPage.OverviewPanel.myRedisDBLink);
142142
await myRedisDatabasePage.clickOnEditDBByName(sshDbPrivateKey.databaseName);
143143
await t
144144
.typeText(myRedisDatabasePage.AddRedisDatabase.sshPrivateKeyInput, sshWithPassphrase.sshPrivateKey, { replace: true, paste: true })

tests/e2e/tests/regression/database/redisstack.e2e.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,3 @@ test('Verify that user can see Redis Stack icon in Edit mode near the DB name',
4747
const databaseName = myRedisDatabasePage.redisStackIcon.parent().nextSibling();
4848
await t.expect(databaseName.withAttribute('data-testid', 'edit-alias-btn').exists).ok('Edit button not found');
4949
});
50-
test('Verify that user can see Redis Stack icon and logo in Browser page in Overview.', async t => {
51-
await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName);
52-
await t.expect(browserPage.OverviewPanel.overviewRedisStackLogo.visible).ok('Redis Stack logo not found');
53-
// Open Workbench page
54-
await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton);
55-
await t.expect(browserPage.OverviewPanel.overviewRedisStackLogo.visible).ok('Redis Stack logo not found');
56-
// Check modules inside of the tooltip
57-
await t.hover(browserPage.OverviewPanel.overviewRedisStackLogo);
58-
await t.expect(myRedisDatabasePage.moduleTooltip.visible).ok('Tooltip with modules not found');
59-
await myRedisDatabasePage.checkModulesInTooltip(moduleNameList);
60-
});

0 commit comments

Comments
 (0)