Skip to content

Commit 4169706

Browse files
committed
finish tests
1 parent 4de1b66 commit 4169706

File tree

2 files changed

+94
-16
lines changed

2 files changed

+94
-16
lines changed

tests/e2e/pageObjects/overview-page.ts

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,56 @@ export class OverviewPage {
1111
//-------------------------------------------------------------------------------------------
1212
//BUTTONS
1313
overviewTab = Selector('[data-testid=analytics-tab-ClusterDetails]');
14+
// COMPONENTS
1415
clusterDetailsUptime = Selector('[data-testid=cluster-details-uptime]');
16+
//TABLE COMPONENTS
1517
tableHeaderCell = Selector('[data-test-subj^=tableHeaderCell]');
1618
primaryNodesTable = Selector('[data-testid=primary-nodes-table]');
1719
tableRow = Selector('tr[class=euiTableRow]');
20+
connectedClientsValue = Selector('[data-testid^=connectedClients-value]');
21+
totalKeysValue = Selector('[data-testid^=totalKeys-value]');
22+
networkInputValue = Selector('[data-testid^=networkInKbps-value]');
23+
networkOutputValue = Selector('[data-testid^=networkOutKbps-value]');
1824

1925
/**
2026
* Get Primary nodes count in table
2127
*/
22-
async getPrimaryNodesCount(): Promise<number> {
28+
async getPrimaryNodesCount(): Promise<number> {
2329
return await this.primaryNodesTable.find(this.cssTableRow).count;
2430
}
31+
32+
/**
33+
* Get total value from all rows in column
34+
* @param column The column name
35+
*/
36+
async getTotalValueByColumnName(column: string): Promise<number> {
37+
let totalNumber = 0;
38+
let columnInSelector = '';
39+
switch (column) {
40+
case 'Commands/s':
41+
columnInSelector = 'opsPerSecond';
42+
break;
43+
case 'Clients':
44+
columnInSelector = 'connectedClients';
45+
break;
46+
case 'Total Keys':
47+
columnInSelector = 'totalKeys';
48+
break;
49+
case 'Network Input':
50+
columnInSelector = 'networkInKbps';
51+
break;
52+
case 'Network Output':
53+
columnInSelector = 'networkOutKbps';
54+
break;
55+
case 'Total Memory':
56+
columnInSelector = 'usedMemory';
57+
break;
58+
default: columnInSelector = '';
59+
}
60+
const rowSelector = Selector(`[data-testid^=${columnInSelector}-value]`);
61+
for (let i = 0; i < await rowSelector.count; i++) {
62+
totalNumber += Number(await rowSelector.nth(i).textContent);
63+
}
64+
return totalNumber;
65+
}
2566
}
Lines changed: 52 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,86 @@
1-
import { MyRedisDatabasePage, BrowserPage, CliPage, OverviewPage } from '../../../pageObjects';
1+
import { Selector } from 'testcafe';
2+
import { MyRedisDatabasePage, CliPage, OverviewPage, WorkbenchPage } from '../../../pageObjects';
23
import { rte } from '../../../helpers/constants';
34
import { acceptLicenseTermsAndAddOSSClusterDatabase } from '../../../helpers/database';
45
import { commonUrl, ossClusterConfig } from '../../../helpers/conf';
56
import { deleteOSSClusterDatabaseApi, getClusterNodesApi } from '../../../helpers/api/api-database';
6-
import { Selector } from 'testcafe';
7+
import { Common } from '../../../helpers/common';
78

89
const overviewPage = new OverviewPage();
910
const myRedisDatabasePage = new MyRedisDatabasePage();
11+
const common = new Common();
12+
const cliPage = new CliPage();
13+
const workbenchPage = new WorkbenchPage();
1014

1115
const headerColumns = {
1216
'Type': 'OSS Cluster',
1317
'Version': '7.0.0',
1418
'User': 'Default'
1519
};
20+
const keyName = common.generateWord(10);
21+
const commandToAddKey = `set ${keyName} test`;
1622

1723
fixture `Overview`
1824
.meta({ type: 'critical_path', rte: rte.ossCluster })
1925
.page(commonUrl)
2026
.beforeEach(async t => {
2127
await acceptLicenseTermsAndAddOSSClusterDatabase(ossClusterConfig, ossClusterConfig.ossClusterDatabaseName);
28+
// Go to Analysis Tools page
2229
await t.click(myRedisDatabasePage.analysisPageButton);
2330
})
2431
.afterEach(async() => {
2532
await deleteOSSClusterDatabaseApi(ossClusterConfig);
2633
});
2734
test('Overview tab header for OSS Cluster', async t => {
28-
const uptime = /[1-9][0-9]\s|[0-9]\smin|[1-9][0-9]\smin/;
35+
const uptime = /[1-9][0-9]\s|[0-9]\smin|[1-9][0-9]\smin|[0-9]\sh/;
2936
// Verify that user see "Overview" tab by default for OSS Cluster
3037
await t.expect(overviewPage.overviewTab.withAttribute('aria-selected', 'true').exists).ok('The Overview tab not opened');
3138
// Verify that user see "Overview" header with OSS Cluster info
3239
for (const key in headerColumns) {
33-
let columnSelector = Selector(`[data-testid=cluster-details-item-${key}]`);
40+
const columnSelector = Selector(`[data-testid=cluster-details-item-${key}]`);
3441
await t.expect(columnSelector.textContent).contains(`${headerColumns[key]}`, `Cluster detail ${key} is incorrect`);
3542
}
3643
// Verify that Uptime is displayed as time in seconds or minutes from start
3744
await t.expect(overviewPage.clusterDetailsUptime.textContent).match(uptime, 'Uptime value is not correct');
3845
});
39-
test('Primary node statistics table displaying', async t => {
40-
// Verify nodes in header column equal to rows
41-
const nodes = await getClusterNodesApi(ossClusterConfig);
42-
const nodesNumberInHeader = parseInt((await overviewPage.tableHeaderCell.nth(0).textContent).match(/\d+/)![0]);
43-
await t.expect(await overviewPage.getPrimaryNodesCount()).eql(nodesNumberInHeader, 'Primary nodes in table are not displayed');
44-
// Verify that all nodes from BE response are displayed in table
45-
for (let node of nodes) {
46-
await t.expect(overviewPage.tableRow.nth(nodes.indexOf(node)).textContent).contains(node, `Node ${node} is not displayed in table`);
47-
}
48-
});
49-
46+
test
47+
.after(async() => {
48+
//Clear database and delete
49+
await cliPage.sendCommandInCli(`DEL ${keyName}`);
50+
await cliPage.sendCommandInCli('FT.DROPINDEX idx:schools DD');
51+
await deleteOSSClusterDatabaseApi(ossClusterConfig);
52+
})('Primary node statistics table displaying', async t => {
53+
// Remember initial table values
54+
const initialValues: number[] = [];
55+
const nodes = (await getClusterNodesApi(ossClusterConfig)).sort();
56+
const columns = ['Commands/s', 'Clients', 'Total Keys', 'Network Input', 'Network Output', 'Total Memory'];
57+
for (const column in columns) {
58+
initialValues.push(await overviewPage.getTotalValueByColumnName(column));
59+
}
60+
const nodesNumberInHeader = parseInt((await overviewPage.tableHeaderCell.nth(0).textContent).match(/\d+/)![0]);
61+
62+
// Add key from CLI
63+
await t.click(cliPage.cliExpandButton);
64+
await t.typeText(cliPage.cliCommandInput, commandToAddKey);
65+
await t.pressKey('enter');
66+
await t.click(cliPage.cliCollapseButton);
67+
// Verify nodes in header column equal to rows
68+
await t.expect(await overviewPage.getPrimaryNodesCount()).eql(nodesNumberInHeader, 'Primary nodes in table are not displayed');
69+
// Verify that all nodes from BE response are displayed in table
70+
for (const node of nodes) {
71+
await t.expect(overviewPage.tableRow.nth(nodes.indexOf(node)).textContent).contains(node, `Node ${node} is not displayed in table`);
72+
}
73+
// Go to Workbench page
74+
await t.click(myRedisDatabasePage.workbenchButton);
75+
//Run Create hash index command to load network and memory
76+
await t.click(workbenchPage.documentButtonInQuickGuides);
77+
await t.click(workbenchPage.internalLinkWorkingWithHashes);
78+
await t.click(workbenchPage.preselectCreateHashIndex);
79+
await t.click(workbenchPage.submitCommandButton);
80+
// Go to Analysis Tools page
81+
await t.click(myRedisDatabasePage.analysisPageButton);
82+
// Verify that values in table are dynamic
83+
for (const column in columns) {
84+
await t.expect(await overviewPage.getTotalValueByColumnName(column)).notEql(initialValues[columns.indexOf(column)], `${column} not dynamic`);
85+
}
86+
});

0 commit comments

Comments
 (0)