mirror of
https://github.com/iflytek/skillhub.git
synced 2026-09-08 22:21:09 +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.
266 lines
6.4 KiB
Markdown
266 lines
6.4 KiB
Markdown
# SkillHub E2E 测试本地运行方案(无 Docker)
|
||
|
||
## 📋 前置条件检查
|
||
|
||
你的机器已经具备:
|
||
- ✅ PostgreSQL 16 (运行中)
|
||
- ✅ Redis 7 (运行中)
|
||
- ✅ Java 21
|
||
- ✅ Maven
|
||
- ✅ Node.js + pnpm
|
||
- ✅ MinIO (已安装)
|
||
|
||
## 🚀 启动步骤
|
||
|
||
### 1. 启动 MinIO(对象存储)
|
||
|
||
```bash
|
||
# 创建数据目录
|
||
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. 启动后端服务
|
||
|
||
```bash
|
||
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. 启动前端服务
|
||
|
||
```bash
|
||
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. 验证所有服务
|
||
|
||
```bash
|
||
# 检查所有服务状态
|
||
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 测试
|
||
|
||
### 运行所有新增测试
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
### 运行特定优先级测试
|
||
|
||
```bash
|
||
# 只运行 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
|
||
```
|
||
|
||
### 运行单个测试文件
|
||
|
||
```bash
|
||
# 运行审查中心测试
|
||
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
|
||
```
|
||
|
||
## 🔍 查看日志
|
||
|
||
```bash
|
||
# 查看后端日志
|
||
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
|
||
```
|
||
|
||
## 🛑 停止所有服务
|
||
|
||
```bash
|
||
# 停止后端
|
||
pkill -f "spring-boot:run"
|
||
|
||
# 停止前端
|
||
pkill -f "pnpm dev"
|
||
|
||
# 停止 MinIO
|
||
pkill -f "minio server"
|
||
|
||
# 或者使用 Makefile
|
||
cd /Users/tenten/Desktop/skillhub
|
||
make dev-down
|
||
```
|
||
|
||
## ⚠️ 常见问题
|
||
|
||
### 1. 后端启动失败
|
||
|
||
```bash
|
||
# 检查端口占用
|
||
lsof -i :8080
|
||
|
||
# 清理 Maven 缓存
|
||
rm -rf ~/.m2/repository/com/iflytek/skillhub
|
||
|
||
# 重新编译
|
||
cd /Users/tenten/Desktop/skillhub/server
|
||
mvn clean install -DskipTests
|
||
```
|
||
|
||
### 2. 前端启动失败
|
||
|
||
```bash
|
||
# 检查端口占用
|
||
lsof -i :3000
|
||
|
||
# 重新安装依赖
|
||
cd /Users/tenten/Desktop/skillhub/web
|
||
rm -rf node_modules
|
||
pnpm install
|
||
```
|
||
|
||
### 3. 数据库连接失败
|
||
|
||
```bash
|
||
# 检查 PostgreSQL 状态
|
||
brew services list | grep postgresql
|
||
|
||
# 重启 PostgreSQL
|
||
brew services restart postgresql@16
|
||
|
||
# 验证数据库连接
|
||
psql -U skillhub -d skillhub -c "SELECT 1"
|
||
```
|
||
|
||
### 4. MinIO 连接失败
|
||
|
||
```bash
|
||
# 检查 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)
|