Verification

Use the normal fast suite during development:

mix test --exclude integration

Run the full integration verification (mix verify.phase5) when you change backfill, reindex, Meilisearch integration, or the operator docs:

SCRYPATH_INTEGRATION=1 \
SCRYPATH_MEILISEARCH_URL=http://127.0.0.1:7700 \
mix verify.phase5

That command runs:

  • focused backfill/reindex/operator contract tests
  • documentation contract tests
  • mix docs --warnings-as-errors
  • live Meilisearch integration verification

If you do not have a Meilisearch instance running locally, you can still run the non-integration portion:

mix verify.phase5 --skip-integration

CI

GitHub Actions (see .github/workflows/ci.yml) runs these jobs:

JobPurpose
testMatrix (Elixir 1.17.3 / OTP 26.2.5 and Elixir 1.19.0 / OTP 28.1): mix compile --warnings-as-errors, mix test --exclude integration --include requires_clean_workspace
qualityFormat, mix verify.workspace_clean, Credo, Dialyzer, mix docs --warnings-as-errors, mix hex.audit, plus focused verify gates (phases 11, 13 with --skip-integration, 14, 20, 22, 26, 28 — see lib/mix/tasks/verify.*)
phase5-verificationService: Meilisearch v1.15. SCRYPATH_INTEGRATION=1, mix verify.phase5 (live integration + docs slice for backfill/reindex)
phase13-verificationService: Meilisearch. SCRYPATH_INTEGRATION=1, mix verify.phase13 (operator integration path)
meilisearch-smokeService: Meilisearch. mix verify.meilisearch_smoke (curated live suites: live_meilisearch_verification, live_operator_verification, search_many_integration, settings_hot_apply_integration)
phoenix-example-integrationServices: Postgres 16 + Meilisearch v1.15. SCRYPATH_EXAMPLE_INTEGRATION=1, PGPORT=5433, SCRYPATH_MEILISEARCH_URL=http://127.0.0.1:7700; runs cd examples/phoenix_meilisearch && mix test — proves the Phoenix example inline + Oban integration tests against live services (consumer-shaped E2E). Approximate locally with Compose + the same env vars (see example README) or cd examples/phoenix_meilisearch && ./scripts/smoke.sh.

The root compose.yaml is only for local Meilisearch when running smoke tasks; CI uses the workflow services: block instead.

Example app (Postgres + Meilisearch)

For a multi-container-shaped local stack (Postgres + Meilisearch + Phoenix + Oban) and a scripted E2E smoke (inline and :oban paths), see examples/phoenix_meilisearch/README.md—that file is the canonical env + command reference for the example. CI runs the same mix test path under phoenix-example-integration (see table above).