Connection
Sign in
/auth/login, then
/auth/me for your identity — a name in the token's
extras wins over the field above.
Seeded users (Alice / Bob / Carol) all use the password
test1234; picking a name fills the email and password for you.
Run POST /seed once first if sign-in is refused.
Choose a channel
Channel:
Path parameters bound by the channel
Session resolved by the channel
Frame log
QA resources — rebuild this workspace
Everything this app talks to lives in one XanoScript multidoc: 12 channels, 38 messages, 9 channel triggers, the auth API group and the audit table. Copy it into a new, empty workspace to reproduce the whole fixture.
{"delivered_local":0,"dropped":true}, or the message errors
Unknown message type. A full import into a new workspace
serves it correctly.
Steps
- Create a new workspace, then enable Allow Push in its settings — new workspaces default it OFF and the import 500s without it.
- Copy the multidoc below and import it (full import, not partial).
- Seed the test users:
POST /api:<api-canonical>/seed. - Read back the new canonicals — they are globally unique per instance, so a rebuilt workspace gets a different realtime_server and api_group canonical than the one shown on the Connection screen. Paste them there.
Test accounts after seeding: alice@test.local,
bob@test.local, carol@test.local, all with the
password test1234. The seed also returns a ready-made token
per user, so either sign-in path works. (Not something shorter: the user
table enforces min:8|minAlpha:1|minDigit:1.)
workspace.xs
Channel & message settings — behavioural check
Each case drives real WebSocket clients and asserts what the server actually does. Two cases are expected to report BUG — they pin open product defects, so a green run means “nothing moved”, not “nothing is wrong”. A BUG turning into FIXED is the signal to tighten it. Authenticated cases need seeded users, which come from the API group on the Connection screen.