# Tools

CI/CD helper scripts for the Kell Creations Flutter monorepo.

## Scripts

### `run_all_tests.sh`

Runs `flutter test` across all testable packages and apps, producing a per-package pass/fail summary.

**Usage:**

```bash
# From kell_creations_apps/ directory
./tools/run_all_tests.sh           # Run tests only
./tools/run_all_tests.sh --analyze # Run dart analyze + tests
```

**What it does:**

1. Installs dependencies (`flutter pub get`) for all packages and apps.
2. Optionally runs `dart analyze --fatal-infos` on each package/app.
3. Runs `flutter test --reporter expanded` for packages with tests.
4. Prints an aggregate pass/fail summary table.

**Adding new packages:**

When a new package gains tests, add its path to the `TESTABLE` array in the script. For packages that should be analyzed but have no tests yet, add to the `ANALYZABLE` array only.

**Exit codes:**

- `0` — all tests passed (and analyze clean, if `--analyze` was used)
- `1` — one or more failures detected

### `collect_coverage.sh`

Runs `flutter test --coverage` across all testable packages and apps, parses the generated `lcov.info` files, and produces a combined summary table with test counts and line coverage percentages.

**Usage:**

```bash
# From kell_creations_apps/ directory
./tools/collect_coverage.sh
```

**What it does:**

1. Installs dependencies (`flutter pub get`) for testable packages.
2. Runs `flutter test --coverage --reporter expanded` for each package.
3. Parses `coverage/lcov.info` to extract lines hit / lines found per package.
4. Prints an aggregate summary table with pass/fail counts and coverage percentages.

**Output example:**

```
╔═══════════════════════════════════════════════════════════╗
║          Flutter Test & Coverage Summary                 ║
╠═══════════════════════════════════════════════════════════╣
║ Package              Pass    Fail    Lines    Coverage   ║
╠═══════════════════════════════════════════════════════════╣
║ core                 20      0       120/150  80.0%      ║
║ design_system        41      0       95/110   86.4%      ║
║ ...                                                      ║
╠═══════════════════════════════════════════════════════════╣
║ TOTAL                379     0       500/600  83.3%      ║
╚═══════════════════════════════════════════════════════════╝
```

**Exit codes:**

- `0` — all tests passed
- `1` — one or more failures detected

## CI Workflows

The corresponding Forgejo Actions workflows live in `.forgejo/workflows/`:

| Workflow              | Trigger           | Purpose                                      |
| --------------------- | ----------------- | -------------------------------------------- |
| `flutter-analyze.yml` | PRs and branches  | Runs `dart analyze` on all packages and apps |
| `flutter-test.yml`    | PRs and branches  | Runs `flutter test` with result reporting    |
| `validate-docs.yml`   | Non-main branches | Validates MkDocs documentation build         |
| `publish-docs.yml`    | Push to main      | Publishes documentation to docs host         |
