Skip to content

Commit dff4099

Browse files
authored
Merge pull request #899 from RedisInsight/e2e/refactoring-api-tests
E2e/refactoring api tests
2 parents 0665f2b + d964b20 commit dff4099

File tree

72 files changed

+372
-289
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+372
-289
lines changed

tests/e2e/desktop.runner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import testcafe from 'testcafe';
1313
.screenshots({
1414
path: 'report/screenshots/',
1515
takeOnFails: true,
16-
pathPattern: '${DATE}_${TIME}/test-${TEST_INDEX}/${USERAGENT}/${FILE_INDEX}.png',
16+
pathPattern: '${USERAGENT}/${DATE}_${TIME}/${FIXTURE}_${TEST_INDEX}.png',
1717
})
1818
.reporter([
1919
'spec',

tests/e2e/desktop.runner.win.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import testcafe from 'testcafe';
1313
.screenshots({
1414
path: 'report/screenshots/',
1515
takeOnFails: true,
16-
pathPattern: '${DATE}_${TIME}/test-${TEST_INDEX}/${USERAGENT}/${FILE_INDEX}.png',
16+
pathPattern: '${USERAGENT}/${DATE}_${TIME}/${FIXTURE}_${TEST_INDEX}.png',
1717
})
1818
.reporter([
1919
'spec',

tests/e2e/helpers/api/api-database.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as request from 'supertest';
33
import { asyncFilter, doAsyncStuff } from '../async-helper';
44
import { AddNewDatabaseParameters, OSSClusterParameters, databaseParameters } from '../../pageObjects/add-redis-database-page';
55
import { apiUrl } from '../../helpers/conf';
6+
import { parseAsync } from '@babel/core';
67

78
const endpoint = apiUrl;
89
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; // lgtm[js/disabling-certificate-validation]
@@ -11,9 +12,15 @@ process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; // lgtm[js/disabling-certificate
1112
* Add a new Standalone database through api using host and port
1213
* @param databaseParameters The database parameters
1314
*/
14-
export async function addNewStandaloneDatabase(databaseParameters: AddNewDatabaseParameters): Promise<void> {
15+
export async function addNewStandaloneDatabaseApi(databaseParameters: AddNewDatabaseParameters): Promise<void> {
1516
const response = await request(endpoint).post('/instance')
16-
.send({ 'name': databaseParameters.databaseName, 'host': databaseParameters.host, 'port': databaseParameters.port })
17+
.send({
18+
'name': databaseParameters.databaseName,
19+
'host': databaseParameters.host,
20+
'port': databaseParameters.port,
21+
'username': databaseParameters.databaseUsername,
22+
'password': databaseParameters.databasePassword
23+
})
1724
.set('Accept', 'application/json');
1825

1926
await t.expect(await response.status).eql(201, 'The creation of new standalone database request failed');
@@ -24,10 +31,10 @@ export async function addNewStandaloneDatabase(databaseParameters: AddNewDatabas
2431
* Add a new Standalone databases through api using host and port
2532
* @param databasesParameters The databases parameters array
2633
*/
27-
export async function addNewStandaloneDatabases(databasesParameters: AddNewDatabaseParameters[]): Promise<void> {
34+
export async function addNewStandaloneDatabasesApi(databasesParameters: AddNewDatabaseParameters[]): Promise<void> {
2835
if (await databasesParameters.length) {
2936
await databasesParameters.forEach(async parameter => {
30-
await addNewStandaloneDatabase(parameter);
37+
await addNewStandaloneDatabaseApi(parameter);
3138
});
3239
}
3340
}
@@ -36,7 +43,7 @@ export async function addNewStandaloneDatabases(databasesParameters: AddNewDatab
3643
* Adda new database from OSS Cluster through api using host and port
3744
* @param databaseParameters The database parameters
3845
*/
39-
export async function addNewOSSClusterDatabase(databaseParameters: OSSClusterParameters): Promise<void> {
46+
export async function addNewOSSClusterDatabaseApi(databaseParameters: OSSClusterParameters): Promise<void> {
4047
const response = await request(endpoint).post('/instance')
4148
.send({ 'name': databaseParameters.ossClusterDatabaseName, 'host': databaseParameters.ossClusterHost, 'port': databaseParameters.ossClusterPort })
4249
.set('Accept', 'application/json');
@@ -76,7 +83,7 @@ export async function getDatabaseByName(databaseName?: string): Promise<string>
7683
* Delete Standalone database through api
7784
* @param databaseParameters The database parameters
7885
*/
79-
export async function deleteStandaloneDatabase(databaseParameters: AddNewDatabaseParameters): Promise<void> {
86+
export async function deleteStandaloneDatabaseApi(databaseParameters: AddNewDatabaseParameters): Promise<void> {
8087
const databaseId = await getDatabaseByName(databaseParameters.databaseName);
8188
await request(endpoint).delete('/instance')
8289
.send({ 'ids': [`${databaseId}`] })
@@ -88,7 +95,7 @@ export async function deleteStandaloneDatabase(databaseParameters: AddNewDatabas
8895
* Delete database from OSS Cluster through api
8996
* @param databaseParameters The database parameters
9097
*/
91-
export async function deleteOSSClusterDatabase(databaseParameters: OSSClusterParameters): Promise<void> {
98+
export async function deleteOSSClusterDatabaseApi(databaseParameters: OSSClusterParameters): Promise<void> {
9299
const databaseId = await getDatabaseByName(databaseParameters.ossClusterDatabaseName);
93100
const response = await request(endpoint).delete('/instance')
94101
.send({ 'ids': [`${databaseId}`] }).set('Accept', 'application/json');
@@ -100,10 +107,10 @@ export async function deleteOSSClusterDatabase(databaseParameters: OSSClusterPar
100107
* Delete Standalone databases through api
101108
* @param databasesParameters The databases parameters as array
102109
*/
103-
export async function deleteStandaloneDatabases(databasesParameters: AddNewDatabaseParameters[]): Promise<void> {
110+
export async function deleteStandaloneDatabasesApi(databasesParameters: AddNewDatabaseParameters[]): Promise<void> {
104111
if (await databasesParameters.length) {
105112
await databasesParameters.forEach(async parameter => {
106-
await deleteStandaloneDatabase(parameter);
113+
await deleteStandaloneDatabaseApi(parameter);
107114
});
108115
}
109116
}

tests/e2e/helpers/database.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
UserAgreementPage,
1010
CliPage
1111
} from '../pageObjects';
12+
import { addNewStandaloneDatabaseApi } from './api/api-database';
1213

1314
const myRedisDatabasePage = new MyRedisDatabasePage();
1415
const addRedisDatabasePage = new AddRedisDatabasePage();
@@ -116,6 +117,20 @@ export async function acceptLicenseTermsAndAddDatabase(databaseParameters: AddNe
116117
await myRedisDatabasePage.clickOnDBByName(databaseName);
117118
}
118119

120+
/**
121+
* Accept License terms and add database using api
122+
* @param databaseParameters The database parameters
123+
* @param databaseName The database name
124+
*/
125+
export async function acceptLicenseTermsAndAddDatabaseApi(databaseParameters: AddNewDatabaseParameters, databaseName: string): Promise<void> {
126+
await acceptLicenseTerms();
127+
await addNewStandaloneDatabaseApi(databaseParameters);
128+
// Reload Page to see the new added database through api
129+
await t.eval(() => location.reload());
130+
//Connect to DB
131+
await myRedisDatabasePage.clickOnDBByName(databaseName);
132+
}
133+
119134
/**
120135
* Accept License terms and add OSS cluster database
121136
* @param databaseParameters The database parameters

tests/e2e/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
"build:web": "yarn --cwd ../../ build:web",
1313
"redis:last": "docker run --name redis-last-version -p 7777:6379 -d redislabs/redismod",
1414
"start:app": "cross-env SERVER_STATIC_CONTENT=true yarn start:api",
15-
"test:chrome": "testcafe --concurrency 1 chrome tests/ -r html:./report/report.html,spec -e -s takeOnFails=true,path=report/screenshots,pathPattern=${TEST_INDEX}/${USERAGENT}/${FILE_INDEX}.png",
15+
"test:chrome": "testcafe --concurrency 1 chrome tests/ -r html:./report/report.html,spec -e -s takeOnFails=true,path=report/screenshots,pathPattern=${USERAGENT}/${DATE}_${TIME}/${FIXTURE}_${TEST_INDEX}.png",
1616
"test:chrome:ci": "ts-node ./web.runner.ts",
1717
"test": "yarn test:chrome",
1818
"lint": "eslint . --ext .ts,.js,.tsx,.jsx",
1919
"test:desktop:ci": "ts-node ./desktop.runner.ts",
2020
"test:desktop:ci:win": "ts-node ./desktop.runner.win.ts",
21-
"test:desktop": "testcafe electron tests/ --browser-init-timeout 180000 -e -r html:./report/desktop-report.html,spec -s takeOnFails=true,path=report/screenshots,pathPattern=${TEST_INDEX}/${USERAGENT}/${FILE_INDEX}.png"
21+
"test:desktop": "testcafe electron tests/ --browser-init-timeout 180000 -e -r html:./report/desktop-report.html,spec -s takeOnFails=true,path=report/screenshots,pathPattern=${USERAGENT}/${DATE}_${TIME}/${FIXTURE}_${TEST_INDEX}.png"
2222
},
2323
"keywords": [],
2424
"author": "",

tests/e2e/tests/critical-path/browser/consumer-group.e2e.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { Chance } from 'chance';
22
import { rte } from '../../../helpers/constants';
3-
import { acceptLicenseTermsAndAddDatabase, deleteDatabase } from '../../../helpers/database';
3+
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
44
import { BrowserPage, CliPage } from '../../../pageObjects';
55
import {
66
commonUrl,
77
ossStandaloneConfig
88
} from '../../../helpers/conf';
9+
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
910

1011
const browserPage = new BrowserPage();
1112
const cliPage = new CliPage();
@@ -25,15 +26,15 @@ fixture `Consumer group`
2526
.meta({ type: 'critical_path', rte: rte.standalone })
2627
.page(commonUrl)
2728
.beforeEach(async() => {
28-
await acceptLicenseTermsAndAddDatabase(ossStandaloneConfig, ossStandaloneConfig.databaseName);
29+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
2930
})
3031
.afterEach(async t => {
3132
//Clear and delete database
3233
if (await browserPage.closeKeyButton.visible) {
3334
await t.click(browserPage.closeKeyButton);
3435
}
3536
await browserPage.deleteKeyByName(keyName);
36-
await deleteDatabase(ossStandaloneConfig.databaseName);
37+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
3738
});
3839
test('Verify that user can create a new Consumer Group in the current Stream', async t => {
3940
const toolTip = [

tests/e2e/tests/critical-path/browser/context.e2e.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { acceptLicenseTermsAndAddDatabase, deleteDatabase } from '../../../helpers/database';
1+
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
22
import {
33
MyRedisDatabasePage,
44
BrowserPage,
@@ -8,6 +8,7 @@ import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf';
88
import { Common } from '../../../helpers/common';
99
import { KeyTypesTexts, rte } from '../../../helpers/constants';
1010
import { Chance } from 'chance';
11+
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
1112

1213
const myRedisDatabasePage = new MyRedisDatabasePage();
1314
const browserPage = new BrowserPage();
@@ -23,11 +24,11 @@ fixture `Browser Context`
2324
.meta({type: 'critical_path'})
2425
.page(commonUrl)
2526
.beforeEach(async () => {
26-
await acceptLicenseTermsAndAddDatabase(ossStandaloneConfig, ossStandaloneConfig.databaseName);
27+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
2728
})
2829
.afterEach(async () => {
2930
//Delete database
30-
await deleteDatabase(ossStandaloneConfig.databaseName);
31+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
3132
})
3233
// Update after resolving https://redislabs.atlassian.net/browse/RI-3299
3334
test
@@ -107,7 +108,7 @@ test
107108
.after(async () => {
108109
//Clear and delete database
109110
await browserPage.deleteKeyByName(keyName);
110-
await deleteDatabase(ossStandaloneConfig.databaseName);
111+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
111112
})
112113
('Verify that user can see key details selected when he returns back to Browser page', async t => {
113114
//Add and open new key details and navigate to Settings
@@ -124,7 +125,7 @@ test
124125
.after(async () => {
125126
//Clear and delete database
126127
await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`);
127-
await deleteDatabase(ossStandaloneConfig.databaseName);
128+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
128129
})
129130
('Verify that user can see list of keys viewed on Browser page when he returns back to Browser page', async t => {
130131
const numberOfItems = 5000;

tests/e2e/tests/critical-path/browser/database-overview.e2e.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Chance } from 'chance';
2-
import { addNewStandaloneDatabase, acceptLicenseTermsAndAddDatabase, deleteDatabase } from '../../../helpers/database';
2+
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
33
import { rte } from '../../../helpers/constants';
44
import { Common } from '../../../helpers/common';
55
import {
@@ -15,6 +15,7 @@ import {
1515
ossStandaloneRedisearch,
1616
ossStandaloneBigConfig
1717
} from '../../../helpers/conf';
18+
import { addNewStandaloneDatabaseApi, deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
1819

1920
const myRedisDatabasePage = new MyRedisDatabasePage();
2021
const browserPage = new BrowserPage();
@@ -33,19 +34,19 @@ let keys2: string[];
3334
fixture `Database overview`
3435
.meta({type: 'critical_path'})
3536
.page(commonUrl)
36-
.beforeEach(async() => {
37-
await acceptLicenseTermsAndAddDatabase(ossStandaloneConfig, ossStandaloneConfig.databaseName);
37+
.beforeEach(async t => {
38+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
3839
})
3940
.afterEach(async() => {
4041
//Delete database
41-
await deleteDatabase(ossStandaloneConfig.databaseName);
42+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
4243
});
4344
test
4445
.meta({ rte: rte.standalone })
4546
.after(async() => {
4647
//Delete databases
47-
await deleteDatabase(ossStandaloneConfig.databaseName);
48-
await deleteDatabase(ossStandaloneRedisearch.databaseName);
48+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
49+
await deleteStandaloneDatabaseApi(ossStandaloneRedisearch);
4950
})('Verify that user can see the list of Modules updated each time when he connects to the database', async t => {
5051
const firstDatabaseModules = [];
5152
const secondDatabaseModules = [];
@@ -65,7 +66,8 @@ test
6566
}
6667
//Add database with different modules
6768
await t.click(myRedisDatabasePage.myRedisDBButton);
68-
await addNewStandaloneDatabase(ossStandaloneRedisearch);
69+
await addNewStandaloneDatabaseApi(ossStandaloneRedisearch);
70+
await t.eval(() => location.reload());
6971
await myRedisDatabasePage.clickOnDBByName(ossStandaloneRedisearch.databaseName);
7072
countOfModules = await browserPage.modulesButton.count;
7173
for(let i = 0; i < countOfModules; i++) {
@@ -105,8 +107,8 @@ test
105107
await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName);
106108
await cliPage.sendCommandInCli(`DEL ${keys1.join(' ')}`);
107109
await cliPage.sendCommandInCli(`DEL ${keys2.join(' ')}`);
108-
await deleteDatabase(ossStandaloneConfig.databaseName);
109-
await deleteDatabase(ossStandaloneBigConfig.databaseName);
110+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
111+
await deleteStandaloneDatabaseApi(ossStandaloneBigConfig);
110112
})('Verify that user can see total number of keys rounded in format 100, 1K, 1M, 1B in DB header in Browser page', async t => {
111113
//Add 100 keys
112114
keys1 = await common.createArrayWithKeyValue(100);
@@ -120,7 +122,8 @@ test
120122
await t.expect(totalKeys).eql('1 K', 'Info in DB header after ADD 1000 keys');
121123
//Add database with more than 1M keys
122124
await t.click(myRedisDatabasePage.myRedisDBButton);
123-
await addNewStandaloneDatabase(ossStandaloneBigConfig);
125+
await addNewStandaloneDatabaseApi(ossStandaloneBigConfig);
126+
await t.eval(() => location.reload());
124127
await myRedisDatabasePage.clickOnDBByName(ossStandaloneBigConfig.databaseName);
125128
//Wait 5 seconds
126129
await t.wait(fiveSecondsTimeout);
@@ -133,7 +136,7 @@ test
133136
.after(async() => {
134137
//Clear and delete database
135138
await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`);
136-
await deleteDatabase(ossStandaloneConfig.databaseName);
139+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
137140
})('Verify that user can see total memory rounded in format B, KB, MB, GB, TB in DB header in Browser page', async t => {
138141
//Add new keys
139142
keys = await common.createArrayWithKeyValue(100);
@@ -145,14 +148,14 @@ test
145148
test
146149
.meta({ rte: rte.standalone })
147150
.before(async t => {
148-
await acceptLicenseTermsAndAddDatabase(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName);
151+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName);
149152
//Go to Workbench page
150153
await t.click(myRedisDatabasePage.workbenchButton);
151154
})
152155
.after(async() => {
153156
//Delete database and index
154157
await workbenchPage.sendCommandInWorkbench('FT.DROPINDEX idx:schools DD');
155-
await deleteDatabase(ossStandaloneBigConfig.databaseName);
158+
await deleteStandaloneDatabaseApi(ossStandaloneBigConfig);
156159
})('Verify that user can see additional information in Overview: Connected Clients, Commands/Sec, CPU (%) using Standalone DB connection type', async t => {
157160
const commandsSecBeforeEdit = await browserPage.overviewCommandsSec.textContent;
158161
//Wait 5 second

tests/e2e/tests/critical-path/browser/filtering.e2e.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { acceptLicenseTermsAndAddDatabase, deleteDatabase } from '../../../helpers/database';
1+
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
22
import {
33
BrowserPage,
44
CliPage
@@ -11,6 +11,7 @@ import {
1111
import { COMMANDS_TO_CREATE_KEY, KeyTypesTexts, rte } from '../../../helpers/constants';
1212
import { keyTypes } from '../../../helpers/keys';
1313
import { Chance } from 'chance';
14+
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
1415

1516
const browserPage = new BrowserPage();
1617
const cliPage = new CliPage();
@@ -22,17 +23,17 @@ fixture `Filtering per key name in Browser page`
2223
.meta({type: 'critical_path', rte: rte.standalone})
2324
.page(commonUrl)
2425
.beforeEach(async () => {
25-
await acceptLicenseTermsAndAddDatabase(ossStandaloneConfig, ossStandaloneConfig.databaseName);
26+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
2627
})
2728
.afterEach(async () => {
2829
//Delete database
29-
await deleteDatabase(ossStandaloneConfig.databaseName);
30+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
3031
})
3132
test
3233
.after(async () => {
3334
//Clear and delete database
3435
await browserPage.deleteKeyByName(keyName);
35-
await deleteDatabase(ossStandaloneConfig.databaseName);
36+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
3637
})
3738
('Verify that user can search a key with selected data type is filters', async t => {
3839
keyName = chance.word({ length: 10 });
@@ -48,7 +49,7 @@ test
4849
test
4950
.after(async () => {
5051
//Delete database
51-
await deleteDatabase(ossStandaloneConfig.databaseName);
52+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
5253
})
5354
('Verify that user can filter keys per data type in Browser page', async t => {
5455
keyName = chance.word({ length: 10 });
@@ -70,11 +71,11 @@ test
7071
});
7172
test
7273
.before(async () => {
73-
await acceptLicenseTermsAndAddDatabase(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName);
74+
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName);
7475
})
7576
.after(async () => {
7677
//Delete database
77-
await deleteDatabase(ossStandaloneBigConfig.databaseName);
78+
await deleteStandaloneDatabaseApi(ossStandaloneBigConfig);
7879
})
7980
('Verify that user see the key type label when filtering per key types and when removes lable the filter is removed on Browser page', async t => { //Check filtering labes
8081
for (const { textType } of keyTypes) {

0 commit comments

Comments
 (0)