Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,15 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### Under the hood (tidying)

- **Every health model, proven in a browser.** The second gap in e2e/COVERAGE.md is closed: a new
browser test plays each of the seven health models a system can choose, one at a time. A player
with a token hurts and heals it from HIT_POINTS (a pool under its own name, two tracks where
damage past the second spills into the first, damage types marked lightly and heavily, harm
levels where a full level moves harm up, a wound count down to INCAPACITATED, hit locations with
their notes, and none, which says harm is conditions). The GM sets the second track's maximum.
Another player watches from the chat's user list and sees only the picture: the heartbeat, a bar,
the worst harm's name, which place is hurt. The test also reads what the server sends that
player, and it never holds a number or a note.
- **Importing a list of choices, the server's half (choices import 1).** The server can now read a
file of a list's options and their features (`[options]` name, description, requires;
`[features]` option, feature, level, words, uses, refill) against the draft and say what it
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1268,6 +1268,7 @@ CITY_NET/
│ ├── graph-shots.spec.ts # Only with GRAPH_SHOTS=1: pictures of the graph view (CWN open, fitted, each theme) into docs/mockups/shots, to look at before a PR that changes how it looks
│ ├── builder-journey.spec.ts # The GM builds a system from + NEW through the builder's screens, publishes it, publishes v2 through the version preview, and switches the game to it; from Phase 6 a save with a target whose players see only the verdict, rolled by a player from their sheet, the GM told more
│ ├── player-journey.spec.ts # A custom system played in two browsers: a player makes a character in its words and numbers; the GM types in a catalogue, gives them an item and calls a rest; the player sees both
│ ├── health-models.spec.ts # Every health model at the table: a player hurts and heals their token from HIT_POINTS under each of the seven, the GM sets a second track's maximum, another player watches from GLOBAL_CHAT and is sent no number or note (coverage family 2)
│ ├── sheet-choices.spec.ts # A custom system's CHOICES block at the table (7a3b1): a player's class not met off with what it needs, SOLDIER picked with its features and its bonus on Defense, raised to level 2 unlocking the next feature, a use ticked off and given back by a short rest the GM calls; as the server keeps it; the GM on their own sheet adding an option not met, the bonus named on Defense, and a pick taken away, asked first (7a3b2)
│ ├── sheet-visibility.spec.ts # Who sees what on a customized sheet: the owner (the GM's field read-only), another player looking them up from GLOBAL_CHAT (public lines only, nothing else sent), the GM opening the whole sheet the same way and setting the GM's field (coverage family 1)
│ └── builder-smoke.spec.ts # The GM signs in, opens the System Builder, meets and skips the first-time tour (reset first), finds MY SYSTEMS, and goes back to the map
Expand Down
4 changes: 2 additions & 2 deletions e2e/COVERAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ panel), so a control that looks fine but does nothing is caught for all of them.

| Option | Variants | Server tests | Browser test | Status |
|---|---|---|---|---|
| Health model | pool, two tracks, typed, harm levels, wounds, hit locations, none | `health`, `health_view`, `parts_health`, `try_health` | `player-journey` and `sheet-rolls` run a pool, never hurt or healed | **GAP**: no model damaged, healed or shown at the table |
| Health model | pool, two tracks, typed, harm levels, wounds, hit locations, none | `health`, `health_view`, `parts_health`, `try_health` | `health-models` (each one hurt and healed by its owner from HIT_POINTS, the GM setting a second track's maximum, another player watching from the chat; what that player is sent checked for numbers and notes; a model needing a sheet refused without one) | **AT THE TABLE** |
| Advancement | XP levels, milestone, spend XP, improve by use | `core` | | **GAP**, comes alive with 7d |
| Dice the game uses, distance unit | | `core` | | **GAP** |

Expand Down Expand Up @@ -131,7 +131,7 @@ panel), so a control that looks fine but does nothing is caught for all of them.
Fitted into Phase 7, one family between each of its pieces, riskiest first:

1. ~~**Sheet visibility**~~: done, `sheet-visibility.spec.ts`. It also gave the journeys a way to reach another player's token without the 3D map: GLOBAL_CHAT, their name, VIEW_PLAYER_INFO.
2. **Health models**: each model damaged, healed and shown at the table, and what other players see.
2. ~~**Health models**~~: done, `health-models.spec.ts`. It gave the journeys a token on the map without the 3D map too: the GM posts one to /api/locations, and HIT_POINTS opens it.
3. **Parts switched off**: each part hidden at the table while off, and back when on.
4. **House rules at the table**: switched in the GAME tab, and what waits on them shown and hidden.
5. **Conditions on tokens**: put on, a modifier reaching a stat, a formula and every roll, ending after rounds and at a rest.
Expand Down
1 change: 1 addition & 0 deletions e2e/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ frontend suites.
| `tests/dice-tray.spec.ts` | DICE_TRAY.EXE's new dice (6c4b2b): a handful of d4 to d20 rolled from the dice menu, the throw naming every die and the face it landed on (what it shows, less one); a running system's own dice (a drawn SKULL, a bad die) rolled by a player, each landing on a face showing what the log wrote, the bad die in the danger color; no errors on the page (with GRAPH_SHOTS=1, the tray early in the throw, mid-throw and landed); and the title bar's ANIMATION toggle (6c4b3b): turned off, still off after a reload and a fresh sign-in (kept on the account), turned back on; and no queue (6c4c): two quick rolls from one person sharing the server's group and landing as one throw, then a roll a moment later cutting in with the two before already in the record and its own not yet; and the tray in the theme picked: in Oceanic, its board's lit dots and its record are cyan, not Classic's green (it once sat outside the app's theme); and the board (6c4e): rolling while the dice are thrown, then the total in big digits once they are down; someone else's roll flashing a player's shut tray buttons, one rail click opening the tray on its history, and the bell (right of ANIMATION) turning that off (6c4g) |
| `tests/sheet-rolls.spec.ts` | A custom system's own roll at the table (6b2a): a published system running as the game with a roll rolled by a stats group; a player's sheet showing a die button by each stat in it, and a click rolled by the server from the stored sheet (read from what it broadcasts, the line the log shows); a stat with two rolls asking first, GRIT SAVE with ADVANTAGE picked in the chooser, two d20 the higher kept; PUSH adding 2 Stress (6b3a), the chooser showing 1 OF 4, the roll paying it and the sheet showing 3, then off at 3 OF 4; and a running system's own dice in the dice menu (6c4a): listed under THIS GAME'S DICE, two Good and a Bad rolled by the server, each face as the log writes it |
| `tests/sheet-choices.spec.ts` | A custom system's CHOICES block at the table (7a3b1): a player picks a class on their sheet (one they don't meet is off, saying what it needs), its bonus reaches Defense, a level up unlocks the next feature, a use ticked off comes back with a short rest the GM calls; and the GM on their own sheet adds an option they don't meet (ADD ANYWAY), sees Guard Stance's bonus named on Defense, and takes a pick away, asked first (7a3b2) |
| `tests/health-models.spec.ts` | Every health model at the table (coverage family 2): for each, a system running it and a player's token; the player hurts and heals it from HIT_POINTS (a pool's own name; two tracks spilling over, the GM setting the second's maximum; damage types light and heavy; harm levels moving up, refused without a sheet; a wound count to INCAPACITATED; hit locations with notes; none), and another player watches from GLOBAL_CHAT (VIEW_PLAYER_INFO, HEALTH): the heartbeat's band, a bar, the worst harm's name, which place is hurt, and the frames they are sent hold no number or note |
| `tests/sheet-visibility.spec.ts` | Who sees what on a customized sheet (coverage family 1): its owner fills in a public field, a private one and a combat value and can't change the GM's field; another player, looking them up from GLOBAL_CHAT's user list (VIEW_PLAYER_INFO), sees only the public lines, and the server sends nothing else; the GM opens the whole sheet the same way (OPEN_SHEET) and sets the GM's field, which the owner then sees |
| `tests/player-journey.spec.ts` | A custom system running (set up through the API), played in two browsers at once: a player makes a character and sees the system's words and its formula worked out; the GM types in a catalogue, gives the player something from it with a note, and calls a rest from the GAME tab; the player sees the gift arrive and the rest change their sheet |
| `tests/builder-smoke.spec.ts` | The GM signs in, opens the System Builder, meets and skips the first-time tour (reset first, so it always shows), and goes back to the map |
Loading
Loading