63 lines
2.1 KiB
JavaScript
63 lines
2.1 KiB
JavaScript
const { SEOValidator } = require('./utils/seo-validator');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const PAGES = [
|
|
{ name: '首页', url: 'http://localhost:3000' },
|
|
{ name: '关于我们', url: 'http://localhost:3000/about' },
|
|
{ name: '联系我们', url: 'http://localhost:3000/contact' },
|
|
{ name: '服务', url: 'http://localhost:3000/services' },
|
|
{ name: '产品', url: 'http://localhost:3000/products' },
|
|
{ name: '案例', url: 'http://localhost:3000/cases' },
|
|
{ name: '新闻', url: 'http://localhost:3000/news' }
|
|
];
|
|
|
|
async function checkAllPages() {
|
|
console.log('🔍 开始SEO检查...\n');
|
|
|
|
const validator = new SEOValidator();
|
|
|
|
for (const page of PAGES) {
|
|
console.log(`📄 检查页面: ${page.name}`);
|
|
const result = await validator.validatePage(page.url, page.name);
|
|
|
|
if (result.issues.length === 0) {
|
|
console.log(` ✅ 无SEO问题\n`);
|
|
} else {
|
|
console.log(` ⚠️ 发现 ${result.issues.length} 个问题:`);
|
|
result.issues.forEach(issue => {
|
|
console.log(` - ${issue.check}: ${issue.issue} (${issue.severity})`);
|
|
});
|
|
console.log();
|
|
}
|
|
}
|
|
|
|
return validator.getSummary();
|
|
}
|
|
|
|
function generateSummary(summary) {
|
|
console.log('\n📊 SEO检查摘要\n');
|
|
console.log('─'.repeat(80));
|
|
console.log(`总页面数: ${summary.totalPages}`);
|
|
console.log(`有问题页面: ${summary.pagesWithIssues}`);
|
|
console.log(`总问题数: ${summary.totalIssues}`);
|
|
console.log(`\n问题严重程度:`);
|
|
console.log(` 🔴 高: ${summary.severity.high}`);
|
|
console.log(` 🟡 中: ${summary.severity.medium}`);
|
|
console.log(` 🟢 低: ${summary.severity.low}`);
|
|
console.log('─'.repeat(80));
|
|
|
|
const passRate = ((summary.totalPages - summary.pagesWithIssues) / summary.totalPages * 100).toFixed(1);
|
|
console.log(`\n✅ SEO通过率: ${passRate}%`);
|
|
}
|
|
|
|
async function main() {
|
|
const summary = await checkAllPages();
|
|
generateSummary(summary);
|
|
|
|
const outputPath = 'test-results/seo-summary.json';
|
|
fs.writeFileSync(outputPath, JSON.stringify(summary, null, 2));
|
|
console.log(`\n💾 详细结果已保存到: ${outputPath}`);
|
|
}
|
|
|
|
main().catch(console.error); |