Architecture

Python Snapline is a uv workspace monorepo mirroring the Node.js package split. Consumers install snapline-core; config keys stay camelCase for cross-language parity.

Package layers

┌─────────────────────────────────────────────────────────────┐ │ snapline-core (entry point) │ │ test_suite · fixture runners · DB/NoSQL · publishAndPoll │ └───────┬─────────────────┬───────────────────┬───────────────┘ │ │ │ ┌───────▼────────┐ ┌──────▼──────────┐ ┌──────▼────────────────┐ │ snapline-engine│ │ api-adapters │ │ messaging-adapters │ │ compare pipeline│ │ REST·GraphQL·SOAP│ │ in-memory queues │ └────────────────┘ └────────┬────────┘ └─────────────────────────┘ │ ┌─────────▼──────────┐ │ auth-adapters │ │ OAuth2·OpenID·Basic│ └────────────────────┘
Pip packageImportNode equivalent
snapline-coresnapline.core@vaagatech/snapline-core
snapline-enginesnapline.engine@vaagatech/snapline-engine
snapline-api-adapterssnapline.api_adapters@vaagatech/snapline-api-adapters
snapline-auth-adapterssnapline.auth_adapters@vaagatech/snapline-auth-adapters
snapline-messaging-adapterssnapline.messaging_adapters@vaagatech/snapline-messaging-adapters
snapline-demo-sharedsnapline.demo_shared@vaagatech/snapline-demo-shared

Naming conventions

NodePython
testSuite()test_suite() (async)
runApiFixtureCases()run_api_fixture_cases()
writeTestReport()write_test_report()
pushTestReportToHub()push_test_report_to_hub()
ignoreFields in configignoreFields (camelCase preserved)

Snapline Hub (optional)

Snapline Hub is a separate, optional reporting UI for TestRunReport data. Not required for Snapline — use when you want a centralized dashboard. Push via push_test_report_to_hub() or SNAPLINE_HUB_URL. The Node.js edition has equivalent pushTestReportToHub().

Runtime flow

await test_suite(name, config) │ ├─ auth.initialize() optional OAuth2 / OpenID / Basic ├─ api execute_api → snapline vs expectedFile ├─ dbComparison fetch rows → snapline ├─ apiToDb execute_api → DB row → snapline ├─ dbToApi DB row → execute_api → snapline └─ publishAndPoll publish queue → poll DB / file / topic → snapline

Repository layout

snapline-python/
├── packages/
│   ├── snapline_engine/
│   ├── snapline_api_adapters/
│   ├── snapline_auth_adapters/
│   ├── snapline_messaging_adapters/
│   └── snapline_core/
├── demo/
│   ├── shared/           snapline.demo_shared (mock server + SQLite)
│   ├── scenarios/        21 scenarios (scenario.py each)
│   └── run_all/run_all.py
└── tests/                pytest unit tests

Published package dependencies

snapline-core depends only on httpx. It exports DbConnectionLike for SQL — you bring your own Postgres/MySQL driver. SQLite and stub DB helpers live in snapline.demo_shared (demo only).

Differences from Node