name: test # Linux CI for clide (GitHub Actions). Moved here from .gitea/workflows/ when CI # consolidated onto GitHub (the primary remote); the Gitea secondary has Actions # disabled. Pairs with windows.yml (ConPTY suite on windows-latest) and # release.yml (versioned release bundles). # # Steps go through the make targets (the repo's tooling-discipline rule: the # make layer sets up the environment — gen-build-info etc. — and stays correct # if a wrapped script moves). on: push: branches: [main] pull_request: jobs: unit: name: unit + widget + golden + a11y + coverage gate runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: { channel: stable, cache: true } - run: flutter pub get # test-coverage runs the full fast suite WITH coverage (it includes the # a11y suite — see the push-check note in the Makefile), which is what # coverage-gate consumes. - run: make test-coverage - run: make coverage-gate integration: name: integration_test (xvfb) runs-on: ubuntu-latest needs: unit steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: { channel: stable, cache: true } - run: sudo apt-get update && sudo apt-get install -y xvfb ninja-build libgtk-3-dev - run: flutter pub get - uses: coactions/setup-xvfb@v1 with: { run: make test-integration } startup-bundle: name: bundle smoke (xvfb 5s) runs-on: ubuntu-latest needs: unit steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: { channel: stable, cache: true } - run: sudo apt-get update && sudo apt-get install -y xvfb ninja-build libgtk-3-dev - run: flutter pub get - run: make smoke-bundle # The web-WASM Playwright job is withheld: `flutter build web --wasm` cannot # compile the tree since the tree-sitter/PTY dart:ffi pivot (dart:ffi is # unavailable on the wasm target). Whether the web target gets conditional- # import fences or is dropped is an open question — see Q-50 in # governance/questions/architecture.md. Re-add the job (setup-node, npm # install + playwright install in tools/ui, `make test-e2e`) when Q-50 # resolves toward keeping it. docs: name: dart doc (lib API) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: { channel: stable, cache: true } - run: flutter pub get - name: dart doc --validate-links (fail on warning) run: | set -o pipefail dart doc --validate-links 2>&1 | tee dartdoc.log if grep -q "^ warning:" dartdoc.log; then echo "::error::dartdoc emitted warnings — see log above" exit 1 fi - uses: actions/upload-artifact@v4 with: name: dart-api-docs path: doc/api/