Skip to content

Commit 109bcc3

Browse files
committed
Add upvote recommendations test and page object for recommendations
1 parent b5ccb09 commit 109bcc3

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import {Selector, t} from 'testcafe';
2+
3+
export class RecommendationsPage {
4+
//CSS Selectors
5+
veryUsefulVoteBtn = Selector('[data-testid=very-useful-vote-btn]').nth(0);
6+
usefulVoteBtn = Selector('[data-testid=useful-vote-btn]').nth(0);
7+
notUsefulVoteBtn = Selector('[data-testid=not-useful-vote-btn]').nth(0);
8+
recommendationsFeedbackBtn = Selector('[data-testid=recommendation-feedback-btn]');
9+
10+
async voteForVeryUsefulAndVerifyDisabled(): Promise<void> {
11+
await t.click(this.veryUsefulVoteBtn);
12+
await this.verifyVoteDisabled();
13+
}
14+
15+
async voteForUsefulAndVerifyDisabled(): Promise<void> {
16+
await t.click(this.usefulVoteBtn);
17+
await this.verifyVoteDisabled();
18+
}
19+
20+
async voteForNotUsefulAndVerifyDisabled(): Promise<void> {
21+
await t.click(this.notUsefulVoteBtn);
22+
await this.verifyVoteDisabled();
23+
}
24+
25+
async verifyVoteDisabled(): Promise<void>{
26+
// Verify that user can rate recommendations with one of 3 existing types at the same time
27+
await t.expect(this.veryUsefulVoteBtn.nth(0)
28+
.hasAttribute('disabled')).ok();
29+
await t.expect(this.usefulVoteBtn.nth(0)
30+
.hasAttribute('disabled')).ok();
31+
await t.expect(this.notUsefulVoteBtn.nth(0)
32+
.hasAttribute('disabled')).ok();
33+
}
34+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
2+
import { rte } from '../../../helpers/constants';
3+
import {
4+
commonUrl,
5+
ossStandaloneConfig
6+
} from '../../../helpers/conf';
7+
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
8+
import {MemoryEfficiencyPage, MyRedisDatabasePage} from '../../../pageObjects';
9+
import {RecommendationsPage} from '../../../pageObjects/recommendations-page';
10+
import {Common} from '../../../helpers/common';
11+
12+
const myRedisDatabasePage = new MyRedisDatabasePage();
13+
const memoryEfficiencyPage = new MemoryEfficiencyPage();
14+
const recommendationPage = new RecommendationsPage();
15+
const common = new Common();
16+
17+
fixture `Upvote recommendations`
18+
.meta({ type: 'critical_path', rte: rte.standalone })
19+
.page(commonUrl)
20+
.beforeEach(async t => {
21+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
22+
// Go to Analysis Tools page and create new report and open recommendations
23+
await t.click(myRedisDatabasePage.analysisPageButton);
24+
await t.click(memoryEfficiencyPage.newReportBtn);
25+
await t.click(memoryEfficiencyPage.recommendationsTab);
26+
})
27+
.afterEach(async() => {
28+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
29+
});
30+
test.only('Verify that user can upvote recommendations', async t => {
31+
await recommendationPage.voteForVeryUsefulAndVerifyDisabled();
32+
// Verify that user can see previous votes when reload the page
33+
await common.reloadPage();
34+
await t.click(memoryEfficiencyPage.recommendationsTab);
35+
await recommendationPage.verifyVoteDisabled();
36+
37+
await t.click(memoryEfficiencyPage.newReportBtn);
38+
await recommendationPage.voteForUsefulAndVerifyDisabled();
39+
40+
await t.click(memoryEfficiencyPage.newReportBtn);
41+
await recommendationPage.voteForNotUsefulAndVerifyDisabled();
42+
// Verify that user can see the popup with link when he votes for “Not useful”
43+
await t.expect(recommendationPage.recommendationsFeedbackBtn.visible).ok();
44+
});

0 commit comments

Comments
 (0)