Initial commit: Telegram Management System
Some checks failed
Deploy / deploy (push) Has been cancelled

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>
This commit is contained in:
你的用户名
2025-11-04 15:37:50 +08:00
commit 237c7802e5
3674 changed files with 525172 additions and 0 deletions

102
check-menu-visibility.js Normal file
View File

@@ -0,0 +1,102 @@
const { chromium } = require('playwright');
(async () => {
let browser;
try {
console.log('启动浏览器检查菜单显示...');
browser = await chromium.launch({
headless: false,
slowMo: 300
});
const context = await browser.newContext({
viewport: { width: 1920, height: 1080 }
});
const page = await context.newPage();
// 登录
console.log('\n执行登录...');
await page.goto('http://localhost:5174/', { waitUntil: 'networkidle' });
await page.fill('[name="username"]', 'admin');
await page.fill('[name="password"]', '111111');
await page.click('button:has-text("登录")');
await page.waitForTimeout(2000);
// 访问首页
if (page.url().includes('login')) {
await page.goto('http://localhost:5174/dashboard/home', { waitUntil: 'networkidle' });
}
await page.waitForTimeout(1000);
console.log('\n检查菜单显示情况...');
// 获取所有菜单项
const allMenuItems = await page.locator('.ant-menu-item, .ant-menu-submenu').all();
console.log(`\n找到 ${allMenuItems.length} 个菜单元素`);
// 获取所有一级菜单(父菜单)
const parentMenus = await page.locator('.ant-menu-submenu-title').all();
console.log(`\n一级菜单(${parentMenus.length}个):`);
for (let i = 0; i < parentMenus.length; i++) {
const text = await parentMenus[i].textContent();
console.log(`${i + 1}. ${text.trim()}`);
}
// 展开所有一级菜单并获取子菜单
console.log('\n\n展开菜单查看子菜单项...');
for (let i = 0; i < parentMenus.length; i++) {
const parentText = await parentMenus[i].textContent();
console.log(`\n${parentText.trim()}:`);
// 点击展开
await parentMenus[i].click();
await page.waitForTimeout(300);
// 获取当前展开的子菜单
const subMenuItems = await page.locator('.ant-menu-submenu-open .ant-menu-item').all();
if (subMenuItems.length > 0) {
for (let j = 0; j < subMenuItems.length; j++) {
const subText = await subMenuItems[j].textContent();
console.log(` - ${subText.trim()}`);
}
} else {
console.log(' (无子菜单)');
}
// 收起菜单
await parentMenus[i].click();
await page.waitForTimeout(300);
}
// 获取独立的菜单项(非子菜单)
const standaloneItems = await page.locator('.ant-menu > .ant-menu-item').all();
if (standaloneItems.length > 0) {
console.log('\n\n独立菜单项:');
for (let i = 0; i < standaloneItems.length; i++) {
const text = await standaloneItems[i].textContent();
console.log(`- ${text.trim()}`);
}
}
// 截图当前状态
await page.screenshot({ path: 'test-screenshots/menu-visibility-check.png', fullPage: true });
console.log('\n\n菜单检查完成');
console.log('保持浏览器打开,您可以手动测试...');
// 保持浏览器打开
await new Promise(() => {});
} catch (error) {
console.error('出错了:', error);
if (browser) {
await browser.close();
}
}
})();