The web UI lives in res/app/src (React + TypeScript). Its specs sit next to the
code as *.test.ts(x) and run with Vitest in jsdom, no browser needed:
npm run test:component
Type checking and linting of the UI are part of npm run lint (node build.mts lint runs
eslint and tsc -p res/app/tsconfig.json).
The end-to-end suite is Playwright, in test/playwright. It drives a running
stf local through a real Chromium.
- Run RethinkDB
rethinkdb - Compile
lib/and run stf with mock authWait till STF is fully functional and devices are discoverednode build.mts compile ./bin/stf local --auth-type mock - Install and run the suite
cd test/playwright npm install && npx playwright install chromium npx playwright test ui.spec.ts STF_DEVICE_SERIAL=emulator-5554 npx playwright test
ui.spec.ts needs no device. device.spec.ts skips itself unless
STF_DEVICE_SERIAL names a connected device.
Results land in test-results/playwright (an HTML report under html/, traces
and videos under artifacts/).
export STF_URL='http://stf-url/'export STF_USERNAME='user'export STF_EMAIL='user@example.com'cd test/playwright && npx playwright test