buster/web/playwright-tests/auth-utils/global-setup.ts

92 lines
3.0 KiB
TypeScript
Raw Normal View History

Biome linter test (#336) * update files for use with biom * fix prettier formats * minor biome fixes * fix additional files * update linting rules * fix additional linting errors * fix linting errors * update lib * run check in the lib direcotyr * update some linting errors * fix problems * move addtional files to stricter linting * fix imports and linting errors * update some biome settings * fix query parser * quick wins * update files * fix addtional things * fix context files * update additional biome files * fix additional files * biome fixes * fixin files * fix broken * fix additional files and problems * fix biome buster stuff * fix helpers and * stricter linting * fixed * fix missing types * fix linting * remove missing imports * update more biome test stuff * update fixes * update imports * more updates * fix some linting errors * fix broken children as prop errors * lint ci * update lint check * Update package.json * Update next.config.mjs * fix some broken tests * update some tests * chore(versions): bump api to v0.1.16; bump web to v0.1.16; bump cli to v0.1.16 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-unit-tests.yml * fix some tests * chore(versions): bump api to v0.1.17; bump web to v0.1.17; bump cli to v0.1.17 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update ignore files * chore(versions): bump api to v0.1.18; bump web to v0.1.18; bump cli to v0.1.18 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-lint.yml * chore(versions): bump api to v0.1.19; bump web to v0.1.19; bump cli to v0.1.19 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update boime package settings * chore(versions): bump api to v0.1.20; bump web to v0.1.20; bump cli to v0.1.20 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * save to dropdown bug fixes * update console logs * update chart animation * chore(versions): bump api to v0.1.21; bump web to v0.1.21; bump cli to v0.1.21 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update build * chore(versions): bump api to v0.1.22; bump web to v0.1.22; bump cli to v0.1.22 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * additinal updates for biome 2 * update imports * chore(versions): bump api to v0.1.23; bump web to v0.1.23; bump cli to v0.1.23 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * final updates * chore(versions): bump api to v0.1.24; bump web to v0.1.24; bump cli to v0.1.24 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update dashboard-updates.test.ts * chore(versions): bump api to v0.1.25; bump web to v0.1.25; bump cli to v0.1.25 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * crazy fix * chore(versions): bump api to v0.1.26; bump web to v0.1.26; bump cli to v0.1.26 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * more attempts for stable tests * chore(versions): bump api to v0.1.27; bump web to v0.1.27; bump cli to v0.1.27 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update tests * split the test off * chore(versions): bump api to v0.1.28; bump web to v0.1.28; bump cli to v0.1.28 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update pie-styling-updates.spec.ts * Create web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.29; bump web to v0.1.29; bump cli to v0.1.29 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update tests * chore(versions): bump api to v0.1.30; bump web to v0.1.30; bump cli to v0.1.30 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.31; bump web to v0.1.31; bump cli to v0.1.31 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.32; bump web to v0.1.32; bump cli to v0.1.32 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.33; bump web to v0.1.33; bump cli to v0.1.33 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.34; bump web to v0.1.34; bump cli to v0.1.34 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * Update web-e2e-tests-optimized.yml * Revert "Update web-e2e-tests-optimized.yml" This reverts commit dfc9263a2621f1c00dee30e28dbb01a9f8f914ef. * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.35; bump web to v0.1.35; bump cli to v0.1.35 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.36; bump web to v0.1.36; bump cli to v0.1.36 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-31 01:16:48 +08:00
import * as fs from 'node:fs';
import { chromium, type FullConfig } from '@playwright/test';
import { applyAuth, authFile, hasValidAuth, login } from './auth-utils';
2025-05-02 05:31:05 +08:00
async function globalSetup(config: FullConfig) {
console.log('Starting global setup');
try {
// Make sure auth file exists with at least empty valid JSON to prevent errors
if (!fs.existsSync(authFile)) {
try {
fs.writeFileSync(
authFile,
JSON.stringify({
cookies: [],
localStorage: '{}',
sessionStorage: '{}'
})
);
} catch (error) {
console.error('Failed to create initial auth file:', error);
throw new Error(`Error during global setup: Failed to create auth file - ${error}`);
}
2025-05-02 05:31:05 +08:00
}
// Use chromium browser for the setup
const browser = await chromium
.launch({
headless: true,
// Force headless mode by disabling any GUI-related options
args: ['--disable-gpu', '--no-sandbox', '--disable-dev-shm-usage']
})
.catch((error) => {
throw new Error(`Error during global setup: Failed to launch browser - ${error}`);
});
const page = await browser.newPage().catch((error) => {
browser.close().catch(() => {});
throw new Error(`Error during global setup: Failed to create page - ${error}`);
});
2025-05-02 05:31:05 +08:00
const hasValidAuthJSON = hasValidAuth();
2025-05-02 05:31:05 +08:00
try {
// Check if we have valid stored credentials
if (hasValidAuthJSON) {
const authSuccess = await applyAuth(page);
if (authSuccess) {
// Verify login was successful by visiting a protected page
await page.goto('http://localhost:3000/app/home').catch((error) => {
throw new Error(
`Error during global setup: Failed to navigate to home page - ${error}`
);
});
2025-05-02 05:31:05 +08:00
// If we're still on the login page, we need to login again
if (page.url().includes('/auth/login')) {
await login(page).catch((error) => {
throw new Error(`Error during global setup: Failed to login - ${error}`);
});
}
} else {
await login(page).catch((error) => {
throw new Error(`Error during global setup: Failed to login - ${error}`);
});
}
} else {
await login(page).catch((error) => {
2025-05-03 05:37:07 +08:00
throw new Error(
`Error during global setup: Failed to login with no valid auth - ${error}`
);
});
2025-05-02 05:31:05 +08:00
}
await browser.close().catch((error) => {
console.error(`Error closing browser: ${error}`);
// Don't throw here, as the setup was successful
});
} catch (error) {
await browser.close().catch(() => {});
throw error; // Re-throw to stop test execution
2025-05-02 05:31:05 +08:00
}
} catch (error) {
console.error('\x1b[31m', '🛑 GLOBAL SETUP FAILED - STOPPING TESTS', '\x1b[0m');
console.error(error);
// Exit process with error code to ensure test runner stops
process.exit(1);
2025-05-02 05:31:05 +08:00
}
}
export default globalSetup;