import { Web } from '@contour/fet/lib/elements'; import envConfig from '../../../env/env-config'; import { getLdapEmail, getNodeAndIdentityFromPartyName, getNodeProfile, getNodeVersionAsNumber, getUserEmail, isNodeLdapEnabled } from '../../../env/nodeProfile'; import { LoginPage } from '../../../pages/login/login.page'; import { UserMenuPage } from '../../../pages/navigationBar/userMenu.page'; import { retry } from '../../../util/common'; import scenarioContext from '../../../util/scenarioContext'; export function loginToMainPageForScenario(party: string, role: string, scenario?: string) { retry(3, loginToMainPageForIdentity, [party, role, scenario]); } export async function loginToMainPageForIdentity(party: string, role: string, scenario?: string): Promise { logger.debug(`Login to main page for ${party} ${role}`); scenarioContext().currentParty = party; const partyName = scenarioContext().isPartyInScenarioContext(party) ? scenarioContext().scenario[party] : envConfig.scenario[scenario][party]; const { nodeName, identity } = getNodeAndIdentityFromPartyName(partyName); await browser.deleteCookies(); const currentProfile = getNodeProfile(nodeName); await loginToNode(nodeName, role); if (getNodeVersionAsNumber(nodeName) >= 8 && identity != undefined) { const userMenuPage = new UserMenuPage(); await userMenuPage.switchIdentity(identity, currentProfile); } logger.debug(`Login to main page for ${party} ${role} done`); } export async function loginToDefaultNodeAsCustomUser(partyRole: string): Promise { const nodeName = envConfig.defaultParty[partyRole]; await loginToNode(nodeName); } async function loginToNode(nodeName: string, role?: string): Promise { const nodeProfile = getNodeProfile(nodeName); scenarioContext().appVersion = nodeProfile.appVersion; contourfet.appVersion = nodeProfile.appVersion; logger.debug( `Login to node ${nodeProfile.displayName}(${contourfet.appVersion}), role ${role}, nodeName ${nodeName}` ); if (role) { scenarioContext().userDtl.userName = nodeProfile[role + 'Username']; scenarioContext().userDtl.password = nodeProfile[role + 'Password']; scenarioContext().userDtl.email = isNodeLdapEnabled(nodeName) ? getLdapEmail(scenarioContext().userDtl.userName) : getUserEmail(scenarioContext().userDtl.userName, nodeName); } const baseUrl = nodeProfile.baseUrl; const userDtl = scenarioContext().userDtl; await Web.url(baseUrl); const loginPage = new LoginPage(baseUrl); const versionNumber = getNodeVersionAsNumber(nodeName); if (!!versionNumber && versionNumber >= 8) { await loginPage.login(userDtl.email, userDtl.password); } else { await loginPage.login(userDtl.userName, userDtl.password); } // await new ContourSpinner().waitForLoadingToComplete(); await postLoginFunction(nodeName); } async function postLoginFunction(nodeName: string): Promise { scenarioContext().currentLoggedInCompany = nodeName; }