Skip to main content

testing-and-ci

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

Informations de source

Dépôt
iflytek/skillhub
Dernière activité de la source
12 mai 2026 à 07:35
Langue détectée de SKILL.md
anglais
Étoiles
5 171
Forks
841

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
testing-and-ci
description
Testing conventions, CI pipeline rules, and smoke test coverage for SkillHub. Ensures agents write tests correctly and understand the CI gate requirements.
license
Apache-2.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:** ```bash 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) ```bash 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: ```bash 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
Voir sur GitHub