Skip to content

Commit 0999ce7

Browse files
authored
Merge pull request #1621 from RedisInsight/e2e/feature/RI-3977_recommendation_voting
E2e/feature/ri 3977 recommendation voting
2 parents b5ccb09 + ccf980c commit 0999ce7

File tree

3 files changed

+67
-1
lines changed

3 files changed

+67
-1
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import {t} from 'testcafe';
2+
import { MemoryEfficiencyPage } from '../pageObjects';
3+
4+
const memoryEfficiencyPage = new MemoryEfficiencyPage();
5+
export class MemoryEfficiencyActions {
6+
/*
7+
vote for very useful and verify others are disabled
8+
*/
9+
async voteForVeryUsefulAndVerifyDisabled(): Promise<void> {
10+
await t.click(memoryEfficiencyPage.veryUsefulVoteBtn);
11+
await this.verifyVoteDisabled();
12+
}
13+
/*
14+
vote for useful and verify others are disabled
15+
*/
16+
async voteForUsefulAndVerifyDisabled(): Promise<void> {
17+
await t.click(memoryEfficiencyPage.usefulVoteBtn);
18+
await this.verifyVoteDisabled();
19+
}
20+
/*
21+
vote for not useful and verify others are disabled
22+
*/
23+
async voteForNotUsefulAndVerifyDisabled(): Promise<void> {
24+
await t.click(memoryEfficiencyPage.notUsefulVoteBtn);
25+
await this.verifyVoteDisabled();
26+
}
27+
async verifyVoteDisabled(): Promise<void>{
28+
// Verify that user can rate recommendations with one of 3 existing types at the same time
29+
await t.expect(memoryEfficiencyPage.veryUsefulVoteBtn
30+
.hasAttribute('disabled')).ok('very useful vote button is not disabled');
31+
await t.expect(memoryEfficiencyPage.usefulVoteBtn
32+
.hasAttribute('disabled')).ok('useful vote button is not disabled');
33+
await t.expect(memoryEfficiencyPage.notUsefulVoteBtn
34+
.hasAttribute('disabled')).ok('not useful vote button is not disabled');
35+
}
36+
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Selector } from 'testcafe';
1+
import {Selector} from 'testcafe';
22

33
export class MemoryEfficiencyPage {
44
//-------------------------------------------------------------------------------------------
@@ -64,4 +64,8 @@ export class MemoryEfficiencyPage {
6464
avoidLogicalDbAccordion = Selector('[data-testid=avoidLogicalDatabases-accordion]');
6565
convertHashToZipAccordion = Selector('[data-testid=convertHashtableToZiplist-accordion]');
6666
compressHashAccordion = Selector('[data-testid=compressHashFieldNames-accordion]');
67+
veryUsefulVoteBtn = Selector('[data-testid=very-useful-vote-btn]').nth(0);
68+
usefulVoteBtn = Selector('[data-testid=useful-vote-btn]').nth(0);
69+
notUsefulVoteBtn = Selector('[data-testid=not-useful-vote-btn]').nth(0);
70+
recommendationsFeedbackBtn = Selector('[data-testid=recommendation-feedback-btn]');
6771
}

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { acceptLicenseTermsAndAddDatabaseApi, deleteCustomDatabase } from '../..
44
import { commonUrl, ossStandaloneBigConfig, ossStandaloneConfig } from '../../../helpers/conf';
55
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
66
import { CliActions } from '../../../common-actions/cli-actions';
7+
import { MemoryEfficiencyActions } from '../../../common-actions/memory-efficiency-actions';
78
import { Common } from '../../../helpers/common';
89

910
const memoryEfficiencyPage = new MemoryEfficiencyPage();
@@ -13,6 +14,7 @@ const common = new Common();
1314
const browserPage = new BrowserPage();
1415
const cliPage = new CliPage();
1516
const addRedisDatabasePage = new AddRedisDatabasePage();
17+
const memoryEfficiencyActions = new MemoryEfficiencyActions();
1618

1719
const externalPageLink = 'https://docs.redis.com/latest/ri/memory-optimizations/';
1820
let keyName = `recomKey-${common.generateWord(10)}`;
@@ -119,3 +121,27 @@ test
119121
await t.expect(memoryEfficiencyPage.avoidLogicalDbAccordion.exists).ok('Avoid using logical databases recommendation not displayed');
120122
await t.expect(memoryEfficiencyPage.codeChangesLabel.exists).ok('Avoid using logical databases recommendation not have Code Changes label');
121123
});
124+
test
125+
.before(async t => {
126+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
127+
// Go to Analysis Tools page and create new report and open recommendations
128+
await t.click(myRedisDatabasePage.analysisPageButton);
129+
await t.click(memoryEfficiencyPage.newReportBtn);
130+
await t.click(memoryEfficiencyPage.recommendationsTab);
131+
}).after(async() => {
132+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
133+
})('Verify that user can upvote recommendations', async t => {
134+
await memoryEfficiencyActions.voteForVeryUsefulAndVerifyDisabled();
135+
// Verify that user can see previous votes when reload the page
136+
await common.reloadPage();
137+
await t.click(memoryEfficiencyPage.recommendationsTab);
138+
await memoryEfficiencyActions.verifyVoteDisabled();
139+
140+
await t.click(memoryEfficiencyPage.newReportBtn);
141+
await memoryEfficiencyActions.voteForUsefulAndVerifyDisabled();
142+
143+
await t.click(memoryEfficiencyPage.newReportBtn);
144+
await memoryEfficiencyActions.voteForNotUsefulAndVerifyDisabled();
145+
// Verify that user can see the popup with link when he votes for “Not useful”
146+
await t.expect(memoryEfficiencyPage.recommendationsFeedbackBtn.visible).ok('popup did not appear after voting for not useful');
147+
});

0 commit comments

Comments
 (0)