- Replace __dirname with import.meta.url pattern for ES modules compatibility - Add fileURLToPath imports to all E2E test files - Fix duplicate require statements in setup-verification.spec.ts - Update playwright.config.ts to use relative path instead of __dirname This fixes the 'ReferenceError: __dirname is not defined in ES module scope' error when running Playwright tests in the ES modules environment.
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
/**
|
|
* Global Teardown for Playwright E2E Tests
|
|
*
|
|
* This runs once after all test suites complete.
|
|
* Used for:
|
|
* - Database cleanup
|
|
* - Test artifact archival
|
|
* - Environment reset
|
|
*/
|
|
|
|
import { execSync } from 'child_process';
|
|
import path from 'path';
|
|
import fs from 'fs';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
async function globalTeardown() {
|
|
console.log('🧹 Starting E2E test teardown...');
|
|
|
|
const testStartTime = process.env.TEST_START_TIME;
|
|
console.log(` Test started at: ${testStartTime}`);
|
|
console.log(` Test completed at: ${new Date().toISOString()}`);
|
|
|
|
// Clean up temporary test files if in CI mode
|
|
if (process.env.CI) {
|
|
console.log(' CI mode: Cleaning up temporary files...');
|
|
const resultsDir = path.join(__dirname, '..', 'e2e-results');
|
|
|
|
// Keep videos/screenshots of failures for debugging
|
|
// but clean up successful test artifacts after 7 days
|
|
if (fs.existsSync(resultsDir)) {
|
|
const files = fs.readdirSync(resultsDir);
|
|
let cleanedCount = 0;
|
|
|
|
for (const file of files) {
|
|
const filePath = path.join(resultsDir, file);
|
|
const stats = fs.statSync(filePath);
|
|
const ageInDays = (Date.now() - stats.mtime.getTime()) / (1000 * 60 * 60 * 24);
|
|
|
|
if (ageInDays > 7 && !file.includes('failed')) {
|
|
try {
|
|
fs.unlinkSync(filePath);
|
|
cleanedCount++;
|
|
} catch (e) {
|
|
// Ignore errors during cleanup
|
|
}
|
|
}
|
|
}
|
|
|
|
console.log(` Cleaned up ${cleanedCount} old test artifacts`);
|
|
}
|
|
}
|
|
|
|
console.log('✅ E2E test teardown complete');
|
|
}
|
|
|
|
export default globalTeardown;
|