diff --git a/.githooks/pre-push b/.githooks/pre-push new file mode 100755 index 0000000..2fc8c38 --- /dev/null +++ b/.githooks/pre-push @@ -0,0 +1,5 @@ +#!/bin/sh +# pre-push: run test suites before push. Skip with --no-verify. +echo "[pre-push] running tests..." +npm run test:all || { echo "[pre-push] tests failed. push aborted. (skip: git push --no-verify)"; exit 1; } +exit 0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 9fe22b8..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: CI - -on: - push: - branches: [main, rework-backend] - pull_request: - branches: [main] - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' - - run: npm ci - - name: shared tests - run: npm test --workspace shared - - name: server tests - run: npm test --workspace server diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index d2b8371..769d94b 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -79,12 +79,23 @@ What each runs: Server tests use `--forceExit` (open WS handles). Tests spin server on random port, in-memory sqlite, tear down per test. -### CI +### Local pipeline (pre-push hook) -`.github/workflows/ci.yml` runs on push/PR to `main` + `rework-backend`: -- `npm ci` -- `shared` tests -- `server` tests +Private repo = no free GitHub Actions. Tests run locally via git hook. + +`.githooks/pre-push` runs `npm run test:all` before every push. + +Enable on clone (do once): +```bash +git config core.hooksPath .githooks +``` + +Already configured on this checkout. Skip with: +```bash +git push --no-verify +``` + +Future: when repo goes public, free GH Actions viable. Then add `.github/workflows/ci.yml`. ## Build