Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions tests/e2e/common-actions/memory-efficiency-actions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import {t} from 'testcafe';
import { MemoryEfficiencyPage } from '../pageObjects';

const memoryEfficiencyPage = new MemoryEfficiencyPage();
export class MemoryEfficiencyActions {
/*
vote for very useful and verify others are disabled
*/
async voteForVeryUsefulAndVerifyDisabled(): Promise<void> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just need a description for each method here
like:
/**
* Check that voted very useful is disabled
*/

await t.click(memoryEfficiencyPage.veryUsefulVoteBtn);
await this.verifyVoteDisabled();
}
/*
vote for useful and verify others are disabled
*/
async voteForUsefulAndVerifyDisabled(): Promise<void> {
await t.click(memoryEfficiencyPage.usefulVoteBtn);
await this.verifyVoteDisabled();
}
/*
vote for not useful and verify others are disabled
*/
async voteForNotUsefulAndVerifyDisabled(): Promise<void> {
await t.click(memoryEfficiencyPage.notUsefulVoteBtn);
await this.verifyVoteDisabled();
}
async verifyVoteDisabled(): Promise<void>{
// Verify that user can rate recommendations with one of 3 existing types at the same time
await t.expect(memoryEfficiencyPage.veryUsefulVoteBtn
.hasAttribute('disabled')).ok('very useful vote button is not disabled');
await t.expect(memoryEfficiencyPage.usefulVoteBtn
.hasAttribute('disabled')).ok('useful vote button is not disabled');
await t.expect(memoryEfficiencyPage.notUsefulVoteBtn
.hasAttribute('disabled')).ok('not useful vote button is not disabled');
}
}
6 changes: 5 additions & 1 deletion tests/e2e/pageObjects/memory-efficiency-page.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Selector } from 'testcafe';
import {Selector} from 'testcafe';

export class MemoryEfficiencyPage {
//-------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -64,4 +64,8 @@ export class MemoryEfficiencyPage {
avoidLogicalDbAccordion = Selector('[data-testid=avoidLogicalDatabases-accordion]');
convertHashToZipAccordion = Selector('[data-testid=convertHashtableToZiplist-accordion]');
compressHashAccordion = Selector('[data-testid=compressHashFieldNames-accordion]');
veryUsefulVoteBtn = Selector('[data-testid=very-useful-vote-btn]').nth(0);
usefulVoteBtn = Selector('[data-testid=useful-vote-btn]').nth(0);
notUsefulVoteBtn = Selector('[data-testid=not-useful-vote-btn]').nth(0);
recommendationsFeedbackBtn = Selector('[data-testid=recommendation-feedback-btn]');
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { acceptLicenseTermsAndAddDatabaseApi, deleteCustomDatabase } from '../..
import { commonUrl, ossStandaloneBigConfig, ossStandaloneConfig } from '../../../helpers/conf';
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
import { CliActions } from '../../../common-actions/cli-actions';
import { MemoryEfficiencyActions } from '../../../common-actions/memory-efficiency-actions';
import { Common } from '../../../helpers/common';

const memoryEfficiencyPage = new MemoryEfficiencyPage();
Expand All @@ -13,6 +14,7 @@ const common = new Common();
const browserPage = new BrowserPage();
const cliPage = new CliPage();
const addRedisDatabasePage = new AddRedisDatabasePage();
const memoryEfficiencyActions = new MemoryEfficiencyActions();

const externalPageLink = 'https://docs.redis.com/latest/ri/memory-optimizations/';
let keyName = `recomKey-${common.generateWord(10)}`;
Expand Down Expand Up @@ -119,3 +121,27 @@ test
await t.expect(memoryEfficiencyPage.avoidLogicalDbAccordion.exists).ok('Avoid using logical databases recommendation not displayed');
await t.expect(memoryEfficiencyPage.codeChangesLabel.exists).ok('Avoid using logical databases recommendation not have Code Changes label');
});
test
.before(async t => {
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
// Go to Analysis Tools page and create new report and open recommendations
await t.click(myRedisDatabasePage.analysisPageButton);
await t.click(memoryEfficiencyPage.newReportBtn);
await t.click(memoryEfficiencyPage.recommendationsTab);
}).after(async() => {
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
})('Verify that user can upvote recommendations', async t => {
await memoryEfficiencyActions.voteForVeryUsefulAndVerifyDisabled();
// Verify that user can see previous votes when reload the page
await common.reloadPage();
await t.click(memoryEfficiencyPage.recommendationsTab);
await memoryEfficiencyActions.verifyVoteDisabled();

await t.click(memoryEfficiencyPage.newReportBtn);
await memoryEfficiencyActions.voteForUsefulAndVerifyDisabled();

await t.click(memoryEfficiencyPage.newReportBtn);
await memoryEfficiencyActions.voteForNotUsefulAndVerifyDisabled();
// Verify that user can see the popup with link when he votes for “Not useful”
await t.expect(memoryEfficiencyPage.recommendationsFeedbackBtn.visible).ok('popup did not appear after voting for not useful');
});