Files
ciaovolo/flight-comparator/.coveragerc
domverse 6421f83ca7 Add flight comparator web app with full scan pipeline
Full-stack flight price scanner built on fast-flights v3 (SOCS cookie bypass):

Backend (FastAPI + SQLite):
- REST API with rate limiting, Pydantic v2 validation, paginated responses
- Scan pipeline: resolves airports, queries every day in the window, saves
  individual flights + aggregate route stats to SQLite
- Background async scan processor with real-time progress tracking
- Airport search endpoint backed by OpenFlights dataset
- Daily scan window (all dates, not monthly samples)

Frontend (React 19 + TypeScript + Tailwind CSS v4):
- Dashboard with live scan status and recent scans
- Create scan form: country mode or specific airports (searchable dropdown)
- Scan detail page with expandable route rows showing individual flights
  (date, airline, departure, arrival, price) loaded on demand
- AirportSearch component with debounced live search and multi-select

Database:
- scans → routes → flights schema with FK cascade and auto-update triggers
- Migrations for schema evolution (relaxed country constraint)

Tests:
- 74 tests: unit + integration, isolated per-test SQLite DB
- Confirmed flight fixtures in tests/confirmed_flights.json (50 real flights,
  BDS→FMM Ryanair + BDS→DUS Eurowings, scraped Feb 2026)
- Integration tests parametrized from confirmed routes

Docker:
- Multi-stage builds, Compose orchestration, Nginx reverse proxy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 17:11:51 +01:00

70 lines
1.2 KiB
INI

[run]
# Coverage configuration for Flight Radar Web App
# Source directories
source = .
# Omit these files from coverage
omit =
*/tests/*
*/test_*.py
*/__pycache__/*
*/venv/*
*/env/*
*/.venv/*
*/site-packages/*
*/dist-packages/*
*/airports.py
*/cache.py
*/cache_admin.py
*/date_resolver.py
*/formatter.py
*/main.py
*/progress.py
*/searcher_*.py
setup.py
# Include only api_server.py and database files
include =
api_server.py
database/*.py
[report]
# Reporting options
# Precision for coverage percentage
precision = 2
# Show missing lines
show_missing = True
# Skip empty files
skip_empty = True
# Skip covered files
skip_covered = False
# Exclude lines from coverage
exclude_lines =
# Standard pragma
pragma: no cover
# Don't complain about missing debug code
def __repr__
# Don't complain if tests don't hit defensive assertion code
raise AssertionError
raise NotImplementedError
# Don't complain if non-runnable code isn't run
if __name__ == .__main__.:
if TYPE_CHECKING:
# Don't complain about abstract methods
@abstractmethod
[html]
# HTML report options
directory = htmlcov
title = Flight Radar Web App - Test Coverage Report