Skip to content

Commit b11d8f9

Browse files
authored
Merge pull request #1634 from RedisInsight/e2e/feature/RI-3857_Save-key-name-filter-used
E2e/feature/ri 3857 save key name filter used
2 parents 359af5d + 7244c3a commit b11d8f9

File tree

4 files changed

+98
-1
lines changed

4 files changed

+98
-1
lines changed

tests/e2e/pageObjects/browser-page.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export class BrowserPage {
1515
cssKeyBadge = '[data-testid^=badge-]';
1616
cssKeyTtl = '[data-testid^=ttl-]';
1717
cssKeySize = '[data-testid^=size-]';
18+
cssRemoveSuggestionItem = '[data-testid^=remove-suggestion-item-]';
1819
//-------------------------------------------------------------------------------------------
1920
//DECLARATION OF SELECTORS
2021
//*Declare all elements/components of the relevant page.
@@ -104,6 +105,8 @@ export class BrowserPage {
104105
submitTooltipBtn = Selector('[data-testid=submit-tooltip-btn]');
105106
patternModeBtn = Selector('[data-testid=search-mode-pattern-btn]');
106107
redisearchModeBtn = Selector('[data-testid=search-mode-redisearch-btn]');
108+
showFilterHistoryBtn = Selector('[data-testid=show-suggestions-btn]');
109+
clearFilterHistoryBtn = Selector('[data-testid=clear-history-btn]');
107110
//CONTAINERS
108111
streamGroupsContainer = Selector('[data-testid=stream-groups-container]');
109112
streamConsumersContainer = Selector('[data-testid=stream-consumers-container]');
@@ -141,6 +144,8 @@ export class BrowserPage {
141144
cancelIndexCreationBtn = Selector('[data-testid=create-index-cancel-btn]');
142145
confirmIndexCreationBtn = Selector('[data-testid=create-index-btn]');
143146
resizeTrigger = Selector('[data-testid^=resize-trigger-]');
147+
filterHistoryOption = Selector('[data-testid^=suggestion-item-]');
148+
filterHistoryItemText = Selector('[data-testid=suggestion-item-text]');
144149
//TABS
145150
streamTabGroups = Selector('[data-testid=stream-tab-Groups]');
146151
streamTabConsumers = Selector('[data-testid=stream-tab-Consumers]');
@@ -1051,6 +1056,13 @@ export class BrowserPage {
10511056
await t.expect(this.keyListMessage.exists).ok('Database not empty')
10521057
.expect(this.keysSummary.exists).notOk('Total value is displayed for empty database');
10531058
}
1059+
1060+
/**
1061+
* Clear filter on Browser page
1062+
*/
1063+
async clearFilter(): Promise<void> {
1064+
await t.click(this.clearFilterButton);
1065+
}
10541066
}
10551067

10561068
/**
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
2+
import { BrowserPage } from '../../../pageObjects';
3+
import {
4+
commonUrl,
5+
ossStandaloneBigConfig
6+
} from '../../../helpers/conf';
7+
import { KeyTypesTexts, rte } from '../../../helpers/constants';
8+
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
9+
import { Common } from '../../../helpers/common';
10+
11+
const browserPage = new BrowserPage();
12+
const common = new Common();
13+
14+
fixture `Key name filters history`
15+
.meta({ type: 'critical_path', rte: rte.standalone })
16+
.page(commonUrl)
17+
.beforeEach(async() => {
18+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName);
19+
})
20+
.afterEach(async() => {
21+
// Delete database
22+
await deleteStandaloneDatabaseApi(ossStandaloneBigConfig);
23+
});
24+
test('Recent filters history', async t => {
25+
const keysForSearch = ['device', 'mobile'];
26+
27+
await browserPage.selectFilterGroupType(KeyTypesTexts.String);
28+
// Verify that user can not see filters per only key type in the history of results
29+
await t.expect(browserPage.showFilterHistoryBtn.exists).notOk('Filter history button displayed for key type search');
30+
// Search by valid key
31+
await browserPage.searchByKeyName(`${keysForSearch[0]}*`);
32+
await browserPage.clearFilter();
33+
34+
// Verify that user can see the history query is automatically run once selected
35+
await t.click(browserPage.showFilterHistoryBtn);
36+
await t.click(browserPage.filterHistoryOption.nth(0));
37+
for (let i = 0; i < 5; i++) {
38+
// Verify that keys are filtered
39+
await t.expect(browserPage.keyNameInTheList.nth(i).textContent).contains(keysForSearch[0], 'Keys not filtered by key name')
40+
.expect(browserPage.filteringLabel.nth(i).textContent).contains(KeyTypesTexts.String, 'Keys not filtered by key type');
41+
}
42+
43+
// Verify that user do not see duplicate history requests
44+
await browserPage.clearFilter();
45+
await browserPage.selectFilterGroupType(KeyTypesTexts.String);
46+
await browserPage.searchByKeyName(`${keysForSearch[0]}*`);
47+
await t.click(browserPage.showFilterHistoryBtn);
48+
await t.expect(browserPage.filterHistoryItemText.withText(keysForSearch[0]).count).eql(1, 'Filter history requests can be duplicated in list');
49+
50+
// Refresh the page
51+
await common.reloadPage();
52+
// Verify that user can see the list of filters even when reloading page
53+
await t.click(browserPage.showFilterHistoryBtn);
54+
await t.expect(browserPage.filterHistoryItemText.withText(keysForSearch[0]).exists).ok('Filter history requests not saved after reloading page');
55+
56+
// Open Tree view to check also there
57+
await t.click(browserPage.treeViewButton);
58+
// Search by 2nd key name
59+
await browserPage.searchByKeyName(`${keysForSearch[1]}*`);
60+
await t.click(browserPage.showFilterHistoryBtn);
61+
// Verify that user can remove saved filter from list by clicking on "X"
62+
await t.hover(browserPage.filterHistoryItemText.withText(keysForSearch[1]));
63+
await t.click(browserPage.filterHistoryOption.withText(keysForSearch[1]).find(browserPage.cssRemoveSuggestionItem));
64+
await t.expect(browserPage.filterHistoryItemText.withText(keysForSearch[1]).exists).notOk('Filter history request not deleted');
65+
66+
// Verify that user can clear the history of requests
67+
await t.click(browserPage.clearFilterHistoryBtn);
68+
await t.expect(browserPage.showFilterHistoryBtn.exists).notOk('Filter history button displayed for key type search');
69+
});

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ test
9494
await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyNames[2])).ok(`The second valid key ${keyNames[2]} not found`);
9595
await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyNames[1])).notOk(`Invalid key ${keyNames[1]} is displayed after search`);
9696

97+
// Verify that user can use filter history for RediSearch query
98+
await t.click(browserPage.showFilterHistoryBtn);
99+
await t.click(browserPage.filterHistoryOption.withText('Hall School'));
100+
await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyNames[0])).ok(`The key ${keyNames[0]} not found`);
101+
await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyNames[1])).notOk(`Invalid key ${keyNames[1]} is displayed after search`);
102+
97103
// Verify that user can clear the search
98104
await t.click(browserPage.clearFilterButton);
99105
await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyNames[1])).ok(`The key ${keyNames[1]} not found`);

tests/e2e/tests/regression/browser/resize-columns.e2e.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,29 @@ test('Resize of columns in Hash, List, Zset Key details', async t => {
8888
await browserPage.openKeyDetails(keys[0].name);
8989
await t.expect(field.clientWidth).eql(keys[0].fieldWidthEnd, 'Resize context not saved for key when switching between pages');
9090

91+
// Apply filter to save it in filter history
92+
await browserPage.searchByKeyName(`${keys[0].name}*`);
93+
9194
// Verify that resize saved when switching between databases
9295
await t.click(myRedisDatabasePage.myRedisDBButton);
96+
// Go to 2nd database
9397
await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName);
9498
// Verify that resize saved for specific data type
9599
for(const key of keys) {
96100
await browserPage.openKeyDetails(key.name);
97101
await t.expect(field.clientWidth).eql(key.fieldWidthEnd, `Resize context not saved for ${key.type} key when switching between databases`);
98102
}
99103

100-
// Verify that logical db not changed after switching between databases
104+
// Change db index for 2nd database
101105
await databaseOverviewPage.changeDbIndex(1);
102106
await t.click(myRedisDatabasePage.myRedisDBButton);
107+
// Go back to 1st database
103108
await myRedisDatabasePage.clickOnDBByName(databasesForAdding[0].databaseName);
109+
// Verify that user can see the list of filters even when switching between databases
110+
await t.click(browserPage.showFilterHistoryBtn);
111+
await t.expect(browserPage.filterHistoryOption.withText(keys[0].name).exists).ok('Filter history requests not saved after switching between db');
112+
113+
// Verify that logical db not changed after switching between databases
104114
await t.click(myRedisDatabasePage.myRedisDBButton);
105115
await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName);
106116
await databaseOverviewPage.verifyDbIndexSelected(1);

0 commit comments

Comments
 (0)