UNPKG

synthia-test

Version:

Synthia Engine Test Plugin - 提供测试功能的 Synthia 插件

391 lines (296 loc) 8.71 kB
# Synthia Test Plugin [![npm version](https://badge.fury.io/js/synthia-test.svg)](https://badge.fury.io/js/synthia-test) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) Synthia Test Plugin 是 Synthia Engine 的测试插件,提供统一的测试运行和覆盖率报告功能。支持多种测试框架,包括 Vitest、Jest、Mocha、Cypress 和 Playwright。 ## ✨ 特性 - 🧪 **多框架支持**: 支持 Vitest、Jest、Mocha、Cypress、Playwright - 🔍 **自动检测**: 自动检测项目中安装的测试框架 - 👀 **监听模式**: 支持文件变化监听和自动重新运行测试 - 📊 **覆盖率报告**: 生成详细的测试覆盖率报告 - 🚀 **CI 模式**: 专为持续集成优化的测试模式 - ⚡ **快速执行**: 优化的测试执行性能 - 🎯 **精确配置**: 灵活的配置选项支持 ## 📦 安装 ```bash # 使用 pnpm pnpm add -D synthia-test # 使用 npm npm install -D synthia-test # 使用 yarn yarn add -D synthia-test ``` ## 🚀 快速开始 ### 1. 在 Synthia 配置中启用插件 ```typescript // synthia.config.ts import { defineConfig } from 'synthia-cli'; import { testPlugin } from 'synthia-test'; export default defineConfig({ plugins: [ { name: 'test', plugin: testPlugin({ framework: 'vitest', // 可选,会自动检测 watch: false, coverage: false, }), }, ], }); ``` ### 2. 运行测试 ```bash # 运行所有测试 synthia test # 监听模式运行测试 synthia test --watch # 生成覆盖率报告 synthia test --coverage # CI 模式运行测试 synthia test --ci ``` ## 📋 命令选项 | 选项 | 类型 | 描述 | 默认值 | | ------------- | ------- | ------------------------------------------------------- | ------------------------------- | | `--watch` | boolean | 监听模式运行测试 | false | | `--coverage` | boolean | 生成测试覆盖率报告 | false | | `--ci` | boolean | CI模式运行测试 | false | | `--framework` | string | 指定测试框架 (vitest\|jest\|mocha\|cypress\|playwright) | auto | | `--pattern` | string | 文件匹配模式 | `src/**/*.test.{ts,js,tsx,jsx}` | | `--config` | string | 指定配置文件 | auto | | `--ui` | boolean | 启动UI界面 (仅Vitest) | false | | `--headless` | boolean | 无头模式运行 (仅Cypress\|Playwright) | false | | `--browser` | string | 指定浏览器 (仅Cypress\|Playwright) | chromium | | `--threshold` | number | 设置覆盖率阈值 | 80 | ## ⚙️ 配置选项 ### TestPluginOptions ```typescript interface TestPluginOptions { enabled?: boolean; // 是否启用插件 framework?: 'vitest' | 'jest' | 'mocha' | 'cypress' | 'playwright'; // 测试框架 watch?: boolean; // 默认监听模式 coverage?: boolean; // 默认生成覆盖率 ci?: boolean; // 默认CI模式 pattern?: string; // 文件匹配模式 config?: string; // 配置文件路径 // Vitest 配置 vitest?: { enabled?: boolean; config?: string; ui?: boolean; }; // Jest 配置 jest?: { enabled?: boolean; config?: string; watchAll?: boolean; }; // Mocha 配置 mocha?: { enabled?: boolean; config?: string; reporter?: string; }; // Cypress 配置 cypress?: { enabled?: boolean; config?: string; headless?: boolean; browser?: string; }; // Playwright 配置 playwright?: { enabled?: boolean; config?: string; headless?: boolean; browser?: string; }; // 覆盖率配置 coverageConfig?: { enabled?: boolean; threshold?: number; reporters?: string[]; output?: string; }; } ``` ## 🎯 支持的测试框架 ### Vitest ```bash # 安装 Vitest pnpm add -D vitest # 运行 Vitest 测试 synthia test --framework vitest # 启动 UI 界面 synthia test --framework vitest --ui # 监听模式 synthia test --framework vitest --watch ``` ### Jest ```bash # 安装 Jest pnpm add -D jest # 运行 Jest 测试 synthia test --framework jest # 监听模式 synthia test --framework jest --watch ``` ### Mocha ```bash # 安装 Mocha pnpm add -D mocha # 运行 Mocha 测试 synthia test --framework mocha ``` ### Cypress ```bash # 安装 Cypress pnpm add -D cypress # 运行 Cypress 测试 synthia test --framework cypress # 无头模式 synthia test --framework cypress --headless ``` ### Playwright ```bash # 安装 Playwright pnpm add -D playwright # 运行 Playwright 测试 synthia test --framework playwright # 无头模式 synthia test --framework playwright --headless ``` ## 📊 覆盖率报告 ### 配置覆盖率 ```typescript // synthia.config.ts export default defineConfig({ plugins: [ { name: 'test', plugin: testPlugin({ coverageConfig: { enabled: true, threshold: 85, reporters: ['text', 'html', 'json'], output: 'coverage', }, }), }, ], }); ``` ### 生成覆盖率报告 ```bash # 生成覆盖率报告 synthia test --coverage # 设置覆盖率阈值 synthia test --coverage --threshold 90 ``` ## 🔧 高级用法 ### 自定义文件模式 ```bash # 只测试特定文件 synthia test --pattern "src/components/**/*.test.ts" # 测试多个模式 synthia test --pattern "src/**/*.test.{ts,tsx}" --pattern "tests/**/*.spec.js" ``` ### 指定配置文件 ```bash # 使用自定义配置文件 synthia test --config custom-test.config.js ``` ### CI 集成 ```yaml # .github/workflows/test.yml name: Test on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18' - run: pnpm install - run: synthia test --ci --coverage ``` ## 📁 项目结构 ``` your-project/ ├── src/ │ ├── components/ │ │ └── Button.test.tsx │ ├── utils/ │ │ └── helpers.test.ts │ └── __tests__/ │ └── integration.test.ts ├── tests/ │ ├── e2e/ │ │ └── user-flow.spec.ts │ └── fixtures/ │ └── test-data.json ├── coverage/ # 覆盖率报告输出目录 ├── vitest.config.ts # Vitest 配置 ├── jest.config.js # Jest 配置 └── synthia.config.ts # Synthia 配置 ``` ## 🐛 故障排除 ### 常见问题 **Q: 测试框架未检测到** ```bash # 确保已安装测试框架 pnpm add -D vitest # 手动指定框架 synthia test --framework vitest ``` **Q: 覆盖率报告未生成** ```bash # 确保启用了覆盖率 synthia test --coverage # 检查配置文件 synthia test --coverage --config vitest.config.ts ``` **Q: 监听模式不工作** ```bash # 确保文件变化检测正常 synthia test --watch --pattern "src/**/*.test.ts" ``` ### 调试模式 ```bash # 启用详细日志 synthia test --verbose # 查看检测到的框架 synthia test --framework auto ``` ## 🤝 贡献 欢迎贡献代码!请查看 [贡献指南](../../CONTRIBUTING.md) 了解详细信息。 ### 开发环境设置 ```bash # 克隆仓库 git clone https://github.com/your-org/synthia-engine.git # 安装依赖 pnpm install # 运行测试 pnpm test # 构建插件 pnpm build ``` ## 📄 许可证 MIT License - 查看 [LICENSE](../../LICENSE) 文件了解详细信息。 ## 🔗 相关链接 - [Synthia Engine 主页](https://github.com/your-org/synthia-engine) - [插件开发指南](../../docs/plugins/README.md) - [API 文档](../../docs/api/test-plugin.md) - [更新日志](../../CHANGELOG.md) ## 📞 支持 如果您遇到问题或有任何疑问,请: 1. 查看 [FAQ](../../docs/faq.md) 2. 搜索 [Issues](https://github.com/your-org/synthia-engine/issues) 3. 创建新的 [Issue](https://github.com/your-org/synthia-engine/issues/new) 4. 加入我们的 [Discord 社区](https://discord.gg/synthia) --- <p align="center"> Made with ❤️ by the Synthia Team </p>