@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
167 lines ⢠6.35 kB
JavaScript
;
/**
* š§ Queue Example & Test
*
* Example usage of the queue system.
* Shows different queue types and configurations.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.runQueueExamples = runQueueExamples;
exports.exampleSimpleQueue = exampleSimpleQueue;
exports.exampleParallelQueue = exampleParallelQueue;
exports.examplePriorityQueue = examplePriorityQueue;
exports.exampleAccessibilityQueue = exampleAccessibilityQueue;
const index_1 = require("./index");
// Example: Simple sequential processing
async function exampleSimpleQueue() {
console.log('\nš Simple Queue Example:');
const queue = new index_1.Queue('simple', {
maxRetries: 2,
timeout: 5000
});
// Add URLs to process
const urls = [
'https://example.com',
'https://example.com/about',
'https://example.com/contact'
];
queue.enqueue(urls);
// Process with mock accessibility checker
const result = await queue.process(async (url) => {
console.log(` š Testing: ${url}`);
await new Promise(resolve => setTimeout(resolve, 1000)); // Simulate processing
return { url, passed: true, errors: [] };
});
console.log(` ā
Completed: ${result.completed.length}/${result.statistics.total}`);
return result;
}
// Example: Parallel processing with progress
async function exampleParallelQueue() {
console.log('\nš Parallel Queue Example:');
const callbacks = {
onProgressUpdate: (stats) => {
if (stats.progress % 25 === 0) { // Report every 25%
console.log(` š Progress: ${stats.progress.toFixed(1)}% (${stats.completed}/${stats.total})`);
}
},
onItemCompleted: (item, result) => {
console.log(` ā
${item.data} completed`);
},
onItemFailed: (item, error) => {
console.log(` ā ${item.data} failed: ${error}`);
}
};
const queue = new index_1.Queue('parallel', {
maxConcurrent: 2,
maxRetries: 3,
timeout: 8000,
enableProgressReporting: true
}, callbacks);
// Larger set of URLs
const urls = [
'https://example.com',
'https://example.com/about',
'https://example.com/contact',
'https://example.com/services',
'https://example.com/blog',
'https://example.com/pricing'
];
const result = await queue.processWithProgress(urls, async (url) => {
const duration = Math.random() * 3000 + 1000; // Random 1-4 seconds
await new Promise(resolve => setTimeout(resolve, duration));
// Simulate occasional failures
if (Math.random() < 0.2) {
throw new Error('Simulated test failure');
}
return {
url,
passed: true,
errors: [],
duration: Math.round(duration)
};
});
const metrics = queue.getPerformanceMetrics();
console.log(` š Performance: ${metrics.efficiency.toFixed(1)}% efficiency, ${metrics.throughput.toFixed(2)} items/sec`);
return result;
}
// Example: Priority-based processing
async function examplePriorityQueue() {
console.log('\nā Priority Queue Example:');
const queue = new index_1.Queue('priority', {
maxConcurrent: 2,
priorityPatterns: [
{ pattern: '/home', priority: 10 },
{ pattern: '/', priority: 9 },
{ pattern: '/about', priority: 8 },
{ pattern: '/contact', priority: 7 },
{ pattern: '/blog', priority: 5 }
]
});
// URLs with different priorities
const urls = [
'https://example.com/blog/post1', // Priority 5
'https://example.com/home', // Priority 10
'https://example.com', // Priority 9
'https://example.com/about', // Priority 8
'https://example.com/blog/post2', // Priority 5
'https://example.com/contact' // Priority 7
];
queue.enqueue(urls);
console.log(' š Processing order (by priority):');
const result = await queue.process(async (url) => {
console.log(` š Testing: ${url}`);
await new Promise(resolve => setTimeout(resolve, 500));
return { url, passed: true };
});
return result;
}
// Example: Accessibility testing optimized queue
async function exampleAccessibilityQueue() {
console.log('\nāæ Accessibility Testing Queue:');
// Use factory method for accessibility-optimized settings
const queue = index_1.Queue.forAccessibilityTesting('parallel', {
maxConcurrent: 2, // Conservative for browser testing
timeout: 30000 // Longer timeout for accessibility scans
});
const urls = [
'https://example.com',
'https://example.com/about',
'https://example.com/products'
];
const result = await queue.processWithProgress(urls, async (url) => {
console.log(` š Accessibility scan: ${url}`);
// Simulate accessibility testing
await new Promise(resolve => setTimeout(resolve, 2000));
return {
url,
title: 'Example Page',
passed: Math.random() > 0.3,
errors: Math.random() > 0.5 ? [] : ['Missing alt text', 'Low contrast'],
warnings: ['Consider adding ARIA labels'],
duration: 2000
};
});
console.log(` š Accessibility Results: ${result.completed.length} pages scanned`);
return result;
}
// Run all examples
async function runQueueExamples() {
console.log('š§ Queue System Examples\\n');
try {
await exampleSimpleQueue();
await exampleParallelQueue();
await examplePriorityQueue();
await exampleAccessibilityQueue();
console.log('\nā
All queue examples completed successfully!');
console.log('šÆ The Queue system provides:');
console.log(' - Consistent API across all queue types');
console.log(' - Automatic retry and error handling');
console.log(' - Real-time progress reporting');
console.log(' - Performance metrics and optimization');
console.log(' - Built-in accessibility testing support');
}
catch (error) {
console.error('ā Queue example failed:', error);
}
}
//# sourceMappingURL=example.js.map