2025-11-11 11:57:03 +00:00
import { commonSelectors , commonWidgetSelector } from "Selectors/common" ;
2025-06-23 07:46:35 +00:00
import {
2025-11-04 13:31:36 +00:00
commonEeSelectors ,
2025-11-11 11:57:03 +00:00
eeGroupsSelector ,
2025-11-04 13:31:36 +00:00
instanceSettingsSelector ,
multiEnvSelector ,
2025-11-11 11:57:03 +00:00
ssoEeSelector ,
2025-11-04 13:31:36 +00:00
workspaceSelector ,
2025-06-23 07:46:35 +00:00
} from "Selectors/eeCommon" ;
import { ssoEeText } from "Texts/eeCommon" ;
import * as common from "Support/utils/common" ;
import { groupsSelector } from "Selectors/manageGroups" ;
2025-11-11 11:57:03 +00:00
import { ssoSelector } from "Selectors/manageSSO" ;
import { usersSelector } from "Selectors/manageUsers" ;
2025-06-23 07:46:35 +00:00
import {
2025-11-04 13:31:36 +00:00
// verifyOnboardingQuestions,
// verifyCloudOnboardingQuestions,
fetchAndVisitInviteLink ,
2025-06-23 07:46:35 +00:00
} from "Support/utils/manageUsers" ;
import { commonText } from "Texts/common" ;
import { ssoText } from "Texts/manageSSO" ;
2025-11-11 11:57:03 +00:00
import { usersText } from "Texts/manageUsers" ;
2025-06-23 07:46:35 +00:00
// import { appPromote } from "Support/utils/multiEnv";
export const oidcSSOPageElements = ( ) => {
2025-11-04 13:31:36 +00:00
cy . get ( ssoEeSelector . oidcToggle ) . click ( ) ;
cy . get ( ssoSelector . saveButton ) . eq ( 1 ) . click ( ) ;
cy . get ( '[data-cy="modal-title"]' ) . verifyVisibleElement (
"have.text" ,
"Enable OpenID Connect"
) ;
cy . get ( '[data-cy="modal-close-button"]' ) . should ( "be.visible" ) ;
cy . get ( '[data-cy="modal-message"]' ) . verifyVisibleElement (
"have.text" ,
"Enabling OpenID Connect at the workspace level will override any OpenID Connect configurations set at the instance level."
) ;
cy . get ( '[data-cy="confirmation-text"]' ) . verifyVisibleElement (
"have.text" ,
"Are you sure you want to continue?"
) ;
cy . get ( '[data-cy="cancel-button"]' )
. eq ( 2 )
. verifyVisibleElement ( "have.text" , "Cancel" ) ;
cy . get ( '[data-cy="enable-button"]' ) . verifyVisibleElement (
"have.text" ,
"Enable"
) ;
cy . get ( '[data-cy="cancel-button"]' ) . eq ( 2 ) . click ( ) ;
cy . get ( '[data-cy="status-label"]' ) . verifyVisibleElement (
"have.text" ,
ssoText . disabledLabel
) ;
cy . get ( ssoEeSelector . oidcToggle ) . click ( ) ;
cy . get ( ssoSelector . saveButton ) . eq ( 1 ) . click ( ) ;
cy . get ( '[data-cy="enable-button"]' ) . click ( ) ;
cy . verifyToastMessage (
commonSelectors . toastMessage ,
ssoText . toggleUpdateToast ( "OpenID" )
) ;
cy . get ( ssoEeSelector . statusLabel ) . verifyVisibleElement (
"have.text" ,
ssoEeText . enabledLabel
) ;
cy . get ( '[data-cy="redirect-url-label"]' ) . verifyVisibleElement (
"have.text" ,
ssoText . redirectUrlLabel
) ;
cy . get ( '[data-cy="redirect-url"]' ) . should ( "be.visible" ) ;
cy . get ( '[data-cy="copy-icon"]' ) . should ( "be.visible" ) ;
cy . get ( ssoEeSelector . oidcToggle ) . click ( ) ;
cy . get ( ssoSelector . saveButton ) . eq ( 1 ) . click ( ) ;
// cy.get('[data-cy="enable-button"]').click();
cy . verifyToastMessage (
commonSelectors . toastMessage ,
ssoText . toggleUpdateToast ( "OpenID" )
) ;
cy . get ( ssoSelector . statusLabel ) . verifyVisibleElement (
"have.text" ,
ssoText . disabledLabel
) ;
cy . get ( ssoEeSelector . oidcToggle ) . click ( ) ;
cy . clearAndType ( ssoEeSelector . nameInput , ssoEeText . testName ) ;
cy . clearAndType ( ssoEeSelector . clientIdInput , ssoEeText . testclientId ) ;
cy . clearAndType ( ssoEeSelector . clientSecretInput , ssoEeText . testclientSecret ) ;
cy . clearAndType ( ssoEeSelector . WellKnownUrlInput , ssoEeText . testWellknownUrl ) ;
cy . get ( ssoSelector . saveButton ) . eq ( 1 ) . click ( ) ;
cy . get ( '[data-cy="enable-button"]' ) . click ( ) ;
cy . verifyToastMessage (
commonSelectors . toastMessage ,
ssoText . toggleUpdateToast ( "OpenID" )
) ;
cy . get ( ssoEeSelector . nameInput ) . should ( "have.value" , ssoEeText . testName ) ;
cy . get ( ssoEeSelector . clientIdInput ) . should (
"have.value" ,
ssoEeText . testclientId
) ;
cy . get ( ssoEeSelector . clientSecretInput ) . should (
"have.value" ,
ssoEeText . testclientSecret
) ;
cy . get ( ssoEeSelector . WellKnownUrlInput ) . should (
"have.value" ,
ssoEeText . testWellknownUrl
) ;
2025-06-23 07:46:35 +00:00
} ;
export const resetDsPermissions = ( ) => {
2025-11-04 13:31:36 +00:00
common . navigateToManageGroups ( ) ;
cy . wait ( 200 ) ;
cy . get ( groupsSelector . permissionsLink ) . click ( ) ;
cy . get ( groupsSelector . appsCreateCheck ) . then ( ( $el ) => {
if ( $el . is ( ":checked" ) ) {
cy . get ( groupsSelector . appsCreateCheck ) . uncheck ( ) ;
}
} ) ;
cy . get ( eeGroupsSelector . dsCreateCheck ) . then ( ( $el ) => {
if ( $el . is ( ":checked" ) ) {
cy . get ( eeGroupsSelector . dsCreateCheck ) . uncheck ( ) ;
}
} ) ;
cy . get ( eeGroupsSelector . dsDeleteCheck ) . then ( ( $el ) => {
if ( $el . is ( ":checked" ) ) {
cy . get ( eeGroupsSelector . dsDeleteCheck ) . uncheck ( ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const deleteAssignedDatasources = ( ) => {
2025-11-04 13:31:36 +00:00
common . navigateToManageGroups ( ) ;
cy . get ( '[data-cy="datasource-link"]' ) . click ( ) ;
cy . get ( "body" ) . then ( ( $body ) => {
const removeAllButtons = $body . find ( '[data-cy="remove-button"]' ) ;
if ( removeAllButtons . length > 0 ) {
cy . get ( '[data-cy="remove-button"]' ) . click ( { multiple : true } ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const userSignUp = ( fullName , email , workspaceName ) => {
2025-11-04 13:31:36 +00:00
const verificationFunction =
Cypress . env ( "environment" ) === "Enterprise"
? verifyOnboardingQuestions
: verifyCloudOnboardingQuestions ;
let invitationLink = "" ;
cy . visit ( "/" ) ;
cy . wait ( 500 ) ;
cy . get ( commonSelectors . createAnAccountLink ) . realClick ( ) ;
cy . clearAndType ( commonSelectors . nameInputField , fullName ) ;
cy . clearAndType ( commonSelectors . emailInputField , email ) ;
cy . clearAndType ( commonSelectors . passwordInputField , commonText . password ) ;
cy . get ( commonSelectors . signUpButton ) . click ( ) ;
cy . wait ( 500 ) ;
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` select invitation_token from users where email=' ${ email } '; ` ,
} ) . then ( ( resp ) => {
invitationLink = ` /invitations/ ${ resp . rows [ 0 ] . invitation _token } ` ;
cy . visit ( invitationLink ) ;
cy . get ( commonSelectors . setUpToolJetButton ) . click ( ) ;
cy . wait ( 4000 ) ;
2025-06-23 07:46:35 +00:00
2025-11-04 13:31:36 +00:00
verificationFunction ( fullName , workspaceName ) ;
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const allowPersonalWorkspace = ( allow = true ) => {
2025-11-04 13:31:36 +00:00
const value = allow ? "true" : "false" ;
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` UPDATE instance_settings SET value = ' ${ value } ' WHERE key = 'ALLOW_PERSONAL_WORKSPACE'; ` ,
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const addNewUserEE = ( firstName , email ) => {
2025-11-04 13:31:36 +00:00
common . navigateToManageUsers ( ) ;
cy . get ( usersSelector . buttonAddUsers ) . click ( ) ;
cy . get ( commonSelectors . inputFieldFullName ) . type ( firstName ) ;
cy . get ( commonSelectors . inputFieldEmailAddress ) . type ( email ) ;
cy . get ( usersSelector . buttonInviteUsers ) . click ( ) ;
cy . verifyToastMessage (
commonSelectors . toastMessage ,
usersText . userCreatedToast
) ;
WorkspaceInvitationLink ( email ) ;
cy . clearAndType ( commonSelectors . passwordInputField , usersText . password ) ;
cy . get ( commonSelectors . signUpButton ) . click ( ) ;
cy . wait ( 2000 ) ;
cy . get ( commonSelectors . acceptInviteButton ) . click ( ) ;
cy . get ( commonSelectors . workspaceName ) . verifyVisibleElement (
"have.text" ,
"My workspace"
) ;
2025-06-23 07:46:35 +00:00
} ;
export const inviteUser = ( firstName , email ) => {
2025-11-04 13:31:36 +00:00
cy . get ( usersSelector . buttonAddUsers ) . click ( ) ;
cy . get ( commonSelectors . inputFieldFullName ) . type ( firstName ) ;
cy . get ( commonSelectors . inputFieldEmailAddress ) . type ( email ) ;
cy . get ( usersSelector . buttonInviteUsers ) . click ( ) ;
cy . verifyToastMessage (
commonSelectors . toastMessage ,
usersText . userCreatedToast
) ;
fetchAndVisitInviteLink ( email ) ;
2025-06-23 07:46:35 +00:00
} ;
export const defaultWorkspace = ( ) => {
2025-11-04 13:31:36 +00:00
cy . get ( ".org-select-container" ) . then ( ( $title ) => {
if ( ! $title . text ( ) . includes ( "My workspace" ) ) {
cy . get ( commonSelectors . workspaceName ) . realClick ( ) ;
cy . contains ( "My workspace" ) . realClick ( ) ;
cy . wait ( 2000 ) ;
defaultWorkspace ( ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const trunOffAllowPersonalWorkspace = ( ) => {
2025-11-04 13:31:36 +00:00
cy . get ( commonSelectors . settingsIcon ) . click ( ) ;
cy . get ( commonEeSelectors . instanceSettingIcon ) . click ( ) ;
cy . get ( instanceSettingsSelector . manageInstanceSettings ) . click ( ) ;
cy . get ( instanceSettingsSelector . allowWorkspaceToggle )
. eq ( 0 )
. then ( ( $el ) => {
if ( $el . is ( ":checked" ) ) {
cy . get ( instanceSettingsSelector . allowWorkspaceToggle ) . eq ( 0 ) . uncheck ( ) ;
cy . get ( commonEeSelectors . saveButton ) . click ( ) ;
cy . verifyToastMessage (
commonSelectors . toastMessage ,
"Instance settings have been updated"
) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const verifySSOSignUpPageElements = ( ) => {
2025-11-04 13:31:36 +00:00
cy . get ( commonSelectors . invitePageHeader ) . verifyVisibleElement (
"have.text" ,
"Join ToolJet"
) ;
cy . get ( commonSelectors . invitePageSubHeader ) . verifyVisibleElement (
"have.text" ,
"You are invited to ToolJet."
) ;
cy . get ( commonSelectors . userNameInputLabel ) . verifyVisibleElement (
"have.text" ,
commonText . userNameInputLabel
) ;
cy . get ( commonSelectors . invitedUserName ) . should ( "be.visible" ) ;
cy . get ( commonSelectors . emailInputLabel ) . verifyVisibleElement (
"have.text" ,
commonText . emailInputLabel
) ;
cy . get ( commonSelectors . invitedUserEmail ) . should ( "be.visible" ) ;
cy . get ( commonSelectors . acceptInviteButton ) . verifyVisibleElement (
"have.text" ,
commonText . acceptInviteButton
) ;
cy . get ( commonSelectors . signUpTermsHelperText ) . should ( ( $el ) => {
expect ( $el . contents ( ) . first ( ) . text ( ) . trim ( ) ) . to . eq (
commonText . signUpTermsHelperText
2025-06-23 07:46:35 +00:00
) ;
2025-11-04 13:31:36 +00:00
} ) ;
cy . get ( commonSelectors . termsOfServiceLink )
. verifyVisibleElement ( "have.text" , commonText . termsOfServiceLink )
. and ( "have.attr" , "href" )
. and ( "equal" , "https://www.tooljet.com/terms" ) ;
cy . get ( commonSelectors . privacyPolicyLink )
. verifyVisibleElement ( "have.text" , commonText . privacyPolicyLink )
. and ( "have.attr" , "href" )
. and ( "equal" , "https://www.tooljet.com/privacy" ) ;
2025-06-23 07:46:35 +00:00
} ;
export const VerifyWorkspaceInvitePageElements = ( ) => {
2025-11-04 13:31:36 +00:00
cy . get ( commonSelectors . invitePageHeader ) . verifyVisibleElement (
"have.text" ,
commonText . invitePageHeader
) ;
cy . get ( commonSelectors . invitePageSubHeader ) . verifyVisibleElement (
"have.text" ,
commonText . invitePageSubHeader
) ;
cy . verifyLabel ( commonText . userNameInputLabel ) ;
cy . get ( commonSelectors . invitedUserName ) . should ( "be.visible" ) ;
cy . verifyLabel ( commonText . emailInputLabel ) ;
cy . get ( commonSelectors . invitedUserEmail ) . should ( "be.visible" ) ;
cy . get ( commonSelectors . acceptInviteButton ) . verifyVisibleElement (
"have.text" ,
commonText . acceptInviteButton
) ;
cy . get ( commonSelectors . signUpTermsHelperText ) . should ( ( $el ) => {
expect ( $el . contents ( ) . first ( ) . text ( ) . trim ( ) ) . to . eq (
commonText . signUpTermsHelperText
2025-06-23 07:46:35 +00:00
) ;
2025-11-04 13:31:36 +00:00
} ) ;
cy . get ( commonSelectors . termsOfServiceLink )
. verifyVisibleElement ( "have.text" , commonText . termsOfServiceLink )
. and ( "have.attr" , "href" )
. and ( "equal" , "https://www.tooljet.com/terms" ) ;
cy . get ( commonSelectors . privacyPolicyLink )
. verifyVisibleElement ( "have.text" , commonText . privacyPolicyLink )
. and ( "have.attr" , "href" )
. and ( "equal" , "https://www.tooljet.com/privacy" ) ;
cy . get ( "body" ) . then ( ( $el ) => {
if ( $el . text ( ) . includes ( "Google" ) ) {
cy . get ( ssoSelector . googleSSOText ) . verifyVisibleElement (
2025-06-23 07:46:35 +00:00
"have.text" ,
2025-11-04 13:31:36 +00:00
ssoText . googleSignUpText
) ;
cy . get ( ssoSelector . gitSSOText ) . verifyVisibleElement (
2025-06-23 07:46:35 +00:00
"have.text" ,
2025-11-04 13:31:36 +00:00
ssoText . gitSignUpText
) ;
cy . get ( commonSelectors . onboardingSeperator ) . should ( "be.visible" ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const WorkspaceInvitationLink = ( email ) => {
2025-11-04 13:31:36 +00:00
let invitationToken ,
organizationToken ,
workspaceId ,
userId ,
url = "" ;
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` select invitation_token from users where email=' ${ email } '; ` ,
} ) . then ( ( resp ) => {
invitationToken = resp . rows [ 0 ] . invitation _token ;
2025-06-23 07:46:35 +00:00
cy . task ( "dbConnection" , {
2025-11-04 13:31:36 +00:00
dbconfig : Cypress . env ( "app_db" ) ,
sql : "select id from organizations where name='My workspace';" ,
2025-06-23 07:46:35 +00:00
} ) . then ( ( resp ) => {
2025-11-04 13:31:36 +00:00
workspaceId = resp . rows [ 0 ] . id ;
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` select id from users where email=' ${ email } '; ` ,
} ) . then ( ( resp ) => {
userId = resp . rows [ 0 ] . id ;
2025-06-23 07:46:35 +00:00
cy . task ( "dbConnection" , {
2025-11-04 13:31:36 +00:00
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` select invitation_token from organization_users where user_id=' ${ userId } '; ` ,
2025-06-23 07:46:35 +00:00
} ) . then ( ( resp ) => {
2025-11-04 13:31:36 +00:00
organizationToken = resp . rows [ 0 ] . invitation _token ;
url = ` /invitations/ ${ invitationToken } /workspaces/ ${ organizationToken } ?oid= ${ workspaceId } ` ;
common . logout ( ) ;
cy . visit ( url ) ;
2025-06-23 07:46:35 +00:00
} ) ;
2025-11-04 13:31:36 +00:00
} ) ;
2025-06-23 07:46:35 +00:00
} ) ;
2025-11-04 13:31:36 +00:00
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const enableDefaultSSO = ( ) => {
2025-11-04 13:31:36 +00:00
common . navigateToManageSSO ( ) ;
cy . get ( "body" ) . then ( ( $el ) => {
if ( ! $el . text ( ) . includes ( "Allowed domains" ) ) {
cy . get ( ssoSelector . generalSettingsElements . generalSettings ) . click ( ) ;
}
} ) ;
cy . get ( ssoSelector . allowDefaultSSOToggle ) . then ( ( $el ) => {
if ( ! $el . is ( ":checked" ) ) {
cy . get ( ssoSelector . allowDefaultSSOToggle ) . check ( ) ;
cy . get ( ssoSelector . saveButton ) . click ( ) ;
cy . verifyToastMessage ( commonSelectors . toastMessage , ssoText . ssoToast ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const disableSSO = ( ssoSelector , toggleSelector ) => {
2025-11-04 13:31:36 +00:00
cy . wait ( 1000 ) ;
cy . get ( ssoSelector ) . click ( ) ;
cy . get ( toggleSelector ) . then ( ( $el ) => {
if ( $el . is ( ":checked" ) ) {
cy . get ( toggleSelector ) . uncheck ( ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const AddDataSourceToGroup = ( groupName , dsName ) => {
2025-11-04 13:31:36 +00:00
common . navigateToManageGroups ( ) ;
cy . get ( groupsSelector . groupLink ( groupName ) ) . click ( ) ;
cy . get ( eeGroupsSelector . datasourceLink ) . click ( ) ;
cy . wait ( 500 ) ;
cy . get (
'[data-cy="datasource-select-search"] >> .rmsc > .dropdown-container > .dropdown-heading > .dropdown-heading-value > .gray'
) . click ( ) ;
cy . contains ( dsName ) . realClick ( ) ;
cy . get ( eeGroupsSelector . AddDsButton ) . click ( ) ;
cy . verifyToastMessage (
commonSelectors . toastMessage ,
"Datasources added to the group"
) ;
2025-06-23 07:46:35 +00:00
} ;
export const enableToggle = ( toggleSelector ) => {
2025-11-04 13:31:36 +00:00
cy . get ( toggleSelector ) . then ( ( $el ) => {
if ( ! $el . is ( ":checked" ) ) {
cy . get ( toggleSelector ) . check ( ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const disableToggle = ( toggleSelector ) => {
2025-11-04 13:31:36 +00:00
cy . get ( toggleSelector ) . then ( ( $el ) => {
if ( $el . is ( ":checked" ) ) {
cy . get ( toggleSelector ) . uncheck ( ) ;
}
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const verifyPromoteModalUI = ( versionName , currEnv , targetEnv ) => {
2025-11-04 13:31:36 +00:00
cy . get ( commonEeSelectors . promoteButton )
. verifyVisibleElement ( "have.text" , " Promote " )
. click ( ) ;
cy . get ( commonEeSelectors . modalTitle ) . verifyVisibleElement (
"have.text" ,
` Promote ${ versionName } `
) ;
cy . get ( commonSelectors . closeButton ) . should ( "be.visible" ) ;
cy . get ( multiEnvSelector . fromLabel ) . verifyVisibleElement ( "have.text" , "FROM" ) ;
cy . get ( multiEnvSelector . toLabel ) . verifyVisibleElement ( "have.text" , "TO" ) ;
cy . get ( multiEnvSelector . currEnvName ) . verifyVisibleElement (
"have.text" ,
currEnv
) ;
cy . get ( '[data-cy="target-env-name"]' ) . verifyVisibleElement (
"have.text" ,
targetEnv
) ;
cy . get ( '[data-cy="cancel-button"]' ) . verifyVisibleElement (
"have.text" ,
"Cancel"
) ;
cy . get ( commonEeSelectors . promoteButton )
. eq ( 1 )
. verifyVisibleElement ( "have.text" , "Promote " ) ;
2025-06-23 07:46:35 +00:00
} ;
export const resetPassword = ( email ) => {
2025-11-04 13:31:36 +00:00
cy . visit ( "/" ) ;
cy . get ( commonSelectors . forgotPasswordLink ) . click ( ) ;
cy . clearAndType ( commonSelectors . emailInputField , email ) ;
cy . get ( commonSelectors . resetPasswordLinkButton ) . click ( ) ;
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` select forgot_password_token from users where email=' ${ email } '; ` ,
} ) . then ( ( resp ) => {
const passwordResetLink = ` /reset-password/ ${ resp . rows [ 0 ] . forgot _password _token } ` ;
cy . visit ( passwordResetLink ) ;
} ) ;
cy . wait ( 500 ) ;
cy . clearAndType ( commonSelectors . newPasswordInputField , "Password" ) ;
cy . clearAndType ( commonSelectors . confirmPasswordInputField , "Password" ) ;
cy . wait ( 4000 ) ;
cy . get ( commonSelectors . resetPasswordButton ) . click ( ) ;
cy . get ( commonSelectors . backToLoginButton ) . click ( ) ;
2025-06-23 07:46:35 +00:00
} ;
export const verifyTooltipDisabled = ( selector , message ) => {
2025-11-04 13:31:36 +00:00
cy . get ( selector )
. trigger ( "mouseover" , { force : true } )
. then ( ( ) => {
cy . get ( ".tooltip-inner" ) . last ( ) . should ( "have.text" , message ) ;
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const createAnAppWithSlug = ( appName , slug ) => {
2025-11-04 13:31:36 +00:00
cy . apiCreateApp ( appName ) ;
cy . openApp ( ) ;
cy . dragAndDropWidget ( "Table" , 250 , 250 ) ;
appPromote ( "development" , "release" ) ;
cy . get ( commonWidgetSelector . shareAppButton ) . click ( ) ;
cy . clearAndType ( commonWidgetSelector . appNameSlugInput , ` ${ slug } ` ) ;
cy . wait ( 2000 ) ;
cy . get ( commonWidgetSelector . modalCloseButton ) . click ( ) ;
2025-06-23 07:46:35 +00:00
} ;
export const openInstanceSettings = ( ) => {
2025-11-04 13:31:36 +00:00
cy . get ( commonSelectors . settingsIcon ) . click ( ) ;
cy . get ( commonEeSelectors . instanceSettingIcon ) . click ( ) ;
2025-06-23 07:46:35 +00:00
} ;
export const openUserActionMenu = ( email ) => {
2025-11-21 15:30:02 +00:00
cy . get ( commonSelectors . inputUserSearch ) . should ( "be.visible" ) ;
cy . wait ( 1000 ) ;
2025-11-04 13:31:36 +00:00
cy . clearAndType ( commonSelectors . inputUserSearch , email ) ;
cy . wait ( 1000 ) ;
cy . get ( '[data-cy="user-actions-button"]' ) . eq ( 0 ) . click ( ) ;
cy . wait ( 2000 ) ;
2025-06-23 07:46:35 +00:00
} ;
export const archiveWorkspace = ( workspaceName ) => {
2025-11-04 13:31:36 +00:00
cy . get ( instanceSettingsSelector . allWorkspaceTab ) . click ( ) ;
cy . clearAndType ( commonEeSelectors . searchBar , workspaceName ) ;
cy . get ( workspaceSelector . workspaceStatusChange ) . eq ( 0 ) . click ( ) ;
cy . get ( commonEeSelectors . confirmButton ) . click ( ) ;
2025-06-23 07:46:35 +00:00
} ;
2025-11-18 10:23:37 +00:00
export const passwordToggle = ( enable , formName = "instance" ) => {
2025-11-04 13:31:36 +00:00
cy . getCookie ( "tj_auth_token" ) . then ( ( cookie ) => {
cy . request (
{
method : "PATCH" ,
2025-12-05 13:49:10 +00:00
url : ` ${ Cypress . env ( "server_host" ) } /api/login-configs/ ${ formName } -sso ` ,
2025-11-04 13:31:36 +00:00
headers : {
"Tj-Workspace-Id" : Cypress . env ( "workspaceId" ) ,
Cookie : ` tj_auth_token= ${ cookie . value } ` ,
} ,
body : { type : "form" , enabled : enable } ,
} ,
{ log : false }
) . then ( ( response ) => {
expect ( response . status ) . to . equal ( 200 ) ;
2025-06-23 07:46:35 +00:00
} ) ;
2025-11-04 13:31:36 +00:00
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const InstanceSSO = ( personalWorkspace , enableSignup , workspaceSSO ) => {
2025-11-04 13:31:36 +00:00
allowPersonalWorkspace ( personalWorkspace ) ;
2025-06-23 07:46:35 +00:00
2025-11-04 13:31:36 +00:00
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` UPDATE instance_settings SET value = ' ${ enableSignup } ' WHERE key = 'ENABLE_SIGNUP';UPDATE instance_settings SET value = ' ${ workspaceSSO } ' WHERE key = 'ENABLE_WORKSPACE_LOGIN_CONFIGURATION'; ` ,
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const resetInstanceDomain = ( ) => {
2025-11-04 13:31:36 +00:00
cy . getCookie ( "tj_auth_token" ) . then ( ( cookie ) => {
cy . request (
{
method : "PATCH" ,
2025-12-05 13:49:10 +00:00
url : ` ${ Cypress . env ( "server_host" ) } /api/login-configs/instance-general ` ,
2025-11-04 13:31:36 +00:00
headers : {
"Tj-Workspace-Id" : Cypress . env ( "workspaceId" ) ,
Cookie : ` tj_auth_token= ${ cookie . value } ` ,
} ,
body : { allowedDomains : "" } ,
} ,
{ log : false }
) . then ( ( response ) => {
expect ( response . status ) . to . equal ( 200 ) ;
2025-06-23 07:46:35 +00:00
} ) ;
2025-11-04 13:31:36 +00:00
} ) ;
2025-06-23 07:46:35 +00:00
} ;
2025-11-18 10:23:37 +00:00
export const defaultInstanceSSO = ( enable = true ) => {
cy . getCookie ( "tj_auth_token" ) . then ( ( cookie ) => {
cy . request (
{
method : "PATCH" ,
2025-12-05 13:49:10 +00:00
url : ` ${ Cypress . env ( "server_host" ) } /api/login-configs/organization-general/inherit-sso ` ,
2025-11-18 10:23:37 +00:00
headers : {
"Tj-Workspace-Id" : Cypress . env ( "workspaceId" ) ,
Cookie : ` tj_auth_token= ${ cookie . value } ` ,
} ,
body : { inheritSSO : enable } ,
} ,
{ log : false }
) . then ( ( response ) => {
expect ( response . status ) . to . equal ( 200 ) ;
} ) ;
} ) ;
} ;
2025-06-23 07:46:35 +00:00
export const instanceSSOConfig = ( allow = true ) => {
2025-11-04 13:31:36 +00:00
const value = allow ? "true" : "false" ;
2025-06-23 07:46:35 +00:00
2025-11-04 13:31:36 +00:00
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` UPDATE sso_configs SET enabled = ${ allow } WHERE sso IN ('google', 'git', 'openid')AND organization_id IS NULL; ` ,
} ) ;
2025-06-23 07:46:35 +00:00
} ;
export const updateInstanceSettings = ( key , value ) => {
2025-11-18 10:23:37 +00:00
cy . task ( "dbConnection" , {
2025-11-04 13:31:36 +00:00
dbconfig : Cypress . env ( "app_db" ) ,
2025-11-18 10:23:37 +00:00
sql : ` UPDATE instance_settings SET value = ' ${ value } ' WHERE key = ' ${ key } '; ` ,
2025-11-04 13:31:36 +00:00
} ) ;
2025-06-23 07:46:35 +00:00
} ;
2025-11-18 10:23:37 +00:00
export const updateAutoSSOToggle = ( allow = false ) => {
cy . task ( "dbConnection" , {
dbconfig : Cypress . env ( "app_db" ) ,
sql : ` UPDATE instance_settings SET value = ' ${ allow } ' WHERE key = 'AUTOMATIC_SSO_LOGIN'; ` ,
} ) ;
} ;