Export URL tokens in mini-export fixtures tripped secret-scan; replace with placeholders, stop regenerating them, and allowlist fixture paths for pre-redaction history.
Tests
Fixture (seeded from your export)
tests/fixtures/mini-export/ is a small slice of the real Levkin export:
#medical,#zoey,#153niagara(first 4 day-files each, ~54 messages)- Regenerate after export changes:
make fixture
# or
python3 scripts/build-test-fixture.py "/path/to/export"
Python (unit + API)
make test-unit
Covers:
slack_export.py— parse, search, file typesscripts/auto-cherry-pick.py— drafts, data-only rules, return channelsserver.py— HTTP API against mini-export
Uses .venv automatically.
Playwright (UI)
make test-e2e
Covers:
- Channel list, filters (All / Has picks)
- Cherry-pick checkbox on/off
- Detail panel Skip
- Only selected filter
- Global Files search
Runs server on port 18765 with tests/fixtures/test-manifest.json.
All
make test
Coverage
make test-unit # includes --cov report
Current targets (~98% Python, 11 Playwright tests):
| Module | Coverage | Notes |
|---|---|---|
slack_export.py |
~98% | canvases index, HTTP 401, search limits |
server.py |
~98% | logging when not quiet, empty DOCX body |
scripts/auto-cherry-pick.py |
via test_auto_cherry_pick_main.py |
full main() on fixture |
static/app.js |
Playwright e2e | bulk select, text search, save |
100 pytest cases + 11 e2e. Manifest is copied per session and reset before each API test so POST cases do not leak state.
Server runs in-process during pytest; Playwright uses port 18765.