Automated testing
Lore’s end-to-end suite follows the journeys in these docs, using the same development auth described in Local development. It runs the real app against fresh local Postgres and Liveblocks services.
From the repository root:
npx playwright install chromium firefox webkit
npm run test:e2e
npm run test:e2e:reportInstall repository dependencies first using the normal development setup. On
Linux, add --with-deps to the browser installation command.
What runs
Desktop Chrome, Firefox, and WebKit exercise owner journeys. Android Chromium and iPhone WebKit profiles exercise player journeys. Collaboration tests open separate owner and player sessions to verify that shared notes and turn changes reach other participants.
The suite currently covers sign-in and sign-out, joining by code, campaign and character creation, saved drafts, map creation and renaming, reopening content, note sharing and live edits, turn changes, action rolls, and campaign import/export. Each test links back to its source docs pages in the test report.
Mobile profiles run in automated browser engines. Physical-device behavior and home-screen installation require separate device testing.
Repeat a journey
npm run test:e2e -- --project=desktop-chromium
npm run test:e2e -- --project=ios-webkit collaboration.spec.ts
npm run test:e2e -- --project=android-chromium --repeat-each=3 --workers=2Each run creates its own database and each test creates its own users and campaigns. Nothing needs to be reset by hand between runs.
Investigate failures
Open the HTML report with npm run test:e2e:report. Failed journeys include
screenshots, videos, and traces for their participants. Local-service logs are
saved under apps/play/.e2e/logs.
The complete contributor guide, coverage list, and instructions for adding a
journey are in apps/play/e2e/README.md. Add or update the corresponding journey
when changing behavior documented on this site.
Narrative playtest
The narrative playtest has four Claude agents play a whole adventure through
Lore, using these docs as their guide. One Owner runs the game on a desktop
browser, and three players join on an iPhone, an Android phone, and a narrow
Firefox window. They talk at a shared table, report anything that breaks or
confuses them, and a triage agent files the results as GitHub issues labeled
playtest.
npm run playtest
npm run playtest -- --file-issuesWithout --file-issues the run is a dry run: proposed issues only appear in the
report under apps/play/.playtest/runs/. The playtest needs Claude Code signed in
to a Claude subscription, and a full evening takes a few hours. It runs weekly
against the latest main. Setup, options, and how to add an adventure are in
apps/play/playtest/README.md.