Files
claude-hub/jest.config.js
Jonathan Flatt eebbb450a4 fix: resolve TypeScript compilation errors and test compatibility issues
This commit addresses critical TypeScript compilation errors and test failures
that were preventing the successful completion of Phase 2 TypeScript migration
as outlined in issue #102.

## Key Fixes

### TypeScript Type Safety
- Add comprehensive null safety checks for optional payload properties (`issue`, `pr`, `checkSuite`, `comment`)
- Fix return type mismatches in `WebhookHandler` interface implementation
- Properly type array declarations (`meaningfulSuites`, `skippedSuites`, `timeoutSuites`)
- Transform GitHub API responses to match custom TypeScript interfaces
- Replace logical OR (`||`) with nullish coalescing (`??`) for better type safety

### Jest/Testing Infrastructure
- Modernize Jest configuration by moving ts-jest options from deprecated `globals` to transform array
- Fix module import compatibility for dual CommonJS/ESM support in test files
- Update test expectations to match actual TypeScript function return values
- Fix AWS credential provider test to handle synchronous vs asynchronous method calls

### GitHub API Integration
- Fix type mapping in `getCheckSuitesForRef` to return properly typed `GitHubCheckSuitesResponse`
- Add missing properties to timeout suite objects for consistent type structure
- Remove unnecessary async/await where functions are not asynchronous

### Code Quality Improvements
- Update import statements to use `type` imports where appropriate
- Improve error handling with proper catch blocks for async operations
- Enhance code formatting and consistency across TypeScript files

## Test Results
-  All TypeScript compilation errors resolved (`npm run typecheck` passes)
-  Unit tests now compile and run successfully
-  ESLint warnings reduced to minor style issues only
-  Maintains 100% backward compatibility with existing JavaScript code

## Impact
This fix completes the TypeScript infrastructure setup and resolves blocking
issues for Phase 2 migration, enabling:
- Strict type checking across the entire codebase
- Improved developer experience with better IDE support
- Enhanced code reliability through compile-time error detection
- Seamless coexistence of JavaScript and TypeScript during transition

Fixes issue #102 (Phase 2: Convert JavaScript Source Code to TypeScript)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 04:57:22 -05:00

32 lines
849 B
JavaScript

module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: [
'**/test/unit/**/*.test.{js,ts}',
'**/test/integration/**/*.test.{js,ts}',
'**/test/e2e/scenarios/**/*.test.{js,ts}'
],
transform: {
'^.+\\.ts$': ['ts-jest', {
useESM: false,
tsconfig: 'tsconfig.json'
}],
'^.+\\.js$': 'babel-jest'
},
moduleFileExtensions: ['ts', 'js', 'json'],
collectCoverage: true,
coverageReporters: ['text', 'lcov'],
coverageDirectory: 'coverage',
collectCoverageFrom: [
'src/**/*.{js,ts}',
'!src/**/*.d.ts',
'!**/node_modules/**',
'!**/dist/**'
],
testTimeout: 30000, // Some tests might take longer due to container initialization
verbose: true,
reporters: [
'default',
['jest-junit', { outputDirectory: 'test-results/jest', outputName: 'results.xml' }]
]
};