Files
kt-financial-system/test-stats-final.js
你的用户名 675fe0a1a8 feat: 增强财务管理系统功能与分析能力
主要更新:
- 🎯 新增综合分析仪表板,包含关键指标卡片、预算对比、智能洞察等组件
- 📊 增强数据可视化能力,新增标签云分析、时间维度分析等图表
- 📱 优化移动端响应式设计,改进触控交互体验
- 🔧 新增多个API模块(base、budget、tag),完善数据管理
- 🗂️ 重构路由结构,新增贷款、快速添加、设置、统计等独立模块
- 🔄 优化数据导入导出功能,增强数据迁移能力
- 🐛 修复多个已知问题,提升系统稳定性

技术改进:
- 使用IndexedDB提升本地存储性能
- 实现模拟API服务,支持离线开发
- 增加自动化测试脚本,确保功能稳定
- 优化打包配置,提升构建效率

文件变更:
- 新增42个文件
- 修改55个文件
- 包含测试脚本、配置文件、组件和API模块

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 16:41:58 +08:00

86 lines
3.5 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.

import { chromium } from 'playwright';
(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
try {
console.log('1. 访问分类统计页面...');
await page.goto('http://localhost:5666/finance/category-stats');
await page.waitForTimeout(5000); // 给更多时间加载
// 检查是否需要登录
if (page.url().includes('login')) {
console.log('需要登录...');
await page.fill('input[placeholder*="账号"]', 'admin');
await page.fill('input[placeholder*="密码"]', '111111');
await page.click('button:has-text("登录")');
await page.waitForTimeout(3000);
await page.goto('http://localhost:5666/finance/category-stats');
await page.waitForTimeout(5000);
}
console.log('\n2. 检查页面元素...');
// 等待页面完全加载
await page.waitForSelector('.ant-card', { timeout: 10000 });
// 检查快速选择按钮组
const radioGroup = await page.locator('.ant-radio-group').first().isVisible();
console.log(' - 快速选择按钮组:', radioGroup ? '✓' : '✗');
// 检查选中状态使用Ant Design的选中类
const checkedButton = await page.locator('.ant-radio-button-wrapper-checked').textContent();
console.log(' - 当前选中:', checkedButton || '无');
console.log('\n3. 测试快速日期切换...');
// 点击"本年"
const yearButton = page.locator('.ant-radio-button-wrapper').filter({ hasText: '本年' });
await yearButton.click();
await page.waitForTimeout(2000);
const yearChecked = await page.locator('.ant-radio-button-wrapper-checked').filter({ hasText: '本年' }).count();
console.log(' - 本年按钮选中:', yearChecked > 0 ? '✓' : '✗');
// 点击"今天"
const todayButton = page.locator('.ant-radio-button-wrapper').filter({ hasText: '今天' });
await todayButton.click();
await page.waitForTimeout(2000);
const todayChecked = await page.locator('.ant-radio-button-wrapper-checked').filter({ hasText: '今天' }).count();
console.log(' - 今天按钮选中:', todayChecked > 0 ? '✓' : '✗');
console.log('\n4. 测试图表切换...');
// 切换到柱状图
await page.locator('.ant-radio-button-wrapper').filter({ hasText: '柱状图' }).click();
await page.waitForTimeout(3000);
await page.screenshot({ path: 'test-bar-chart.png' });
console.log(' - 柱状图截图: test-bar-chart.png');
// 切换到趋势图
await page.locator('.ant-radio-button-wrapper').filter({ hasText: '趋势图' }).click();
await page.waitForTimeout(3000);
await page.screenshot({ path: 'test-trend-chart.png' });
console.log(' - 趋势图截图: test-trend-chart.png');
// 切换到表格视图
await page.locator('.ant-radio-button-wrapper').filter({ hasText: '表格' }).click();
await page.waitForTimeout(2000);
const tableVisible = await page.locator('.ant-table').isVisible();
console.log(' - 表格视图:', tableVisible ? '✓' : '✗');
// 最终全页截图
await page.screenshot({ path: 'category-stats-final.png', fullPage: true });
console.log('\n✅ 所有测试完成!');
} catch (error) {
console.error('❌ 测试出错:', error.message);
await page.screenshot({ path: 'test-error-final.png' });
} finally {
await page.waitForTimeout(2000);
await browser.close();
}
})();