"""Measure compressed page bodies using only an isolated synthetic database.""" import gzip import json import os import sys from datetime import datetime, timedelta from pathlib import Path ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) os.environ['FLASK_CONFIG'] = 'TestingConfig' from app.config import TestingConfig TestingConfig.SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:' from app import create_app, db from app.models import User, Profile, Reading app = create_app() results = {} with app.app_context(): db.create_all() db.session.add(User(id=1, username='size-fixture', password_hash='unused', profile=Profile(timezone='Australia/Sydney'))) db.session.commit() client = app.test_client() with client.session_transaction() as session: session['_user_id'] = '1' session['_fresh'] = True for filename in ('css/tailwind.css', 'js/diy-turbo.min.js', 'images/favicon.svg'): payload = (ROOT / 'app/static' / filename).read_bytes() results[filename] = {'raw_bytes': len(payload), 'gzip_bytes': len(gzip.compress(payload))} for name, count in [('empty', 0), ('typical', 120), ('large', 10000)]: db.session.query(Reading).filter_by(user_id=1).delete() anchor = datetime(2026, 9, 8, 0, 0) db.session.bulk_save_objects([Reading(user_id=1, timestamp=anchor - timedelta(hours=i * 5), systolic=110 + i % 40, diastolic=65 + i % 25, heart_rate=60 + i % 30) for i in range(count)]) db.session.commit() for view in ('overview', 'history', 'trends'): dates = 'start_date=2020-01-01&end_date=2026-09-08' if name == 'large' and view == 'trends' else 'start_date=2026-09-02&end_date=2026-09-08' payload = client.get(f'/dashboard?view={view}&{dates}') assert payload.status_code == 200 size = len(gzip.compress(payload.data)) assert size <= 20000, (name, view, size) results[f'{name}_{view}'] = {'raw_bytes': len(payload.data), 'gzip_bytes': size} shared = sum(results[key]['gzip_bytes'] for key in ('css/tailwind.css', 'js/diy-turbo.min.js', 'images/favicon.svg')) results['typical_cold_overview_bytes'] = shared + results['typical_overview']['gzip_bytes'] assert results['typical_cold_overview_bytes'] <= 40000 db.session.remove() db.drop_all() print(json.dumps(results, indent=2))