Files
threshold-ui/e2e-tests/global-setup.js
T
Zhihe Li 9c10d79661 Icu 14777 add more target tests (#2594)
* refactor: 💡 Move global setup to root
* refactor: 💡 Move env variable test fixture to global setup file
* test: 💍 Add more DC e2e tests for targets
* docs: ✏️ Updated e2e README

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-14777
2024-12-03 18:51:22 -05:00

79 lines
2.8 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { chromium, test as baseTest } from '@playwright/test';
import { checkEnv } from './helpers/general.js';
import { LoginPage } from './admin/pages/login.js';
async function globalSetup() {
await checkEnv([
'BOUNDARY_ADDR',
'E2E_PASSWORD_ADMIN_LOGIN_NAME',
'E2E_PASSWORD_ADMIN_PASSWORD',
'E2E_PASSWORD_AUTH_METHOD_ID',
]);
await authenticateToBoundary();
}
const authenticateToBoundary = async () => {
// 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);
const loginPage = new LoginPage(page);
await loginPage.login(
process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME,
process.env.E2E_PASSWORD_ADMIN_PASSWORD,
);
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;
await browser.close();
};
export default globalSetup;
export const authenticatedState = './admin/artifacts/authenticated-state.json';
// Centralized location for environment variables used in tests
export const test = baseTest.extend({
adminAuthMethodId: process.env.E2E_PASSWORD_AUTH_METHOD_ID,
adminLoginName: process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME,
adminPassword: process.env.E2E_PASSWORD_ADMIN_PASSWORD,
awsAccessKeyId: process.env.E2E_AWS_ACCESS_KEY_ID,
awsBucketName: process.env.E2E_AWS_BUCKET_NAME,
awsHostSetFilter: process.env.E2E_AWS_HOST_SET_FILTER,
awsHostSetIps: process.env.E2E_AWS_HOST_SET_IPS,
awsRegion: process.env.E2E_AWS_REGION,
awsSecretAccessKey: process.env.E2E_AWS_SECRET_ACCESS_KEY,
bucketAccessKeyId: process.env.E2E_BUCKET_ACCESS_KEY_ID,
bucketEndpointUrl: process.env.E2E_BUCKET_ENDPOINT_URL,
bucketName: process.env.E2E_BUCKET_NAME,
bucketSecretAccessKey: process.env.E2E_BUCKET_SECRET_ACCESS_KEY,
ldapAddr: process.env.E2E_LDAP_ADDR,
ldapAdminDn: process.env.E2E_LDAP_ADMIN_DN,
ldapAdminPassword: process.env.E2E_LDAP_ADMIN_PASSWORD,
ldapDomainDn: process.env.E2E_LDAP_DOMAIN_DN,
ldapGroupName: process.env.E2E_LDAP_GROUP_NAME,
ldapUserName: process.env.E2E_LDAP_USER_NAME,
ldapUserPassword: process.env.E2E_LDAP_USER_PASSWORD,
region: process.env.E2E_REGION,
sshCaKey: process.env.E2E_SSH_CA_KEY,
sshCaKeyPublic: process.env.E2E_SSH_CA_KEY_PUBLIC,
sshKeyPath: process.env.E2E_SSH_KEY_PATH,
sshUser: process.env.E2E_SSH_USER,
targetAddress: process.env.E2E_TARGET_ADDRESS,
targetPort: process.env.E2E_TARGET_PORT,
vaultAddr: process.env.E2E_VAULT_ADDR,
workerTagEgress: process.env.E2E_WORKER_TAG_EGRESS,
});