Testing a compiler-driven full-stack web framework
7 months ago
- #web-framework
- #testing
- #compiler
- Wasp是一个编译器驱动的全栈Web框架,能为Web应用生成完整的源代码。
- 由于Wasp独特的设计,测试涉及广泛的层面,因此需要强大的自动化测试。
- 测试代码与生产代码受到同等重视,以避免拖慢开发速度。
- 测试设计为一眼可读,具有清晰的输入和预期输出。
- Haskell的DSL能力提升了测试可读性,尽管Unicode运算符可能带来挑战。
- Wasp不追求100%测试覆盖率,而是专注于能捕获重要错误的有意义测试用例。
- 相比测试驱动开发(TDD),更倾向类型驱动开发,充分利用TypeScript和Haskell的强类型特性。
- 用Haskell编写的编译器通过单元测试和生成代码的端到端(e2e)测试进行验证。
- 快照测试追踪生成代码的变化,将当前输出与预期(黄金)快照进行对比。
- 用于代码生成的Mustache模板正迁移到npm包,以获得更好的TypeScript工具支持。
- Wasp应用(包括入门模板和示例应用)通过Playwright端到端测试进行运行时验证。
- 'kitchen-sink'应用测试框架大部分功能,其他应用则覆盖互斥特性。
- 'wasp-app-runner'工具简化Wasp应用的测试自动化,支持开发命令和构建命令。
- 通过自动部署'kitchen-sink'应用并运行冒烟测试来验证部署流程。
- 文档示例链接到示例应用源码,防止示例过时。
- Docusaurus插件'code-ref-checker'确保文档代码示例与源码保持一致。
- 教程通过TACTE(教程动作执行器)实现可测试性,自动执行步骤并验证结果。