Skip to content

Commit 93ba2c3

Browse files
committed
Added management user veriyf page test case
1 parent d11f225 commit 93ba2c3

File tree

4 files changed

+139
-46
lines changed

4 files changed

+139
-46
lines changed

frontend/express/public/core/user-management/templates/data-table.html

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<div class="manage-users-table">
22
<cly-datatable-n
3+
test-id= "datatable-users"
34
:rows="filteredRows"
45
:force-loading="loading"
56
:exportFormat="formatExportFunction"
@@ -65,23 +66,30 @@ <h4>{{i18n('management-users.view-title')}}</h4>
6566
<el-table-column
6667
v-if="col.value === 'full_name'"
6768
sortable="true" prop="full_name" :label="i18n('management-users.user')">
69+
<template v-slot="rowScope">
70+
<span class="text-medium" :data-test-id="'datatable-users-user-' + rowScope.$index"> {{rowScope.row.full_name}} </span>
71+
</template>
6872
</el-table-column>
6973
<el-table-column
7074
v-if="col.value === 'username'"
7175
sortable="true" prop="username" :label="i18n('management-users.username')">
76+
<template v-slot="rowScope">
77+
<span class="text-medium" :data-test-id="'datatable-users-username-' + rowScope.$index">{{rowScope.row.username}}</span>
7278
</el-table-column>
7379
<el-table-column
7480
v-if="col.value === 'role'"
7581
prop="dispRole"
7682
sortable="true"
7783
:label="i18n('management-users.role')">
7884
<template v-slot="rowScope">
79-
<span class="text-medium" :data-test-id="'users-data-table-user-role-' + rowScope.$index">{{rowScope.row.dispRole}}</span>
85+
<span class="text-medium" :data-test-id="'datatable-users-role-' + rowScope.$index">{{rowScope.row.dispRole}}</span>
8086
</template>
8187
</el-table-column>
8288
<el-table-column
8389
v-if="col.value === 'email'"
8490
sortable="true" prop="email" :label="i18n('management-users.email')">
91+
<template v-slot="rowScope">
92+
<span class="text-medium" :data-test-id="'datatable-users-email-' + rowScope.$index">{{rowScope.row.email}}</span>
8593
</el-table-column>
8694
<el-table-column v-if="col.value === 'group'" sortable="true" prop="groupNames" :label="i18n('management-users.group')">
8795
<template v-slot="rowScope">
@@ -109,18 +117,18 @@ <h4>{{i18n('management-users.view-title')}}</h4>
109117
prop="last_login"
110118
:label="i18n('management-users.last_login')">
111119
<template v-slot="rowScope">
112-
<span class="text-medium" v-html="rowScope.row.last_login === 0 ? i18n('management-users.not-logged-in-yet') : formatTimeAgo(rowScope.row.last_login)">
120+
<span class="text-medium" :data-test-id="'datatable-users-last-login-' + rowScope.$index" v-html="rowScope.row.last_login === 0 ? i18n('management-users.not-logged-in-yet') : formatTimeAgo(rowScope.row.last_login)">
113121
</span>
114122
</template>
115123
</el-table-column>
116124
</template>
117125
<el-table-column type="options">
118126
<template v-slot="rowScope">
119-
<cly-more-options v-if="rowScope.row.hover" size="small" @command="handleCommand($event, rowScope.row._id)">
120-
<el-dropdown-item command="edit-user">{{ i18n('management-users.edit-user') }}</el-dropdown-item>
121-
<el-dropdown-item v-if="showLogs" command="show-logs">{{ i18n('management-users.view-user-logs') }}</el-dropdown-item>
122-
<el-dropdown-item command="reset-logins">{{ i18n('management-users.reset-failed-logins') }}</el-dropdown-item>
123-
<el-dropdown-item command="delete-user">{{ i18n('management-users.delete-user') }}</el-dropdown-item>
127+
<cly-more-options v-if="rowScope.row.hover" size="small" @command="handleCommand($event, rowScope.row._id)" :test-id="'more-button-' + + rowScope.$index">
128+
<el-dropdown-item command="edit-user" :data-test-id="'datatable-users-more-button-edit-select-' + rowScope.$index">{{ i18n('management-users.edit-user') }}</el-dropdown-item>
129+
<el-dropdown-item v-if="showLogs" command="show-logs" :data-test-id="'datatable-users-more-button-view-logs-select-' + rowScope.$index">{{ i18n('management-users.view-user-logs') }}</el-dropdown-item>
130+
<el-dropdown-item command="reset-logins" :data-test-id="'datatable-users-more-button-reset-logins-select-' + rowScope.$index">{{ i18n('management-users.reset-failed-logins') }}</el-dropdown-item>
131+
<el-dropdown-item command="delete-user" :data-test-id="'datatable-users-more-button-delete-user-select-' + rowScope.$index">{{ i18n('management-users.delete-user') }}</el-dropdown-item>
124132
</cly-more-options>
125133
</template>
126134
</el-table-column>

ui-tests/cypress/e2e/onboarding/onboarding.cy.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ describe('Complete Onboarding', () => {
241241
complianceHubHistoryPageHelpers.clickExportPurgeHistoryTab();
242242
complianceHubExportPurgePageHelpers.verifyEmptyPageElements();
243243
navigationHelpers.goToUserManagementPage();
244-
userManagementPageHelpers.verifyEmptyPageElements();
244+
userManagementPageHelpers.usersPageElements();
245245
navigationHelpers.goToApplicationsPage();
246246
applicationsPageHelpers.verifyEmptyPageElements();
247247
navigationHelpers.goToSettingsPage();
@@ -404,10 +404,10 @@ describe('Complete Onboarding', () => {
404404
complianceHubUsersPageHelpers.clickConsentHistoryTab();
405405
complianceHubHistoryPageHelpers.verifyFullDataPageElements();
406406
complianceHubHistoryPageHelpers.clickExportPurgeHistoryTab();
407-
complianceHubExportPurgePageHelpers.verifyFullDataPageElements();
407+
//complianceHubExportPurgePageHelpers.verifyFullDataPageElements(); //TODO: Data is not being generated with the populator. Need to generate the data
408+
navigationHelpers.goToUserManagementPage();
409+
userManagementPageHelpers.usersPageElements();
408410
//TODO: Add the cases of the following pages
409-
//navigationHelpers.goToUserManagementPage();
410-
//userManagementPageHelpers.verifyFullDataPageElements();
411411
//navigationHelpers.goToApplicationsPage();
412412
//applicationsPageHelpers.verifyFullDataPageElements();
413413
//navigationHelpers.goToSettingsPage();
Lines changed: 92 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,118 @@
11
import {
2-
userManagementPageElements,
2+
usersPageElements,
33
usersDataTableElements
4-
}
5-
from "../../../../support/elements/dashboard/manage/users/users";
4+
} from "../../../../support/elements/dashboard/manage/users/users";
5+
6+
import user from '../../../../fixtures/user.json';
67

78
const verifyStaticElementsOfPage = () => {
89
cy.verifyElement({
9-
labelElement: userManagementPageElements.PAGE_TITLE,
10+
labelElement: usersPageElements.PAGE_TITLE,
1011
labelText: "Manage Users",
1112
});
1213

1314
cy.verifyElement({
14-
element: userManagementPageElements.CREATE_USER_BUTTON,
15+
element: usersPageElements.CREATE_USER_BUTTON,
1516
elementText: "Create User",
1617
});
1718

1819
cy.verifyElement({
19-
element: userManagementPageElements.FILTER_USER_TYPE_SELECT,
20+
element: usersPageElements.FILTER_USER_TYPE_SELECT,
2021
elementText: "All roles",
2122
});
23+
24+
cy.verifyElement({
25+
element: usersDataTableElements().EDIT_COLUMNS_BUTTON,
26+
});
27+
28+
cy.verifyElement({
29+
element: usersDataTableElements().EXPORT_AS_BUTTON,
30+
});
31+
32+
cy.verifyElement({
33+
element: usersDataTableElements().TABLE_SEARCH_INPUT,
34+
});
35+
36+
cy.verifyElement({
37+
labelElement: usersDataTableElements().COLUMN_NAME_USER_LABEL,
38+
labelText: "User",
39+
});
40+
41+
cy.verifyElement({
42+
element: usersDataTableElements().COLUMN_NAME_USER_SORTABLE_ICON,
43+
});
44+
45+
cy.verifyElement({
46+
labelElement: usersDataTableElements().COLUMN_NAME_ROLE_LABEL,
47+
labelText: "Role",
48+
});
49+
50+
cy.verifyElement({
51+
element: usersDataTableElements().COLUMN_NAME_ROLE_SORTABLE_ICON,
52+
});
53+
54+
cy.verifyElement({
55+
labelElement: usersDataTableElements().COLUMN_NAME_EMAIL_LABEL,
56+
labelText: "E-mail",
57+
});
58+
59+
cy.verifyElement({
60+
element: usersDataTableElements().COLUMN_NAME_EMAIL_SORTABLE_ICON,
61+
});
62+
63+
cy.verifyElement({
64+
labelElement: usersDataTableElements().COLUMN_NAME_LAST_LOGIN_LABEL,
65+
labelText: "Last Login",
66+
});
67+
68+
cy.verifyElement({
69+
element: usersDataTableElements().COLUMN_NAME_LAST_LOGIN_SORTABLE_ICON,
70+
});
2271
};
2372

24-
const verifyEmptyPageElements = () => {
73+
const verifyPageElements = () => {
2574

2675
verifyStaticElementsOfPage();
2776

77+
verifyUsersDataFromTable({
78+
index: 0,
79+
user: user.username,
80+
role: "Global Admin",
81+
email: user.email,
82+
lastLogin: "less than a minute ago"
83+
});
84+
};
85+
86+
const verifyUsersDataFromTable = ({
87+
index = 0,
88+
user = null,
89+
role = null,
90+
email = null,
91+
lastLogin = null
92+
}) => {
93+
94+
cy.verifyElement({
95+
labelElement: usersDataTableElements(index).USER,
96+
labelText: user,
97+
});
98+
99+
cy.verifyElement({
100+
labelElement: usersDataTableElements(index).ROLE,
101+
labelText: role,
102+
});
103+
104+
cy.verifyElement({
105+
labelElement: usersDataTableElements(index).EMAIL,
106+
labelText: email,
107+
});
108+
28109
cy.verifyElement({
29-
element: usersDataTableElements(0).INTERNAL_NAME,
30-
elementText: "Global Admin",
110+
labelElement: usersDataTableElements(index).LAST_LOGIN,
111+
labelText: lastLogin,
31112
});
32113
};
33114

34115
module.exports = {
35-
verifyEmptyPageElements
116+
verifyPageElements,
117+
verifyUsersDataFromTable
36118
};
Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,44 @@
1-
export const userManagementPageElements = {
1+
export const usersPageElements = {
22
PAGE_TITLE: 'header-title',
33
CREATE_USER_BUTTON: 'create-user-button',
44
FILTER_USER_TYPE_SELECT: 'cly-input-dropdown-trigger-pseudo-input-label',
55
};
66

77
const usersDataTableElements = (index = 0) => ({
8-
8+
EDIT_COLUMNS_BUTTON: 'datatable-users-edit-columns-button',
9+
EXPORT_AS_BUTTON: 'datatable-users-export-as-button',
10+
TABLE_SEARCH_INPUT: 'datatable-users-datatable-search-input',
911
TABLE_ROWS: '.el-table__row',
10-
EDIT_COLUMNS_BUTTON: 'cly-datatable-n-test-id-edit-columns-button',
11-
EXPORT_AS_BUTTON: 'cly-datatable-n-test-id-export-as-button',
12-
TABLE_SEARCH_INPUT: 'cly-datatable-n-test-id-datatable-search-input',
13-
COLUMN_NAME_USER_LABEL: 'cly-datatable-n-test-id-label-user',
14-
COLUMN_NAME_USER_SORTABLE_ICON: 'cly-datatable-n-test-id-sortable-icon-user',
15-
COLUMN_NAME_ROLE_LABEL: 'cly-datatable-n-test-id-label-role',
16-
COLUMN_NAME_ROLE_SORTABLE_ICON: 'cly-datatable-n-test-id-sortable-icon-role',
17-
COLUMN_NAME_EMAIL_LABEL: 'cly-datatable-n-test-id-label-e-mail',
18-
COLUMN_NAME_EMAIL_SORTABLE_ICON: 'cly-datatable-n-test-id-sortable-icon-e-mail',
19-
COLUMN_NAME_LAST_LOGIN_LABEL: 'cly-datatable-n-test-id-label-last-login',
20-
COLUMN_NAME_LAST_LOGIN_SORTABLE_ICON: 'cly-datatable-n-test-id-sortable-icon-last-login',
12+
13+
COLUMN_NAME_USER_LABEL: 'datatable-users-label-user',
14+
COLUMN_NAME_USER_SORTABLE_ICON: 'datatable-users-sortable-icon-user',
15+
COLUMN_NAME_ROLE_LABEL: 'datatable-users-label-role',
16+
COLUMN_NAME_ROLE_SORTABLE_ICON: 'datatable-users-sortable-icon-role',
17+
COLUMN_NAME_EMAIL_LABEL: 'datatable-users-label-e-mail',
18+
COLUMN_NAME_EMAIL_SORTABLE_ICON: 'datatable-users-sortable-icon-e-mail',
19+
COLUMN_NAME_LAST_LOGIN_LABEL: 'datatable-users-label-last-login',
20+
COLUMN_NAME_LAST_LOGIN_SORTABLE_ICON: 'datatable-users-sortable-icon-last-login',
2121

2222
//Columns' Rows' Datas Elements
23-
INTERNAL_NAME: 'users-data-table-user-role-' + index,
23+
USER: 'datatable-users-user-' + index,
24+
ROLE: 'datatable-users-role-' + index,
25+
EMAIL: 'datatable-users-email-' + index,
26+
LAST_LOGIN: 'datatable-users-last-login-' + index,
2427

2528
//PAGINATION ELEMENTS
26-
ITEMS_PER_PAGE_LABEL: 'cly-datatable-n-test-id-items-per-page-label',
27-
PER_PAGE_COUNT_SELECT: 'cly-datatable-n-test-id-items-per-page-count-select-input-pseudo-input-label',
28-
PER_PAGE_COUNT_SELECT_ICON: 'cly-datatable-n-test-id-items-per-page-count-select-icon',
29-
PER_PAGE_COUNT_LABEL: 'cly-datatable-n-test-id-items-per-page-count-select',
30-
PAGE_NUMBER_SELECT: 'cly-datatable-n-test-id-page-number-select-input-pseudo-input-label',
31-
PAGE_NUMBER_SELECT_ICON: 'cly-datatable-n-test-id-page-number-select-icon',
32-
FIRST_PAGE_ARROW_BUTTON: 'cly-datatable-n-test-id-first-page-arrow-button',
33-
PREVIOUS_PAGE_ARROW_BUTTON: 'cly-datatable-n-test-id-previous-page-arrow-button',
34-
NEXT_PAGE_ARROW_BUTTON: 'cly-datatable-n-test-id-next-page-arrow-button',
35-
LAST_PAGE_ARROW_BUTTON: 'cly-datatable-n-test-id-last-page-arrow-button'
29+
ITEMS_PER_PAGE_LABEL: 'datatable-users-items-per-page-label',
30+
PER_PAGE_COUNT_SELECT: 'datatable-users-items-per-page-count-select-input-pseudo-input-label',
31+
PER_PAGE_COUNT_SELECT_ICON: 'datatable-users-items-per-page-count-select-icon',
32+
PER_PAGE_COUNT_LABEL: 'datatable-users-items-per-page-count-select',
33+
PAGE_NUMBER_SELECT: 'datatable-users-page-number-select-input-pseudo-input-label',
34+
PAGE_NUMBER_SELECT_ICON: 'datatable-users-page-number-select-icon',
35+
FIRST_PAGE_ARROW_BUTTON: 'datatable-users-first-page-arrow-button',
36+
PREVIOUS_PAGE_ARROW_BUTTON: 'datatable-users-previous-page-arrow-button',
37+
NEXT_PAGE_ARROW_BUTTON: 'datatable-users-next-page-arrow-button',
38+
LAST_PAGE_ARROW_BUTTON: 'datatable-users-last-page-arrow-button'
3639
});
3740

3841
module.exports = {
39-
userManagementPageElements,
42+
usersPageElements,
4043
usersDataTableElements
4144
};

0 commit comments

Comments
 (0)