VersionControl:PRs/rabbithole/3
From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
| State | 🟣 merged 2026-10-30 18:28:13 |
|---|---|
| Worked on by | not said |
| Moods | not said |
| Deploy | not said |
| Branch | tests-and-scene-classes → main, by magent-cryptograss
|
| Opened · last pushed | 2026-10-18 16:20:44 · 2026-10-30 16:39:38 |
The repo had `vitest` configured and no tests. These are the ones that would have caught what the last two days turned up.
## The tests
**`tests/player/timeline.test.js`** — the pure logic. How sections lay out after the last explicit time, how a per-section `length` overrides `standardSectionLength`, how a `band` shortcut and a later individual entry decide whether somebody is in or out, and what weight each feature scene gets. They call the methods on the prototype rather than constructing the player, which wants a Webamp and a DOM; `webamp` and `packery` are aliased to stubs because the player imports them at module scope and webamp reads `window` on import.
One thing they pin down without endorsing: a sub-moment's key inside a section is read as an **absolute** time, not an offset, so `section1: { 3: {...} }` lands at 3 — before the section it was written inside. Worth asking whether that is intended.
**`tests/shell/wiring.test.js`** — guards on the wiring, because the wiring is what broke. A scene the player can emit with no styling anywhere; a stylesheet no page loads; two shells where the deployed URL fallback serves the older one. They read files as text on purpose: a test needing a browser would not have got written, and these cost nothing.
## Two guards failed, so this fixes them
- **Restores `[musicianScene]` as the card's class.** 2e83c1a (15 Sep 2025, *"Multiple feature artists now possible, not just a single soloist"*) added a feature map and two consumers. Only the weighting half survived here, so `cooldown`, `harmony` and `rhythm` reordered the cards and never coloured them — and the CSS for them, left behind in arthel, read as dead code. I called it dead; Justin said we were mid-implementation and he was right. Inert for the timelines we have, which use `solo` and `pickup`.
- **Adds `src/styles/scenes.css`** with the three missing scenes, and ports `pickup-rise` from arthel's stylesheet where nothing loaded it. Honours `prefers-reduced-motion`. The shell loads it, which is also a first step away from the inline styles.
## The third guard stays failing, on purpose
`it.fails()` on *which shell is the product*. `shell.html` is from April and carries the old sidebar; `pickipedia-demo.html` carries the bottom bar; Caddy's `try_files` fallback serves `shell.html`, so a deep link gets the older one. That is a decision, not a defect — and resolving it will trip the marker, which is the prompt to delete it.
## Checks
- 22 tests, green.
- With the two source fixes stashed, those two guards fail — so they are testing something.
- Separate from #2 on purpose, so that one stays reviewable as the bottom-bar change it is.