Skip to content

Commit 8e48639

Browse files
authored
Merge pull request #3965 from RedisInsight/e2e/bugfix/packages
E2e/bugfix/packages
2 parents 90cede6 + 1d3ff63 commit 8e48639

File tree

5 files changed

+2682
-2539
lines changed

5 files changed

+2682
-2539
lines changed

tests/e2e/helpers/google-authorization.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Builder, By, Key, until } from 'selenium-webdriver';
2-
import open = require('open');
32
import { googleUser, googleUserPassword } from './conf';
43

54
export async function processGoogleSSO(urlToUse: string): Promise<void> {
@@ -27,6 +26,7 @@ export async function processGoogleSSO(urlToUse: string): Promise<void> {
2726
const redirectUrl = `${protocol + callbackUrl }?${ modifiedUrl}`;
2827

2928
// Open Redis Insight electron app using deeplink
29+
const open = (await import('open')).default;
3030
await open(redirectUrl, { app: { name: 'Redis Insight' } });
3131
}
3232
catch (error) {

tests/e2e/helpers/keys.ts

Lines changed: 117 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -88,25 +88,28 @@ export async function deleteKeysViaCli(keyData: KeyData): Promise<void> {
8888
* @param keyArguments The arguments of key
8989
*/
9090
export async function populateDBWithHashes(host: string, port: string, keyArguments: AddKeyArguments): Promise<void> {
91-
const dbConf = { port: Number.parseInt(port), host, username: 'default' };
92-
const client = createClient(dbConf);
91+
const url = `redis://default@${host}:${port}`;
92+
const client = createClient({ url });
9393

94-
await client.on('error', async function(error: string) {
95-
throw new Error(error);
94+
client.on('error', (error: Error) => {
95+
console.error('Redis Client Error', error);
9696
});
97-
await client.on('connect', async function() {
97+
98+
try {
99+
await client.connect();
100+
98101
if (keyArguments.keysCount) {
99102
for (let i = 0; i < keyArguments.keysCount; i++) {
100103
const keyName = `${keyArguments.keyNameStartWith}${Common.generateWord(20)}`;
101-
await client.hset([keyName, 'field1', 'Hello'], async(error: string) => {
102-
if (error) {
103-
throw error;
104-
}
105-
});
104+
await client.hSet(keyName, 'field1', 'Hello');
106105
}
107106
}
108-
await client.quit();
109-
});
107+
108+
} catch (error) {
109+
console.error('Error during Redis operations:', error);
110+
} finally {
111+
await client.disconnect();
112+
}
110113
}
111114

112115
/**
@@ -116,28 +119,36 @@ export async function populateDBWithHashes(host: string, port: string, keyArgume
116119
* @param keyArguments The arguments of key and its fields
117120
*/
118121
export async function populateHashWithFields(host: string, port: string, keyArguments: AddKeyArguments): Promise<void> {
119-
const dbConf = { port: Number.parseInt(port), host, username: 'default' };
120-
const client = createClient(dbConf);
121-
const fields: string[] = [];
122+
const url = `redis://default@${host}:${port}`;
123+
const client = createClient({ url });
124+
const fields: Record<string, string> = {};
122125

123-
await client.on('error', async function(error: string) {
124-
throw new Error(error);
126+
client.on('error', (error: Error) => {
127+
console.error('Redis Client Error', error);
125128
});
126-
await client.on('connect', async function() {
129+
130+
try {
131+
await client.connect();
132+
127133
if (keyArguments.fieldsCount) {
128134
for (let i = 0; i < keyArguments.fieldsCount; i++) {
129135
const field = `${keyArguments.fieldStartWith}${Common.generateWord(10)}`;
130136
const fieldValue = `${keyArguments.fieldValueStartWith}${Common.generateWord(10)}`;
131-
fields.push(field, fieldValue);
137+
fields[field] = fieldValue;
132138
}
133139
}
134-
await client.hset(keyArguments.keyName, fields, async(error: string) => {
135-
if (error) {
136-
throw error;
137-
}
138-
});
139-
await client.quit();
140-
});
140+
141+
if (keyArguments.keyName) {
142+
await client.hSet(keyArguments.keyName, fields);
143+
} else {
144+
throw new Error('keyName is required to populate the hash.');
145+
}
146+
147+
} catch (error) {
148+
console.error('Error setting hash fields:', error);
149+
} finally {
150+
await client.disconnect();
151+
}
141152
}
142153

143154
/**
@@ -147,27 +158,35 @@ export async function populateHashWithFields(host: string, port: string, keyArgu
147158
* @param keyArguments The arguments of key and its members
148159
*/
149160
export async function populateListWithElements(host: string, port: string, keyArguments: AddKeyArguments): Promise<void> {
150-
const dbConf = { port: Number.parseInt(port), host, username: 'default' };
151-
const client = createClient(dbConf);
161+
const url = `redis://default@${host}:${port}`;
162+
const client = createClient({ url });
152163
const elements: string[] = [];
153164

154-
await client.on('error', async function(error: string) {
155-
throw new Error(error);
165+
client.on('error', (error: Error) => {
166+
console.error('Redis Client Error', error);
156167
});
157-
await client.on('connect', async function() {
168+
169+
try {
170+
await client.connect();
171+
158172
if (keyArguments.elementsCount) {
159173
for (let i = 0; i < keyArguments.elementsCount; i++) {
160174
const element = `${keyArguments.elementStartWith}${Common.generateWord(10)}`;
161175
elements.push(element);
162176
}
163177
}
164-
await client.lpush(keyArguments.keyName, elements, async(error: string) => {
165-
if (error) {
166-
throw error;
167-
}
168-
});
169-
await client.quit();
170-
});
178+
179+
if (keyArguments.keyName) {
180+
await client.lPush(keyArguments.keyName, elements);
181+
} else {
182+
throw new Error('keyName is required to populate the list.');
183+
}
184+
185+
} catch (error) {
186+
console.error('Error pushing elements to list:', error);
187+
} finally {
188+
await client.disconnect();
189+
}
171190
}
172191

173192
/**
@@ -177,27 +196,35 @@ export async function populateListWithElements(host: string, port: string, keyAr
177196
* @param keyArguments The arguments of key and its members
178197
*/
179198
export async function populateSetWithMembers(host: string, port: string, keyArguments: AddKeyArguments): Promise<void> {
180-
const dbConf = { port: Number.parseInt(port), host, username: 'default' };
181-
const client = createClient(dbConf);
199+
const url = `redis://default@${host}:${port}`;
200+
const client = createClient({ url });
182201
const members: string[] = [];
183202

184-
await client.on('error', async function(error: string) {
185-
throw new Error(error);
203+
client.on('error', (error: Error) => {
204+
console.error('Redis Client Error', error);
186205
});
187-
await client.on('connect', async function() {
206+
207+
try {
208+
await client.connect();
209+
188210
if (keyArguments.membersCount) {
189211
for (let i = 0; i < keyArguments.membersCount; i++) {
190212
const member = `${keyArguments.memberStartWith}${Common.generateWord(10)}`;
191213
members.push(member);
192214
}
193215
}
194-
await client.sadd(keyArguments.keyName, members, async(error: string) => {
195-
if (error) {
196-
throw error;
197-
}
198-
});
199-
await client.quit();
200-
});
216+
217+
if (keyArguments.keyName) {
218+
await client.sAdd(keyArguments.keyName, members);
219+
} else {
220+
throw new Error('keyName is required to populate the set.');
221+
}
222+
223+
} catch (error) {
224+
console.error('Error adding members to set:', error);
225+
} finally {
226+
await client.disconnect();
227+
}
201228
}
202229

203230
/**
@@ -207,30 +234,38 @@ export async function populateSetWithMembers(host: string, port: string, keyArgu
207234
* @param keyArguments The arguments of key and its members
208235
*/
209236
export async function populateZSetWithMembers(host: string, port: string, keyArguments: AddKeyArguments): Promise<void> {
210-
const dbConf = { port: Number.parseInt(port), host, username: 'default' };
211-
let minScoreValue: -10;
212-
let maxScoreValue: 10;
213-
const client = createClient(dbConf);
214-
const members: string[] = [];
237+
const url = `redis://default@${host}:${port}`;
238+
const client = createClient({ url });
239+
const minScoreValue = -10;
240+
const maxScoreValue = 10;
241+
const members: { score: number; value: string }[] = [];
215242

216-
await client.on('error', async function(error: string) {
217-
throw new Error(error);
243+
client.on('error', (error: Error) => {
244+
console.error('Redis Client Error', error);
218245
});
219-
await client.on('connect', async function() {
246+
247+
try {
248+
await client.connect();
249+
220250
if (keyArguments.membersCount) {
221251
for (let i = 0; i < keyArguments.membersCount; i++) {
222252
const memberName = `${keyArguments.memberStartWith}${Common.generateWord(10)}`;
223-
const scoreValue = random(minScoreValue, maxScoreValue).toString(2);
224-
members.push(scoreValue, memberName);
253+
const scoreValue = random(minScoreValue, maxScoreValue);
254+
members.push({ score: scoreValue, value: memberName });
225255
}
226256
}
227-
await client.zadd(keyArguments.keyName, members, async(error: string) => {
228-
if (error) {
229-
throw error;
230-
}
231-
});
232-
await client.quit();
233-
});
257+
258+
if (keyArguments.keyName) {
259+
await client.zAdd(keyArguments.keyName, members);
260+
} else {
261+
throw new Error('keyName is required to populate the sorted set.');
262+
}
263+
264+
} catch (error) {
265+
console.error('Error adding members to sorted set:', error);
266+
} finally {
267+
await client.disconnect();
268+
}
234269
}
235270

236271
/**
@@ -239,20 +274,23 @@ export async function populateZSetWithMembers(host: string, port: string, keyArg
239274
* @param port The port of database
240275
*/
241276
export async function deleteAllKeysFromDB(host: string, port: string): Promise<void> {
242-
const dbConf = { port: Number.parseInt(port), host, username: 'default' };
243-
const client = createClient(dbConf);
277+
const url = `redis://default@${host}:${port}`;
278+
const client = createClient({ url });
244279

245-
await client.on('error', async function(error: string) {
246-
throw new Error(error);
247-
});
248-
await client.on('connect', async function() {
249-
await client.flushall((error: string) => {
250-
if (error) {
251-
throw error;
252-
}
253-
});
254-
await client.quit();
280+
client.on('error', (error: Error) => {
281+
console.error('Redis Client Error', error);
255282
});
283+
284+
try {
285+
await client.connect();
286+
287+
await client.flushAll();
288+
289+
} catch (error) {
290+
console.error('Error flushing database:', error);
291+
} finally {
292+
await client.disconnect();
293+
}
256294
}
257295

258296
/**

tests/e2e/package.json

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"build:ui": "yarn --cwd ../../ build:ui",
1414
"redis:last": "docker run --name redis-last-version -p 7777:6379 -d redislabs/redismod",
1515
"start:app": "cross-env yarn start:api",
16-
"test:chrome": "testcafe --compiler-options typescript.configPath=tsconfig.testcafe.json --cache --allow-insecure-localhost --disable-multiple-windows --concurrency 1 chrome tests/ -r html:./report/report.html,spec -e -s takeOnFails=true,path=report/screenshots/,pathPattern=${OS}_${BROWSER}/${DATE}_${TIME}/${FIXTURE}_${TEST}_${FILE_INDEX}.png",
16+
"test:chrome": "testcafe --compiler-options typescript.configPath=tsconfig.testcafe.json --cache --disable-multiple-windows --concurrency 1 chrome tests/ -r html:./report/report.html,spec -e -s takeOnFails=true,path=report/screenshots/,pathPattern=${OS}_${BROWSER}/${DATE}_${TIME}/${FIXTURE}_${TEST}_${FILE_INDEX}.png",
1717
"test:chrome:ci": "ts-node ./web.runner.ts",
1818
"test": "yarn test:chrome",
1919
"lint": "eslint . --ext .ts,.js,.tsx,.jsx",
@@ -24,9 +24,9 @@
2424
"keywords": [],
2525
"author": "",
2626
"dependencies": {
27-
"axios": "^1.6.0",
27+
"axios": "^1.7.7",
2828
"brotli-unicode": "^1.0.2",
29-
"cli-argument-parser": "0.4.5",
29+
"cli-argument-parser": "0.7.4",
3030
"fflate": "^0.8.2",
3131
"js-yaml": "^4.1.0",
3232
"lz4js": "^0.2.0",
@@ -37,39 +37,40 @@
3737
"@types/lodash": "4.14.192",
3838
"@types/node": "20.3.1",
3939
"word-wrap": "1.2.4",
40-
"**/semver": "^7.5.2"
40+
"**/semver": "^7.5.2",
41+
"testcafe-browser-provider-electron/**/ip": "^2.0.1"
4142
},
4243
"devDependencies": {
43-
"@types/archiver": "^5.3.2",
44-
"@types/chance": "1.1.3",
45-
"@types/edit-json-file": "1.7.0",
46-
"@types/fs-extra": "9.0.11",
47-
"@types/selenium-webdriver": "^4.1.22",
48-
"@types/sqlite3": "^3.1.8",
49-
"@types/supertest": "^2.0.8",
50-
"@typescript-eslint/eslint-plugin": "4.28.2",
51-
"@typescript-eslint/parser": "4.28.2",
52-
"archiver": "^5.3.1",
53-
"chance": "1.1.8",
54-
"chromedriver": "^124.0.1",
55-
"cli-argument-parser": "0.4.5",
44+
"@types/archiver": "^6.0.2",
45+
"@types/chance": "1.1.6",
46+
"@types/edit-json-file": "1.7.3",
47+
"@types/fs-extra": "11.0.4",
48+
"@types/selenium-webdriver": "^4.1.26",
49+
"@types/sqlite3": "^3.1.11",
50+
"@types/supertest": "^6.0.2",
51+
"@typescript-eslint/eslint-plugin": "8.9.0",
52+
"@typescript-eslint/parser": "8.9.0",
53+
"archiver": "^7.0.1",
54+
"chance": "1.1.12",
55+
"chromedriver": "^130.0.0",
56+
"cli-argument-parser": "0.7.4",
5657
"cross-env": "^7.0.3",
57-
"dotenv-cli": "^5.0.0",
58-
"edit-json-file": "1.7.0",
59-
"eslint": "7.32.0",
60-
"eslint-plugin-import": "2.24.2",
61-
"fs-extra": "^10.0.0",
62-
"open": "^8.4.2",
63-
"redis": "3.1.1",
64-
"selenium-webdriver": "^4.20.0",
65-
"sqlite3": "^5.1.6",
66-
"supertest": "^4.0.2",
58+
"dotenv-cli": "^7.4.2",
59+
"edit-json-file": "1.8.0",
60+
"eslint": "9.12.0",
61+
"eslint-plugin-import": "2.31.0",
62+
"fs-extra": "^11.2.0",
63+
"open": "^10.1.0",
64+
"redis": "4.7.0",
65+
"selenium-webdriver": "^4.25.0",
66+
"sqlite3": "^5.1.7",
67+
"supertest": "^7.0.0",
6768
"testcafe": "3.6.2",
6869
"testcafe-browser-provider-electron": "0.0.21",
6970
"testcafe-reporter-html": "1.4.6",
7071
"testcafe-reporter-json": "2.2.0",
7172
"testcafe-reporter-spec": "2.2.0",
72-
"ts-node": "10.9.1",
73-
"typescript": "5.1.3"
73+
"ts-node": "10.9.2",
74+
"typescript": "5.6.3"
7475
}
7576
}

tests/e2e/tsconfig.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
{
22
"compilerOptions": {
3-
"target": "es2020",
4-
"module": "commonjs",
3+
"target": "ES2020",
4+
"module": "CommonJS",
55
"esModuleInterop": true,
66
"forceConsistentCasingInFileNames": true,
77
"strict": true,
88
"skipLibCheck": true,
9-
"sourceMap": true
9+
"sourceMap": true,
10+
"types": ["node"]
1011
},
1112
"exclude": [
1213
"./node_modules",

0 commit comments

Comments
 (0)