Skip to content

polish: accessibility, consistency, error boundary, title casing #17

polish: accessibility, consistency, error boundary, title casing

polish: accessibility, consistency, error boundary, title casing #17

Workflow file for this run

# 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