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

114 lines (96 loc) โ€ข 4.21 kB
#!/usr/bin/env node /** * Test Script: Redirect Handling Demonstration * * This script demonstrates the improved redirect handling where: * - Redirects are no longer treated as errors * - Redirect information is captured in metadata * - Analysis continues on the redirected page * - Strict validation no longer fails on redirects */ const { AccessibilityChecker } = require('./dist/core/accessibility/accessibility-checker'); // Note: Using direct AccessibilityChecker test for redirect demonstration async function testRedirectHandling() { console.log('๐Ÿงช Testing Redirect Handling Improvements\n'); const checker = new AccessibilityChecker(); await checker.initialize(); try { // Test a URL that definitely redirects (HTTP -> HTTPS) const testUrl = 'http://github.com'; console.log(`๐Ÿ” Testing: ${testUrl}`); console.log(' Expected: HTTP->HTTPS redirect, analysis continues\n'); const result = await checker.testPage(testUrl, { verbose: true, timeout: 10000 }); console.log('๐Ÿ“Š Test Result Summary:'); console.log(` โœ… Passed: ${result.passed}`); console.log(` ๐Ÿ”— Title: "${result.title}"`); console.log(` โš ๏ธ Warnings: ${result.warnings.length}`); console.log(` โŒ Errors: ${result.errors.length}`); // Check for redirect info if (result.redirectInfo) { console.log('\n๐Ÿ”€ Redirect Information:'); console.log(` ๐Ÿ“ Type: ${result.redirectInfo.type}`); console.log(` ๐ŸŒ Original: ${result.redirectInfo.originalUrl}`); console.log(` ๐ŸŽฏ Final: ${result.redirectInfo.finalUrl}`); if (result.redirectInfo.status) { console.log(` ๐Ÿ“Š Status: ${result.redirectInfo.status}`); } } else { console.log('\n๐Ÿ”€ No redirect detected'); } // Show warnings (should contain redirect info) if (result.warnings.length > 0) { console.log('\nโš ๏ธ Warnings:'); result.warnings.forEach((warning, i) => { console.log(` ${i + 1}. ${warning}`); }); } // Show errors (should NOT contain redirect errors) if (result.errors.length > 0) { console.log('\nโŒ Errors:'); result.errors.forEach((error, i) => { console.log(` ${i + 1}. ${error}`); }); } else { console.log('\nโœ… No errors detected (redirects are not treated as errors)'); } // Test basic data structure validation console.log('\n๐Ÿ”’ Testing Data Structure:'); const requiredFields = ['url', 'title', 'passed', 'errors', 'warnings', 'duration']; const missingFields = requiredFields.filter(field => !(field in result)); if (missingFields.length === 0) { console.log(' โœ… All required fields present'); } else { console.log(` โŒ Missing fields: ${missingFields.join(', ')}`); } // Demonstrate that redirects don't affect data validity console.log('\n๐Ÿ“„ Testing Data Quality:'); console.log(` ๐Ÿ“Š Result has title: ${result.title ? 'YES' : 'NO'}`); console.log(` ๐Ÿ” Analysis completed: ${result.duration > 0 ? 'YES' : 'NO'}`); console.log(` โœ… Page accessible: ${result.passed ? 'YES' : 'NO'}`); if (result.redirectInfo) { console.log(' ๐Ÿ”— Redirect handled properly: YES'); console.log(' ๐Ÿ“ˆ Analysis continued on redirected page: YES'); } else { console.log(' ๐Ÿ”— No redirects detected: OK'); } } catch (error) { console.error(`โŒ Test failed: ${error.message}`); } finally { await checker.cleanup(); } console.log('\n๐ŸŽ‰ Redirect handling test completed!'); console.log('\n๐Ÿ“‹ Summary of Improvements:'); console.log(' โœ… Redirects no longer cause result.passed = false'); console.log(' โœ… Redirect info captured in metadata instead of errors'); console.log(' โœ… Analysis continues on redirected page'); console.log(' โœ… Strict validation passes for redirected pages'); console.log(' โœ… Reports can be generated for redirected pages'); } // Run the test if (require.main === module) { testRedirectHandling().catch(console.error); } module.exports = { testRedirectHandling };