ToolJet/cypress-tests/cypress/support/utils/platform/groupsUI.js
2025-11-24 11:29:54 +05:30

858 lines
No EOL
30 KiB
JavaScript

import { commonSelectors } from "Selectors/common";
import { groupsSelector } from "Selectors/manageGroups";
import { groupsText } from "Texts/manageGroups";
export const verifyAdminHelperText = (index = 0) => {
cy.get(groupsSelector.helperTextAdminAppAccess)
.eq(index)
.should("be.visible")
.and("contain.text", "Admin has all permissions. This is not editable");
cy.get(groupsSelector.helperTextAdminAppAccess)
.eq(index)
.find("a")
.should("be.visible")
.and("have.text", "read documentation")
.and("have.attr", "href")
.and("include", "docs.tooljet.ai/docs/tutorial/manage-users-groups");
};
export const verifyEditUserRoleModal = (userEmail) => {
cy.get('[data-cy="modal-title"]')
.last()
.within(() => {
cy.get("span").should("be.visible").and("contain.text", "Edit user role");
cy.get('[data-cy="user-email"]')
.should("be.visible")
.and("have.text", userEmail);
});
cy.get(groupsSelector.userRoleLabel)
.should("be.visible")
.and("have.text", groupsText.userRole);
cy.get(groupsSelector.warningText)
.should("be.visible")
.and("have.text", groupsText.warningText);
cy.get(".react-select__control").should("be.visible");
cy.get(".react-select__placeholder")
.should("be.visible")
.and("contain.text", "Select new role of user");
cy.get(groupsSelector.cancelButton)
.should("be.visible")
.and("have.text", groupsText.cancelButton)
.and("be.enabled");
cy.get(groupsSelector.confimButton)
.should("be.visible")
.and("have.text", groupsText.continueButtonText)
.and("be.disabled");
cy.get('[data-cy="modal-close-button"]').should("be.visible");
};
export const toggleAllPermissions = (status = ["uncheck", "check"]) => {
permissions.forEach((permissionSelector) => {
cy.get(permissionSelector).should("be.visible")[status[0]]();
cy.verifyToastMessage(
commonSelectors.toastMessage,
groupsText.permissionUpdatedToast
);
cy.get(permissionSelector).should("be.visible")[status[1]]();
cy.verifyToastMessage(
commonSelectors.toastMessage,
groupsText.permissionUpdatedToast
);
});
};
export const verifyDeleteConfirmationModal = () => {
cy.get(".confirm-dialogue-modal").should("be.visible");
cy.verifyElement(groupsSelector.deleteMessage, groupsText.deleteMessage);
cy.get(groupsSelector.yesButton).should("be.visible").and("be.enabled");
cy.get(groupsSelector.cancelButton).should("be.visible").and("be.enabled");
};
export const verifyGranularEditModal = (role) => {
cy.wait(1000)
cy.get(groupsSelector.granularAccessPermission, { timeout: 15000 }).realHover();
cy.get('[data-cy="edit-apps-granular-access"]').click();
cy.get(".modal-base").should("be.visible");
cy.verifyElement(
`${groupsSelector.addEditPermissionModalTitle}:eq(2)`,
groupsText.editPermissionModalTitle
);
permissionModal();
if (role === "builder" || role === "enduser") {
cy.get(groupsSelector.customRadio).should("be.disabled");
} else {
cy.get(groupsSelector.customRadio).should("be.enabled");
}
cy.verifyElement(groupsSelector.customLabel, groupsText.customLabel);
cy.verifyElement(
groupsSelector.customHelperText,
groupsText.customHelperText
);
cy.verifyElement(groupsSelector.confimButton, groupsText.updateButtonText);
cy.get(groupsSelector.confimButton).should("be.disabled");
cy.verifyElement(groupsSelector.cancelButton, groupsText.cancelButton);
cy.get(groupsSelector.cancelButton).click();
cy.wait(2000)
cy.get(groupsSelector.granularAccessPermission).realHover();
cy.get('[data-cy="edit-apps-granular-access"]').click();
cy.get(groupsSelector.deletePermissionIcon)
.should("be.visible")
.and("be.enabled");
cy.get(groupsSelector.deletePermissionIcon).click();
verifyDeleteConfirmationModal();
cy.contains("Cancel").click();
};
export const verifyGranularAddModal = (role) => {
cy.ifEnv("Community", () => {
cy.get(groupsSelector.addAppsButton)
.should("be.visible")
.and("be.enabled")
.click();
});
cy.ifEnv("Enterprise", () => {
cy.get(groupsSelector.addPermissionButton)
.should("be.visible")
.and("be.enabled")
.click();
cy.get(groupsSelector.addAppButton).click();
});
cy.verifyElement(
`${groupsSelector.addEditPermissionModalTitle}:eq(2)`,
groupsText.addPermissionModalTitle
);
permissionModal();
if (role === "builder" || role === "enduser") {
cy.get(groupsSelector.customRadio).should("be.disabled");
} else {
cy.get(groupsSelector.customRadio).should("be.enabled");
}
cy.verifyElement(groupsSelector.customLabel, groupsText.customLabel);
cy.verifyElement(
groupsSelector.customHelperText,
groupsText.customHelperText
);
cy.verifyElement(groupsSelector.confimButton, groupsText.updateButtonText);
cy.get(groupsSelector.confimButton).should("be.disabled");
cy.verifyElement(groupsSelector.cancelButton, groupsText.cancelButton);
cy.get(groupsSelector.cancelButton).click();
};
export const verifyEnduserHelperText = (index = 0) => {
cy.get(groupsSelector.helperTextAdminAppAccess)
.eq(index)
.should("be.visible")
.and("contain.text", "End-user can only have permission to view apps");
cy.get(groupsSelector.helperTextAdminAppAccess)
.eq(index)
.find("a")
.should("be.visible")
.and("have.text", "read documentation")
.and("have.attr", "href")
.and("include", "docs.tooljet.ai/docs/tutorial/manage-users-groups");
};
export const verifyGranularPermissionModalUI = (
resourceType,
isEdit = false,
permissionName = ""
) => {
// Permission name section
cy.get(groupsSelector.permissionNameLabel).verifyVisibleElement(
"have.text",
groupsText.permissionNameLabel
);
cy.get(groupsSelector.permissionNameInput).should("be.visible");
if (isEdit) {
cy.get(groupsSelector.permissionNameInput).should(
"have.value",
permissionName
);
} else {
cy.get(groupsSelector.permissionNameInput).should(
"have.attr",
"placeholder"
);
}
cy.get(groupsSelector.permissionNameHelperText).verifyVisibleElement(
"have.text",
groupsText.permissionNameHelperText
);
// Permission section
cy.get(groupsSelector.permissionLabel).verifyVisibleElement(
"have.text",
groupsText.permissionLabel
);
if (resourceType === "app") {
cy.verifyElement(
groupsSelector.editPermissionLabel,
groupsText.editPermissionLabel
);
cy.verifyElement(
groupsSelector.editPermissionHelperText,
groupsText.editPermissionHelperText
);
cy.verifyElement(
groupsSelector.viewPermissionLabel,
groupsText.viewPermissionLabel
);
cy.verifyElement(
groupsSelector.viewPermissionHelperText,
groupsText.viewPermissionHelperText
);
cy.get(groupsSelector.hidePermissionInput).should("be.visible");
cy.verifyElement(
groupsSelector.appHidePermissionModalLabel,
groupsText.appHideLabel
);
cy.verifyElement(
groupsSelector.appHidePermissionModalHelperText,
groupsText.appHideHelperText
);
}
if (resourceType === "workflow") {
cy.verifyElement(groupsSelector.workflowsBuildLabel, "Build");
cy.verifyElement(
groupsSelector.workflowsBuildHelperText,
"Access to workflow builder"
);
cy.verifyElement(groupsSelector.workflowsExecuteLabel, "Execute");
cy.verifyElement(
groupsSelector.workflowsExecuteHelperText,
"Only able to execute the workflow"
);
}
if (resourceType === "datasource") {
cy.verifyElement(groupsSelector.datasourcesConfigureLabel, "Configure");
cy.verifyElement(
groupsSelector.datasourcesConfigureHelperText,
"Access and edit connection detail"
);
cy.verifyElement(groupsSelector.datasourcesBuildWithLabel, "Build with");
cy.verifyElement(
groupsSelector.datasourcesBuildWithHelperText,
"Use in apps & workflows"
);
}
// Resources section
cy.get(groupsSelector.resourceLabel).verifyVisibleElement(
"have.text",
groupsText.resourcesheader
);
cy.get(groupsSelector.allAppsRadio).should("be.visible");
if (isEdit) {
cy.verifyElement(groupsSelector.allAppsLabel, groupsText.allAppsLabel);
} else {
cy.verifyElement(groupsSelector.allAppsLabel, groupsText.groupChipText);
}
cy.verifyElement(
groupsSelector.allAppsHelperText,
groupsText.allAppsHelperText
);
cy.get(groupsSelector.customRadio).should("be.visible");
cy.verifyElement(groupsSelector.customLabel, groupsText.customLabel);
cy.verifyElement(
groupsSelector.customHelperText,
groupsText.customHelperText
);
cy.verifyElement(
groupsSelector.confimButton,
isEdit ? groupsText.updateButtonText : groupsText.addButtonText
);
cy.verifyElement(groupsSelector.cancelButton, groupsText.cancelButton);
if (isEdit) {
cy.get(groupsSelector.deletePermissionIcon).should("be.visible");
}
};
export const verifyGranularPermissionModalStates = (
resourceType,
role,
customStateOverride = null
) => {
const stateConfig = {
app: {
builder: {
editRadio: { checked: true, enabled: true },
viewRadio: { checked: false, enabled: true },
hideCheckbox: { enabled: false },
allAppsRadio: { checked: true, enabled: false },
customRadio: { checked: false, enabled: false },
},
enduser: {
editRadio: { checked: false, enabled: false },
viewRadio: { checked: true, enabled: false },
hideCheckbox: { enabled: true },
allAppsRadio: { checked: true, enabled: false },
customRadio: { checked: false, enabled: false },
},
custom: {
editRadio: { checked: true, enabled: true },
viewRadio: { checked: false, enabled: true },
hideCheckbox: { enabled: false },
allAppsRadio: { checked: true, enabled: true },
customRadio: { checked: false, enabled: true },
},
},
workflow: {
builder: {
buildRadio: { checked: true, enabled: true },
executeRadio: { checked: false, enabled: true },
allAppsRadio: { checked: true, enabled: false },
customRadio: { checked: false, enabled: false },
},
enduser: {
buildRadio: { checked: false, enabled: false },
executeRadio: { checked: true, enabled: false },
allAppsRadio: { checked: true, enabled: false },
customRadio: { checked: false, enabled: false },
},
custom: {
buildRadio: { checked: true, enabled: true },
executeRadio: { checked: false, enabled: true },
allAppsRadio: { checked: true, enabled: true },
customRadio: { checked: false, enabled: true },
},
},
datasource: {
builder: {
configureRadio: { checked: true, enabled: true },
buildWithRadio: { checked: false, enabled: true },
allAppsRadio: { checked: true, enabled: false },
customRadio: { checked: false, enabled: false },
},
custom: {
configureRadio: { checked: true, enabled: true },
buildWithRadio: { checked: false, enabled: true },
allAppsRadio: { checked: true, enabled: true },
customRadio: { checked: false, enabled: true },
},
},
};
// Get the base config
let config = stateConfig[resourceType][role];
// If customStateOverride is provided and role is 'custom', merge it with the default
if (customStateOverride && role === "custom") {
config = { ...config, ...customStateOverride };
}
if (resourceType === "app") {
cy.get(groupsSelector.editPermissionRadio)
.should("be.visible")
.and(config.editRadio.checked ? "be.checked" : "not.be.checked")
.and(config.editRadio.enabled ? "be.enabled" : "be.disabled");
cy.get(groupsSelector.viewPermissionRadio)
.should("be.visible")
.and(config.viewRadio.checked ? "be.checked" : "not.be.checked")
.and(config.viewRadio.enabled ? "be.enabled" : "be.disabled");
cy.get(groupsSelector.hidePermissionInput)
.should("be.visible")
.and(config.hideCheckbox.enabled ? "be.enabled" : "be.disabled");
}
if (resourceType === "workflow") {
cy.get(groupsSelector.buildWorkflowradio)
.should("be.visible")
.and(config.buildRadio.checked ? "be.checked" : "not.be.checked")
.and(config.buildRadio.enabled ? "be.enabled" : "be.disabled");
cy.get(groupsSelector.executeWorkflowradio)
.should("be.visible")
.and(config.executeRadio.checked ? "be.checked" : "not.be.checked")
.and(config.executeRadio.enabled ? "be.enabled" : "be.disabled");
}
if (resourceType === "datasource") {
cy.get(groupsSelector.configureDatasourceradio)
.should("be.visible")
.and(config.configureRadio.checked ? "be.checked" : "not.be.checked")
.and(config.configureRadio.enabled ? "be.enabled" : "be.disabled");
cy.get(groupsSelector.buildWithDatasourceRadio)
.should("be.visible")
.and(config.buildWithRadio.checked ? "be.checked" : "not.be.checked")
.and(config.buildWithRadio.enabled ? "be.enabled" : "be.disabled");
}
cy.get(groupsSelector.allAppsRadio)
.should("be.visible")
.and(config.allAppsRadio.checked ? "be.checked" : "not.be.checked")
.and(config.allAppsRadio.enabled ? "be.enabled" : "be.disabled");
cy.get(groupsSelector.customRadio)
.should("be.visible")
.and(config.customRadio.checked ? "be.checked" : "not.be.checked")
.and(config.customRadio.enabled ? "be.enabled" : "be.disabled");
};
export const verifyEmptyStates = () => {
// Users empty state
cy.get(groupsSelector.usersLink).click();
cy.get('[data-cy="user-group-search-btn"]').should("be.visible");
cy.verifyElement(
groupsSelector.nameTableHeader,
groupsText.userNameTableHeader
);
cy.verifyElement(
groupsSelector.emailTableHeader,
groupsText.emailTableHeader
);
cy.get(groupsSelector.userEmptyPageIcon).should("be.visible");
cy.get(groupsSelector.userEmptyPageTitle).verifyVisibleElement(
"have.text",
groupsText.userEmptyPageTitle
);
cy.get(groupsSelector.userEmptyPageHelperText).verifyVisibleElement(
"have.text",
groupsText.userEmptyPageHelperText
);
};
export const verifyGroupLinks = () => {
const links = [
{ selector: groupsSelector.usersLink, text: groupsText.usersLink },
{
selector: groupsSelector.permissionsLink,
text: groupsText.permissionsLink,
},
{ selector: groupsSelector.granularLink, text: "Granular access" },
];
links.forEach(({ selector, text }) => {
cy.get(selector).verifyVisibleElement("have.text", text);
});
};
export const commonGroupVerification = () => {
cy.verifyElement(
groupsSelector.textDefaultGroup,
groupsText.textDefaultGroup
);
cy.verifyElement(groupsSelector.usersLink, groupsText.usersLink);
cy.verifyElement(groupsSelector.permissionsLink, groupsText.permissionsLink);
cy.verifyElement(groupsSelector.granularLink, "Granular access");
cy.get(groupsSelector.usersLink).click();
cy.verifyElement(
groupsSelector.nameTableHeader,
groupsText.userNameTableHeader
);
cy.verifyElement(
groupsSelector.emailTableHeader,
groupsText.emailTableHeader
);
};
export const permissions =
Cypress.env("environment") === "Community"
? [
groupsSelector.appsCreateCheck,
groupsSelector.appsDeleteCheck,
groupsSelector.foldersCreateCheck,
groupsSelector.workspaceVarCheckbox,
]
: [
groupsSelector.appsCreateCheck,
groupsSelector.appsDeleteCheck,
groupsSelector.appPromoteCheck,
groupsSelector.appReleaseCheck,
groupsSelector.workflowsCreateCheck,
groupsSelector.workflowsDeleteCheck,
groupsSelector.datasourcesCreateCheck,
groupsSelector.datasourcesDeleteCheck,
groupsSelector.foldersCreateCheck,
groupsSelector.workspaceVarCheckbox,
];
export const verifyCheckPermissionStates = (roleType, action = null) => {
const roleConfig = {
admin: { checked: true, enabled: false },
enduser: { checked: false, enabled: false },
builder: { checked: true, enabled: true },
custom: { checked: false, enabled: true },
};
const config = roleConfig[roleType];
permissions.forEach((permissionSelector) => {
cy.get(permissionSelector)
.should("be.visible")
.and(config.checked ? "be.checked" : "not.be.checked")
.and(config.enabled ? "be.enabled" : "be.disabled");
});
};
export const verifyPermissionCheckBoxLabelsAndHelperTexts = () => {
const commonPermissions = [
{ selector: groupsSelector.resourcesApps, text: groupsText.resourcesApps },
{
selector: groupsSelector.permissionsTableHeader,
text: groupsText.permissionsTableHeader,
},
{ selector: groupsSelector.appsCreateLabel, text: groupsText.createLabel },
{
selector: groupsSelector.appCreateHelperText,
text: groupsText.appCreateHelperText,
},
{ selector: groupsSelector.appsDeleteLabel, text: groupsText.deleteLabel },
{
selector: groupsSelector.appDeleteHelperText,
text: groupsText.appDeleteHelperText,
},
{
selector: groupsSelector.resourcesFolders,
text: groupsText.resourcesFolders,
},
{
selector: groupsSelector.foldersCreateLabel,
text: groupsText.folderCreateLabel,
},
{
selector: groupsSelector.foldersHelperText,
text: groupsText.folderHelperText,
},
{
selector: groupsSelector.resourcesWorkspaceVar,
text: groupsText.resourcesWorkspaceVar,
},
{
selector: groupsSelector.workspaceCreateLabel,
text: groupsText.workspaceCreateLabel,
},
{
selector: groupsSelector.workspaceHelperText,
text: groupsText.workspaceHelperText,
},
];
commonPermissions.forEach(({ selector, text }) => {
cy.verifyElement(selector, text);
});
cy.ifEnv("Enterprise", () => {
const enterprisePermissions = [
{ selector: groupsSelector.appPromoteLabel, text: "Promote" },
{
selector: groupsSelector.appPromoteHelperText,
text: "Promote any app in this workspace",
},
{ selector: groupsSelector.appReleaseLabel, text: "Release" },
{
selector: groupsSelector.appReleaseHelperText,
text: "Release any app in this workspace",
},
{ selector: groupsSelector.workflowsCreateLabel, text: "Create" },
{
selector: groupsSelector.workflowsCreateHelperText,
text: "Create workflow in this workspace",
},
{ selector: groupsSelector.workflowsDeleteLabel, text: "Delete" },
{
selector: groupsSelector.workflowsDeleteHelperText,
text: "Delete any workflow in this workspace",
},
{ selector: groupsSelector.datasourcesCreateLabel, text: "Create" },
{
selector: groupsSelector.datasourcesCreateHelperText,
text: "Create data source connections in this workspace",
},
{ selector: groupsSelector.datasourcesDeleteLabel, text: "Delete" },
{
selector: groupsSelector.datasourcesDeleteHelperText,
text: "Delete any data source in this workspace",
},
];
enterprisePermissions.forEach(({ selector, text }) => {
cy.verifyElement(selector, text);
});
});
};
export const verifyGranularAccessByRole = (role) => {
const roleConfig = {
admin: {
appEditRadio: { checked: true, enabled: false },
appViewRadio: { checked: false, enabled: false },
appHideCheckbox: { enabled: false },
workflowBuildRadio: { checked: true, enabled: false },
workflowExecuteRadio: { checked: false, enabled: false },
datasourceConfigureRadio: { checked: true, enabled: false },
datasourceBuildWithRadio: { checked: false, enabled: false },
addButtonEnabled: false,
verifyHelperTexts: true,
hasDatasource: true,
},
builder: {
appEditRadio: { checked: true, enabled: true },
appViewRadio: { checked: false, enabled: true },
appHideCheckbox: { enabled: false },
workflowBuildRadio: { checked: true, enabled: true },
workflowExecuteRadio: { checked: false, enabled: true },
datasourceConfigureRadio: { checked: true, enabled: true },
datasourceBuildWithRadio: { checked: false, enabled: true },
addButtonEnabled: true,
verifyHelperTexts: false,
hasDatasource: true,
},
enduser: {
appEditRadio: { checked: false, enabled: false },
appViewRadio: { checked: true, enabled: false },
appHideCheckbox: { enabled: true },
workflowBuildRadio: { checked: false, enabled: false },
workflowExecuteRadio: { checked: true, enabled: false },
addButtonEnabled: true,
verifyHelperTexts: false,
hasDatasource: false,
},
};
const config = roleConfig[role];
cy.get(groupsSelector.granularLink).click();
if (role === "admin") {
cy.verifyElement(
groupsSelector.nameTableHeader,
groupsText.nameTableHeader
);
cy.verifyElement(
groupsSelector.permissionsTableHeader,
groupsText.granularAccessPermissionHeader
);
cy.verifyElement(
`${groupsSelector.resourceHeader}:eq(1)`,
groupsText.resourcesTableHeader
);
}
cy.verifyElement(groupsSelector.appsText, " Apps");
cy.get(groupsSelector.appEditRadio)
.should("be.visible")
.and(config.appEditRadio.checked ? "be.checked" : "not.be.checked")
.and(
config.appEditRadio.enabled ? "be.enabled" : "have.attr",
config.appEditRadio.enabled ? "" : "disabled"
);
cy.get(groupsSelector.appViewRadio)
.should("be.visible")
.and(
config.appViewRadio.enabled ? "be.enabled" : "have.attr",
config.appViewRadio.enabled ? "" : "disabled"
);
cy.get(groupsSelector.appHideCheckbox)
.should("be.visible")
.and(config.appHideCheckbox.enabled ? "be.enabled" : "be.disabled");
if (config.verifyHelperTexts) {
cy.verifyElement(groupsSelector.appEditLabel, groupsText.appEditLabelText);
cy.verifyElement(
groupsSelector.appEditHelperText,
groupsText.appEditHelperText
);
cy.verifyElement(groupsSelector.appViewLabel, groupsText.appViewLabel);
cy.verifyElement(
groupsSelector.appViewHelperText,
groupsText.appViewHelperText
);
cy.verifyElement(
groupsSelector.appHideHelperText,
groupsText.appHideHelperText
);
}
cy.verifyElement(groupsSelector.groupChip("All apps"), "All apps");
cy.ifEnv("Community", () => {
cy.get(groupsSelector.addAppButton).should(
config.addButtonEnabled ? "be.enabled" : "be.disabled"
);
});
cy.ifEnv("Enterprise", () => {
cy.verifyElement(groupsSelector.workflowsText, "Workflows");
cy.get(groupsSelector.workflowsBuildRadio)
.should("be.visible")
.and(config.workflowBuildRadio.checked ? "be.checked" : "not.be.checked")
.and(
config.workflowBuildRadio.enabled ? "be.enabled" : "have.attr",
config.workflowBuildRadio.enabled ? "" : "disabled"
);
cy.get(groupsSelector.workflowsExecuteRadio)
.should("be.visible")
.and(
config.workflowExecuteRadio.enabled ? "be.enabled" : "have.attr",
config.workflowExecuteRadio.enabled ? "" : "disabled"
);
if (config.verifyHelperTexts) {
cy.verifyElement(groupsSelector.workflowsBuildLabel, "Build");
cy.verifyElement(
groupsSelector.workflowsBuildHelperText,
"Access to workflow builder"
);
cy.verifyElement(groupsSelector.workflowsExecuteLabel, "Execute");
cy.verifyElement(
groupsSelector.workflowsExecuteHelperText,
"Only able to execute the workflow"
);
}
cy.verifyElement(
groupsSelector.groupChip("All workflows"),
"All workflows"
);
if (config.hasDatasource) {
cy.verifyElement(groupsSelector.datasourcesText, " Data sources");
cy.get(groupsSelector.datasourcesConfigureRadio)
.should("be.visible")
.and(
config.datasourceConfigureRadio.checked
? "be.checked"
: "not.be.checked"
)
.and(
config.datasourceConfigureRadio.enabled ? "be.enabled" : "have.attr",
config.datasourceConfigureRadio.enabled ? "" : "disabled"
);
cy.get(groupsSelector.datasourcesBuildWithRadio)
.should("be.visible")
.and(
config.datasourceBuildWithRadio.enabled ? "be.enabled" : "have.attr",
config.datasourceBuildWithRadio.enabled ? "" : "disabled"
);
if (config.verifyHelperTexts) {
cy.verifyElement(groupsSelector.datasourcesConfigureLabel, "Configure");
cy.verifyElement(
groupsSelector.datasourcesConfigureHelperText,
"Access & edit connection details"
);
cy.verifyElement(
groupsSelector.datasourcesBuildWithLabel,
"Build with"
);
cy.verifyElement(
groupsSelector.datasourcesBuildWithHelperText,
"Use in apps & workflows"
);
}
cy.verifyElement(
groupsSelector.groupChip("All data source"),
"All data sources"
);
}
cy.verifyElement(groupsSelector.addPermissionButton, "Add permission");
cy.get(groupsSelector.addPermissionButton).should(
config.addButtonEnabled ? "be.enabled" : "be.disabled"
);
});
};
export const permissionModal = () => {
cy.verifyElement(
groupsSelector.permissionNameLabel,
groupsText.permissionNameLabel
);
cy.verifyElement(
groupsSelector.permissionNameHelperText,
groupsText.permissionNameHelperText
);
cy.verifyElement(groupsSelector.permissionLabel, groupsText.permissionLabel);
cy.verifyElement(
groupsSelector.editPermissionLabel,
groupsText.editPermissionLabel
);
cy.verifyElement(
groupsSelector.editPermissionHelperText,
groupsText.editPermissionHelperText
);
cy.verifyElement(
groupsSelector.viewPermissionLabel,
groupsText.viewPermissionLabel
);
cy.verifyElement(
groupsSelector.viewPermissionHelperText,
groupsText.viewPermissionHelperText
);
cy.get(groupsSelector.hidePermissionInput).should("be.visible");
cy.verifyElement(groupsSelector.resourceLabel, groupsText.resourcesheader);
cy.get(groupsSelector.resourceContainer).should("be.visible");
cy.get(groupsSelector.allAppsRadio).should("be.visible").and("be.checked");
cy.verifyElement(groupsSelector.allAppsLabel, groupsText.allAppsLabel);
cy.verifyElement(
groupsSelector.allAppsHelperText,
groupsText.allAppsHelperText
);
};
export const verifyUserRow = (name, email) => {
cy.get('[data-cy="avatar-image"]').should("be.visible");
cy.get('[data-cy="user-name"]')
.should("be.visible")
.and("contain.text", name);
cy.get('[data-cy="user-email"]').should("be.visible").and("have.text", email);
};
export const granularPermissionEmptyState = () => {
cy.get(groupsSelector.granularLink).click();
cy.get(groupsSelector.granularEmptyPageIcon).should("be.visible");
cy.get(groupsSelector.emptyPagePermissionTitle).verifyVisibleElement(
"have.text",
groupsText.emptyPagePermissionTitle
);
cy.get(groupsSelector.emptyPagePermissionHelperText).verifyVisibleElement(
"have.text",
groupsText.emptyPagePermissionHelperText
);
}