跳到主要内容
知仓学习社ZHICANG

testing-and-ci

Testing conventions, CI pipeline rules, and smoke test coverage for SkillHub. Ensures agents write tests correctly and understand the CI gate requir…

不碰外部(只输出文字)无严重或高危命中iflytek/skillhub

它会碰到什么

扫了多少1 个文本文件,4 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Testing and CI Skill

Trigger

Use this skill when:

  • Adding or modifying backend tests
  • Adding or modifying frontend tests
  • Changing CI/CD workflows
  • Adding smoke tests or E2E tests

Rules

Backend Testing

Tests live alongside source in each module's src/test/java/:

  • server/skillhub-app/src/test/java/ — Controller integration tests, service tests
  • server/skillhub-domain/src/test/java/ — Domain service unit tests
  • server/skillhub-auth/src/test/java/ — Auth flow tests

Tools: JUnit 5 + Mockito + AssertJ + Spring Boot test slices (@WebMvcTest, @DataJpaTest)

Build commands:

make test-backend-app   # skillhub-app + dependencies (includes -am)
make test-backend       # all backend modules

Never run ./mvnw -pl skillhub-app clean test directly under server/.

skillhub-app depends on sibling modules, and a standalone clean build can fall back to stale

artifacts from the local Maven repository, surfacing misleading cannot find symbol and

signature-mismatch errors. Use -am, or the Makefile targets above.

Test naming conventions:

  • Controller tests: {ControllerName}Test.java (e.g., SkillControllerTest.java)
  • Service tests: {ServiceName}Test.java
  • Integration tests: {FlowName}IntegrationTest.java
  • Security tests: {ControllerName}SecurityTest.java

Frontend Testing

Tools: Vitest (unit), Playwright (E2E)

make test-frontend            # Vitest unit tests (pnpm run test)
make test-e2e-frontend        # Playwright E2E tests
make test-e2e-smoke-frontend  # Playwright smoke tests (subset)

E2E tests live in web/e2e/.

Smoke Tests

Smoke tests validate end-to-end operator workflows against a running backend:

| Script | Purpose |

|--------|---------|

| scripts/smoke-test.sh | Basic API health, auth, label CRUD |

| scripts/namespace-smoke-test.sh | Namespace creation, membership, publishing |

| scripts/governance-smoke-test.sh | Governance and moderation flows |

| scripts/promotion-smoke-test.sh | Skill promotion between scopes |

When operator-facing workflows change, update the corresponding smoke test.

CI Pipeline

GitHub Actions workflows in .github/workflows/:

| Workflow | Trigger | Purpose |

|----------|---------|---------|

| pr-tests.yml | PR | Backend + frontend unit tests |

| pr-e2e.yml | PR | E2E smoke tests against staging |

| pr-batch-test-deploy.yml | workflow_dispatch | Batch test and deploy |

| publish-images.yml | release published / workflow_dispatch | Build and publish Docker images to GHCR |

| deploy-docs.yml | push to docs | Deploy documentation site |

| issue-triage.yml | issues | Auto-triage incoming issues |

| issue-backlog-rescore.yml | cron (every 6h) | Rescore backlog issues |

| release-notes.yml | workflow_dispatch | Generate release notes |

| deepwiki.yml | release published | Update DeepWiki documentation |

| claim-issue-reward.yml | issue_comment | Auto-claim issue rewards |

| statistic-member-reward.yml | cron/schedule | Calculate member rewards |

All workflows live in .github/workflows/. Deno scripts for triage, release notes, and rewards

live in .github/scripts/.

Staging

Before opening a PR, validate with staging:

make staging          # Build backend Docker image + frontend static + smoke test
make staging-down     # Tear down
SERVICE=web make staging-logs  # View Nginx logs

Staging validates the containerized deployment path:

  • Backend: built as Docker image from local source (Dockerfile.dev)
  • Frontend: built as static files (pnpm build), served by Nginx
  • Dependencies: same Postgres/Redis/MinIO as local dev

If staging passes, the environment stays running at:

  • Web UI: http://localhost
  • Backend API: http://localhost:8080

Pre-PR Testing Checklist

  • [ ] make test-backend-app passes
  • [ ] make typecheck-web passes
  • [ ] make lint-web passes (if frontend changed)
  • [ ] make staging passes (full regression)
  • [ ] If API changed: make generate-api run and generated file committed
  • [ ] New behavior has corresponding tests

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。