Skip to content

Commit 9643326

Browse files
Merge pull request #2789 from RedisInsight/e2e/feature/RI-5131-5170_tree_view
E2e/feature/ri 5131 5170 tree view
2 parents 26ba14f + b3a8f3a commit 9643326

File tree

6 files changed

+60
-9
lines changed

6 files changed

+60
-9
lines changed

redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ const Node = ({
154154
onKeyDown={handleKeyDown}
155155
tabIndex={0}
156156
onFocus={() => {}}
157-
data-testid={`node-item_${fullName}`}
157+
data-testid={`node-item_${fullName}${isOpen && !isLeaf ? '--expanded' : ''}`}
158158
>
159159
{!isLeaf && <Folder />}
160160
{isLeaf && <Leaf />}

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export class BrowserActions {
8787
* @param name node name
8888
*/
8989
getNodeSelector(name: string): Selector {
90-
return Selector(`[data-testid="node-item_${name}"]`);
90+
return Selector(`[data-testid^="node-item_${name}"]`);
9191
}
9292

9393
/**
@@ -108,7 +108,10 @@ export class BrowserActions {
108108
for (let j = 0; j < innerFoldersNumber; j++) {
109109
const nodeName = this.getNodeName(prevNodeSelector, folders[i][j], delimiter);
110110
const node = this.getNodeSelector(nodeName);
111-
await t.click(node);
111+
const fullTestIdSelector = await node.getAttribute('data-testid');
112+
if (!fullTestIdSelector?.includes('expanded')) {
113+
await t.click(node);
114+
}
112115
prevNodeSelector = nodeName;
113116
}
114117

tests/e2e/docker.web.docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ services:
3333
command: [
3434
'./wait-for-it.sh', 'redis-enterprise:12000', '-s', '-t', '120',
3535
'--',
36-
'npx', 'yarn', 'test:chrome:ci'
36+
'npm', 'run', 'test:chrome:ci'
3737
]
3838

3939
# Built image

tests/e2e/local.web.docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ services:
3333
command: [
3434
'./wait-for-it.sh', 'redis-enterprise:12000', '-s', '-t', '120',
3535
'--',
36-
'npx', 'yarn', 'test:chrome:ci'
36+
'npm', 'run', 'test:chrome:ci'
3737
]
3838

3939
# Redisinsight API + UI build

tests/e2e/pageObjects/components/browser/tree-view.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ export class TreeView {
7171
await t.click(this.treeViewSettingsBtn);
7272
await t.click(this.sortingBtn);
7373
order === 'ASC'
74-
? await t.click(this.sortingASCoption)
75-
: await t.click(this.sortingDESCoption)
74+
? await t.click(this.sortingASCoption)
75+
: await t.click(this.sortingDESCoption);
7676

7777
// Click on save button
7878
await t.click(this.treeViewDelimiterValueSave);
@@ -93,11 +93,11 @@ export class TreeView {
9393
*/
9494
async openTreeFolders(names: string[]): Promise<void> {
9595
let base = `node-item_${names[0]}:`;
96-
await t.click(Selector(`[data-testid="${base}"]`));
96+
await this.clickElementIfNotExpanded(base);
9797
if (names.length > 1) {
9898
for (let i = 1; i < names.length; i++) {
9999
base = `${base }${names[i]}:`;
100-
await t.click(Selector(`[data-testid="${base}"]`));
100+
await this.clickElementIfNotExpanded(base);
101101
}
102102
}
103103
}
@@ -120,4 +120,16 @@ export class TreeView {
120120

121121
return textArray;
122122
}
123+
124+
/**
125+
* click on the folder element if it is not expanded
126+
* @param base the base element
127+
*/
128+
private async clickElementIfNotExpanded(base: string): Promise<void> {
129+
const baseSelector = Selector(`[data-testid^="${base}"]`);
130+
const elementSelector = await baseSelector.getAttribute('data-testid');
131+
if (!elementSelector?.includes('expanded')) {
132+
await t.click(Selector(`[data-testid^="${base}"]`));
133+
}
134+
}
123135
}

tests/e2e/tests/web/regression/tree-view/tree-view.e2e.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import { BrowserPage, WorkbenchPage } from '../../../../pageObjects';
33
import {
44
commonUrl,
55
ossStandaloneBigConfig,
6+
ossStandaloneConfig,
67
ossStandaloneConfigEmpty,
78
ossStandaloneRedisearch
89
} from '../../../../helpers/conf';
910
import { KeyTypesTexts, rte } from '../../../../helpers/constants';
1011
import { DatabaseAPIRequests } from '../../../../helpers/api/api-database';
1112
import { APIKeyRequests } from '../../../../helpers/api/api-keys';
1213
import { Common } from '../../../../helpers/common';
14+
import { verifyKeysDisplayingInTheList } from '../../../../helpers/keys';
1315

1416
const browserPage = new BrowserPage();
1517
const workbenchPage = new WorkbenchPage();
@@ -145,3 +147,37 @@ test
145147
actualItemsArray = await browserPage.TreeView.getAllItemsArray();
146148
await t.expect(actualItemsArray).eql(expectedSortedByDESC);
147149
});
150+
151+
https://redislabs.atlassian.net/browse/RI-5131
152+
test
153+
.before(async() => {
154+
await databaseHelper.acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig);
155+
})
156+
.after(async() => {
157+
await browserPage.Cli.sendCommandInCli('flushdb');
158+
await databaseAPIRequests.deleteStandaloneDatabaseApi(ossStandaloneConfig);
159+
})('Verify that if filtering results has only 1 folder, the folder will be expanded', async t => {
160+
const name = Common.generateWord(10);
161+
const additionalCharacter = Common.generateWord(1);
162+
const keyName1 = Common.generateWord(3);
163+
const keyName2 = Common.generateWord(3);
164+
keyNames = [`${name}${additionalCharacter}:${keyName1}`, `${name}${additionalCharacter}:${keyName2}`, name];
165+
166+
const commands = [
167+
'flushdb',
168+
`HSET ${keyNames[0]} field value`,
169+
`HSET ${keyNames[1]} field value`,
170+
`HSET ${keyNames[2]} field value`
171+
];
172+
await browserPage.Cli.sendCommandsInCli(commands);
173+
await t.click(browserPage.treeViewButton);
174+
175+
// Verify if there is only folder, a user can see keys inside
176+
await browserPage.searchByKeyName(`${name}${additionalCharacter}*`);
177+
await verifyKeysDisplayingInTheList([keyName1, keyName2], true);
178+
179+
// Verify if there are folder and key, a user can't see keys inside the folder
180+
await browserPage.searchByKeyName(`${name}*`);
181+
await verifyKeysDisplayingInTheList([keyName1, keyName2], false);
182+
});
183+

0 commit comments

Comments
 (0)