Files
AppFlowy-Web/cypress/support/exception-handlers.ts
2025-11-17 12:12:56 +08:00

81 lines
2.1 KiB
TypeScript

/**
* Centralized exception handlers for E2E tests
* Consolidates error handling across all test files
*
* Usage:
* ```typescript
* import { setupCommonExceptionHandlers } from '@/cypress/support/exception-handlers';
*
* beforeEach(() => {
* setupCommonExceptionHandlers();
* });
* ```
*/
/**
* List of known non-critical errors that can be safely ignored during E2E tests
* These errors don't affect test validity but may appear in the console
*/
const IGNORED_ERROR_PATTERNS = [
// React errors
'Minified React error',
'React does not recognize',
// AppFlowy-specific errors
'View not found',
'No workspace or service found',
'App outline not found',
'Favorite views not found',
'App trash not found',
// Network and WebSocket errors
'WebSocket',
'connection',
'Failed to fetch',
'NetworkError',
// AI/Model errors
'Failed to load models',
// Common JavaScript errors in test environment
'Cannot read properties of undefined',
'ResizeObserver loop',
'Loading chunk',
];
/**
* Sets up common exception handlers for E2E tests
* Ignores known non-critical errors that don't affect test validity
*
* @param additionalPatterns - Optional array of additional error patterns to ignore
*/
export const setupCommonExceptionHandlers = (additionalPatterns: string[] = []) => {
const allPatterns = [...IGNORED_ERROR_PATTERNS, ...additionalPatterns];
cy.on('uncaught:exception', (err) => {
const shouldIgnore = allPatterns.some(pattern =>
err.message.includes(pattern)
);
if (shouldIgnore) {
// Log warning for debugging but don't fail the test
console.warn('[Test] Ignoring known non-critical error:', err.message);
return false; // Prevent test failure
}
// Unknown error - let it fail the test
return true;
});
};
/**
* Sets up exception handlers that ignore ALL errors
* ⚠️ Use with caution - only for tests where errors are expected/irrelevant
*/
export const ignoreAllExceptions = () => {
cy.on('uncaught:exception', () => {
console.warn('[Test] Ignoring all exceptions (permissive mode)');
return false;
});
};