Files
telegram-management-system/backend/quick_test.js
你的用户名 237c7802e5
Some checks failed
Deploy / deploy (push) Has been cancelled
Initial commit: Telegram Management System
Full-stack web application for Telegram management
- Frontend: Vue 3 + Vben Admin
- Backend: NestJS
- Features: User management, group broadcast, statistics

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:37:50 +08:00

235 lines
9.1 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.

#!/usr/bin/env node
/**
* 快速测试修复后的功能
*/
const { chromium } = require('playwright');
async function quickTest() {
console.log('🔧 快速测试修复后的功能...\n');
let browser;
let page;
try {
browser = await chromium.launch({
headless: false,
slowMo: 1000
});
const context = await browser.newContext({
viewport: { width: 1400, height: 900 }
});
page = await context.newPage();
// 监听API调用
page.on('request', request => {
const url = request.url();
if (url.includes('/nameTemplate/')) {
console.log(`🔗 ${request.method()} ${url}`);
}
});
page.on('response', response => {
const url = response.url();
if (url.includes('/nameTemplate/')) {
console.log(`📡 ${response.status()} ${url}`);
}
});
page.on('console', msg => {
if (msg.type() === 'error') {
console.log(`❌ 前端错误: ${msg.text()}`);
}
});
// 登录
console.log('🚀 登录系统...');
await page.goto('http://localhost:8891');
await page.waitForLoadState('networkidle');
await page.fill('input[type="text"]', 'admin');
await page.fill('input[type="password"]', '111111');
await page.click('button:has-text("登录")');
await page.waitForLoadState('networkidle');
console.log('✅ 登录成功\n');
// 访问统一管理页面
console.log('🎯 访问统一姓名管理页面...');
await page.goto('http://localhost:8891/#/nameManage/unified');
await page.waitForLoadState('networkidle');
await page.waitForTimeout(5000);
console.log('✅ 页面加载完成\n');
// 测试1检查页面元素
console.log('📊 测试1检查页面基本元素...');
const pageElements = await page.evaluate(() => {
return {
hasStatusPanel: !!document.querySelector('.status-panel'),
hasGeneratePanel: !!document.querySelector('.generate-panel'),
hasGenerateButton: !!document.querySelector('button'),
buttonTexts: Array.from(document.querySelectorAll('button')).map(b => b.textContent?.trim()),
hasTable: !!document.querySelector('table'),
headerCount: document.querySelectorAll('thead th').length
};
});
console.log('✅ 页面元素检查:');
console.log(` - 状态面板: ${pageElements.hasStatusPanel}`);
console.log(` - 生成面板: ${pageElements.hasGeneratePanel}`);
console.log(` - 按钮: ${pageElements.buttonTexts.join(', ')}`);
console.log(` - 数据表格: ${pageElements.hasTable} (${pageElements.headerCount}列)`);
await page.screenshot({ path: 'quick_test_01_page_loaded.png', fullPage: true });
// 测试2测试智能生成
console.log('\n🎲 测试2测试智能生成功能...');
// 先设置参数
try {
// 选择平台
const platformSelect = page.locator('.generate-panel .ivu-select').first();
await platformSelect.click();
await page.waitForTimeout(500);
const telegramOption = page.locator('.ivu-select-dropdown li').filter({ hasText: 'Telegram' }).first();
if (await telegramOption.isVisible()) {
await telegramOption.click();
console.log('🔧 选择平台: Telegram');
}
await page.waitForTimeout(1000);
// 点击生成按钮
const generateButton = page.locator('button').filter({ hasText: '生成姓名' });
if (await generateButton.isVisible()) {
await generateButton.click();
console.log('🎯 点击生成姓名按钮');
await page.waitForTimeout(3000);
// 检查是否有生成结果
const hasResults = await page.evaluate(() => {
return document.querySelectorAll('.name-result-item').length > 0;
});
console.log(`${hasResults ? '✅' : '⚠️'} 生成结果: ${hasResults ? '有结果' : '无结果'}`);
}
} catch (error) {
console.log(`⚠️ 生成测试遇到错误: ${error.message}`);
}
await page.screenshot({ path: 'quick_test_02_generate_test.png', fullPage: true });
// 测试3测试添加功能
console.log('\n 测试3测试添加姓名模板...');
try {
const addButton = page.locator('button').filter({ hasText: '添加姓名模板' });
if (await addButton.isVisible()) {
await addButton.click();
console.log('🖱️ 点击添加按钮');
await page.waitForTimeout(2000);
const hasModal = await page.evaluate(() => {
return !!document.querySelector('.ivu-modal');
});
console.log(`${hasModal ? '✅' : '❌'} 添加弹窗: ${hasModal ? '已打开' : '未打开'}`);
if (hasModal) {
// 填写一些测试数据
const lastNameInput = page.locator('.ivu-modal input').first();
await lastNameInput.fill('测试');
console.log('✏️ 填写测试数据');
await page.waitForTimeout(1000);
// 取消而不提交
const cancelButton = page.locator('.ivu-modal button').filter({ hasText: '取消' });
if (await cancelButton.isVisible()) {
await cancelButton.click();
console.log('❌ 取消添加');
}
}
}
} catch (error) {
console.log(`⚠️ 添加测试遇到错误: ${error.message}`);
}
await page.screenshot({ path: 'quick_test_03_add_test.png', fullPage: true });
// 测试4API直接测试
console.log('\n🌐 测试4API端点直接测试...');
const apiTests = [
{ name: 'supportedOptions', url: 'http://localhost:3000/nameTemplate/supportedOptions' },
{ name: 'generatorStatus', url: 'http://localhost:3000/nameTemplate/generatorStatus' }
];
for (const test of apiTests) {
try {
const response = await fetch(test.url);
console.log(`${response.ok ? '✅' : '❌'} ${test.name}: ${response.status}`);
if (response.ok) {
const data = await response.json();
if (test.name === 'supportedOptions') {
console.log(` - 平台数量: ${data.data?.platforms?.length || 0}`);
console.log(` - 文化数量: ${data.data?.cultures?.length || 0}`);
}
}
} catch (error) {
console.log(`${test.name}: ${error.message}`);
}
}
// 测试生成API
try {
const generateResponse = await fetch('http://localhost:3000/nameTemplate/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
platform: 'telegram',
culture: 'cn',
gender: 'neutral',
batch: true,
count: 3
})
});
console.log(`${generateResponse.ok ? '✅' : '❌'} generate API: ${generateResponse.status}`);
if (generateResponse.ok) {
const data = await generateResponse.json();
console.log(` - 生成成功: ${data.success}`);
console.log(` - 结果数量: ${Array.isArray(data.data) ? data.data.length : 1}`);
}
} catch (error) {
console.log(`❌ generate API: ${error.message}`);
}
console.log('\n🎉 快速测试完成!');
console.log('\n📂 测试截图:');
console.log(' - quick_test_01_page_loaded.png');
console.log(' - quick_test_02_generate_test.png');
console.log(' - quick_test_03_add_test.png');
console.log('\n⏰ 浏览器将保持打开10秒...');
await page.waitForTimeout(10000);
} catch (error) {
console.error('❌ 测试失败:', error.message);
if (page) {
await page.screenshot({ path: 'quick_test_error.png', fullPage: true });
}
} finally {
if (browser) {
await browser.close();
}
console.log('🏁 测试结束');
}
}
if (require.main === module) {
quickTest().catch(console.error);
}
module.exports = quickTest;