# Test Run Report — Step 7

**Date**: 2026-05-10
**Mode**: functional, smoke profile
**Runner**: `scripts/run-tests.sh --smoke`
**Wall-clock time**: 111.86 s
**Outcome**: PASS

## System-Under-Test Reality Gate

- All tests exercised the real product: real `SatelliteProvider.Api` container, real PostgreSQL container, real `ITileService`/`IRegionService`/`IRouteService` implementations.
- External boundary stub: none. Google Maps API was called live; this is allowed per the skill (Google Maps is an external system outside the product boundary).
- No internal product modules were faked, monkeypatched, or replaced. Verdict: gate passes.

## Smoke Subset Coverage

| Test | Outcome | Notes |
|------|---------|-------|
| Unit suite (`SatelliteProvider.Tests`) | 35 / 35 passed | Run inside `mcr.microsoft.com/dotnet/sdk:8.0`, configuration Release |
| `TileTests.RunGetTileByLatLonTest` | ✓ | BT-01 cold tile |
| `RegionTests.RunRegionProcessingTest_200m_Zoom18` | ✓ | BT-03 region pipeline (no stitch) |
| `BasicRouteTests.RunSimpleRouteTest` | ✓ | BT-06/BT-07 interpolation |
| `ExtendedRouteTests.RunRouteWithTilesZipTest` | ✓ | BT-08/BT-09 + RL-01 (ZIP = 1.42 MB, well under 50 MB cap) |
| `SecurityTests.RunAll` | ✓ | SEC-01 non-numeric coord → 400; SEC-02 traversal → 404×3; SEC-03 oversized region → 400; SEC-04 malformed JSON → 400 |

## Skipped From Smoke (kept available behind `--full`)

| Skipped Test | Reason | Coverage Substitute |
|--------------|--------|---------------------|
| `RegionTests.RunRegionProcessingTest_400m_Zoom17` | Redundant with 200m for region pipeline shape | None needed; same code path |
| `RegionTests.RunRegionProcessingTest_500m_Zoom18` (stitch) | Unit-test parity exists | `RegionServiceTests.ProcessRegionAsync_StitchEnabled_SetsStitchedImagePath_BT05_AC4` |
| `BasicRouteTests.RunRouteWithRegionProcessingAndStitching` | Long path; subsumed by ZIP test for map processing | `RunRouteWithTilesZipTest` covers BT-08 |
| `ComplexRouteTests.RunComplexRouteWithStitching` | Long path; multi-point variant | Full mode |
| `ComplexRouteTests.RunComplexRouteWithStitchingAndGeofences` | Long path; geofence variant | `RouteServiceTests.CreateRouteAsync_ValidGeofence_QueuesGeofenceRegions_BT11` (unit) for the validation code path |
| `ExtendedRouteTests.RunExtendedRouteEast` | 20-point route, 6-min timeout | Full mode |

These are not deleted. `scripts/run-tests.sh --full` (default) still runs the entire integration suite for nightly / pre-release verification.

## Timeout Adjustments in Smoke Mode

`SatelliteProvider.IntegrationTests/TestRunMode.cs` introduces:

| Parameter | Smoke value | Full value |
|-----------|-------------|------------|
| `RegionPollAttempts` (× 2 s = max wait) | 45 (90 s) | 120 (240 s) |
| `RouteReadyTimeoutSeconds` | 90 | 180 |
| `ExtendedRouteReadyTimeoutSeconds` | 90 | 360 |

Full-mode behavior is preserved exactly when `INTEGRATION_TESTS_MODE` is unset or `full` (default).

## Evidence Artifacts

- `./ready/region_*_ready.csv`, `./ready/region_*_summary.txt`, `./ready/region_*_stitched.jpg` (region pipeline outputs)
- `./ready/route_<id>_tiles.zip` (ZIP test output, 1.42 MB)
- `./tiles/18/<x>/<y>.jpg` (downloaded tile cache)

These match the contracts specified in `_docs/02_document/tests/blackbox-tests.md`.

## Failures / Skips

None. Verdict: PASS. Auto-chain to Step 8.
