skillhub/docs/local-run-no-docker.md
huishi3 efd43c319d docs: import e2e test case designs and local-run guide from desktop
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.
2026-05-08 08:28:37 -07:00

6.4 KiB
Raw Permalink Blame History

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