mirror of
https://github.com/iflytek/skillhub.git
synced 2026-09-07 08:26:00 +00:00
Rescued from the desktop copy of the project (now being trashed): - docs/test-cases-zh/: Chinese e2e test case designs across 6 modules (auth, search, dashboard/settings, namespace/governance, public pages, publish flow) plus master case sheets in md+csv. - docs/local-run-no-docker.md: Guide for running the full stack locally without Docker, matching the current dev environment setup.
6.4 KiB
6.4 KiB
SkillHub E2E 测试本地运行方案(无 Docker)
📋 前置条件检查
你的机器已经具备:
- ✅ PostgreSQL 16 (运行中)
- ✅ Redis 7 (运行中)
- ✅ Java 21
- ✅ Maven
- ✅ Node.js + pnpm
- ✅ MinIO (已安装)
🚀 启动步骤
1. 启动 MinIO(对象存储)
# 创建数据目录
mkdir -p /tmp/skillhub-minio-data
# 启动 MinIO
MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=minioadmin \
minio server /tmp/skillhub-minio-data \
--address :9000 \
--console-address :9001 \
> /tmp/skillhub-minio.log 2>&1 &
# 验证 MinIO 启动
curl -s http://127.0.0.1:9000/minio/health/live && echo "✅ MinIO OK"
2. 启动后端服务
cd /Users/tenten/Desktop/skillhub/server
# 方式 1:使用 Maven 直接运行
mvn spring-boot:run -pl skillhub-app \
-Dspring-boot.run.profiles=dev \
> /tmp/skillhub-backend.log 2>&1 &
# 方式 2:使用项目 Makefile(推荐)
cd /Users/tenten/Desktop/skillhub
make dev-server
# 等待后端启动(约 30-60 秒)
until curl -sf http://localhost:8080/actuator/health > /dev/null 2>&1; do
echo "等待后端启动..."
sleep 3
done
echo "✅ 后端启动成功"
3. 启动前端服务
cd /Users/tenten/Desktop/skillhub/web
# 启动前端开发服务器
pnpm dev > /tmp/skillhub-frontend.log 2>&1 &
# 等待前端启动(约 10-20 秒)
until curl -sf http://localhost:3000 > /dev/null 2>&1; do
echo "等待前端启动..."
sleep 2
done
echo "✅ 前端启动成功"
4. 验证所有服务
# 检查所有服务状态
echo "=== 服务状态检查 ==="
curl -s http://localhost:5432 && echo "✅ PostgreSQL: 运行中" || echo "❌ PostgreSQL: 未运行"
redis-cli ping > /dev/null 2>&1 && echo "✅ Redis: 运行中" || echo "❌ Redis: 未运行"
curl -s http://127.0.0.1:9000/minio/health/live > /dev/null 2>&1 && echo "✅ MinIO: 运行中" || echo "❌ MinIO: 未运行"
curl -s http://localhost:8080/actuator/health > /dev/null 2>&1 && echo "✅ 后端: 运行中" || echo "❌ 后端: 未运行"
curl -s http://localhost:3000 > /dev/null 2>&1 && echo "✅ 前端: 运行中" || echo "❌ 前端: 未运行"
🧪 运行 E2E 测试
运行所有新增测试
cd /Users/tenten/Desktop/skillhub/web
# 运行所有新增的测试文件
pnpm test:e2e \
reviews-full-flow.spec.ts \
governance-center.spec.ts \
my-namespaces-full.spec.ts \
namespace-members-management.spec.ts \
namespace-reviews-management.spec.ts \
profile-settings.spec.ts \
security-settings.spec.ts \
accounts-settings.spec.ts \
notification-settings.spec.ts \
admin-audit-log.spec.ts \
admin-labels.spec.ts \
admin-users.spec.ts \
stars-management.spec.ts \
promotions-management.spec.ts \
reports-management.spec.ts \
device-management.spec.ts
运行特定优先级测试
# 只运行 P0 测试
pnpm test:e2e reviews-full-flow.spec.ts governance-center.spec.ts
# 只运行 P1 测试
pnpm test:e2e \
my-namespaces-full.spec.ts \
namespace-members-management.spec.ts \
namespace-reviews-management.spec.ts \
profile-settings.spec.ts \
security-settings.spec.ts \
accounts-settings.spec.ts \
notification-settings.spec.ts \
admin-audit-log.spec.ts \
admin-labels.spec.ts \
admin-users.spec.ts
# 只运行 P2 测试
pnpm test:e2e \
stars-management.spec.ts \
promotions-management.spec.ts \
reports-management.spec.ts \
device-management.spec.ts
运行单个测试文件
# 运行审查中心测试
pnpm test:e2e reviews-full-flow.spec.ts
# 运行治理中心测试
pnpm test:e2e governance-center.spec.ts
# 使用 UI 模式运行(可视化调试)
pnpm test:e2e:ui reviews-full-flow.spec.ts
🔍 查看日志
# 查看后端日志
tail -f /tmp/skillhub-backend.log
# 查看前端日志
tail -f /tmp/skillhub-frontend.log
# 查看 MinIO 日志
tail -f /tmp/skillhub-minio.log
# 查看 Playwright 测试报告
cd /Users/tenten/Desktop/skillhub/web
pnpm exec playwright show-report
🛑 停止所有服务
# 停止后端
pkill -f "spring-boot:run"
# 停止前端
pkill -f "pnpm dev"
# 停止 MinIO
pkill -f "minio server"
# 或者使用 Makefile
cd /Users/tenten/Desktop/skillhub
make dev-down
⚠️ 常见问题
1. 后端启动失败
# 检查端口占用
lsof -i :8080
# 清理 Maven 缓存
rm -rf ~/.m2/repository/com/iflytek/skillhub
# 重新编译
cd /Users/tenten/Desktop/skillhub/server
mvn clean install -DskipTests
2. 前端启动失败
# 检查端口占用
lsof -i :3000
# 重新安装依赖
cd /Users/tenten/Desktop/skillhub/web
rm -rf node_modules
pnpm install
3. 数据库连接失败
# 检查 PostgreSQL 状态
brew services list | grep postgresql
# 重启 PostgreSQL
brew services restart postgresql@16
# 验证数据库连接
psql -U skillhub -d skillhub -c "SELECT 1"
4. MinIO 连接失败
# 检查 MinIO 进程
ps aux | grep minio
# 重启 MinIO
pkill -f "minio server"
MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=minioadmin \
minio server /tmp/skillhub-minio-data \
--address :9000 --console-address :9001 &
📊 测试覆盖范围
| 优先级 | 测试文件 | 测试用例数 | 覆盖功能 |
|---|---|---|---|
| P0 | reviews-full-flow.spec.ts | 7 | 审查中心完整流程 |
| P0 | governance-center.spec.ts | 7 | 治理中心核心功能 |
| P1 | my-namespaces-full.spec.ts | 4 | 命名空间管理 |
| P1 | namespace-members-management.spec.ts | 4 | 成员管理 |
| P1 | namespace-reviews-management.spec.ts | 4 | 命名空间审查 |
| P1 | profile-settings.spec.ts | 4 | 个人资料设置 |
| P1 | security-settings.spec.ts | 4 | 安全设置 |
| P1 | accounts-settings.spec.ts | 3 | 账户合并 |
| P1 | notification-settings.spec.ts | 3 | 通知设置 |
| P1 | admin-audit-log.spec.ts | 4 | 审计日志 |
| P1 | admin-labels.spec.ts | 4 | 标签管理 |
| P1 | admin-users.spec.ts | 5 | 用户管理 |
| P2 | stars-management.spec.ts | 3 | 收藏管理 |
| P2 | promotions-management.spec.ts | 4 | 推广管理 |
| P2 | reports-management.spec.ts | 4 | 举报管理 |
| P2 | device-management.spec.ts | 5 | 设备授权 |
总计: 16 个文件,69 个测试用例
✅ 验证状态
- ✅ TypeScript 编译通过(零错误)
- ✅ Playwright 识别所有测试用例
- ✅ 使用稳定的
getByRole/getByLabel选择器 - ✅ 统一的断言风格和错误处理
- ✅ 防 flaky 措施(API 预查询、条件分支、合理 timeout)