synthia-test
v0.0.2
Published
Synthia Engine Test Plugin - 提供测试功能的 Synthia 插件
Downloads
11
Maintainers
Readme
Synthia Test Plugin
Synthia Test Plugin 是 Synthia Engine 的测试插件,提供统一的测试运行和覆盖率报告功能。支持多种测试框架,包括 Vitest、Jest、Mocha、Cypress 和 Playwright。
✨ 特性
- 🧪 多框架支持: 支持 Vitest、Jest、Mocha、Cypress、Playwright
- 🔍 自动检测: 自动检测项目中安装的测试框架
- 👀 监听模式: 支持文件变化监听和自动重新运行测试
- 📊 覆盖率报告: 生成详细的测试覆盖率报告
- 🚀 CI 模式: 专为持续集成优化的测试模式
- ⚡ 快速执行: 优化的测试执行性能
- 🎯 精确配置: 灵活的配置选项支持
📦 安装
# 使用 pnpm
pnpm add -D synthia-test
# 使用 npm
npm install -D synthia-test
# 使用 yarn
yarn add -D synthia-test🚀 快速开始
1. 在 Synthia 配置中启用插件
// 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. 运行测试
# 运行所有测试
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
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
# 安装 Vitest
pnpm add -D vitest
# 运行 Vitest 测试
synthia test --framework vitest
# 启动 UI 界面
synthia test --framework vitest --ui
# 监听模式
synthia test --framework vitest --watchJest
# 安装 Jest
pnpm add -D jest
# 运行 Jest 测试
synthia test --framework jest
# 监听模式
synthia test --framework jest --watchMocha
# 安装 Mocha
pnpm add -D mocha
# 运行 Mocha 测试
synthia test --framework mochaCypress
# 安装 Cypress
pnpm add -D cypress
# 运行 Cypress 测试
synthia test --framework cypress
# 无头模式
synthia test --framework cypress --headlessPlaywright
# 安装 Playwright
pnpm add -D playwright
# 运行 Playwright 测试
synthia test --framework playwright
# 无头模式
synthia test --framework playwright --headless📊 覆盖率报告
配置覆盖率
// synthia.config.ts
export default defineConfig({
plugins: [
{
name: 'test',
plugin: testPlugin({
coverageConfig: {
enabled: true,
threshold: 85,
reporters: ['text', 'html', 'json'],
output: 'coverage',
},
}),
},
],
});生成覆盖率报告
# 生成覆盖率报告
synthia test --coverage
# 设置覆盖率阈值
synthia test --coverage --threshold 90🔧 高级用法
自定义文件模式
# 只测试特定文件
synthia test --pattern "src/components/**/*.test.ts"
# 测试多个模式
synthia test --pattern "src/**/*.test.{ts,tsx}" --pattern "tests/**/*.spec.js"指定配置文件
# 使用自定义配置文件
synthia test --config custom-test.config.jsCI 集成
# .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: 测试框架未检测到
# 确保已安装测试框架
pnpm add -D vitest
# 手动指定框架
synthia test --framework vitestQ: 覆盖率报告未生成
# 确保启用了覆盖率
synthia test --coverage
# 检查配置文件
synthia test --coverage --config vitest.config.tsQ: 监听模式不工作
# 确保文件变化检测正常
synthia test --watch --pattern "src/**/*.test.ts"调试模式
# 启用详细日志
synthia test --verbose
# 查看检测到的框架
synthia test --framework auto🤝 贡献
欢迎贡献代码!请查看 贡献指南 了解详细信息。
开发环境设置
# 克隆仓库
git clone https://github.com/your-org/synthia-engine.git
# 安装依赖
pnpm install
# 运行测试
pnpm test
# 构建插件
pnpm build📄 许可证
MIT License - 查看 LICENSE 文件了解详细信息。
🔗 相关链接
📞 支持
如果您遇到问题或有任何疑问,请:
- 查看 FAQ
- 搜索 Issues
- 创建新的 Issue
- 加入我们的 Discord 社区
