Skip to content

Commit 8bead1b

Browse files
authored
Merge pull request #1387 from RedisInsight/e2e/feature/RI-966_resize-columns-in-key-details
E2E RI-3800 resize columns
2 parents ec87fb2 + 3edd76d commit 8bead1b

File tree

3 files changed

+108
-1
lines changed

3 files changed

+108
-1
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ export async function addNewStandaloneDatabaseApi(databaseParameters: AddNewData
2121
'password': databaseParameters.databasePassword
2222
})
2323
.set('Accept', 'application/json');
24-
2524
await t
2625
.expect(response.status).eql(201, 'The creation of new standalone database request failed')
2726
.expect(await response.body.name).eql(databaseParameters.databaseName, `Database Name is not equal to ${databaseParameters.databaseName} in response`);

tests/e2e/pageObjects/browser-page.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export class BrowserPage {
1010
cssSelectorKey = '[data-testid^=key-]';
1111
cssFilteringLabel = '[data-testid=multi-search]';
1212
cssJsonValue = '[data-tesid=value-as-json]';
13+
cssRowInVirtualizedTable = '[role=gridcell]';
1314
cssVirtualTableRow = '[aria-label=row]';
1415
cssKeyBadge = '[data-testid^=badge-]';
1516
cssKeyTtl = '[data-testid^=ttl-]';
@@ -135,6 +136,7 @@ export class BrowserPage {
135136
createIndexBtn = Selector('[data-testid=create-index-btn]');
136137
cancelIndexCreationBtn = Selector('[data-testid=create-index-cancel-btn]');
137138
confirmIndexCreationBtn = Selector('[data-testid=create-index-btn]');
139+
resizeTrigger = Selector('[data-testid^=resize-trigger-]');
138140
//TABS
139141
streamTabGroups = Selector('[data-testid=stream-tab-Groups]');
140142
streamTabConsumers = Selector('[data-testid=stream-tab-Consumers]');
@@ -560,6 +562,16 @@ export class BrowserPage {
560562
await t.click(this.confirmDeleteKeyButton);
561563
}
562564

565+
/**
566+
* Delete keys by their Names
567+
* @param keyNames The names of the key array
568+
*/
569+
async deleteKeysByNames(keyNames: string[]): Promise<void> {
570+
for(const name of keyNames) {
571+
await this.deleteKeyByName(name);
572+
}
573+
}
574+
563575
/**
564576
* Edit key name from details
565577
* @param keyName The name of the key
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import { acceptLicenseTerms } from '../../../helpers/database';
2+
import {
3+
MyRedisDatabasePage,
4+
BrowserPage
5+
} from '../../../pageObjects';
6+
import { rte } from '../../../helpers/constants';
7+
import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf';
8+
import { addNewStandaloneDatabasesApi, deleteStandaloneDatabasesApi } from '../../../helpers/api/api-database';
9+
import { Common } from '../../../helpers/common';
10+
11+
const myRedisDatabasePage = new MyRedisDatabasePage();
12+
const browserPage = new BrowserPage();
13+
const common = new Common();
14+
15+
const keyName = common.generateWord(10);
16+
const longFieldName = common.generateSentence(20);
17+
const keys = [
18+
{ type: 'Hash',
19+
name: `${keyName}:1`,
20+
offsetX: 100,
21+
fieldWidthStart: 0,
22+
fieldWidthEnd: 0
23+
},
24+
{
25+
type: 'List',
26+
name: `${keyName}:2`,
27+
offsetX: 80,
28+
fieldWidthStart: 0,
29+
fieldWidthEnd: 0
30+
},
31+
{
32+
type: 'Zset',
33+
name: `${keyName}:3`,
34+
offsetX: 50,
35+
fieldWidthStart: 0,
36+
fieldWidthEnd: 0
37+
}
38+
];
39+
const keyNames: string[] = [];
40+
keys.forEach(key => keyNames.push(key.name));
41+
42+
const databasesForAdding = [
43+
{ host: ossStandaloneConfig.host, port: ossStandaloneConfig.port, databaseName: 'testDB1' },
44+
{ host: ossStandaloneConfig.host, port: ossStandaloneConfig.port, databaseName: 'testDB2' }
45+
];
46+
47+
fixture `Resize columns in Key details`
48+
.meta({type: 'regression', rte: rte.standalone})
49+
.page(commonUrl)
50+
.beforeEach(async() => {
51+
// Add new databases using API
52+
await acceptLicenseTerms();
53+
await addNewStandaloneDatabasesApi(databasesForAdding);
54+
// Reload Page
55+
await common.reloadPage();
56+
await myRedisDatabasePage.clickOnDBByName(databasesForAdding[0].databaseName);
57+
await browserPage.addHashKey(keys[0].name, '2147476121', longFieldName, longFieldName);
58+
await browserPage.addListKey(keys[1].name, '2147476121', 'element');
59+
await browserPage.addZSetKey(keys[2].name, '1', '2147476121', 'member');
60+
})
61+
.afterEach(async() => {
62+
// Clear and delete database
63+
await browserPage.deleteKeysByNames(keyNames);
64+
await deleteStandaloneDatabasesApi(databasesForAdding);
65+
});
66+
test('Resize of columns in Hash, List, Zset Key details', async t => {
67+
const field = browserPage.keyDetailsTable.find(browserPage.cssRowInVirtualizedTable);
68+
const tableHeaderResizeTrigger = browserPage.resizeTrigger;
69+
70+
for(const key of keys) {
71+
await browserPage.openKeyDetails(key.name);
72+
// Remember initial column width
73+
key.fieldWidthStart = await field.clientWidth;
74+
await t.hover(tableHeaderResizeTrigger);
75+
await t.drag(tableHeaderResizeTrigger, -key.offsetX, 0, { speed: 0.5 });
76+
// Remember last column width
77+
key.fieldWidthEnd = await field.clientWidth;
78+
// Verify that user can resize columns for Hash, List, Zset Keys
79+
await t.expect(key.fieldWidthEnd).eql(key.fieldWidthStart - key.offsetX, `Field is not resized for ${key.type} key`);
80+
}
81+
82+
// Verify that resize saved when switching between pages
83+
await t.click(myRedisDatabasePage.workbenchButton);
84+
await t.click(myRedisDatabasePage.browserButton);
85+
await browserPage.openKeyDetails(keys[0].name);
86+
await t.expect(field.clientWidth).eql(keys[0].fieldWidthEnd, 'Resize context not saved for key when switching between pages');
87+
88+
// Verify that resize saved when switching between databases
89+
await t.click(myRedisDatabasePage.myRedisDBButton);
90+
await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName);
91+
// Verify that resize saved for specific data type
92+
for(const key of keys) {
93+
await browserPage.openKeyDetails(key.name);
94+
await t.expect(field.clientWidth).eql(key.fieldWidthEnd, `Resize context not saved for ${key.type} key when switching between databases`);
95+
}
96+
});

0 commit comments

Comments
 (0)