Skip to content

Commit 1545827

Browse files
authored
Merge pull request #1253 from RedisInsight/e2e/feature/RI-3628_history
[E2E] add e2e for reports history for memory efficiency
2 parents 9500174 + 11b0921 commit 1545827

File tree

4 files changed

+52
-4
lines changed

4 files changed

+52
-4
lines changed

redisinsight/ui/src/pages/databaseAnalysis/components/header/Header.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ const Header = (props: Props) => {
138138
onClick={handleClick}
139139
size="s"
140140
>
141-
New Reports
141+
New Report
142142
</EuiButton>
143143
</EuiFlexItem>
144144
<EuiFlexItem style={{ paddingLeft: 12 }} grow={false}>

tests/e2e/pageObjects/cli-page.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export class CliPage {
8585
* @param keyCommand The command from cli to add key
8686
* @param amount The amount of the keys
8787
*/
88-
async addKeysFromCliWithDelimiter(keyCommand: string, amount: number): Promise<void> {
88+
async addKeysFromCliWithDelimiter(keyCommand: string, amount: number): Promise<void> {
8989
//Open CLI
9090
await t.click(this.cliExpandButton);
9191
//Add keys
@@ -99,7 +99,7 @@ export class CliPage {
9999
* Delete keys from CLI with delimiter
100100
* @param amount The amount of the keys
101101
*/
102-
async deleteKeysFromCliWithDelimiter(amount: number): Promise<void> {
102+
async deleteKeysFromCliWithDelimiter(amount: number): Promise<void> {
103103
//Open CLI
104104
await t.click(this.cliExpandButton);
105105
//Add keys

tests/e2e/pageObjects/memory-efficiency-page.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,23 @@ export class MemoryEfficiencyPage {
1212
expandArrowBtn = Selector('[data-testid=expand-arrow-test]');
1313
sortByKeyPattern = Selector('[data-testid=tableHeaderSortButton]');
1414
showNoExpiryToggle = Selector('[data-testid=show-no-expiry-switch]');
15+
reportItem = Selector('[data-test-subj^=items-report-]');
16+
selectedReport = Selector('[data-testid=select-report]');
1517
// ICONS
1618
reportTooltipIcon = Selector('[data-testid=db-new-reports-icon]');
1719
// TEXT ELEMENTS
1820
noReportsText = Selector('[data-testid=empty-analysis-no-reports]');
1921
noKeysText = Selector('[data-testid=empty-analysis-no-keys]');
22+
scannedPercentageInReport = Selector('[data-testid=analysis-progress]');
23+
scannedKeysInReport = Selector('[data-testid=bulk-delete-summary]');
2024
// TABLE
2125
tableRows = Selector('tr[class*=euiTableRow]');
2226
expandedRow = Selector('#row_test_expansion');
2327
tableKeyPatternHeader = Selector('[data-test-subj*=tableHeaderCell_nsp]');
2428
tableMemoryHeader = Selector('[data-test-subj*=tableHeaderCell_memory]');
2529
tableKeysHeader = Selector('[data-test-subj*=tableHeaderCell_keys]');
26-
// GRAPH
30+
// GRAPH ELEMENTS
31+
donutTotalKeys = Selector('[data-testid=donut-title-keys]');
2732
firstPoint = Selector('[data-testid*=circle-3600]');
2833
thirdPoint = Selector('[data-testid*=circle-43200]');
2934
fourthPoint = Selector('[data-testid*=circle-86400]');

tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Chance } from 'chance';
12
import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, CliPage, WorkbenchPage } from '../../../pageObjects';
23
import { rte } from '../../../helpers/constants';
34
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
@@ -11,13 +12,16 @@ const browserPage = new BrowserPage();
1112
const cliPage = new CliPage();
1213
const workbenchPage = new WorkbenchPage();
1314
const common = new Common();
15+
const chance = new Chance();
1416

1517
const hashKeyName = 'test:Hash1';
1618
const hashValue = 'hashValue11111!';
1719
const streamKeyName = 'test:Stream1';
1820
const streamKeyNameDelimiter = 'test-Stream1';
1921
const keySpaces = ['test:*', 'key1:*', 'key2:*', 'key5:*', 'key5:5', 'test-*', 'key4:*'];
2022
const keysTTL = ['3500', '86300', '2147476121'];
23+
const numberOfGeneratedKeys = 6;
24+
const keyNamesReport = chance.unique(chance.word, numberOfGeneratedKeys);
2125

2226
fixture `Memory Efficiency`
2327
.meta({ type: 'critical_path', rte: rte.standalone })
@@ -207,3 +211,42 @@ test
207211
const noExpiryPointLocation = +((await memoryEfficiencyPage.noExpiryPoint.getAttribute('cy')).slice(0, 2));
208212
await t.expect(noExpiryPointLocation).lt(198, 'Point in No expiry breakdown doesn\'t contain key');
209213
});
214+
test
215+
.before(async t => {
216+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
217+
await t.click(myRedisDatabasePage.analysisPageButton);
218+
})
219+
.after(async() => {
220+
for (let i = 0; i < numberOfGeneratedKeys; i++) {
221+
await cliPage.sendCommandInCli(`del ${keyNamesReport[i]}`);
222+
}
223+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
224+
})('Analysis history', async t => {
225+
const numberOfKeys = [];
226+
const dbSize = (await cliPage.getSuccessCommandResultFromCli('dbsize')).split(' ');
227+
const existedNumberOfKeys = parseInt(dbSize[dbSize.length - 1]);
228+
for (let i = 0; i < 6; i++) {
229+
await cliPage.sendCommandInCli(`set ${keyNamesReport[i]} ${chance.word()}`);
230+
await t.click(memoryEfficiencyPage.newReportBtn);
231+
const compareValue = parseInt(await memoryEfficiencyPage.donutTotalKeys.sibling(1).textContent);
232+
await t.expect(compareValue).eql((existedNumberOfKeys + i + 1), 'New report is not displayed', { timeout: 2000 });
233+
numberOfKeys.push(await memoryEfficiencyPage.donutTotalKeys.sibling(1).textContent);
234+
}
235+
await t.click(memoryEfficiencyPage.selectedReport);
236+
// Verify that user can see up to the 5 most recent previous results per database in the history
237+
await t.expect(memoryEfficiencyPage.reportItem.count).eql(5, 'Number of saved reports is not correct');
238+
// Verify that user can switch between reports and see all data updated in each report
239+
for (let i = 0; i < 5; i++) {
240+
await t.click(memoryEfficiencyPage.reportItem.nth(i));
241+
await t.expect(memoryEfficiencyPage.reportItem.visible).notOk('Report is not switched');
242+
await t.expect(memoryEfficiencyPage.scannedKeysInReport.textContent).contains(`(${numberOfKeys[5 - i]}/${numberOfKeys[5 - i]} keys)`);
243+
const actualNumber = await memoryEfficiencyPage.donutTotalKeys.sibling(1).textContent;
244+
await t.expect(actualNumber).eql(numberOfKeys[5 - i], 'Report content (total keys) is not correct', { timeout: 2000 });
245+
await t.click(memoryEfficiencyPage.selectedReport);
246+
}
247+
// Verify that specific report is saved as context
248+
await t.click(memoryEfficiencyPage.reportItem.nth(3));
249+
await t.click(myRedisDatabasePage.workbenchButton);
250+
await t.click(myRedisDatabasePage.analysisPageButton);
251+
await t.expect(memoryEfficiencyPage.donutTotalKeys.sibling(1).textContent).eql(numberOfKeys[2], 'Context is not saved');
252+
});

0 commit comments

Comments
 (0)