TypeScript Testing Patterns: Unit, Integration, and E2E Strategies That Scale