优化分批执行点击菜单

This commit is contained in:
dengqichen 2025-03-07 09:42:48 +08:00
parent eb8d523d91
commit 6aa60dd29d
5 changed files with 46 additions and 22 deletions

View File

@ -1,5 +1,15 @@
# 基础URL # 基础URL
BASE_URL=https://ibp-dev.longi.com BASE_URL=https://ibp-dev.longi.com
MENU_DATA_FILE_PATH=data/longi/menu-data.json
MENU_TIME_OUT=30000 # 超时配置
MENU_TIME_OUT=30000
# 数据目录配置
TEST_DATA_DIR=test-data
MENU_DATA_FILE_PATH=test-data/menu-data.json
TEST_PROGRESS_FILE_PATH=test-data/test-progress.json
# 测试批次配置
TEST_BATCH_SIZE=5
TEST_RETRY_COUNT=3
TEST_BATCH_INTERVAL=2000

View File

@ -1,10 +1,26 @@
const path = require('path'); const path = require('path');
require('dotenv-flow').config({ const dotenv = require('dotenv-flow');
node_env: process.env.NODE_ENV || 'dev',
// 获取当前环境
const NODE_ENV = process.env.NODE_ENV || 'dev';
// 加载环境变量
const result = dotenv.config({
node_env: NODE_ENV,
path: path.resolve(process.cwd()), path: path.resolve(process.cwd()),
default_node_env: 'dev' default_node_env: 'dev'
}); });
// 解析环境变量中的变量引用
Object.keys(process.env).forEach(key => {
const value = process.env[key];
if (typeof value === 'string') {
process.env[key] = value.replace(/\${([^}]+)}/g, (_, varName) => {
return process.env[varName] || '';
});
}
});
console.log('Current NODE_ENV:', process.env.NODE_ENV); console.log('Current NODE_ENV:', process.env.NODE_ENV);
// console.log('Loaded BASE_URL:', process.env.BASE_URL); // console.log('Loaded BASE_URL:', process.env.BASE_URL);
console.log('Environment files path:', path.resolve(process.cwd())); console.log('Environment files path:', path.resolve(process.cwd()));

View File

@ -4,16 +4,11 @@ const LongiLoginPage = require('../tests/pages/LongiLoginPage');
const menuDataService = require('../services/MenuDataService'); const menuDataService = require('../services/MenuDataService');
class TestController { class TestController {
/** constructor() {
* @param {Object} options - 配置选项 // 从环境变量获取配置
* @param {number} [options.batchSize=5] - 每批次测试的菜单数量 this.batchSize = parseInt(process.env.TEST_BATCH_SIZE || '5', 10);
* @param {number} [options.retryCount=3] - 失败重试次数 this.retryCount = parseInt(process.env.TEST_RETRY_COUNT || '3', 10);
* @param {number} [options.batchInterval=2000] - 批次间隔时间(ms) this.batchInterval = parseInt(process.env.TEST_BATCH_INTERVAL || '2000', 10);
*/
constructor(options = {}) {
this.batchSize = options.batchSize || 5;
this.retryCount = options.retryCount || 3;
this.batchInterval = options.batchInterval || 2000;
// 浏览器配置 // 浏览器配置
this.browserConfig = { this.browserConfig = {
@ -21,6 +16,12 @@ class TestController {
args: ['--start-maximized'], // 最大化窗口 args: ['--start-maximized'], // 最大化窗口
slowMo: 50 // 放慢操作速度,便于观察 slowMo: 50 // 放慢操作速度,便于观察
}; };
console.log('测试配置:', {
batchSize: this.batchSize,
retryCount: this.retryCount,
batchInterval: this.batchInterval
});
} }
/** /**

View File

@ -122,11 +122,7 @@ async function main() {
MENU_DATA_FILE_PATH: process.env.MENU_DATA_FILE_PATH MENU_DATA_FILE_PATH: process.env.MENU_DATA_FILE_PATH
}); });
const controller = new TestController({ const controller = new TestController();
batchSize: 5,
retryCount: 3,
batchInterval: 2000
});
// 处理命令行参数 // 处理命令行参数
const args = process.argv.slice(2); const args = process.argv.slice(2);

View File

@ -3,9 +3,10 @@ const path = require('path');
class MenuDataService { class MenuDataService {
constructor() { constructor() {
this.dataDir = path.join(process.cwd(), 'test-data'); // 从环境变量获取路径配置
this.menuDataPath = path.join(this.dataDir, 'menu-data.json'); this.dataDir = process.env.TEST_DATA_DIR || path.join(process.cwd(), 'test-data');
this.progressPath = path.join(this.dataDir, 'test-progress.json'); this.menuDataPath = process.env.MENU_DATA_FILE_PATH || path.join(this.dataDir, 'menu-data.json');
this.progressPath = process.env.TEST_PROGRESS_FILE_PATH || path.join(this.dataDir, 'test-progress.json');
// 确保数据目录存在 // 确保数据目录存在
if (!fs.existsSync(this.dataDir)) { if (!fs.existsSync(this.dataDir)) {