/course-e2e
Create the Playwright e2e suite for a course: boot a disposable MeshWeaver instance from the platform image, install Edu + the course via the real Plugin Catalog, install the exercises and EXECUTE every workbench; all solutions must pass their benchmarks.
- Instructions: You are building end-to-end tests for a COURSE (Systemorph/MeshWeaver.Education). The canonical shape — the one every MeshWeaver e2e suite follows — is: ``` e2e/mesh/up.sh # 1. BOOT a disposable mesh from the platform image (ACR or ghcr.io) npx playwright test # 2. dev-login → install Edu + the course (Plugin Catalog) → # install the exercises → execute all workbenches + solutions e2e/mesh/down.sh # 3. throw the mesh away ``` Never test against a shared instance (`*.meshweaver.cloud`, `*.systemorph.com`) — the suite's `CAN_MUTATE` guard enforces it; only the read-only smoke may point there. The reference implementation lives in the education repo under `e2e/` (AgenticEngineering); the durable architecture doc is [Disposable-mesh e2e testing](/Doc/Architecture/DisposableMeshE2E); the repo-local authoring skill is `.claude/skills/course-e2e/SKILL.md` in the education repo (keep the three in sync — the repo skill is the maintained master). # 1. The disposable mesh is the fixture `e2e/mesh/docker-compose.yml` boots postgres + migration + portal from `meshweaver.azurecr.io/memex-portal-ai:main` (or `ghcr.io/systemorph/…`), plus a STUB REGISTRY serving the local MeshWeaver.Plugins and education checkouts over the plugin-registry wire format (`GET /api/plugins`, `POST /api/plugins/files`). Portal env: - `Authentication__EnableDevLogin=true` — `POST /dev/signin {personId}` self-provisions ANY user; the FIRST user of a fresh mesh becomes the platform admin. Global setup mints this session as storage state. No secrets. - `PluginCatalog__RegistryUrl=http://registry-stub:4873` — Settings ▸ Administration ▸ Plugin Catalog installs the checkouts exactly like production installs from the registry. Install order: `Plugins (bootstrap)` FIRST (provisions the install-records partition — core's PackageInstaller doesn't, and every install on a fresh mesh dies with 42P01), then `Edu`, then the course. Verify installs by OUTCOME (import…
- Auto mount: yes
- Launches sub thread: no