The tests use a local Postgres, never Supabase. Each test creates a throwaway schema and drops it afterwards (tests/pgtest.py).
brew install postgresql@16 && brew services start postgresql@16 # macOS, once
python3 -m pytest -q
By default the tests connect to postgresql:///postgres (local socket, current user). Point them elsewhere with TEST_DATABASE_URL.
Every bug fix ships with a regression test that fails without the fix.
Create src/connectors/<portal>.py with a class extending BaseConnector (src/connectors/base.py). Follow an existing connector with a similar data source:
| Data source | Example connectors |
|---|---|
| Shopify feed | upway.py |
| WooCommerce Store API | zbike.py |
| HTML scraping | subito.py, tutti.py |
src/connectors/registry.py.portals.<portal> block to config/config.yaml with enabled: true.tests/test_<portal>.py that parses a saved sample of the page. Connector tests must not hit the network.%s placeholders. Rows come back as dicts (RealDictCursor)..env, index.html or anything under logs/.