Skip to content

Commit 7adf4b5

Browse files
Merge pull request #758 from RedisInsight/feature/e2e-create-consumer-group
e2e - Show Consumer groups tests
2 parents 3569dbd + 6b4ff75 commit 7adf4b5

File tree

5 files changed

+62
-6
lines changed

5 files changed

+62
-6
lines changed

redisinsight/ui/src/components/virtual-table/VirtualTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ const VirtualTable = (props: IProps) => {
188188
styles.headerButton,
189189
isColumnSorted ? styles.headerButtonSorted : null,
190190
)}
191+
data-testid="header-sorting-button"
191192
>
192193
<EuiIcon
193194
style={{ marginLeft: '4px' }}

redisinsight/ui/src/pages/browser/components/stream-details/groups-view/GroupsViewWrapper.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ const GroupsViewWrapper = (props: Props) => {
178178
const tooltipContent = formatLongName(name)
179179
return (
180180
<EuiText color="subdued" size="s" style={{ maxWidth: '100%' }}>
181-
<div style={{ display: 'flex' }} className="truncateText" data-testid={`stream-group-${name}`}>
181+
<div style={{ display: 'flex' }} className="truncateText" data-testid={`stream-group-name-${name}`}>
182182
<EuiToolTip
183183
className={styles.tooltipName}
184184
anchorClassName="truncateText"
@@ -250,12 +250,12 @@ const GroupsViewWrapper = (props: Props) => {
250250
return (
251251
<div>
252252
<EuiText color="subdued" size="s" style={{ maxWidth: '100%' }}>
253-
<div className="truncateText streamItem" style={{ display: 'flex' }} data-testid={`stream-group-${id}-date`}>
253+
<div className="truncateText streamItem" style={{ display: 'flex' }} data-testid={`stream-group-date-${id}`}>
254254
{getFormatTime(timestamp)}
255255
</div>
256256
</EuiText>
257257
<EuiText size="s" style={{ maxWidth: '100%' }}>
258-
<div className="streamItemId" data-testid={`stream-group-${id}`}>
258+
<div className="streamItemId" data-testid={`stream-group-id-${id}`}>
259259
{id}
260260
</div>
261261
</EuiText>

tests/e2e/pageObjects/browser-page.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,8 @@ export class BrowserPage {
187187
confirmationMessagePopover = Selector('div.euiPopover__panel .euiText ');
188188
streamRangeLeftTimestamp = Selector('[data-testid=range-left-timestamp]');
189189
streamRangeRightTimestamp = Selector('[data-testid=range-right-timestamp]');
190-
streamGroupId = Selector('.streamItemId[data-testid^=stream-group-]');
190+
streamGroupId = Selector('.streamItemId[data-testid^=stream-group-id]');
191+
streamGroupName = Selector('[data-testid^=stream-group-name]');
191192
entryIdInfoIcon = Selector('[data-testid=entry-id-info-icon]');
192193
errorMessage = Selector('[data-test-subj=toast-error]');
193194
entryIdError = Selector('[data-testid=id-error]');

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const browserPage = new BrowserPage();
1111
const chance = new Chance();
1212

1313
let keyName = chance.word({ length: 20 });
14+
let consumerGroupName = chance.word({ length: 20 });
1415
const keyField = chance.word({ length: 20 });
1516
const keyValue = chance.word({ length: 20 });
1617

@@ -39,7 +40,7 @@ test('Verify that user can create a new Consumer Group in the current Stream', a
3940
'fetches the entire stream from the beginning.'
4041
];
4142
keyName = chance.word({ length: 20 });
42-
const consumerGroupName = `qwerty123456${chance.word({ length: 20 })}!@#$%^&*()_+=`;
43+
consumerGroupName = `qwerty123456${chance.word({ length: 20 })}!@#$%^&*()_+=`;
4344
// Add New Stream Key
4445
await browserPage.addStreamKey(keyName, keyField, keyValue);
4546
await t.click(browserPage.fullScreenModeButton);
@@ -56,7 +57,7 @@ test('Verify that user can create a new Consumer Group in the current Stream', a
5657
});
5758
test('Verify that user can input the 0, $ and Valid Entry ID in the ID field', async t => {
5859
keyName = chance.word({ length: 20 });
59-
const consumerGroupName = chance.word({ length: 20 });
60+
consumerGroupName = chance.word({ length: 20 });
6061
const entryIds = [
6162
'0',
6263
'$',
@@ -72,3 +73,22 @@ test('Verify that user can input the 0, $ and Valid Entry ID in the ID field', a
7273
await t.expect(browserPage.streamGroupsContainer.textContent).contains(`${consumerGroupName}${entryId}`, 'The new Consumer Group is added');
7374
}
7475
});
76+
test('Verify that user can see the Consumer group columns (Group Name, Consumers, Pending, Last Delivered ID)', async t => {
77+
keyName = chance.word({ length: 20 });
78+
consumerGroupName = chance.word({ length: 20 });
79+
const groupColumns = [
80+
'Group Name',
81+
'Consumers',
82+
'Pending',
83+
'Last Delivered ID'
84+
];
85+
// Add New Stream Key
86+
await browserPage.addStreamKey(keyName, keyField, keyValue);
87+
await t.click(browserPage.fullScreenModeButton);
88+
// Open Stream consumer groups and add group with different IDs
89+
await t.click(browserPage.streamTabGroups);
90+
await browserPage.createConsumerGroup(consumerGroupName);
91+
for(let i = 0; i < groupColumns.length; i++){
92+
await t.expect(browserPage.scoreButton.nth(i).textContent).eql(groupColumns[i], `The ${i} Consumer group column name`);
93+
}
94+
});

tests/e2e/tests/regression/browser/consumer-group.e2e.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,37 @@ test('Verify that when user enter invalid format ID the error message appears',
6464
await t.expect(browserPage.entryIdError.textContent).eql(error, 'The invalid Id error message');
6565
}
6666
});
67+
test('Verify that user can see the message when there are no Consumer Groups', async t => {
68+
keyName = chance.word({ length: 20 });
69+
const message = 'Your Key has no Consumer Groups available.';
70+
// Add New Stream Key
71+
await browserPage.addStreamKey(keyName, keyField, keyValue);
72+
// Open Stream consumer groups and check message
73+
await t.click(browserPage.streamTabGroups);
74+
await t.expect(browserPage.streamGroupsContainer.textContent).contains(message, 'The Consumer Groups message');
75+
});
76+
test('Verify that user can sort Consumer Group column: A>Z / Z>A(A>Z is default table sorting)', async t => {
77+
keyName = chance.word({ length: 20 });
78+
const consumerGroupNames = [
79+
'agroup',
80+
'bgroup',
81+
'zgroup'
82+
];
83+
// Add New Stream Key
84+
await browserPage.addStreamKey(keyName, keyField, keyValue);
85+
// Open Stream consumer groups and add few groups
86+
await t.click(browserPage.streamTabGroups);
87+
for(const group of consumerGroupNames){
88+
await browserPage.createConsumerGroup(group);
89+
}
90+
//Verify default sorting
91+
const groupsCount = await browserPage.streamGroupName.count;
92+
for(let i = 0; i < groupsCount; i++){
93+
await t.expect(browserPage.streamGroupName.nth(i).textContent).contains(consumerGroupNames[i], 'The Consumer Groups default sorting');
94+
}
95+
//Verify the Z>A sorting
96+
await t.click(browserPage.scoreButton.nth(0));
97+
for(let i = 0; i < groupsCount; i++){
98+
await t.expect(browserPage.streamGroupName.nth(i).textContent).contains(consumerGroupNames[groupsCount - 1 - i], 'The Consumer Groups Z>A sorting');
99+
}
100+
});

0 commit comments

Comments
 (0)