Skip to content

Commit 936cd9e

Browse files
Merge pull request #3907 from RedisInsight/e2e/feature/RI-6061
E2e/feature/ri 6061
2 parents 2263ab2 + 1fc1bd2 commit 936cd9e

File tree

5 files changed

+78
-10
lines changed

5 files changed

+78
-10
lines changed

tests/e2e/helpers/telemetry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,6 @@ export class Telemetry {
6565
const requestBody = JSON.parse(request.request.body.toString());
6666

6767
// Verify that event has correct property value
68-
await t.expect(requestBody.eventData[property]).eql(value);
68+
await t.expect(String(requestBody.eventData[property])).eql(value);
6969
}
7070
}

tests/e2e/pageObjects/browser-page.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ export class BrowserPage extends InstancePage {
107107
backToBrowserBtn = Selector('[data-testid=back-right-panel-btn]');
108108
loadAllBtn = Selector('[data-testid=load-all-value-btn]');
109109
downloadAllValueBtn = Selector('[data-testid=download-all-value-btn]');
110-
openTutorialsBtn = Selector('[data-testid=explore-msg-btn]');
110+
openTutorialsBtn = Selector('[data-testid=explore-msg-btn]')
111+
keyItem = Selector('[data-testid*="node-item"][data-testid*="keys:"]');
111112
//CONTAINERS
112113
streamGroupsContainer = Selector('[data-testid=stream-groups-container]');
113114
streamConsumersContainer = Selector('[data-testid=stream-consumers-container]');

tests/e2e/tests/web/critical-path/browser/search-capabilities.e2e.ts

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Selector, t } from 'testcafe';
22
import { DatabaseHelper } from '../../../../helpers/database';
33
import { BrowserPage, MyRedisDatabasePage } from '../../../../pageObjects';
4+
import { Telemetry } from '../../../../helpers/telemetry';
45
import {
56
commonUrl,
67
ossStandaloneBigConfig,
@@ -19,6 +20,32 @@ const myRedisDatabasePage = new MyRedisDatabasePage();
1920
const databaseHelper = new DatabaseHelper();
2021
const databaseAPIRequests = new DatabaseAPIRequests();
2122
const apiKeyRequests = new APIKeyRequests();
23+
const telemetry = new Telemetry();
24+
25+
const telemetryEvents = ['SEARCH_MODE_CHANGED', 'SEARCH_INDEX_ADD_BUTTON_CLICKED', 'SEARCH_INDEX_ADDED'];
26+
const logger = telemetry.createLogger();
27+
const expectedPropertiesMode = [
28+
'current',
29+
'databaseId',
30+
'previous',
31+
'provider',
32+
'view'
33+
];
34+
35+
const expectedPropertiesCreateIndex = [
36+
'databaseId',
37+
'provider',
38+
'view'
39+
];
40+
41+
const expectedPropertiesAddedIndex = [
42+
'countOfFieldNames',
43+
'countOfPrefixes',
44+
'dataType',
45+
'databaseId',
46+
'provider',
47+
'view'
48+
];
2249

2350
const patternModeTooltipText = 'Filter by Key Name or Pattern';
2451
const redisearchModeTooltipText = 'Search by Values of Keys';
@@ -167,7 +194,7 @@ test
167194
await Common.checkURLContainsText(externalPageLinkFirst);
168195
await Common.checkURLContainsText(externalPageLinkSecond);
169196
});
170-
test
197+
test.requestHooks(logger)
171198
.before(async() => {
172199
await databaseHelper.acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig);
173200
})
@@ -177,10 +204,17 @@ test
177204
})('Index creation', async t => {
178205
const createIndexLink = 'https://redis.io/docs/latest/commands/ft.create/?utm_source=redisinsight&utm_medium=app&utm_campaign=browser_search';
179206

180-
// Verify that user can cancel index creation
207+
// Verify that telemetry event 'SEARCH_MODE_CHANGED' sent
181208
await t.click(browserPage.redisearchModeBtn);
209+
await telemetry.verifyEventHasProperties(telemetryEvents[0], expectedPropertiesMode, logger);
210+
211+
// Verify that user can cancel index creation
182212
await t.click(browserPage.selectIndexDdn);
183213
await t.click(browserPage.createIndexBtn);
214+
215+
// Verify that telemetry event 'SEARCH_INDEX_ADD_BUTTON_CLICKED' sent
216+
await telemetry.verifyEventHasProperties(telemetryEvents[1], expectedPropertiesCreateIndex, logger);
217+
184218
await t.expect(browserPage.newIndexPanel.exists).ok('New Index panel is not displayed');
185219
await t.click(browserPage.cancelIndexCreationBtn);
186220
await t.expect(browserPage.newIndexPanel.exists).notOk('New Index panel is displayed');
@@ -197,8 +231,8 @@ test
197231
await goBackHistory();
198232

199233
// Verify that user can create an index with multiple prefixes
200-
// await t.click(browserPage.selectIndexDdn);
201-
// await t.click(browserPage.createIndexBtn);
234+
await t.click(browserPage.selectIndexDdn);
235+
await t.click(browserPage.createIndexBtn);
202236
await t.click(browserPage.indexNameInput);
203237
await t.typeText(browserPage.indexNameInput, indexName);
204238
await t.click(browserPage.prefixFieldInput);
@@ -214,6 +248,10 @@ test
214248
await t.click(browserPage.indexIdentifierInput);
215249
await t.typeText(browserPage.indexIdentifierInput, 'k0');
216250
await t.click(browserPage.confirmIndexCreationBtn);
251+
252+
await telemetry.verifyEventHasProperties(telemetryEvents[2], expectedPropertiesAddedIndex, logger);
253+
await telemetry.verifyEventPropertyValue(telemetryEvents[2], 'countOfPrefixes', '3', logger);
254+
217255
await t.expect(browserPage.newIndexPanel.exists).notOk('New Index panel is displayed');
218256
await t.click(browserPage.selectIndexDdn);
219257
await browserPage.selectIndexByName(indexName);

tests/e2e/tests/web/regression/browser/list-key.e2e.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,27 @@ import { DatabaseAPIRequests } from '../../../../helpers/api/api-database';
66
import { populateListWithElements } from '../../../../helpers/keys';
77
import { Common } from '../../../../helpers/common';
88
import { APIKeyRequests } from '../../../../helpers/api/api-keys';
9+
import { Telemetry } from '../../../../helpers/telemetry';
910

1011
const browserPage = new BrowserPage();
1112
const databaseHelper = new DatabaseHelper();
1213
const databaseAPIRequests = new DatabaseAPIRequests();
1314
const apiKeyRequests = new APIKeyRequests();
15+
const telemetry = new Telemetry();
1416

1517
const dbParameters = { host: ossStandaloneConfig.host, port: ossStandaloneConfig.port };
1618
const keyName = `TestListKey-${ Common.generateWord(10) }`;
1719
const elementForSearch = `SearchField-${ Common.generateWord(5) }`;
1820
const keyToAddParameters = { elementsCount: 500000, keyName, elementStartWith: 'listElement' };
1921

22+
const telemetryEvent = 'LIST_VIEW_OPENED';
23+
const logger = telemetry.createLogger();
24+
25+
const expectedProperties = [
26+
'databaseId',
27+
'provider'
28+
];
29+
2030
fixture `List Key verification`
2131
.meta({ type: 'regression' })
2232
.page(commonUrl)
@@ -29,11 +39,16 @@ fixture `List Key verification`
2939
await apiKeyRequests.deleteKeyByNameApi(keyName, ossStandaloneConfig.databaseName);
3040
await databaseAPIRequests.deleteStandaloneDatabaseApi(ossStandaloneConfig);
3141
});
32-
test
42+
test.requestHooks(logger)
3343
.meta({ rte: rte.standalone })('Verify that user can search per exact element index in List key in DB with 1 million of fields', async t => {
3444
// Add 1000000 elements to the list key
3545
await populateListWithElements(dbParameters.host, dbParameters.port, keyToAddParameters);
3646
await populateListWithElements(dbParameters.host, dbParameters.port, keyToAddParameters);
47+
48+
// Verify that telemetry event 'TREE_VIEW_KEY_VALUE_VIEWED' sent
49+
await t.click(browserPage.browserViewButton);
50+
await telemetry.verifyEventHasProperties(telemetryEvent, expectedProperties, logger);
51+
3752
// Add custom element to the list key
3853
await browserPage.openKeyDetails(keyName);
3954
await browserPage.addElementToList(elementForSearch);

tests/e2e/tests/web/regression/tree-view/tree-view.e2e.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { DatabaseHelper } from '../../../../helpers/database';
22
import { BrowserPage, WorkbenchPage } from '../../../../pageObjects';
3+
import { Telemetry } from '../../../../helpers/telemetry';
34
import {
45
commonUrl,
56
ossStandaloneBigConfig,
@@ -16,8 +17,17 @@ const browserPage = new BrowserPage();
1617
const workbenchPage = new WorkbenchPage();
1718
const databaseHelper = new DatabaseHelper();
1819
const databaseAPIRequests = new DatabaseAPIRequests();
20+
const telemetry = new Telemetry();
1921

2022
let keyNames: string[] = [];
23+
const telemetryEvent = 'TREE_VIEW_KEY_VALUE_VIEWED';
24+
const logger = telemetry.createLogger();
25+
26+
const expectedProperties = [
27+
'databaseId',
28+
'keyType',
29+
'provider'
30+
];
2131

2232
fixture `Tree view verifications`
2333
.meta({ type: 'regression', rte: rte.standalone })
@@ -101,17 +111,21 @@ test
101111
await t.expect(totalKeysValue).gte(10, 'the info message after upload does not appear');
102112
});
103113

104-
test('Verify that user can see the total number of keys, the number of keys scanned, the “Scan more” control displayed at the top of Tree view and Browser view', async t => {
105-
await browserPage.selectFilterGroupType(KeyTypesTexts.Hash);
114+
test.requestHooks(logger)('Verify that user can see the total number of keys, the number of keys scanned, the “Scan more” control displayed at the top of Tree view and Browser view', async t => {
115+
await browserPage.selectFilterGroupType(KeyTypesTexts.ReJSON);
106116
// Verify the controls on the Browser view
107117
await t.expect(browserPage.totalKeysNumber.visible).ok('The total number of keys is not displayed on the Browser view');
108118
await t.expect(browserPage.scannedValue.visible).ok('The number of keys scanned is not displayed on the Browser view');
109119
await t.expect(browserPage.scanMoreButton.visible).ok('The scan more button is not displayed on the Browser view');
110-
// Verify the controls on the Tree view
120+
//Verify the controls on the Tree view
111121
await t.click(browserPage.treeViewButton);
112122
await t.expect(browserPage.totalKeysNumber.visible).ok('The total number of keys is not displayed on the Tree view');
113123
await t.expect(browserPage.scannedValue.visible).ok('The number of keys scanned is not displayed on the Tree view');
114124
await t.expect(browserPage.scanMoreButton.visible).ok('The scan more button is not displayed on the Tree view');
125+
126+
// Verify that telemetry event 'TREE_VIEW_KEY_VALUE_VIEWED' sent
127+
await t.click(browserPage.keyItem);
128+
await telemetry.verifyEventHasProperties(telemetryEvent, expectedProperties, logger);
115129
});
116130
test('Verify that when user deletes the key he can see the key is removed from the folder, the number of keys is reduced, the percentage is recalculated', async t => {
117131
const mainFolder = browserPage.TreeView.getFolderSelectorByName('device');

0 commit comments

Comments
 (0)