e2e/AGENTS.md
End-to-end tests against a real Immich stack from `docker-compose.yml` (server on port 2285): API specs with vitest, browser specs with Playwright.
## Rules
- `test-assets
118k12d agoReviewMountCreate a free account to mount
eviction. Execution backends (ONNX Runtime, RKNN, Arm NN) are in `immich_ml/sessions/`.
- **Run tests**: everything is in `test_main.py`. One class with `uv run pytest test_main.py -k TestCache`, one test with
118k12d agoReviewMountCreate a free account to mount
freezed classes; `mise //mobile:codegen:watch` keeps build_runner running. CI job "Unit Test Mobile" regenerates and fails if the code does not compile.
- **Change the local database**: edit tables
118k12d agoReviewMountCreate a free account to mount
abort"`.
- When a crate dependency changes, update `native_core/NOTICES` with its license.
## Skills
- **Build, test and lint**: `mise //native:build`, `mise //native:test`, `mise //native:lint`, `mise //native
118k12d agoReviewMountCreate a free account to mount
docs/docs/developer/architecture.mdx`.
## Rules
- ESM with no relative imports (lint-enforced). Import as `src/...js` and `test/...js`.
- Every route has `@Authenticated(...)` and `@Endpoint({ summary, description, history })`; the global `AuthGuard` throws otherwise
118k12d agoReviewMountCreate a free account to mount
explicit `.ts` extension: `import { authManager } from '#lib/managers/auth-manager.svelte.ts'`. Never `$lib`. Other aliases: `#i18n/*`, `#test-data/*`, `#tests/*`.
- Build URLs with the typed `Route` object in `src/lib/route.ts`. `continue`/`previousRoute` query params must
118k12d agoReviewMountCreate a free account to mount
converter; both directions fail closed.
## Conventions
- Build/test: `make product-build PRODUCT=engine` / `make product-test PRODUCT=engine`.
- A new compressor is a self-contained file in `compressors/` + tests, registered
Steady7 mentions in 2 weeks
1 project uses a version of this
115k7mo agoReviewMountCreate a free account to mount
buildReminder`/`isPrefixed`/`normMode`. No chrome/DOM/network. Loaded first (exposes `self.CavemanDirective`) and required directly by the test suite.
- `src/caveman.js` — content script: per-site composer adapter + capture-phase send interception. Prepends the directive
Steady7 mentions in 2 weeks
No other project uses it yet
115k7mo agoReviewMountCreate a free account to mount
never raw input as JSON.
## Conventions
- Build/test: `make product-build PRODUCT=mcp` / `make product-test PRODUCT=mcp`.
- **stdout is the protocol channel** — logs go to stderr only (a dedicated test
Steady7 mentions in 2 weeks
No other project uses it yet
115k7mo agoReviewMountCreate a free account to mount
sentence (must/cannot/required/bounds/format/
ISO/RFC/absolute/etc.). `default`, `const`, and internal `$ref` targets survive. Golden and
adversarial conformance tests lock these construction surfaces; over-keep is safer than a retry.
## Conventions
- Build/test: `make product
Steady7 mentions in 2 weeks
No other project uses it yet
115k7mo agoReviewMountCreate a free account to mount
endpoint, search embeddings, federated docs, build pipeline), `ask-the-docs` has the reference notes.
## Test requirements
Before running tests for `apps/docs`, ensure local Supabase is available
Steady6 mentions in 2 weeks
No other project uses it yet
114k34d agoReviewMountCreate a free account to mount
Automated App Launches
- Set `ORCA_BACKGROUND_LAUNCH=1` for all tests and agent-launched apps. Use
[`orca-app.ts`](e2e/helpers/orca-app.ts) / [`orca-restart.ts`](e2e/helpers/orca-restart.ts);
raw `electron.launch()` calls must pass the env explicitly.
- Keep windows
112k3mo agoReviewMountCreate a free account to mount