Files
kt-financial-system/test-transaction-final.js
你的用户名 4b4616de1e feat: Add TokenRecords finance management system
- Created new finance application based on Vue Vben Admin
- Implemented transaction management, category management, and loan tracking
- Added person management for tracking financial relationships
- Integrated budget management and financial analytics
- Added data import/export functionality
- Implemented responsive design for mobile support
- Added comprehensive testing with Playwright

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-06 20:09:48 +08:00

101 lines
3.4 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. 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,
slowMo: 300
});
const page = await browser.newPage();
// 只监听错误
page.on('pageerror', error => {
console.log('[页面错误]', error.message);
});
try {
console.log('========== 测试新建交易 ==========\n');
// 1. 访问页面
console.log('1. 访问交易管理页面...');
await page.goto('http://localhost:5667/finance/transaction');
await page.waitForTimeout(3000);
// 2. 点击新建
console.log('2. 点击新建按钮...');
const createBtn = await page.locator('button').filter({ hasText: '新建' }).first();
await createBtn.click();
await page.waitForTimeout(1500);
// 3. 填写表单
console.log('3. 填写交易信息...');
// 金额
const amountInput = await page.locator('input.ant-input-number-input').first();
await amountInput.clear();
await amountInput.fill('888.88');
console.log(' 金额: 888.88');
// 选择分类
const categorySelect = await page.locator('.ant-select').nth(1);
await categorySelect.click();
await page.waitForTimeout(500);
const categoryOption = await page.locator('.ant-select-dropdown:visible .ant-select-item').first();
if (await categoryOption.isVisible()) {
await categoryOption.click();
console.log(' 分类: 已选择');
}
// 描述
const descInput = await page.locator('textarea').first();
if (await descInput.isVisible()) {
await descInput.fill('测试交易 - ' + new Date().toLocaleTimeString());
console.log(' 描述: 已填写');
}
// 4. 提交
console.log('4. 提交交易...');
const submitBtn = await page.locator('.ant-modal-footer button.ant-btn-primary').first();
await submitBtn.click();
await page.waitForTimeout(2000);
// 5. 检查结果
console.log('5. 检查结果...');
// 检查成功消息
const successMsg = await page.locator('.ant-message-success').first();
const hasSuccess = await successMsg.isVisible();
// 检查弹窗是否关闭
const modal = await page.locator('.ant-modal').first();
const modalClosed = !(await modal.isVisible());
// 检查新记录
await page.waitForTimeout(1000);
const newRecord = await page.locator('td:has-text("888.88")').first();
const recordFound = await newRecord.isVisible();
console.log('\n========== 测试结果 ==========');
console.log(`✅ 弹窗打开: 成功`);
console.log(`${hasSuccess ? '✅' : '❌'} 成功提示: ${hasSuccess ? '显示' : '未显示'}`);
console.log(`${modalClosed ? '✅' : '❌'} 弹窗关闭: ${modalClosed ? '已关闭' : '未关闭'}`);
console.log(`${recordFound ? '✅' : '❌'} 新记录: ${recordFound ? '已创建' : '未找到'}`);
if (hasSuccess && modalClosed && recordFound) {
console.log('\n🎉 新建交易功能正常!');
} else {
console.log('\n⚠ 新建交易功能存在问题');
await page.screenshot({ path: 'transaction-issue.png' });
console.log('已保存截图: transaction-issue.png');
}
} catch (error) {
console.error('\n❌ 测试失败:', error.message);
await page.screenshot({ path: 'error.png' });
} finally {
console.log('\n浏览器将在5秒后关闭...');
await page.waitForTimeout(5000);
await browser.close();
}
})();