UNPKG

@casoon/auditmysite

Version:

Professional website analysis suite with robust accessibility testing, Core Web Vitals performance monitoring, SEO analysis, and content optimization insights. Features isolated browser contexts, retry mechanisms, and comprehensive API endpoints for profe

106 lines 4.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AccessibilityService = void 0; const parsers_1 = require("../core/parsers"); class AccessibilityService { constructor() { // Delay initialization until initialize() is called this.checker = null; this.parser = new parsers_1.SitemapParser(); } async initialize() { if (!this.checker) { // Create BrowserPoolManager for AccessibilityChecker const { BrowserPoolManager } = require('../core/browser/browser-pool-manager'); const poolManager = new BrowserPoolManager({ maxInstances: 3, acquireTimeout: 30000, destroyTimeout: 5000, headless: true }); await poolManager.initialize(); // Dynamically import AccessibilityChecker const { AccessibilityChecker } = require('../core/accessibility'); this.checker = new AccessibilityChecker({ poolManager, enableComprehensiveAnalysis: true }); await this.checker.initialize(); } } async cleanup() { await this.checker.cleanup(); } async testSitemap(sitemapUrl, options = {}) { try { // Parse sitemap const urls = await this.parser.parseSitemap(sitemapUrl); // Apply filters and limits const filterPatterns = ['[...slug]', '[category]', '/demo/']; const filteredUrls = this.parser.filterUrls(urls, { filterPatterns }); const limitedUrls = filteredUrls.slice(0, options.maxPages || 20); // Convert to TestOptions const testOptions = { timeout: options.timeout || 10000, waitUntil: 'domcontentloaded', pa11yStandard: options.standard || 'WCAG2AA', verbose: options.verbose || false, collectPerformanceMetrics: options.performanceReport, lighthouse: options.performanceReport, // Add other options as needed }; // Run tests const results = await this.checker.testMultiplePagesParallel(limitedUrls.map((url) => url.loc), testOptions); // Generate summary const summary = this.generateSummary(results); // Generate reports if requested const reports = {}; if (options.securityReport) { reports.security = await this.generateSecurityReport(results); } return { success: summary.successRate === 100, results, summary, reports: reports.security ? { security: reports.security } : undefined }; } catch (error) { return { success: false, results: [], summary: { totalPages: 0, passedPages: 0, failedPages: 0, totalErrors: 0, totalWarnings: 0, successRate: 0 }, error: error instanceof Error ? error.message : String(error) }; } } generateSummary(results) { const totalPages = results.length; const passedPages = results.filter(r => r.passed).length; const failedPages = totalPages - passedPages; const totalErrors = results.reduce((sum, r) => sum + r.errors.length, 0); const totalWarnings = results.reduce((sum, r) => sum + r.warnings.length, 0); const successRate = totalPages > 0 ? (passedPages / totalPages) * 100 : 0; return { totalPages, passedPages, failedPages, totalErrors, totalWarnings, successRate }; } async generateSecurityReport(results) { // Placeholder for security report return `# Security Report\n\nSecurity scanning not yet implemented.`; } } exports.AccessibilityService = AccessibilityService; //# sourceMappingURL=accessibility-service.js.map