ilia 90b632694e
All checks were successful
CI / skip-ci-check (pull_request) Successful in 7s
CI / secret-scan (pull_request) Successful in 6s
CI / python-ci (pull_request) Successful in 21s
Redact Slack xoxe tokens from fixtures and allowlist for gitleaks.
Export URL tokens in mini-export fixtures tripped secret-scan; replace with placeholders, stop regenerating them, and allowlist fixture paths for pre-redaction history.
2026-07-10 13:45:02 -04:00
..

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 types
  • scripts/auto-cherry-pick.py — drafts, data-only rules, return channels
  • server.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.