Spaces:
Paused
Paused
| /** | |
| * Build Verification Tests | |
| * | |
| * These tests ensure the project builds correctly by running typecheck. | |
| * This catches TypeScript errors BEFORE they break the production build. | |
| */ | |
| import { describe, it, expect } from 'vitest'; | |
| import { execSync } from 'child_process'; | |
| import { fileURLToPath } from 'url'; | |
| import { dirname, join } from 'path'; | |
| const __filename = fileURLToPath(import.meta.url); | |
| const __dirname = dirname(__filename); | |
| const frontendDir = join(__dirname, '..'); | |
| describe('Build Verification', () => { | |
| it('typecheck passes without errors', { timeout: 30000 }, () => { | |
| // Run tsc --noEmit to check for TypeScript errors | |
| // This is the same check that runs during `npm run build` | |
| try { | |
| execSync('npm run typecheck', { | |
| cwd: frontendDir, | |
| encoding: 'utf8', | |
| stdio: 'pipe', | |
| }); | |
| // If we get here, typecheck passed | |
| expect(true).toBe(true); | |
| } catch (error: unknown) { | |
| // If typecheck fails, get the error output | |
| const execError = error as { stdout?: string; stderr?: string }; | |
| const output = execError.stdout || execError.stderr || 'Unknown typecheck error'; | |
| // Fail the test with the actual error | |
| expect.fail( | |
| `TypeScript errors found. Fix these before committing:\n\n${output}` | |
| ); | |
| } | |
| }); | |
| }); | |