Auto-Guardian-Core / test-runner.js
AbdulElahGwaith's picture
Upload folder using huggingface_hub
7270c96 verified
const { chromium } = require('@playwright/test');
async function testDashboard() {
console.log('🧪 بدء اختبار لوحة التحكم...\n');
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext();
const page = await context.newPage();
let testsPassed = 0;
let testsFailed = 0;
// Collect console errors
const consoleErrors = [];
page.on('console', msg => {
if (msg.type() === 'error') {
consoleErrors.push(msg.text());
}
});
try {
// Test 1: Dashboard loads
console.log('📋 اختبار 1: تحميل لوحة التحكم...');
await page.goto('file:///workspace/auto-guardian-docs/dashboard/index.html');
await page.waitForLoadState('domcontentloaded');
const title = await page.title();
console.log(` ✅ عنوان الصفحة: ${title}`);
testsPassed++;
// Test 2: Main elements exist
console.log('\n📋 اختبار 2: التحقق من العناصر الرئيسية...');
const dashboard = await page.locator('.dashboard').isVisible();
const sidebar = await page.locator('.sidebar').isVisible();
const header = await page.locator('.header').isVisible();
const stats = await page.locator('.stats-grid').isVisible();
if (dashboard && sidebar && header && stats) {
console.log(' ✅ جميع العناصر الرئيسية موجودة');
testsPassed++;
} else {
console.log(' ❌ بعض العناصر مفقودة');
testsFailed++;
}
// Test 3: Stats cards
console.log('\n📋 اختبار 3: بطاقات الإحصائيات...');
const statCards = await page.locator('.stat-card').count();
if (statCards === 4) {
console.log(` ✅ 4 بطاقات إحصائيات موجودة`);
testsPassed++;
} else {
console.log(` ❌ عدد البطاقات: ${statCards} (متوقع: 4)`);
testsFailed++;
}
// Test 4: Charts
console.log('\n📋 اختبار 4: الرسوم البيانية...');
const areaChart = await page.locator('.area-chart').isVisible();
const donutChart = await page.locator('.donut-chart').isVisible();
const donutTotal = await page.locator('#donutTotal').textContent();
if (areaChart && donutChart) {
console.log(` ✅ الرسوم البيانية ظاهرة (الإجمالي: ${donutTotal})`);
testsPassed++;
} else {
console.log(' ❌ الرسوم البيانية غير ظاهرة');
testsFailed++;
}
// Test 5: Navigation
console.log('\n📋 اختبار 5: قائمة التنقل...');
const navItems = await page.locator('.nav-item').count();
console.log(` ✅ ${navItems} عنصر في قائمة التنقل`);
testsPassed++;
// Test 6: Settings panel
console.log('\n📋 اختبار 6: لوحة الإعدادات...');
await page.click('[data-view="settings"]');
await page.waitForTimeout(500);
const settingsActive = await page.locator('#settingsPanel').getAttribute('class');
if (settingsActive.includes('active')) {
console.log(' ✅ لوحة الإعدادات تفتح بشكل صحيح');
testsPassed++;
} else {
console.log(' ❌ لوحة الإعدادات لا تفتح');
testsFailed++;
}
// Test 7: Issues list
console.log('\n📋 اختبار 7: قائمة المشاكل...');
const issuesList = await page.locator('.issues-list').isVisible();
const issueItems = await page.locator('.issue-item').count();
if (issuesList && issueItems > 0) {
console.log(` ✅ قائمة المشاكل ظاهرة (${issueItems} مشكلة)`);
testsPassed++;
} else {
console.log(' ❌ قائمة المشاكل غير ظاهرة');
testsFailed++;
}
// Test 8: Repositories list
console.log('\n📋 اختبار 8: قائمة المستودعات...');
const reposList = await page.locator('.repos-list').isVisible();
const repoItems = await page.locator('.repo-item').count();
if (reposList && repoItems > 0) {
console.log(` ✅ قائمة المستودعات ظاهرة (${repoItems} مستودع)`);
testsPassed++;
} else {
console.log(' ❌ قائمة المستودعات غير ظاهرة');
testsFailed++;
}
// Test 9: Search functionality
console.log('\n📋 اختبار 9: وظيفة البحث...');
await page.fill('#searchInput', 'auth');
await page.waitForTimeout(300);
const searchResults = await page.locator('.search-results').getAttribute('class');
if (searchResults.includes('active')) {
console.log(' ✅ البحث يعمل بشكل صحيح');
testsPassed++;
} else {
console.log(' ❌ البحث لا يعمل');
testsFailed++;
}
// Test 10: Toast notifications
console.log('\n📋 اختبار 10: إشعارات Toast...');
const toastContainer = await page.locator('.toast-container').isVisible();
if (toastContainer) {
console.log(' ✅ حاوية الإشعارات موجودة');
testsPassed++;
} else {
console.log(' ❌ حاوية الإشعارات غير موجودة');
testsFailed++;
}
} catch (error) {
console.error('\n❌ حدث خطأ أثناء الاختبار:', error.message);
testsFailed++;
} finally {
await browser.close();
}
// Print results
console.log('\n' + '='.repeat(50));
console.log('📊 نتائج الاختبار:');
console.log('='.repeat(50));
console.log(`✅ اختبارات ناجحة: ${testsPassed}`);
console.log(`❌ اختبارات فاشلة: ${testsFailed}`);
console.log(`📝 إجمالي الاختبارات: ${testsPassed + testsFailed}`);
if (consoleErrors.length > 0) {
console.log('\n⚠️ أخطاء في Console:');
consoleErrors.forEach((err, i) => console.log(` ${i+1}. ${err}`));
} else {
console.log('\n✅ لا توجد أخطاء في Console');
}
console.log('='.repeat(50));
return testsFailed === 0;
}
testDashboard().then(success => {
process.exit(success ? 0 : 1);
});