Skip to content

Commit 0d23c47

Browse files
add tests for time format
1 parent 1fdf29a commit 0d23c47

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed

tests/e2e/pageObjects/settings-page.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@ export class SettingsPage extends BasePage {
2525
commandsInPipelineInput = Selector('[data-testid=pipeline-bunch-input]');
2626
pipelineLink = Selector('[data-testid=pipelining-link]');
2727

28+
//Date and Time Format
29+
selectFormatDropdown = Selector('[data-test-subj=select-datetime]');
30+
selectTimezoneDropdown = Selector('[data-test-subj=select-timezone]');
31+
getDateTimeOption = (option: string): Selector =>
32+
Selector(`[data-test-subj^=date-option-${option}]`);
33+
getZoneOption = (option: string): Selector =>
34+
Selector(`[data-test-subj=zone-option-${option}]`);
35+
dataPreview = Selector('[data-testid=data-preview]');
36+
customRadioButton = Selector('[id=custom]').sibling();
37+
customTextField = Selector('[data-testid=custom-datetime-input]');
38+
saveCustomFormatButton = Selector('[data-testid=datetime-custom-btn]');
39+
2840
/**
2941
* Change Keys to Scan value
3042
* @param value Value for scan
@@ -107,4 +119,26 @@ export class SettingsPage extends BasePage {
107119
await t.click(this.switchAnalyticsOption);
108120
}
109121
}
122+
123+
/**
124+
* Select data time option in Settings
125+
*/
126+
async selectDataFormatDropdown(value: string): Promise<void>{
127+
await t.click(this.selectFormatDropdown);
128+
await t.click(this.getDateTimeOption(value));
129+
}
130+
131+
/**
132+
* Select timezone option in Settings
133+
*/
134+
async selectTimeZoneDropdown(value: string): Promise<void>{
135+
await t.click(this.selectTimezoneDropdown);
136+
await t.click(this.getZoneOption(value));
137+
}
138+
/**
139+
* Enter text in custom field Select timezone option in Settings
140+
*/
141+
async enterTextInCustom(command: string): Promise<void>{
142+
await t.typeText(this.customTextField, command, { replace: true });
143+
}
110144
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import { rte } from '../../../../helpers/constants';
2+
import { BrowserPage, MemoryEfficiencyPage, SettingsPage, WorkbenchPage } from '../../../../pageObjects';
3+
import {
4+
commonUrl, ossClusterConfig
5+
} from '../../../../helpers/conf';
6+
import { DatabaseAPIRequests } from '../../../../helpers/api/api-database';
7+
import { deleteAllKeysFromDB } from '../../../../helpers/keys';
8+
9+
const browserPage = new BrowserPage();
10+
const databaseAPIRequests = new DatabaseAPIRequests();
11+
const workbenchPage = new WorkbenchPage();
12+
const settingsPage = new SettingsPage();
13+
const memoryEfficiencyPage = new MemoryEfficiencyPage();
14+
15+
fixture `Add keys`
16+
.meta({
17+
type: 'regression',
18+
rte: rte.standalone
19+
})
20+
.page(commonUrl)
21+
.beforeEach(async() => {
22+
await databaseAPIRequests.addNewOSSClusterDatabaseApi(ossClusterConfig);
23+
})
24+
.afterEach(async() => {
25+
await deleteAllKeysFromDB(ossClusterConfig.ossClusterPort, ossClusterConfig.ossClusterPort);
26+
await databaseAPIRequests.deleteAllDatabasesApi();
27+
});
28+
test('Verify that user can select date time format', async t => {
29+
const defaultDateRegExp = /^([01]\d|2[0-3]):[0-5]\d:[0-5]\d\.\d{3} \d{1,2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4}$/;
30+
const selectedDateReqExp = /^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[0-2])\.\d{4} ([01]\d|2[0-3]):[0-5]\d:[0-5]\d$/;
31+
const keyName = 'DateTimeTestKey';
32+
const hashField = '1724674140';
33+
34+
const selectorForOption = 'dd\\.MM\\.yyyy';
35+
const selectedOption = 'dd.MM.yyyy HH:mm:ss';
36+
const zoneSelectOption = 'UTC';
37+
38+
await browserPage.addHashKey(keyName, '100000', hashField, hashField);
39+
await browserPage.openKeyDetails(keyName);
40+
await browserPage.selectFormatter('DateTime');
41+
await t.expect(defaultDateRegExp.test(await browserPage.getHashKeyValue())).ok('date is not in default format HH:mm:ss.SSS d MMM yyyy');
42+
43+
await t.click(workbenchPage.NavigationPanel.settingsButton);
44+
await t.click(settingsPage.accordionAppearance);
45+
await settingsPage.selectDataFormatDropdown(selectorForOption);
46+
await t.expect(settingsPage.selectFormatDropdown.textContent).eql(selectedOption, 'option is not selected');
47+
await t.expect(selectedDateReqExp.test(await settingsPage.dataPreview.textContent)).ok(`preview is not valid for ${selectedOption}`);
48+
49+
await t.click(workbenchPage.NavigationPanel.myRedisDBButton);
50+
await t.click(workbenchPage.NavigationPanel.browserButton);
51+
await browserPage.openKeyDetails(keyName);
52+
await t.expect(selectedDateReqExp.test(await browserPage.getHashKeyValue())).ok(`date is not in selected format ${selectedOption}`);
53+
54+
await t.click(workbenchPage.NavigationPanel.settingsButton);
55+
await t.click(settingsPage.accordionAppearance);
56+
await settingsPage.selectTimeZoneDropdown(zoneSelectOption);
57+
await t.expect(settingsPage.selectTimezoneDropdown.textContent).eql(zoneSelectOption, 'option is not selected');
58+
59+
await t.click(browserPage.NavigationPanel.workbenchButton);
60+
await workbenchPage.sendCommandInWorkbench('info');
61+
const dateTime = await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssCommandExecutionDateTime).textContent;
62+
await t.expect(selectedDateReqExp.test(dateTime)).ok('date is not in default format HH:mm:ss.SSS d MMM yyyy');
63+
64+
});
65+
66+
test('Verify that user can select date time format', async t => {
67+
const enteredFormat = 'MMM dd yyyy/ HH.mm.ss';
68+
const enteredDateReqExp = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([0-2]\d|3[01]) \d{4}\/ ([01]\d|2[0-3])\.[0-5]\d\.[0-5]\d$/;
69+
70+
await t.click(workbenchPage.NavigationPanel.settingsButton);
71+
await t.click(settingsPage.accordionAppearance);
72+
await t.click(settingsPage.customRadioButton);
73+
await settingsPage.enterTextInCustom(enteredFormat);
74+
await t.expect(enteredDateReqExp.test(await settingsPage.dataPreview.textContent)).ok(`preview is not valid for ${enteredFormat}`);
75+
await t.click(settingsPage.saveCustomFormatButton);
76+
77+
await t.click(settingsPage.NavigationPanel.analysisPageButton);
78+
await t.click(memoryEfficiencyPage.newReportBtn);
79+
await t.expect(enteredDateReqExp.test(await memoryEfficiencyPage.selectedReport.textContent)).ok(`custom format is not working ${enteredFormat}`);
80+
});

0 commit comments

Comments
 (0)