@ordojs/accessibility
Version:
Comprehensive accessibility system for OrdoJS with ARIA generation, automated testing, and screen reader support
1 lines • 27.6 kB
Source Map (JSON)
{"version":3,"sources":["../../src/testing/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @fileoverview OrdoJS Accessibility - Testing Module\n *\n * Automated accessibility testing and auditing.\n */\n\nimport { EventEmitter } from 'events';\nimport type {\n AccessibilityTestResult,\n TestingConfig\n} from '../types/index.js';\n\n/**\n * Testing manager for handling automated accessibility testing\n */\nexport class TestingManager extends EventEmitter {\n private config: TestingConfig;\n private testResults: Map<string, AccessibilityTestResult>;\n private isInitialized: boolean;\n\n /**\n * Create a new TestingManager instance\n *\n * @param config - Testing configuration\n */\n constructor(config: TestingConfig) {\n super();\n\n this.config = config;\n this.testResults = new Map();\n this.isInitialized = false;\n }\n\n /**\n * Initialize the testing manager\n */\n async initialize(): Promise<void> {\n if (this.isInitialized) {\n console.warn('Testing manager is already initialized');\n return;\n }\n\n try {\n // Initialize testing framework\n await this.initializeTestingFramework();\n\n this.isInitialized = true;\n console.log('Testing manager initialized successfully');\n\n this.emit('initialized');\n } catch (error) {\n console.error('Failed to initialize testing manager:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Run accessibility tests\n *\n * @param url - URL to test\n * @param options - Test options\n * @returns Test results\n */\n async runTests(\n url: string,\n options: {\n rules?: string[];\n ignoreRules?: string[];\n timeout?: number;\n retries?: number;\n } = {}\n ): Promise<AccessibilityTestResult[]> {\n if (!this.isInitialized) {\n throw new Error('Testing manager not initialized');\n }\n\n const results: AccessibilityTestResult[] = [];\n const rules = options.rules || this.config.rules;\n const ignoreRules = options.ignoreRules || this.config.ignoreRules;\n const timeout = options.timeout || this.config.timeout;\n const retries = options.retries || this.config.retries;\n\n try {\n console.log(`Running accessibility tests for ${url}...`);\n\n // Run tests based on framework\n switch (this.config.framework) {\n case 'axe-core':\n results.push(...await this.runAxeCoreTests(url, rules, ignoreRules, timeout));\n break;\n case 'puppeteer':\n results.push(...await this.runPuppeteerTests(url, rules, ignoreRules, timeout));\n break;\n case 'jsdom':\n results.push(...await this.runJSDOMTests(url, rules, ignoreRules, timeout));\n break;\n default:\n throw new Error(`Unsupported testing framework: ${this.config.framework}`);\n }\n\n // Store results\n for (const result of results) {\n this.testResults.set(result.id, result);\n }\n\n console.log(`Accessibility tests completed: ${results.length} tests run`);\n\n this.emit('testsCompleted', results);\n return results;\n } catch (error) {\n console.error('Failed to run accessibility tests:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Run specific accessibility test\n *\n * @param testName - Test name\n * @param url - URL to test\n * @param options - Test options\n * @returns Test result\n */\n async runTest(\n testName: string,\n url: string,\n options: {\n timeout?: number;\n retries?: number;\n } = {}\n ): Promise<AccessibilityTestResult> {\n const testId = `test_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n const startTime = Date.now();\n\n try {\n console.log(`Running test: ${testName}`);\n\n let result: AccessibilityTestResult;\n let attempts = 0;\n const maxAttempts = options.retries || this.config.retries;\n\n do {\n attempts++;\n result = await this.executeTest(testName, url, options.timeout || this.config.timeout);\n\n if (result.status === 'pass' || attempts >= maxAttempts) {\n break;\n }\n\n console.log(`Test failed, retrying (${attempts}/${maxAttempts})...`);\n await this.delay(1000); // Wait 1 second before retry\n } while (attempts < maxAttempts);\n\n result.id = testId;\n result.duration = Date.now() - startTime;\n result.timestamp = new Date();\n\n this.testResults.set(testId, result);\n this.emit('testCompleted', result);\n\n return result;\n } catch (error) {\n console.error(`Test '${testName}' failed:`, error);\n\n const errorResult: AccessibilityTestResult = {\n id: testId,\n name: testName,\n status: 'fail',\n description: `Test failed: ${error instanceof Error ? error.message : String(error)}`,\n impact: 'serious',\n violations: [],\n passes: [],\n inapplicable: [],\n timestamp: new Date(),\n duration: Date.now() - startTime,\n url,\n metadata: { error: error instanceof Error ? error.message : String(error) }\n };\n\n this.testResults.set(testId, errorResult);\n this.emit('testFailed', errorResult);\n throw error;\n }\n }\n\n /**\n * Generate accessibility report\n *\n * @param results - Test results\n * @param options - Report options\n * @returns Report content\n */\n generateReport(\n results: AccessibilityTestResult[],\n options: {\n format?: 'json' | 'html' | 'csv';\n includePasses?: boolean;\n includeViolations?: boolean;\n includeSuggestions?: boolean;\n } = {}\n ): string {\n const format = options.format || this.config.reportFormat;\n const includePasses = options.includePasses !== false;\n const includeViolations = options.includeViolations !== false;\n const includeSuggestions = options.includeSuggestions !== false;\n\n switch (format) {\n case 'json':\n return this.generateJSONReport(results, { includePasses, includeViolations, includeSuggestions });\n case 'html':\n return this.generateHTMLReport(results, { includePasses, includeViolations, includeSuggestions });\n case 'csv':\n return this.generateCSVReport(results, { includePasses, includeViolations, includeSuggestions });\n default:\n throw new Error(`Unsupported report format: ${format}`);\n }\n }\n\n /**\n * Get test result by ID\n *\n * @param testId - Test ID\n * @returns Test result or undefined\n */\n getTestResult(testId: string): AccessibilityTestResult | undefined {\n return this.testResults.get(testId);\n }\n\n /**\n * Get all test results\n *\n * @returns Array of test results\n */\n getAllTestResults(): AccessibilityTestResult[] {\n return Array.from(this.testResults.values());\n }\n\n /**\n * Clear test results\n */\n clearTestResults(): void {\n this.testResults.clear();\n this.emit('testResultsCleared');\n }\n\n /**\n * Get testing statistics\n *\n * @returns Statistics\n */\n getStats(): {\n totalTests: number;\n passedTests: number;\n failedTests: number;\n averageDuration: number;\n framework: string;\n } {\n const totalTests = this.testResults.size;\n const passedTests = Array.from(this.testResults.values()).filter(r => r.status === 'pass').length;\n const failedTests = Array.from(this.testResults.values()).filter(r => r.status === 'fail').length;\n const totalDuration = Array.from(this.testResults.values()).reduce((sum, r) => sum + r.duration, 0);\n const averageDuration = totalTests > 0 ? totalDuration / totalTests : 0;\n\n return {\n totalTests,\n passedTests,\n failedTests,\n averageDuration,\n framework: this.config.framework\n };\n }\n\n /**\n * Initialize testing framework\n */\n private async initializeTestingFramework(): Promise<void> {\n console.log(`Initializing ${this.config.framework} testing framework...`);\n\n // Framework-specific initialization\n switch (this.config.framework) {\n case 'axe-core':\n // Initialize axe-core\n break;\n case 'puppeteer':\n // Initialize puppeteer\n break;\n case 'jsdom':\n // Initialize jsdom\n break;\n default:\n throw new Error(`Unsupported testing framework: ${this.config.framework}`);\n }\n }\n\n /**\n * Run axe-core tests\n *\n * @param url - URL to test\n * @param rules - Rules to test\n * @param ignoreRules - Rules to ignore\n * @param timeout - Test timeout\n * @returns Test results\n */\n private async runAxeCoreTests(\n url: string,\n rules: string[],\n ignoreRules: string[],\n timeout: number\n ): Promise<AccessibilityTestResult[]> {\n // This is a simplified implementation\n // In a real implementation, you would use axe-core\n const results: AccessibilityTestResult[] = [];\n\n // Simulate axe-core test results\n results.push({\n id: `axe_${Date.now()}`,\n name: 'Color Contrast',\n status: 'pass',\n description: 'Check color contrast ratios',\n impact: 'serious',\n violations: [],\n passes: [],\n inapplicable: [],\n timestamp: new Date(),\n duration: 1000,\n url,\n metadata: { framework: 'axe-core' }\n });\n\n return results;\n }\n\n /**\n * Run puppeteer tests\n *\n * @param url - URL to test\n * @param rules - Rules to test\n * @param ignoreRules - Rules to ignore\n * @param timeout - Test timeout\n * @returns Test results\n */\n private async runPuppeteerTests(\n url: string,\n rules: string[],\n ignoreRules: string[],\n timeout: number\n ): Promise<AccessibilityTestResult[]> {\n // This is a simplified implementation\n // In a real implementation, you would use puppeteer\n const results: AccessibilityTestResult[] = [];\n\n // Simulate puppeteer test results\n results.push({\n id: `puppeteer_${Date.now()}`,\n name: 'Keyboard Navigation',\n status: 'pass',\n description: 'Check keyboard navigation functionality',\n impact: 'serious',\n violations: [],\n passes: [],\n inapplicable: [],\n timestamp: new Date(),\n duration: 2000,\n url,\n metadata: { framework: 'puppeteer' }\n });\n\n return results;\n }\n\n /**\n * Run JSDOM tests\n *\n * @param url - URL to test\n * @param rules - Rules to test\n * @param ignoreRules - Rules to ignore\n * @param timeout - Test timeout\n * @returns Test results\n */\n private async runJSDOMTests(\n url: string,\n rules: string[],\n ignoreRules: string[],\n timeout: number\n ): Promise<AccessibilityTestResult[]> {\n // This is a simplified implementation\n // In a real implementation, you would use jsdom\n const results: AccessibilityTestResult[] = [];\n\n // Simulate jsdom test results\n results.push({\n id: `jsdom_${Date.now()}`,\n name: 'Semantic HTML',\n status: 'pass',\n description: 'Check semantic HTML structure',\n impact: 'moderate',\n violations: [],\n passes: [],\n inapplicable: [],\n timestamp: new Date(),\n duration: 500,\n url,\n metadata: { framework: 'jsdom' }\n });\n\n return results;\n }\n\n /**\n * Execute a specific test\n *\n * @param testName - Test name\n * @param url - URL to test\n * @param timeout - Test timeout\n * @returns Test result\n */\n private async executeTest(\n testName: string,\n url: string,\n timeout: number\n ): Promise<AccessibilityTestResult> {\n // This is a simplified implementation\n // In a real implementation, you would execute the actual test\n return {\n id: '',\n name: testName,\n status: 'pass',\n description: `Test: ${testName}`,\n impact: 'moderate',\n violations: [],\n passes: [],\n inapplicable: [],\n timestamp: new Date(),\n duration: 1000,\n url,\n metadata: {}\n };\n }\n\n /**\n * Generate JSON report\n *\n * @param results - Test results\n * @param options - Report options\n * @returns JSON report\n */\n private generateJSONReport(\n results: AccessibilityTestResult[],\n options: {\n includePasses: boolean;\n includeViolations: boolean;\n includeSuggestions: boolean;\n }\n ): string {\n const report = {\n timestamp: new Date().toISOString(),\n summary: {\n totalTests: results.length,\n passedTests: results.filter(r => r.status === 'pass').length,\n failedTests: results.filter(r => r.status === 'fail').length,\n inapplicableTests: results.filter(r => r.status === 'inapplicable').length\n },\n results: results.map(result => ({\n id: result.id,\n name: result.name,\n status: result.status,\n description: result.description,\n impact: result.impact,\n duration: result.duration,\n url: result.url,\n violations: options.includeViolations ? result.violations : [],\n passes: options.includePasses ? result.passes : [],\n inapplicable: result.inapplicable\n }))\n };\n\n return JSON.stringify(report, null, 2);\n }\n\n /**\n * Generate HTML report\n *\n * @param results - Test results\n * @param options - Report options\n * @returns HTML report\n */\n private generateHTMLReport(\n results: AccessibilityTestResult[],\n options: {\n includePasses: boolean;\n includeViolations: boolean;\n includeSuggestions: boolean;\n }\n ): string {\n const passedTests = results.filter(r => r.status === 'pass').length;\n const failedTests = results.filter(r => r.status === 'fail').length;\n const totalTests = results.length;\n\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Accessibility Test Report</title>\n <style>\n body { font-family: Arial, sans-serif; margin: 20px; }\n .summary { background: #f5f5f5; padding: 20px; border-radius: 5px; margin-bottom: 20px; }\n .test { border: 1px solid #ddd; margin: 10px 0; padding: 15px; border-radius: 5px; }\n .pass { border-left: 5px solid #4CAF50; }\n .fail { border-left: 5px solid #f44336; }\n .inapplicable { border-left: 5px solid #ff9800; }\n </style>\n</head>\n<body>\n <h1>Accessibility Test Report</h1>\n <div class=\"summary\">\n <h2>Summary</h2>\n <p>Total Tests: ${totalTests}</p>\n <p>Passed: ${passedTests}</p>\n <p>Failed: ${failedTests}</p>\n <p>Success Rate: ${totalTests > 0 ? ((passedTests / totalTests) * 100).toFixed(1) : 0}%</p>\n </div>\n <h2>Test Results</h2>\n ${results.map(result => `\n <div class=\"test ${result.status}\">\n <h3>${result.name}</h3>\n <p><strong>Status:</strong> ${result.status}</p>\n <p><strong>Description:</strong> ${result.description}</p>\n <p><strong>Impact:</strong> ${result.impact}</p>\n <p><strong>Duration:</strong> ${result.duration}ms</p>\n ${result.url ? `<p><strong>URL:</strong> ${result.url}</p>` : ''}\n </div>\n `).join('')}\n</body>\n</html>`;\n }\n\n /**\n * Generate CSV report\n *\n * @param results - Test results\n * @param options - Report options\n * @returns CSV report\n */\n private generateCSVReport(\n results: AccessibilityTestResult[],\n options: {\n includePasses: boolean;\n includeViolations: boolean;\n includeSuggestions: boolean;\n }\n ): string {\n const headers = ['Test Name', 'Status', 'Description', 'Impact', 'Duration (ms)', 'URL'];\n const rows = results.map(result => [\n result.name,\n result.status,\n result.description,\n result.impact,\n result.duration,\n result.url || ''\n ]);\n\n return [headers, ...rows].map(row => row.map(cell => `\"${cell}\"`).join(',')).join('\\n');\n }\n\n /**\n * Delay function\n *\n * @param ms - Milliseconds to delay\n */\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n}\n"]}