Skip to content

Commit d8d1a21

Browse files
Improve Cypress based on review comments
1 parent 62ff76d commit d8d1a21

1 file changed

Lines changed: 82 additions & 74 deletions

File tree

  • cypress/e2e/ui/Settings/Application-Settings

cypress/e2e/ui/Settings/application-settings.cy.js renamed to cypress/e2e/ui/Settings/Application-Settings/user.cy.js

Lines changed: 82 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@ import {
33
LABEL_CONFIG_KEYS,
44
BUTTON_CONFIG_KEYS,
55
FIELD_CONFIG_KEYS,
6-
} from '../../../support/commands/constants/command_constants';
7-
import { flashClassMap } from '../../../support/assertions/assertion_constants';
6+
} from '../../../../support/commands/constants/command_constants';
7+
import { flashClassMap } from '../../../../support/assertions/assertion_constants';
8+
9+
// Field labels
10+
const LABEL_FULL_NAME = 'Full Name';
11+
const LABEL_ID = 'ID';
12+
const LABEL_USER_NAME = 'Username'
13+
const LABEL_EMAIL = 'E-mail Address'
14+
const LABEL_CURRENT_GROUP = 'Current Group';
15+
const LABEL_ROLE = 'Role'
816

917
// Field values
1018
const EVM_GROUP_SUPER_ADMIN = 'EvmGroup-super_administrator';
@@ -30,6 +38,12 @@ const SETTINGS_MENU_OPTION = 'Settings';
3038
const APP_SETTINGS_MENU_OPTION = 'Application Settings';
3139
const LOGOUT_MENU_OPTION = 'Logout';
3240

41+
// Toolbar options
42+
const EDIT_USER_CONFIG_OPTION = 'Edit this User'
43+
const ADD_USER_CONFIG_OPTION = 'Add a new User';
44+
const DELETE_USER_CONFIG_OPTION = 'Delete this User';
45+
const COPY_USER_CONFIG_OPTION = 'Copy this User to a new User';
46+
3347
// Accordion labels
3448
const ACCESS_CONTROL_ACCORDION_LABEL = 'Access Control';
3549
const MANAGEIQ_REGION_ACCORDION_LABEL = /^ManageIQ Region:/;
@@ -45,11 +59,9 @@ function selectToolbarOption({ toolbar = 'Configuration', option }) {
4559
});
4660
}
4761

48-
function assertSelectedGroups(selectedGroups, parentSelector, childSelector) {
49-
cy.get(parentSelector).within(() => {
50-
selectedGroups.forEach((item) => {
51-
cy.get(childSelector).should('contain.text', item);
52-
});
62+
function assertSelectedGroups(selectedGroups, childSelector) {
63+
selectedGroups.forEach((item) => {
64+
cy.get(childSelector).should('contain.text', item);
5365
});
5466
}
5567

@@ -82,27 +94,25 @@ function assertUserInformation({
8294
role,
8395
selectedGroups = [],
8496
}) {
85-
cy.contains(getUserInfoElementSelector(1, 'label_header'), 'ID');
86-
cy.contains(getUserInfoElementSelector(2, 'label_header'), 'Full Name');
97+
cy.contains(getUserInfoElementSelector(1, 'label_header'), LABEL_ID);
98+
cy.contains(getUserInfoElementSelector(2, 'label_header'), LABEL_FULL_NAME);
8799
cy.contains(getUserInfoElementSelector(2, 'content_value'), fullName);
88-
cy.contains(getUserInfoElementSelector(3, 'label_header'), 'Username');
100+
cy.contains(getUserInfoElementSelector(3, 'label_header'), LABEL_USER_NAME);
89101
cy.contains(getUserInfoElementSelector(3, 'content_value'), userName);
90-
cy.contains(getUserInfoElementSelector(4, 'label_header'), 'E-mail Address');
102+
cy.contains(getUserInfoElementSelector(4, 'label_header'), LABEL_EMAIL);
91103
email
92104
? cy.contains(getUserInfoElementSelector(4, 'content_value'), email)
93105
: cy
94106
.get(getUserInfoElementSelector(4, 'content_value'))
95107
.invoke('text')
96108
.should('be.empty');
97-
cy.contains(getUserInfoElementSelector(5, 'label_header'), 'Current Group');
109+
cy.contains(getUserInfoElementSelector(5, 'label_header'), LABEL_CURRENT_GROUP);
98110
cy.contains(getUserInfoElementSelector(5, 'content_value'), currentGroup);
99-
cy.contains(getUserInfoElementSelector(6, 'label_header'), 'Role');
111+
cy.contains(getUserInfoElementSelector(6, 'label_header'), LABEL_ROLE);
100112
cy.contains(getUserInfoElementSelector(6, 'content_value'), role);
101-
assertSelectedGroups(
102-
selectedGroups,
103-
'ul.settings_schedule_groups_information',
104-
'.cds--link .content .expand'
105-
);
113+
cy.get('ul.settings_schedule_groups_information').within(() => {
114+
assertSelectedGroups(selectedGroups, '.cds--link .content .expand');
115+
});
106116
}
107117

108118
describe('Settings > Application Settings > Users', () => {
@@ -132,22 +142,22 @@ describe('Settings > Application Settings > Users', () => {
132142
});
133143

134144
// Click edit button
135-
selectToolbarOption({ option: 'Edit this User' });
145+
selectToolbarOption({ option: EDIT_USER_CONFIG_OPTION });
136146

137147
// Check that fields are correctly disabled and contain the correct values
138148
cy.expect_explorer_title('Administrator');
139149
cy.validateFormLabels([
140150
{
141151
[LABEL_CONFIG_KEYS.FOR_VALUE]: 'name',
142-
[LABEL_CONFIG_KEYS.EXPECTED_TEXT]: 'Full Name',
152+
[LABEL_CONFIG_KEYS.EXPECTED_TEXT]: LABEL_FULL_NAME,
143153
},
144154
{
145155
[LABEL_CONFIG_KEYS.FOR_VALUE]: 'userid',
146-
[LABEL_CONFIG_KEYS.EXPECTED_TEXT]: 'Username',
156+
[LABEL_CONFIG_KEYS.EXPECTED_TEXT]: LABEL_USER_NAME,
147157
},
148158
{
149159
[LABEL_CONFIG_KEYS.FOR_VALUE]: 'email',
150-
[LABEL_CONFIG_KEYS.EXPECTED_TEXT]: 'E-mail Address',
160+
[LABEL_CONFIG_KEYS.EXPECTED_TEXT]: LABEL_EMAIL,
151161
},
152162
]);
153163
cy.get('#downshift-0-label').contains('Available Groups')
@@ -201,7 +211,7 @@ describe('Settings > Application Settings > Users', () => {
201211
USERS_ACCORDION_LABEL,
202212
'Administrator',
203213
]);
204-
selectToolbarOption({ option: 'Edit this User' });
214+
selectToolbarOption({ option: EDIT_USER_CONFIG_OPTION });
205215

206216
// Edit the email field since that is the only field that the Adminisistrator user can change not including the password field
207217
cy.getFormInputFieldByIdAndType({ inputId: 'email' }).type(TEST_EMAIL);
@@ -226,7 +236,7 @@ describe('Settings > Application Settings > Users', () => {
226236
cy.contains(getUserInfoElementSelector(4, 'content_value'), TEST_EMAIL);
227237

228238
// Reset email back to default value of empty
229-
selectToolbarOption({ option: 'Edit this User' });
239+
selectToolbarOption({ option: EDIT_USER_CONFIG_OPTION });
230240
cy.getFormInputFieldByIdAndType({ inputId: 'email' }).clear();
231241
cy.interceptApi({
232242
alias: 'saveUserInfoApi',
@@ -255,7 +265,7 @@ describe('Settings > Application Settings > Users', () => {
255265
MANAGEIQ_REGION_ACCORDION_LABEL,
256266
USERS_ACCORDION_LABEL,
257267
]);
258-
selectToolbarOption({ option: 'Add a new User' });
268+
selectToolbarOption({ option: ADD_USER_CONFIG_OPTION });
259269

260270
// Input values on the user form
261271
cy.getFormInputFieldByIdAndType({ inputId: 'name' }).type(
@@ -274,11 +284,9 @@ describe('Settings > Application Settings > Users', () => {
274284
}).type(TEST_PASS_WORD);
275285
cy.getFormInputFieldByIdAndType({ inputId: 'email' }).type(TEST_EMAIL);
276286
selectFromMultiSelect([EVM_GROUP_ADMIN]);
277-
assertSelectedGroups(
278-
[EVM_GROUP_ADMIN],
279-
'#selected-groups',
280-
'p.group-name'
281-
);
287+
cy.get('#selected-groups').within(() => {
288+
assertSelectedGroups([EVM_GROUP_ADMIN], 'p.group-name');
289+
});
282290
cy.interceptApi({
283291
alias: 'addUserApi',
284292
urlPattern: '/api/users',
@@ -327,7 +335,7 @@ describe('Settings > Application Settings > Users', () => {
327335
]);
328336

329337
// Click the edit user button
330-
selectToolbarOption({ option: 'Edit this User' });
338+
selectToolbarOption({ option: EDIT_USER_CONFIG_OPTION });
331339

332340
// Edit the values on the user form
333341
cy.getFormInputFieldByIdAndType({ inputId: 'name' })
@@ -354,12 +362,12 @@ describe('Settings > Application Settings > Users', () => {
354362
EVM_GROUP_APPROVER,
355363
EVM_GROUP_AUDITOR,
356364
]);
357-
358-
assertSelectedGroups(
365+
cy.get('#selected-groups').within(() => {
366+
assertSelectedGroups(
359367
[EVM_GROUP_APPROVER, EVM_GROUP_AUDITOR],
360-
'#selected-groups',
361-
'p.group-name'
362-
);
368+
'p.group-name',
369+
);
370+
});
363371
cy.interceptApi({
364372
alias: 'saveUserInfoApi',
365373
urlPattern: /\/api\/users\/\d+$/,
@@ -400,7 +408,7 @@ describe('Settings > Application Settings > Users', () => {
400408
FULL_NAME_FOR_EDIT_TEST,
401409
]);
402410

403-
selectToolbarOption({ option: 'Delete this User' });
411+
selectToolbarOption({ option: DELETE_USER_CONFIG_OPTION });
404412
cy.expect_flash(flashClassMap.success, 'delete');
405413

406414
// Verify that the user was deleted from the table
@@ -416,14 +424,14 @@ describe('Settings > Application Settings > Users', () => {
416424
MANAGEIQ_REGION_ACCORDION_LABEL,
417425
USERS_ACCORDION_LABEL,
418426
]);
419-
selectToolbarOption({ option: 'Add a new User' });
427+
selectToolbarOption({ option: ADD_USER_CONFIG_OPTION });
420428

421429
// Input values on the user form
422430
cy.getFormInputFieldByIdAndType({ inputId: 'name' }).type(
423-
FULL_NAME_FOR_ADD_TEST
431+
FULL_NAME_FOR_ADD_TEST,
424432
);
425433
cy.getFormInputFieldByIdAndType({ inputId: 'userid' }).type(
426-
USERNAME_FOR_ADD_TEST
434+
USERNAME_FOR_ADD_TEST,
427435
);
428436
cy.getFormInputFieldByIdAndType({
429437
inputId: 'password',
@@ -435,11 +443,12 @@ describe('Settings > Application Settings > Users', () => {
435443
}).type(TEST_PASS_WORD);
436444
cy.getFormInputFieldByIdAndType({ inputId: 'email' }).type(TEST_EMAIL);
437445
selectFromMultiSelect([EVM_GROUP_ADMIN, EVM_GROUP_APPROVER]);
438-
assertSelectedGroups(
439-
[EVM_GROUP_ADMIN, EVM_GROUP_APPROVER],
440-
'#selected-groups',
441-
'p.group-name'
442-
);
446+
cy.get('#selected-groups').within(() => {
447+
assertSelectedGroups(
448+
[EVM_GROUP_ADMIN, EVM_GROUP_APPROVER],
449+
'p.group-name',
450+
);
451+
});
443452
cy.interceptApi({
444453
alias: 'addUserApi',
445454
urlPattern: '/api/users',
@@ -463,7 +472,7 @@ describe('Settings > Application Settings > Users', () => {
463472

464473
// Verify copy form was loaded with the correct values
465474
// Click copy user button
466-
selectToolbarOption({ option: 'Copy this User to a new User' });
475+
selectToolbarOption({ option: COPY_USER_CONFIG_OPTION });
467476
cy.validateFormFields([
468477
{
469478
[FIELD_CONFIG_KEYS.ID]: 'name',
@@ -477,18 +486,19 @@ describe('Settings > Application Settings > Users', () => {
477486
},
478487
]);
479488
// Check the selected groups list initial selected values
480-
assertSelectedGroups(
481-
[EVM_GROUP_ADMIN, EVM_GROUP_APPROVER],
482-
'#selected-groups',
483-
'p.group-name'
484-
);
489+
cy.get('#selected-groups').within(() => {
490+
assertSelectedGroups(
491+
[EVM_GROUP_ADMIN, EVM_GROUP_APPROVER],
492+
'p.group-name',
493+
);
494+
});
485495

486496
// Input the new values on the copy user form
487497
cy.getFormInputFieldByIdAndType({ inputId: 'name' })
488498
.clear()
489499
.type(FULL_NAME_FOR_COPY_TEST);
490500
cy.getFormInputFieldByIdAndType({ inputId: 'userid' }).type(
491-
USERNAME_FOR_COPY_TEST
501+
USERNAME_FOR_COPY_TEST,
492502
);
493503
cy.getFormInputFieldByIdAndType({
494504
inputId: 'password',
@@ -502,12 +512,12 @@ describe('Settings > Application Settings > Users', () => {
502512
.clear()
503513
.type(UPDATED_TEST_EMAIL);
504514
// Admin group is already selected so unselect it and leave approver group selected
505-
selectFromMultiSelect([EVM_GROUP_ADMIN]);
506-
assertSelectedGroups(
507-
[EVM_GROUP_APPROVER],
508-
'#selected-groups',
509-
'p.group-name'
510-
);
515+
cy.get('#selected-groups').within(() => {
516+
assertSelectedGroups(
517+
[EVM_GROUP_ADMIN, EVM_GROUP_APPROVER],
518+
'p.group-name',
519+
);
520+
});
511521
cy.interceptApi({
512522
alias: 'addUserApi',
513523
urlPattern: '/api/users',
@@ -547,18 +557,18 @@ describe('Settings > Application Settings > Users', () => {
547557
fullName: FULL_NAME_FOR_COPY_TEST,
548558
userName: USERNAME_FOR_COPY_TEST,
549559
email: UPDATED_TEST_EMAIL,
550-
currentGroup: EVM_GROUP_APPROVER,
551-
role: EVM_ROLE_APPROVER,
552-
selectedGroups: [EVM_GROUP_APPROVER],
560+
currentGroup: EVM_GROUP_ADMIN,
561+
role: EVM_ROLE_ADMIN,
562+
selectedGroups: [EVM_GROUP_ADMIN, EVM_GROUP_APPROVER],
553563
});
554564

555565
// Click the delete user button for the copied user
556-
selectToolbarOption({ option: 'Delete this User' });
566+
selectToolbarOption({ option: DELETE_USER_CONFIG_OPTION });
557567
cy.expect_flash(flashClassMap.success, 'delete');
558568
// Verify that the user was deleted from the table
559569
cy.get('.miq-data-table table tbody tr').should(
560570
'not.contain',
561-
FULL_NAME_FOR_COPY_TEST
571+
FULL_NAME_FOR_COPY_TEST,
562572
);
563573

564574
cy.selectAccordionItem([
@@ -578,12 +588,12 @@ describe('Settings > Application Settings > Users', () => {
578588
});
579589

580590
// Click the delete user button for the new user
581-
selectToolbarOption({ option: 'Delete this User' });
591+
selectToolbarOption({ option: DELETE_USER_CONFIG_OPTION });
582592
cy.expect_flash(flashClassMap.success, 'delete');
583593
// Verify that the user was deleted from the table
584594
cy.get('.miq-data-table table tbody tr').should(
585595
'not.contain',
586-
FULL_NAME_FOR_ADD_TEST
596+
FULL_NAME_FOR_ADD_TEST,
587597
);
588598
});
589599

@@ -593,15 +603,13 @@ describe('Settings > Application Settings > Users', () => {
593603
MANAGEIQ_REGION_ACCORDION_LABEL,
594604
USERS_ACCORDION_LABEL,
595605
]);
596-
selectToolbarOption({ option: 'Add a new User' });
606+
selectToolbarOption({ option: ADD_USER_CONFIG_OPTION });
597607

598608
// Input values on the user form
599609
selectFromMultiSelect([EVM_GROUP_ADMIN]);
600-
assertSelectedGroups(
601-
[EVM_GROUP_ADMIN],
602-
'#selected-groups',
603-
'p.group-name'
604-
);
610+
cy.get('#selected-groups').within(() => {
611+
assertSelectedGroups([EVM_GROUP_ADMIN], 'p.group-name');
612+
});
605613
cy.getFormInputFieldByIdAndType({ inputId: 'userid' }).type(
606614
USERNAME_FOR_ADD_TEST
607615
);
@@ -690,7 +698,7 @@ describe('Settings > Application Settings > Users', () => {
690698
]);
691699

692700
// Click the edit user button
693-
selectToolbarOption({ option: 'Edit this User' });
701+
selectToolbarOption({ option: EDIT_USER_CONFIG_OPTION });
694702

695703
// Edit the name field and confirm submit & reset buttons are enabled
696704
cy.getFormInputFieldByIdAndType({ inputId: 'name' }).type(' Edited');
@@ -798,7 +806,7 @@ describe('Settings > Application Settings > Users', () => {
798806
]);
799807

800808
// Click the edit user button
801-
selectToolbarOption({ option: 'Edit this User' });
809+
selectToolbarOption({ option: EDIT_USER_CONFIG_OPTION });
802810

803811
// Enter new matching passwords and click the submit button
804812
cy.get('.cds--tooltip-trigger__wrapper > .cds--btn').click();
@@ -855,4 +863,4 @@ describe('Settings > Application Settings > Users', () => {
855863
cy.appDbState('restore');
856864
});
857865
});
858-
});
866+
});

0 commit comments

Comments
 (0)