初始化
Some checks failed
Some checks failed
This commit is contained in:
120
frontend/tests/e2e/global-teardown.js
Normal file
120
frontend/tests/e2e/global-teardown.js
Normal file
@@ -0,0 +1,120 @@
|
||||
const { chromium } = require('@playwright/test')
|
||||
|
||||
async function globalTeardown(config) {
|
||||
console.log('🧹 开始全局清理...')
|
||||
|
||||
// 获取浏览器实例
|
||||
const browser = await chromium.launch()
|
||||
const context = await browser.newContext()
|
||||
const page = await context.newPage()
|
||||
|
||||
try {
|
||||
// 清理测试数据
|
||||
await cleanupTestData(page)
|
||||
|
||||
// 清理用户认证
|
||||
await cleanupAuthentication()
|
||||
|
||||
// 清理环境变量
|
||||
await cleanupEnvironmentVariables()
|
||||
|
||||
// 清理测试文件
|
||||
await cleanupTestFiles()
|
||||
|
||||
console.log('✅ 全局清理完成')
|
||||
} catch (error) {
|
||||
console.error('❌ 全局清理失败:', error)
|
||||
throw error
|
||||
} finally {
|
||||
await context.close()
|
||||
await browser.close()
|
||||
}
|
||||
}
|
||||
|
||||
async function cleanupTestData(page) {
|
||||
console.log('📊 清理测试数据...')
|
||||
|
||||
// 这里可以清理测试数据,例如:
|
||||
// 1. 删除测试用户
|
||||
// 2. 清理测试产品数据
|
||||
// 3. 重置测试类别等
|
||||
|
||||
// 示例:通过API清理测试数据
|
||||
// await page.goto('/api/test/cleanup')
|
||||
// await page.waitForResponse(response => response.status() === 200)
|
||||
}
|
||||
|
||||
async function cleanupAuthentication() {
|
||||
console.log('🔐 清理用户认证...')
|
||||
|
||||
// 这里可以清理用户认证,例如:
|
||||
// 1. 删除测试用户
|
||||
// 2. 清理认证令牌
|
||||
|
||||
// 示例:删除认证状态文件
|
||||
// const fs = require('fs')
|
||||
// if (fs.existsSync('test-auth-state.json')) {
|
||||
// fs.unlinkSync('test-auth-state.json')
|
||||
// }
|
||||
}
|
||||
|
||||
async function cleanupEnvironmentVariables() {
|
||||
console.log('🌍 清理环境变量...')
|
||||
|
||||
// 清理测试环境变量
|
||||
delete process.env.TEST_MODE
|
||||
delete process.env.API_BASE_URL
|
||||
delete process.env.TEST_TIMEOUT
|
||||
}
|
||||
|
||||
async function cleanupTestFiles() {
|
||||
console.log('📁 清理测试文件...')
|
||||
|
||||
// 清理测试生成的文件
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
// 清理测试报告目录
|
||||
const reportDirs = ['test-results', 'playwright-report']
|
||||
reportDirs.forEach(dir => {
|
||||
const dirPath = path.resolve(process.cwd(), dir)
|
||||
if (fs.existsSync(dirPath)) {
|
||||
// 保留目录,但清理其中的文件
|
||||
const files = fs.readdirSync(dirPath)
|
||||
files.forEach(file => {
|
||||
const filePath = path.join(dirPath, file)
|
||||
const stat = fs.statSync(filePath)
|
||||
|
||||
if (stat.isDirectory()) {
|
||||
// 递归删除子目录
|
||||
deleteFolderRecursive(filePath)
|
||||
} else {
|
||||
// 删除文件
|
||||
fs.unlinkSync(filePath)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 递归删除文件夹
|
||||
function deleteFolderRecursive(folderPath) {
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
if (fs.existsSync(folderPath)) {
|
||||
fs.readdirSync(folderPath).forEach(file => {
|
||||
const curPath = path.join(folderPath, file)
|
||||
if (fs.lstatSync(curPath).isDirectory()) {
|
||||
// 递归删除子目录
|
||||
deleteFolderRecursive(curPath)
|
||||
} else {
|
||||
// 删除文件
|
||||
fs.unlinkSync(curPath)
|
||||
}
|
||||
})
|
||||
fs.rmdirSync(folderPath)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = globalTeardown
|
||||
Reference in New Issue
Block a user