playwright/tests/e2e/menu.spec.js
2025-03-07 10:21:10 +08:00

57 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 加载环境变量
require('../../config/env');
const { test } = require('@playwright/test');
const TestController = require('../../src/controllers/TestController');
const menuDataService = require('../../src/services/MenuDataService');
test.describe('菜单可访问性测试', () => {
let controller;
test.beforeAll(async () => {
controller = new TestController();
// 打印环境变量,用于调试
console.log('BASE_URL:', process.env.BASE_URL);
});
test('收集菜单数据', async () => {
const menuData = await controller.collectMenuData();
console.log(`成功收集 ${menuData.length} 个菜单项`);
});
test('批量测试菜单', async () => {
// 清理之前的进度
menuDataService.saveProgress([]);
let retryCount = 0;
const maxRetries = parseInt(process.env.TEST_RETRY_COUNT || '3', 10);
while (true) {
const batch = controller.getNextBatch();
if (!batch || batch.length === 0) {
const finalProgress = controller.getTestProgress();
if (finalProgress.completed < finalProgress.total && retryCount < maxRetries) {
console.log(`\n还有未完成的测试,尝试重试 (${retryCount + 1}/${maxRetries})...`);
retryCount++;
continue;
}
console.log('\n所有测试完成');
console.log(`最终进度: ${finalProgress.completed}/${finalProgress.total}`);
break;
}
// 显示当前进度
const currentProgress = controller.getTestProgress();
console.log(`\n当前进度: ${currentProgress.completed}/${currentProgress.total}`);
// 执行当前批次
await controller.runBatchTest(batch);
// 批次间暂停
const batchInterval = parseInt(process.env.TEST_BATCH_INTERVAL || '2000', 10);
await new Promise(resolve => setTimeout(resolve, batchInterval));
}
});
});