|
| 1 | +import { config } from '../config.js' |
| 2 | +import { api, objects } from '../support' |
| 3 | +import { ActorsEnvironment, UsersEnvironment } from '../support/environment' |
| 4 | +import { User } from '../support/types' |
| 5 | + |
| 6 | +async function createNewSession(actorsEnvironment: ActorsEnvironment, stepUser: string) { |
| 7 | + const { page } = await actorsEnvironment.createActor({ |
| 8 | + key: stepUser, |
| 9 | + namespace: actorsEnvironment.generateNamespace(stepUser, stepUser) |
| 10 | + }) |
| 11 | + return new objects.runtime.Session({ page }) |
| 12 | +} |
| 13 | + |
| 14 | +async function initUserStates(userKey: string, user: User, usersEnvironment: UsersEnvironment) { |
| 15 | + const userInfo = await api.graph.getMeInfo(user) |
| 16 | + usersEnvironment.storeCreatedUser(userKey, { |
| 17 | + ...user, |
| 18 | + uuid: userInfo.id, |
| 19 | + email: userInfo.mail |
| 20 | + }) |
| 21 | + usersEnvironment.saveUserState(userKey, { |
| 22 | + language: userInfo.preferredLanguage, |
| 23 | + autoAcceptShare: await api.settings.getAutoAcceptSharesValue(user) |
| 24 | + }) |
| 25 | +} |
| 26 | + |
| 27 | +export async function LogInUser( |
| 28 | + usersEnvironment: UsersEnvironment, |
| 29 | + actorsEnvironment: ActorsEnvironment, |
| 30 | + stepUser: string |
| 31 | +): Promise<void> { |
| 32 | + const sessionObject = await createNewSession(actorsEnvironment, stepUser) |
| 33 | + const { page } = actorsEnvironment.getActor({ key: stepUser }) |
| 34 | + |
| 35 | + let user = null |
| 36 | + if (stepUser === 'Admin' || config.predefinedUsers) { |
| 37 | + user = usersEnvironment.getUser({ key: stepUser }) |
| 38 | + } else { |
| 39 | + user = usersEnvironment.getCreatedUser({ key: stepUser }) |
| 40 | + } |
| 41 | + |
| 42 | + await page.goto(config.baseUrl) |
| 43 | + await sessionObject.login(user) |
| 44 | + |
| 45 | + await page.locator('#web-content').waitFor() |
| 46 | + |
| 47 | + // initialize user states: uuid, language, auto-sync |
| 48 | + if (config.predefinedUsers) { |
| 49 | + await initUserStates(stepUser, user, usersEnvironment) |
| 50 | + // test should run with English language |
| 51 | + await api.settings.changeLanguage({ user, language: 'en' }) |
| 52 | + await page.reload({ waitUntil: 'load' }) |
| 53 | + } |
| 54 | +} |
| 55 | + |
| 56 | +export async function LogOutUser( |
| 57 | + actorsEnvironment: ActorsEnvironment, |
| 58 | + stepUser: string |
| 59 | +): Promise<void> { |
| 60 | + const actor = actorsEnvironment.getActor({ key: stepUser }) |
| 61 | + const canLogout = !!(await actor.page.locator('#_userMenuButton').count()) |
| 62 | + |
| 63 | + const sessionObject = new objects.runtime.Session({ page: actor.page }) |
| 64 | + canLogout && (await sessionObject.logout()) |
| 65 | + await actor.close() |
| 66 | +} |
0 commit comments