polish: accessibility, consistency, error boundary, title casing #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # QP Conduit CI/CD Pipeline | |
| # Lint, test, and validate the conduit toolkit on every push and PR. | |
| # | |
| # Latest versions as of April 2026. | |
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| env: | |
| SHELLCHECK_VERSION: "0.10.0" | |
| BATS_VERSION: "v1.11.1" | |
| jobs: | |
| # ========================================================================== | |
| # LINT (ShellCheck static analysis) | |
| # ========================================================================== | |
| lint: | |
| name: ShellCheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Install ShellCheck | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y shellcheck | |
| - name: Lint all shell scripts | |
| run: | | |
| shellcheck -s bash -S warning \ | |
| conduit-*.sh \ | |
| lib/*.sh | |
| # ========================================================================== | |
| # TEST SMOKE (Quick validation without full service stack) | |
| # ========================================================================== | |
| test-smoke: | |
| name: Smoke Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Validate file existence | |
| run: bash tests/smoke/test_standalone.sh | |
| # ========================================================================== | |
| # TEST UNIT (bats-core unit tests) | |
| # ========================================================================== | |
| test-unit: | |
| name: Unit Tests (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-22.04, ubuntu-24.04] | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Install bats-core | |
| run: | | |
| git clone --depth 1 --branch ${{ env.BATS_VERSION }} https://github.com/bats-core/bats-core.git /tmp/bats | |
| sudo /tmp/bats/install.sh /usr/local | |
| - name: Install dependencies | |
| run: sudo apt-get update && sudo apt-get install -y jq | |
| - name: Run unit tests | |
| run: bats tests/unit/ | |
| # ========================================================================== | |
| # TEST INTEGRATION (bats-core integration tests) | |
| # ========================================================================== | |
| test-integration: | |
| name: Integration Tests (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-22.04, ubuntu-24.04] | |
| needs: [test-unit] | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Install bats-core | |
| run: | | |
| git clone --depth 1 --branch ${{ env.BATS_VERSION }} https://github.com/bats-core/bats-core.git /tmp/bats | |
| sudo /tmp/bats/install.sh /usr/local | |
| - name: Install dependencies | |
| run: sudo apt-get update && sudo apt-get install -y jq | |
| - name: Run integration tests | |
| run: bats tests/integration/ | |
| # ========================================================================== | |
| # TEST UI (vitest + React Testing Library) | |
| # ========================================================================== | |
| test-ui: | |
| name: UI Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| - name: Install dependencies | |
| run: cd ui && npm ci | |
| - name: Type-check | |
| run: cd ui && npx tsc --noEmit | |
| - name: Run tests | |
| run: cd ui && npx vitest run | |
| # ========================================================================== | |
| # SECURITY AUDIT (dependency scanning) | |
| # ========================================================================== | |
| security: | |
| name: Dependency Audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| - name: Audit Python dependencies | |
| run: | | |
| pip install pip-audit | |
| pip-audit -r requirements.txt || true | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| - name: Audit npm dependencies | |
| run: | | |
| cd ui | |
| npm ci | |
| npm audit --audit-level=high || true |