Skip to content

Commit 9a65728

Browse files
authored
Merge pull request #1169 from RedisInsight/e2e/bugfix/3532-fix-unstable-e2e
E2e/bugfix/3532 fix unstable e2e
2 parents ce09072 + 2a6f2dc commit 9a65728

File tree

11 files changed

+64
-65
lines changed

11 files changed

+64
-65
lines changed

redisinsight/ui/src/constants/texts.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import { getRouterLinkProps } from 'uiSrc/services'
55

66
export const NoResultsFoundText = (<EuiText size="m">No results found.</EuiText>)
77
export const NoKeysToDisplayText = (path: string, onClick: ()=> void) => (
8-
<EuiText size="m">
8+
<EuiText size="m" data-testid="no-result-found-msg">
99
No keys to display.
1010
<br />
1111
<EuiLink
1212
{...getRouterLinkProps(path, onClick)}
1313
color="text"
14-
data-test-subj="pubsub-page-btn"
14+
data-test-subj="workbench-page-btn"
1515
>
1616
Use Workbench Guides and Tutorials
1717
</EuiLink>

tests/e2e/pageObjects/browser-page.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ export class BrowserPage {
9090
editHashButton = Selector('[data-testid^=edit-hash-button-]');
9191
editZsetButton = Selector('[data-testid^=zset-edit-button-]');
9292
editListButton = Selector('[data-testid^=edit-list-button-]');
93+
workbenchLinkButton = Selector('[data-test-subj=workbench-page-btn]');
9394
//CONTAINERS
9495
streamGroupsContainer = Selector('[data-testid=stream-groups-container]');
9596
streamConsumersContainer = Selector('[data-testid=stream-consumers-container]');
@@ -208,6 +209,7 @@ export class BrowserPage {
208209
multiSearchArea = Selector(this.cssFilteringLabel);
209210
keyDetailsHeader = Selector('[data-testid=key-details-header]');
210211
keyListTable = Selector('[data-testid=keyList-table]');
212+
keyListMessage = Selector('[data-testid=no-result-found-msg]');
211213
keyDetailsTable = Selector('[data-testid=key-details]');
212214
keyNameFormDetails = Selector('[data-testid=key-name-text]');
213215
keyDetailsTTL = Selector('[data-testid=key-ttl-text]');

tests/e2e/pageObjects/monitor-page.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export class MonitorPage {
2424
monitorArea = Selector('[data-testid=monitor]');
2525
monitorWarningMessage = Selector('[data-testid=monitor-warning-message]');
2626
monitorCommandLinePart = Selector('[data-testid=monitor] span');
27-
monitorCommandLineTimestamp = Selector('[data-testid=monitor] span').withText(/[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}/);
27+
monitorCommandLineTimestamp = Selector('[data-testid=monitor] span').withText(/[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}/);
2828
monitorNoPermissionsMessage = Selector('[data-testid=monitor-error-message]');
2929
saveLogToolTip = Selector('[data-testid=save-log-tooltip]');
3030
monitorNotStartedElement = Selector('[data-testid=monitor-not-started]');

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,22 @@ test
8686
await t.expect(browserPage.multiSearchArea.find(browserPage.cssFilteringLabel).visible).notOk('The label of filtering type is removed');
8787
await t.expect(browserPage.keysSummary.textContent).contains('Total', 'The filter is removed');
8888
});
89-
test('Verify that user can see filtering per key name starts when he press Enter or clicks the control to filter per key name', async t => { //Check filtering labes
89+
test
90+
.after(async() => {
91+
//Clear and delete database
92+
await browserPage.deleteKeyByName(keyName);
93+
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
94+
})('Verify that user can see filtering per key name starts when he press Enter or clicks the control to filter per key name', async t => { //Check filtering labes
9095
keyName = chance.word({ length: 10 });
91-
await t.expect(browserPage.keyListTable.textContent).contains('No keys to display.', 'The filtering is not set');
96+
//Add new key
97+
await browserPage.addStringKey(keyName);
9298
//Check the filtering starts by press Enter
93-
await t.typeText(browserPage.filterByPatterSearchInput, keyName);
99+
await t.typeText(browserPage.filterByPatterSearchInput, 'InvalidText');
94100
await t.pressKey('enter');
95101
await t.expect(browserPage.searchAdvices.visible).ok('The filtering is set');
96102
//Check the filtering starts by clicks the control
97103
await common.reloadPage();
98-
await t.typeText(browserPage.filterByPatterSearchInput, keyName);
104+
await t.typeText(browserPage.filterByPatterSearchInput, 'InvalidText');
99105
await t.click(browserPage.searchButton);
100106
await t.expect(browserPage.searchAdvices.visible).ok('The filtering is set');
101107
});

tests/e2e/tests/regression/browser/database-overview-keys.e2e.ts

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Chance } from 'chance';
22
import { t } from 'testcafe';
3-
import { acceptLicenseTerms, acceptLicenseTermsAndAddDatabase, deleteDatabase } from '../../../helpers/database';
3+
import { acceptLicenseTermsAndAddDatabase, acceptLicenseTermsAndAddRECloudDatabase, deleteDatabase } from '../../../helpers/database';
44
import {
55
MyRedisDatabasePage,
66
CliPage,
@@ -32,7 +32,7 @@ const verifyTooltipContainsText = async(text: string, contains: boolean): Promis
3232
};
3333

3434
fixture `Database overview`
35-
.meta({ rte: rte.standalone, type: 'regression' })
35+
.meta({ type: 'regression' })
3636
.page(commonUrl)
3737
.beforeEach(async t => {
3838
//Create databases and keys
@@ -54,33 +54,31 @@ fixture `Database overview`
5454
await browserPage.deleteKeyByName(keyName);
5555
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
5656
});
57-
test('Verify that user can see total and current logical database number of keys (if there are any keys in other logical DBs)', async t => {
58-
//Wait for Total Keys number refreshed
59-
await t.expect(browserPage.overviewTotalKeys.withText(`${keysAmount + 1}`).exists).ok('Total keys are not changed', { timeout: 10000 });
60-
await t.hover(workbenchPage.overviewTotalKeys);
61-
//Verify that user can see total number of keys and number of keys in current logical database
62-
await t.expect(browserPage.tooltip.visible).ok('Total keys tooltip not displayed');
63-
await verifyTooltipContainsText(`${keysAmount + 1}Total Keys`, true);
64-
await verifyTooltipContainsText(`db1:${keysAmount}Keys`, true);
65-
});
66-
test('Verify that user can see total number of keys and not it current logical database (if there are no any keys in other logical DBs)', async t => {
67-
//Open Database
68-
await t.click(myRedisDatabasePage.myRedisDBButton);
69-
await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName);
70-
await t.hover(workbenchPage.overviewTotalKeys);
71-
//Verify that user can see only total number of keys
72-
await t.expect(browserPage.tooltip.visible).ok('Total keys tooltip not displayed');
73-
await verifyTooltipContainsText(`${keysAmount + 1}Total Keys`, true);
74-
await verifyTooltipContainsText('db1', false);
75-
});
7657
test
77-
.before(async t => {
78-
await acceptLicenseTerms();
79-
await addRedisDatabasePage.addRedisDataBase(cloudDatabaseConfig);
80-
//Click for saving
81-
await t.click(addRedisDatabasePage.addRedisDatabaseButton);
82-
await t.expect(myRedisDatabasePage.dbNameList.withExactText(cloudDatabaseConfig.databaseName).exists).ok('The existence of the database', { timeout: 5000 });
83-
await myRedisDatabasePage.clickOnDBByName(cloudDatabaseConfig.databaseName);
58+
.meta({ rte: rte.standalone })('Verify that user can see total and current logical database number of keys (if there are any keys in other logical DBs)', async t => {
59+
//Wait for Total Keys number refreshed
60+
await t.expect(browserPage.overviewTotalKeys.withText(`${keysAmount + 1}`).exists).ok('Total keys are not changed', { timeout: 10000 });
61+
await t.hover(workbenchPage.overviewTotalKeys);
62+
//Verify that user can see total number of keys and number of keys in current logical database
63+
await t.expect(browserPage.tooltip.visible).ok('Total keys tooltip not displayed');
64+
await verifyTooltipContainsText(`${keysAmount + 1}Total Keys`, true);
65+
await verifyTooltipContainsText(`db1:${keysAmount}Keys`, true);
66+
});
67+
test
68+
.meta({ rte: rte.standalone })('Verify that user can see total number of keys and not it current logical database (if there are no any keys in other logical DBs)', async t => {
69+
//Open Database
70+
await t.click(myRedisDatabasePage.myRedisDBButton);
71+
await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName);
72+
await t.hover(workbenchPage.overviewTotalKeys);
73+
//Verify that user can see only total number of keys
74+
await t.expect(browserPage.tooltip.visible).ok('Total keys tooltip not displayed');
75+
await verifyTooltipContainsText(`${keysAmount + 1}Total Keys`, true);
76+
await verifyTooltipContainsText('db1', false);
77+
});
78+
test
79+
.meta({ rte: rte.reCloud })
80+
.before(async() => {
81+
await acceptLicenseTermsAndAddRECloudDatabase(cloudDatabaseConfig);
8482
})
8583
.after(async() => {
8684
//Delete database

tests/e2e/tests/regression/browser/filtering.e2e.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,13 @@ test
147147
await t.expect(browserPage.filterByPatterSearchInput.getAttribute('value')).eql('', 'All characters from filter input are removed');
148148
await t.expect(browserPage.clearFilterButton.visible).notOk('The clear control is disappeared');
149149
});
150-
test
151-
.after(async() => {
152-
//Delete database
153-
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
154-
})('Verify that when user clicks on “clear” control and filter per key name is applied filter is reset and rescan initiated', async t => {
150+
test('Verify that when user clicks on “clear” control and filter per key name is applied filter is reset and rescan initiated', async t => {
155151
keyName = `KeyForSearch${chance.word({ length: 50 })}`;
152+
keyName2 = `KeyForFearch${chance.word({ length: 10 })}`;
153+
//Add keys
154+
await browserPage.addStringKey(keyName);
156155
//Search for not existed key name
157-
await browserPage.searchByKeyName(keyName);
156+
await browserPage.searchByKeyName(keyName2);
158157
await t.expect(browserPage.keyListTable.textContent).contains('No results found.', 'Key is not found');
159158
//Verify the clear control
160159
await t.click(browserPage.clearFilterButton);

tests/e2e/tests/regression/browser/keys-all-databases.e2e.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const browserPage = new BrowserPage();
2222
const common = new Common();
2323

2424
let keyName = common.generateWord(10);
25-
const verifyKeysAdded = async() => {
25+
const verifyKeysAdded = async(): Promise<void> => {
2626
keyName = common.generateWord(10);
2727
//add Hash key
2828
await browserPage.addHashKey(keyName);
@@ -51,6 +51,7 @@ test
5151
await verifyKeysAdded();
5252
});
5353
test
54+
.meta({ rte: rte.reCloud })
5455
.before(async() => {
5556
await acceptLicenseTermsAndAddRECloudDatabase(cloudDatabaseConfig);
5657
})

tests/e2e/tests/regression/database/overview.e2e.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,16 @@
1-
import { t } from 'testcafe';
21
import { rte } from '../../../helpers/constants';
3-
import {acceptLicenseTerms, deleteDatabase} from '../../../helpers/database';
4-
import { BrowserPage, AddRedisDatabasePage, MyRedisDatabasePage, DatabaseOverviewPage } from '../../../pageObjects';
2+
import { acceptLicenseTermsAndAddRECloudDatabase, deleteDatabase } from '../../../helpers/database';
3+
import { BrowserPage, DatabaseOverviewPage } from '../../../pageObjects';
54
import { commonUrl, cloudDatabaseConfig } from '../../../helpers/conf';
65

76
const browserPage = new BrowserPage();
8-
const addRedisDatabasePage = new AddRedisDatabasePage();
9-
const myRedisDatabasePage = new MyRedisDatabasePage();
107
const databaseOverviewPage = new DatabaseOverviewPage();
118

129
fixture `Overview`
1310
.meta({ type: 'regression' })
1411
.page(commonUrl)
1512
.beforeEach(async() => {
16-
await acceptLicenseTerms();
17-
await addRedisDatabasePage.addRedisDataBase(cloudDatabaseConfig);
18-
//Click for saving
19-
await t.click(addRedisDatabasePage.addRedisDatabaseButton);
20-
await t.expect(myRedisDatabasePage.dbNameList.withExactText(cloudDatabaseConfig.databaseName).exists).ok('The existence of the database', { timeout: 5000 });
21-
await myRedisDatabasePage.clickOnDBByName(cloudDatabaseConfig.databaseName);
13+
await acceptLicenseTermsAndAddRECloudDatabase(cloudDatabaseConfig);
2214
})
2315
.afterEach(async() => {
2416
//Delete database

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database';
2-
import { BrowserPage } from '../../../pageObjects';
2+
import { BrowserPage, WorkbenchPage } from '../../../pageObjects';
33
import {
44
commonUrl,
55
ossStandaloneBigConfig,
@@ -9,9 +9,10 @@ import { KeyTypesTexts, rte } from '../../../helpers/constants';
99
import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database';
1010

1111
const browserPage = new BrowserPage();
12+
const workbenchPage = new WorkbenchPage();
1213

1314
fixture `Tree view verifications`
14-
.meta({type: 'regression'})
15+
.meta({type: 'regression', rte: rte.standalone})
1516
.page(commonUrl)
1617
.beforeEach(async() => {
1718
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName);
@@ -21,20 +22,22 @@ fixture `Tree view verifications`
2122
await deleteStandaloneDatabaseApi(ossStandaloneBigConfig);
2223
});
2324
test
24-
.meta({ rte: rte.standalone })
2525
.before(async() => {
2626
await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName);
2727
})
2828
.after(async() => {
2929
//Delete database
3030
await deleteStandaloneDatabaseApi(ossStandaloneConfig);
3131
})('Verify that user can see message "No keys to display." when there are no keys in the database', async t => {
32+
const message = 'No keys to display.Use Workbench Guides and Tutorials to quickly load the data.'
3233
//Verify the message
3334
await t.click(browserPage.treeViewButton);
34-
await t.expect(browserPage.keyListTable.textContent).contains('No keys to display.', 'The message is displayed');
35+
await t.expect(browserPage.keyListMessage.textContent).contains(message, 'The message is displayed');
36+
// Verify that workbench opened by clicking on "Use Workbench Guides and Tutorials" link
37+
await t.click(browserPage.workbenchLinkButton);
38+
await t.expect(workbenchPage.expandArea.visible).ok('Workbench page is not opened');
3539
});
36-
test
37-
.meta({ rte: rte.standalone })('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 => {
40+
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 => {
3841
await browserPage.selectFilterGroupType(KeyTypesTexts.Hash);
3942
//Verify the controls on the Browser view
4043
await t.expect(browserPage.totalKeysNumber.visible).ok('The total number of keys is displayed on the Browser view');
@@ -46,8 +49,7 @@ test
4649
await t.expect(browserPage.scannedValue.visible).ok('The number of keys scanned is displayed on the Tree view');
4750
await t.expect(browserPage.scanMoreButton.visible).ok('The scan more button is displayed on the Tree view');
4851
});
49-
test
50-
.meta({ rte: rte.standalone })('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 => {
52+
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 => {
5153
//Open the first key in the tree view and remove
5254
await t.click(browserPage.treeViewButton);
5355
await t.expect(browserPage.treeViewDeviceFolder.visible).ok('The key folder is displayed', { timeout: 30000 });
@@ -61,8 +63,7 @@ test
6163
await t.expect(browserPage.treeViewDeviceFolder.nth(2).textContent).notEql(keyFolder, 'The key folder is removed from the tree view');
6264
await t.expect(browserPage.treeViewDeviceKyesCount.textContent).notEql(numberOfKeys, 'The number of keys is recalculated');
6365
});
64-
test
65-
.meta({ rte: rte.standalone })('Verify that user can see that “:” (colon) used as a default separator for namespaces and see the number of keys found per each namespace', async t => {
66+
test('Verify that user can see that “:” (colon) used as a default separator for namespaces and see the number of keys found per each namespace', async t => {
6667
await t.click(browserPage.treeViewButton);
6768
//Verify the default separator
6869
await t.expect(browserPage.treeViewSeparator.textContent).eql(':', 'The “:” (colon) used as a default separator for namespaces');

tests/e2e/tests/regression/workbench/workbench-re-cluster.e2e.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const common = new Common();
1818

1919
const commandForSend1 = 'info';
2020
const commandForSend2 = 'FT._LIST';
21-
const verifyCommandsInWorkbench = async() => {
21+
const verifyCommandsInWorkbench = async(): Promise<void> => {
2222
const multipleCommands = [
2323
'info',
2424
'command',
@@ -55,6 +55,7 @@ test
5555
await verifyCommandsInWorkbench();
5656
});
5757
test
58+
.meta({ rte: rte.reCloud })
5859
.before(async() => {
5960
await acceptLicenseTermsAndAddRECloudDatabase(cloudDatabaseConfig);
6061
})

0 commit comments

Comments
 (0)