name: test on: push: branches: [ main ] pull_request: jobs: test: runs-on: ubuntu-latest services: postgres: image: postgres:17 env: POSTGRES_USER: ntfy POSTGRES_PASSWORD: ntfy POSTGRES_DB: ntfy_test ports: - 5432:5432 options: >- --health-cmd "pg_isready -U ntfy" --health-interval 10s --health-timeout 5s --health-retries 5 env: NTFY_TEST_DATABASE_URL: "postgres://ntfy:ntfy@localhost:5432/ntfy_test?sslmode=disable" NTFY_TEST_S3_URL: ${{ secrets.NTFY_TEST_S3_URL }} steps: - name: Checkout code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Install Go uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0 with: go-version-file: '.go-version' - name: Install node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: '24' cache: 'npm' cache-dependency-path: './web/package-lock.json' - name: Install dependencies run: make build-deps-ubuntu - name: Build docs (required for tests) run: make docs - name: Build web app (required for tests) run: make web - name: Run tests, formatting, vetting and linting run: make checkv - name: Run coverage run: make coverage