Files
gerenjizhang/verify-budget.mjs
T

92 lines
3.0 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.
/**
* 预算页面验证脚本 - Test-Engineer Agent
* 验证剩余金额显示修复
*/
import { chromium } from 'playwright';
async function verifyBudgetPage() {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
try {
console.log('【测试开始】打开预算页面...');
await page.goto('http://localhost:5173/budget', { waitUntil: 'networkidle' });
// 等待页面加载
await page.waitForTimeout(2000);
// 截图
await page.screenshot({
path: 'D:\\Users\\kaifa\\Trae_cn260425\\personal-finance-budget-system\\budget-verification.png',
fullPage: true
});
console.log('【截图完成】budget-verification.png');
// 提取预算数据
const pageText = await page.textContent('body');
console.log('\n【页面内容提取】');
// 查找预算相关数据
const budgetMatch = pageText.match(/总预算[:]\s*¥?([\d,]+\.?\d*)/);
const spentMatch = pageText.match(/已花费[:]\s*¥?([\d,]+\.?\d*)/);
const remainingMatch = pageText.match(/(剩余|超支)[:]\s*¥?([\d,]+\.?\d*)/);
console.log('--- 预算数据 ---');
if (budgetMatch) {
console.log(`总预算: ¥${budgetMatch[1]}`);
}
if (spentMatch) {
console.log(`已花费: ¥${spentMatch[1]}`);
}
if (remainingMatch) {
console.log(`${remainingMatch[1]}: ¥${remainingMatch[2]}`);
}
// 验证计算
console.log('\n【验证结果】');
const expectedBudget = 2200;
const expectedSpent = 2529.30;
const expectedOverage = 329.30;
// 检查是否显示"超支"
const hasOverage = pageText.includes('超支');
const hasRemaining = pageText.includes('剩余');
if (hasOverage) {
console.log('✅ 正确显示"超支"标签');
} else if (hasRemaining) {
console.log('❌ 错误显示"剩余"标签(应为"超支"');
}
// 检查金额
if (remainingMatch) {
const amount = parseFloat(remainingMatch[2].replace(',', ''));
if (Math.abs(amount - expectedOverage) < 0.01) {
console.log(`✅ 金额正确: ¥${amount.toFixed(2)}`);
} else {
console.log(`❌ 金额错误: 显示 ¥${amount.toFixed(2)},预期 ¥${expectedOverage.toFixed(2)}`);
}
}
// 输出关键预算信息
console.log('\n【关键预算信息】');
// 提取预算概览区域
const budgetSection = await page.locator('.budget-overview, .budget-summary, [class*="budget"]').first().textContent().catch(() => null);
if (budgetSection) {
console.log('预算区域:', budgetSection.trim().substring(0, 500));
}
// 查找所有包含金额的元素
const amounts = await page.locator('[class*="amount"], [class*="budget"], [class*="spent"], [class*="remaining"]').allTextContents();
console.log('\n金额相关元素:', amounts.slice(0, 10));
} catch (error) {
console.error('【测试失败】', error.message);
} finally {
await browser.close();
}
}
verifyBudgetPage();