2023-03-01 09:39:41 -06:00
|
|
|
/**
|
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
2024-05-31 11:29:24 -07:00
|
|
|
* SPDX-License-Identifier: BUSL-1.1
|
2023-03-01 09:39:41 -06:00
|
|
|
*/
|
|
|
|
|
|
2024-08-19 16:00:16 -04:00
|
|
|
import { chromium } from '@playwright/test';
|
2024-11-12 11:21:37 -05:00
|
|
|
import { checkEnv } from '../helpers/general.js';
|
2023-02-23 18:30:51 -05:00
|
|
|
|
2024-11-12 11:21:37 -05:00
|
|
|
import { LoginPage } from './pages/login.js';
|
2024-08-23 10:17:10 -04:00
|
|
|
|
2024-08-19 16:00:16 -04:00
|
|
|
async function globalSetup() {
|
2023-02-23 18:30:51 -05:00
|
|
|
await checkEnv([
|
|
|
|
|
'BOUNDARY_ADDR',
|
|
|
|
|
'E2E_PASSWORD_ADMIN_LOGIN_NAME',
|
|
|
|
|
'E2E_PASSWORD_ADMIN_PASSWORD',
|
|
|
|
|
'E2E_PASSWORD_AUTH_METHOD_ID',
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
// Log in and save the authenticated state to reuse in tests
|
|
|
|
|
const browser = await chromium.launch();
|
|
|
|
|
const page = await browser.newPage();
|
|
|
|
|
await page.goto(process.env.BOUNDARY_ADDR);
|
2024-08-23 10:17:10 -04:00
|
|
|
|
|
|
|
|
const loginPage = new LoginPage(page);
|
|
|
|
|
await loginPage.login(
|
|
|
|
|
process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME,
|
|
|
|
|
process.env.E2E_PASSWORD_ADMIN_PASSWORD,
|
|
|
|
|
);
|
2024-06-28 15:04:11 -04:00
|
|
|
const storageState = await page
|
|
|
|
|
.context()
|
|
|
|
|
.storageState({ path: authenticatedState });
|
|
|
|
|
|
|
|
|
|
const state = JSON.parse(storageState.origins[0].localStorage[0].value);
|
|
|
|
|
|
|
|
|
|
// Set the token in the environment for use in API requests
|
|
|
|
|
process.env.E2E_TOKEN = state.authenticated.token;
|
|
|
|
|
|
2023-02-23 18:30:51 -05:00
|
|
|
await browser.close();
|
2024-08-19 16:00:16 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default globalSetup;
|
|
|
|
|
|
2024-11-12 18:11:00 -05:00
|
|
|
export const authenticatedState = './admin/artifacts/authenticated-state.json';
|