Skip to Content
ContributingAutomated testing

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:report

Install 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=2

Each 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-issues

Without --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.

Last updated on