const fs = require('fs'); const path = require('path'); let passed = 0; let failed = 0; function assert(condition, testName, detail = '') { if (condition) { console.log(` [PASS] ${testName}`); passed++; } else { console.error(` [FAIL] ${testName} - ${detail}`); failed++; } } console.log("========================================================"); console.log(" 兑换券页面对齐dmepa页面规格与黑金卡片交互测试"); console.log("========================================================\n"); // 1. 验证 voucher.vue 存在性 const voucherVuePath = path.resolve(__dirname, '../uniapp/pages/commission/voucher.vue'); assert(fs.existsSync(voucherVuePath), 'voucher.vue 文件存在'); const content = fs.readFileSync(voucherVuePath, 'utf-8'); // 2. 验证黑金尊享卡片结构对齐 assert( content.includes('asset-card') && content.includes('madow-hero') || content.includes('voucher-hero'), '包含黑金资产大卡片与核心大字数展示结构', '未包含类似 madow.vue 的黑金尊享卡片' ); // 3. 验证 4 项核心数据指标完整对齐 assert( content.includes('voucher_total') && content.includes('voucher_released') && content.includes('voucher_used') && content.includes('voucher_available'), '包含累计获得、已释放、已使用、可用兑换券 4 项核心指标完整绑定', '缺少核心兑换券指标' ); // 4. 验证胶囊指示栏与规则弹窗 assert( content.includes('su-popup') && content.includes('showHelp') && content.includes('释放规则'), '包含释放规则按钮与 su-popup 规则说明弹窗', '缺少规则弹窗交互' ); // 5. 验证订单卡片流与进度展示 assert( content.includes('log-card') || content.includes('plan-card'), '订单释放计划升级为卡片流形式', '仍为旧版普通边框单列表' ); assert( content.includes('released_days') || content.includes('total_days') || content.includes('planProgress'), '卡片流中计算并展示释放天数与线性进度条', '缺少释放天数或进度条' ); // 6. 验证快捷兑换入口 assert( content.includes('/pages/index/index') || content.includes('/pages/goods/list') || content.includes('去兑换'), '提供前往商城的兑换引导入口', '缺少商城引导' ); console.log("\n--------------------------------------------------------"); console.log(`测试执行结果: 通过 ${passed} 项, 失败 ${failed} 项`); console.log("========================================================"); process.exit(failed === 0 ? 0 : 1);