Local E2E Workflow
The formal local end-to-end loop is now repository-owned:
- a sanitized Obsidian vault fixture:
tests/fixtures/obsidian_vault_minimal - a real disposable NocoDB service:
tests/fixtures/nocodb_local - one formal suite:
tests/test_e2e_obsidian_nocodb.py
This is the standard way to validate the business loop:
Obsidian Thought -> ingest -> reactive action -> Bookmark -> writeback -> NocoDB
Preconditions
- Docker-compatible runtime available locally OrbStack headless was validated as one working option.
uvinstalled
One-command entry point
Use the repository script:
bash
scripts/run-local-e2e.shThis does four things in order:
docker compose up -dfor the local NocoDB service- bootstraps the
自媒体作品快照 / 作品快照schema and seed rows - loads the generated env file
- runs the formal e2e suite
Useful variants
Run pytest in quiet mode:
bash
scripts/run-local-e2e.sh -- -qStop the local NocoDB service after the run:
bash
scripts/run-local-e2e.sh --downRebuild from a clean local state:
bash
scripts/run-local-e2e.sh --fresh -- -qFilter to one test:
bash
scripts/run-local-e2e.sh -- -k writeback -qGenerated state
Bootstrap writes:
text
tests/fixtures/nocodb_local/.env.generatedThat file is the source of truth for:
RUNEX_E2E_NOCO_URLRUNEX_E2E_NOCO_TOKENRUNEX_E2E_NOCO_BASE_IDRUNEX_E2E_NOCO_TABLE_ID
Runtime NocoDB data lives under:
text
tests/fixtures/nocodb_local/.runtime/Both paths are git-ignored.
Clean rebuild mode
Use --fresh when you want to throw away the local NocoDB runtime state and bootstrap again from scratch:
bash
scripts/run-local-e2e.sh --fresh -- -qThis does three extra things before the normal workflow:
docker compose down- removes
tests/fixtures/nocodb_local/.runtime/ - removes
tests/fixtures/nocodb_local/.env.generated
Use it after changing bootstrap logic, table shape, or seed assumptions.
What is actually proven
The formal suite covers two assertions:
- the local NocoDB seed rows are readable through the real
media-snapshotsource adapter - a real Obsidian Thought fixture containing a bilibili link ingests, creates a Bookmark, and writes that link into the local NocoDB table
This is intentionally stronger than a stub-only test and intentionally safer than using production NocoDB.
Maintenance rule
When a fixture note, NocoDB column mapping, or ontology rule changes, rerun:
bash
scripts/run-local-e2e.sh -- -qDo not treat the local fixture as throwaway data. It is part of the repository contract.