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

120 lines 5.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MarkdownGenerator = void 0; /** * Markdown Generator - generates detailed issues in Markdown format * Primary use: detailed accessibility issues for developer workflows */ class MarkdownGenerator { /** * Generate detailed issues markdown report */ generateDetailedIssues(auditData) { const lines = []; // Header lines.push('# Detailed Accessibility Issues Report'); lines.push(''); lines.push(`**Generated:** ${auditData.metadata.timestamp}`); lines.push(`**Tool Version:** ${auditData.metadata.toolVersion}`); lines.push(''); // Summary lines.push('## Summary'); lines.push(`- **Tested Pages:** ${auditData.summary.testedPages}`); lines.push(`- **Failed Pages:** ${auditData.summary.failedPages}`); lines.push(`- **Total Errors:** ${auditData.summary.totalErrors}`); lines.push(`- **Total Warnings:** ${auditData.summary.totalWarnings}`); lines.push(''); // Issues by page (exclude skipped redirect pages) const pagesForIssues = auditData.pages.filter(p => (p.status !== 'skipped')); pagesForIssues.forEach((page, index) => { const notices = page.accessibility.notices || []; const accessibilityIssues = [...page.accessibility.errors, ...page.accessibility.warnings, ...notices]; if (accessibilityIssues.length > 0) { lines.push(`## Page ${index + 1}: ${page.title}`); lines.push(`**URL:** ${page.url}`); lines.push(`**Status:** ${page.status.toUpperCase()}`); lines.push(`**Issues Found:** ${accessibilityIssues.length}`); lines.push(''); // Group issues by type const errorIssues = page.accessibility.errors; const warningIssues = page.accessibility.warnings; const noticeIssues = page.accessibility.notices || []; if (errorIssues.length > 0) { lines.push('### ❌ Errors'); errorIssues.forEach((issue, issueIndex) => { this.formatIssue(lines, issue, issueIndex + 1, 'error'); }); lines.push(''); } if (warningIssues.length > 0) { lines.push('### ⚠️ Warnings'); warningIssues.forEach((issue, issueIndex) => { this.formatIssue(lines, issue, issueIndex + 1, 'warning'); }); lines.push(''); } if (noticeIssues && noticeIssues.length > 0) { lines.push('### ℹ️ Notices'); noticeIssues.forEach((issue, issueIndex) => { this.formatIssue(lines, issue, issueIndex + 1, 'notice'); }); lines.push(''); } lines.push('---'); lines.push(''); } }); return lines.join('\n'); } /** * Generate summary markdown report */ generateSummary(auditData) { const lines = []; lines.push('# Accessibility Audit Summary'); lines.push(''); lines.push(`**Generated:** ${auditData.metadata.timestamp}`); lines.push(`**Duration:** ${auditData.metadata.duration}ms`); lines.push(''); // Overall results lines.push('## Overall Results'); lines.push(`- **Total Pages:** ${auditData.summary.totalPages}`); lines.push(`- **Tested Pages:** ${auditData.summary.testedPages}`); lines.push(`- **Passed Pages:** ${auditData.summary.passedPages}`); lines.push(`- **Failed Pages:** ${auditData.summary.failedPages}`); lines.push(`- **Success Rate:** ${((auditData.summary.passedPages / auditData.summary.testedPages) * 100).toFixed(1)}%`); lines.push(''); // Page-by-page summary lines.push('## Page Summary'); lines.push(''); lines.push('| Page | Status | Score | Errors | Warnings |'); lines.push('|------|--------|-------|--------|----------|'); const pagesForSummary = auditData.pages.filter(p => (p.status !== 'skipped')); pagesForSummary.forEach(page => { const statusIcon = page.status === 'passed' ? '✅' : page.status === 'failed' ? '❌' : (page.status === 'crashed' ? '💥' : '⚠️'); lines.push(`| ${page.title} | ${statusIcon} ${page.status} | ${page.accessibility.score}/100 | ${page.accessibility.errors.length} | ${page.accessibility.warnings.length} |`); }); return lines.join('\n'); } formatIssue(lines, issue, index, type) { lines.push(`#### Issue ${index}`); lines.push(`- **Severity:** ${type}`); lines.push(`- **Code:** ${issue.code || 'N/A'}`); lines.push(`- **Message:** ${issue.message}`); if (issue.selector) { lines.push(`- **Element:** \`${issue.selector}\``); } if (issue.context) { lines.push(`- **Context:** \`${issue.context.substring(0, 100)}...\``); } if (issue.help) { lines.push(`- **Help:** ${issue.help}`); } if (issue.helpUrl) { lines.push(`- **More Info:** [${issue.helpUrl}](${issue.helpUrl})`); } lines.push(''); } } exports.MarkdownGenerator = MarkdownGenerator; //# sourceMappingURL=markdown-generator.js.map