fuzzyworld

explodorama / CI

CI failed: 805e7a9ffde3

Branch v0.2.0 · commit · started 2026-11-03 06:33:38 UTC · 1m 30s · runner truenas

✗ test · test · failed · 1m 17s · exit code 1
fw-runner truenas: test (test) in node:22
$ npm ci

added 47 packages, and audited 48 packages in 11s

13 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
$ npm test

> explodorama@0.2.0 test
> vitest run


 RUN  v5.0.5 /builds/explodorama

 ✓ test/padMap.test.ts (59 tests) 40ms
 ✓ test/gamepad.test.ts (31 tests) 36ms
 ✓ test/charges.test.ts (33 tests) 47ms
 ✓ test/enemies.test.ts (153 tests) 236ms
 ✓ test/powerups.test.ts (131 tests) 249ms
 ✓ test/oil-slide.test.ts (24 tests) 28ms
 ✓ test/hazards.test.ts (17 tests) 169ms
 ✓ test/options.test.ts (116 tests) 128ms
 ✓ test/new-powers.test.ts (16 tests) 31ms
 ✓ test/keyCursor.test.ts (24 tests) 22ms
 ✓ test/padTiles.test.ts (22 tests) 26ms
 ✓ test/padDialog.test.ts (19 tests) 13ms
 ✓ test/picks.test.ts (20 tests) 31ms
 ✓ test/autopilot.test.ts (13 tests) 269ms
 ✓ test/farTiles.test.ts (27 tests) 445ms
 ✓ test/padGlyph.test.ts (14 tests) 18ms
 ✓ test/new-enemies.test.ts (13 tests) 31ms
 ✓ test/q75.test.ts (11 tests) 57ms
 ✓ test/path.test.ts (15 tests) 17ms
 ✓ test/turn.test.ts (12 tests) 24ms
 ❯ test/keyDemo.test.ts (68 tests | 1 failed) 54650ms
   ❯ keyPlan on the demo scenes (53)
     ✓ tapMove: every turn has keys that, replayed through the game's rules, play that action on that tile 36ms
     ✓ bombButton: every turn has keys that, replayed through the game's rules, play that action on that tile 66ms
     ✓ wait: every turn has keys that, replayed through the game's rules, play that action on that tile 488ms
     ✓ kill: every turn has keys that, replayed through the game's rules, play that action on that tile 2160ms
     ✓ arrows: every turn has keys that, replayed through the game's rules, play that action on that tile 1503ms
     ✓ escape: every turn has keys that, replayed through the game's rules, play that action on that tile 77ms
     ✓ chain: every turn has keys that, replayed through the game's rules, play that action on that tile 3404ms
     ✓ lingering: every turn has keys that, replayed through the game's rules, play that action on that tile 302ms
     ✓ enemies: every turn has keys that, replayed through the game's rules, play that action on that tile 64ms
     ✓ coins: every turn has keys that, replayed through the game's rules, play that action on that tile 2499ms
     ✓ gem: every turn has keys that, replayed through the game's rules, play that action on that tile 991ms
     ✓ bombPlus: every turn has keys that, replayed through the game's rules, play that action on that tile 1501ms
     ✓ firePlus: every turn has keys that, replayed through the game's rules, play that action on that tile 127ms
     ✓ fusePlus: every turn has keys that, replayed through the game's rules, play that action on that tile 530ms
     ✓ run: every turn has keys that, replayed through the game's rules, play that action on that tile 756ms
     ✓ kick: every turn has keys that, replayed through the game's rules, play that action on that tile 705ms
     ✓ throw: every turn has keys that, replayed through the game's rules, play that action on that tile 194ms
     ✓ teleport: every turn has keys that, replayed through the game's rules, play that action on that tile 1136ms
     ✓ diagonal: every turn has keys that, replayed through the game's rules, play that action on that tile 1333ms
     ✓ detonate: every turn has keys that, replayed through the game's rules, play that action on that tile 81ms
     ✓ rpg: every turn has keys that, replayed through the game's rules, play that action on that tile 262ms
     ✓ proximity: every turn has keys that, replayed through the game's rules, play that action on that tile 67ms
     ✓ slide: every turn has keys that, replayed through the game's rules, play that action on that tile 47ms
     ✓ icbm: every turn has keys that, replayed through the game's rules, play that action on that tile 367ms
     ✓ wallPass: every turn has keys that, replayed through the game's rules, play that action on that tile 74ms
     ✓ bombPass: every turn has keys that, replayed through the game's rules, play that action on that tile 47ms
     ✓ flamePass: every turn has keys that, replayed through the game's rules, play that action on that tile 136ms
     ✓ star: every turn has keys that, replayed through the game's rules, play that action on that tile 540ms
     ✓ pierce: every turn has keys that, replayed through the game's rules, play that action on that tile 3185ms
     ✓ power: every turn has keys that, replayed through the game's rules, play that action on that tile 3225ms
     ✓ nuke: every turn has keys that, replayed through the game's rules, play that action on that tile 2397ms
     ✓ acid: every turn has keys that, replayed through the game's rules, play that action on that tile 542ms
     ✓ rubble: every turn has keys that, replayed through the game's rules, play that action on that tile 2084ms
     ✓ shield: every turn has keys that, replayed through the game's rules, play that action on that tile 298ms
     ✓ freeze: every turn has keys that, replayed through the game's rules, play that action on that tile 4164ms
     × decoy: every turn has keys that, replayed through the game's rules, play that action on that tile 9064ms
     ✓ exit: every turn has keys that, replayed through the game's rules, play that action on that tile 3305ms
     ✓ doorBlast: every turn has keys that, replayed through the game's rules, play that action on that tile 1175ms
     ✓ bush: every turn has keys that, replayed through the game's rules, play that action on that tile 350ms
     ✓ bushFire: every turn has keys that, replayed through the game's rules, play that action on that tile 1148ms
     ✓ metal: every turn has keys that, replayed through the game's rules, play that action on that tile 1022ms
     ✓ oil: every turn has keys that, replayed through the game's rules, play that action on that tile 845ms
     ✓ oilSlide: every turn has keys that, replayed through the game's rules, play that action on that tile 33ms
     ✓ spikes: every turn has keys that, replayed through the game's rules, play that action on that tile 49ms
     ✓ barrel: every turn has keys that, replayed through the game's rules, play that action on that tile 1491ms
     ✓ dieIntoBlast: every turn has keys that, replayed through the game's rules, play that action on that tile 44ms
     ✓ dieNotFar: every turn has keys that, replayed through the game's rules, play that action on that tile 42ms
     ✓ dieBlockedIn: every turn has keys that, replayed through the game's rules, play that action on that tile 219ms
     ✓ dieChain: every turn has keys that, replayed through the game's rules, play that action on that tile 309ms
     ✓ dieEnemy: every turn has keys that, replayed through the game's rules, play that action on that tile 51ms
     ✓ dieDetonator: every turn has keys that, replayed through the game's rules, play that action on that tile 34ms
     ✓ dieRun: every turn has keys that, replayed through the game's rules, play that action on that tile 61ms
     ✓ every scene the keyboard plays, whose touch caption talks of a tap, finger or hold, has a key caption 1ms
   ✓ keyPlan (5)
     ✓ Wait is the Space key 1ms
     ✓ a step next to you is one plain arrow 0ms
     ✓ a bomb next to you is B, then the arrow 0ms
     ✓ a far tile the nearer ones hide from M and the arrow is Shift + arrows (the first wakes the cursor), then the key 1ms
     ✓ choices and picks are left to the dialogs; an action with no tile has no plan 0ms
   ✓ runKeys (3)
     ✓ plays nothing before the last press, or from keys that do nothing 0ms
     ✓ the first Shift + arrow only shows the cursor on the player; the next hops it 0ms
     ✓ Space away from the cursor on the player does not wait 0ms
   ✓ pressParts (2)
     ✓ a hop holds Shift, a pan Alt; the charge key is V 0ms
     ✓ every part has a picture 0ms
   ✓ keyCaptionHtml (3)
     ✓ turns every token into a key picture 0ms
     ✓ throws on an unknown token 1ms
     ✓ every scene caption and still-scene caption draws 2ms
   ✓ keyDemoOrder (2)
     ✓ puts the controls first, then the keyboard's own scenes 0ms
     ✓ drops the touch-only scenes and the ones that need a dialog 1ms
 ✓ test/targetLabel.test.ts (11 tests) 20ms
 ❯ test/padDemo.test.ts (67 tests | 1 failed) 56143ms
   ❯ padPlan on the demo scenes (53)
     ✓ tapMove: every turn has a plan whose presses end on the action's tile with the face button that does it 65ms
     ✓ bombButton: every turn has a plan whose presses end on the action's tile with the face button that does it 88ms
     ✓ wait: every turn has a plan whose presses end on the action's tile with the face button that does it 400ms
     ✓ kill: every turn has a plan whose presses end on the action's tile with the face button that does it 2509ms
     ✓ arrows: every turn has a plan whose presses end on the action's tile with the face button that does it 1480ms
     ✓ escape: every turn has a plan whose presses end on the action's tile with the face button that does it 88ms
     ✓ chain: every turn has a plan whose presses end on the action's tile with the face button that does it 3557ms
     ✓ lingering: every turn has a plan whose presses end on the action's tile with the face button that does it 310ms
     ✓ enemies: every turn has a plan whose presses end on the action's tile with the face button that does it 76ms
     ✓ coins: every turn has a plan whose presses end on the action's tile with the face button that does it 2586ms
     ✓ gem: every turn has a plan whose presses end on the action's tile with the face button that does it 1003ms
     ✓ bombPlus: every turn has a plan whose presses end on the action's tile with the face button that does it 1534ms
     ✓ firePlus: every turn has a plan whose presses end on the action's tile with the face button that does it 110ms
     ✓ fusePlus: every turn has a plan whose presses end on the action's tile with the face button that does it 535ms
     ✓ run: every turn has a plan whose presses end on the action's tile with the face button that does it 731ms
     ✓ kick: every turn has a plan whose presses end on the action's tile with the face button that does it 768ms
     ✓ throw: every turn has a plan whose presses end on the action's tile with the face button that does it 188ms
     ✓ teleport: every turn has a plan whose presses end on the action's tile with the face button that does it 1136ms
     ✓ diagonal: every turn has a plan whose presses end on the action's tile with the face button that does it 1354ms
     ✓ detonate: every turn has a plan whose presses end on the action's tile with the face button that does it 81ms
     ✓ rpg: every turn has a plan whose presses end on the action's tile with the face button that does it 210ms
     ✓ proximity: every turn has a plan whose presses end on the action's tile with the face button that does it 106ms
     ✓ slide: every turn has a plan whose presses end on the action's tile with the face button that does it 34ms
     ✓ icbm: every turn has a plan whose presses end on the action's tile with the face button that does it 393ms
     ✓ wallPass: every turn has a plan whose presses end on the action's tile with the face button that does it 101ms
     ✓ bombPass: every turn has a plan whose presses end on the action's tile with the face button that does it 70ms
     ✓ flamePass: every turn has a plan whose presses end on the action's tile with the face button that does it 133ms
     ✓ star: every turn has a plan whose presses end on the action's tile with the face button that does it 556ms
     ✓ pierce: every turn has a plan whose presses end on the action's tile with the face button that does it 3213ms
     ✓ power: every turn has a plan whose presses end on the action's tile with the face button that does it 3295ms
     ✓ nuke: every turn has a plan whose presses end on the action's tile with the face button that does it 2411ms
     ✓ acid: every turn has a plan whose presses end on the action's tile with the face button that does it 565ms
     ✓ rubble: every turn has a plan whose presses end on the action's tile with the face button that does it 2201ms
     ✓ shield: every turn has a plan whose presses end on the action's tile with the face button that does it 290ms
     ✓ freeze: every turn has a plan whose presses end on the action's tile with the face button that does it 4230ms
     × decoy: every turn has a plan whose presses end on the action's tile with the face button that does it 9217ms
     ✓ exit: every turn has a plan whose presses end on the action's tile with the face button that does it 3335ms
     ✓ doorBlast: every turn has a plan whose presses end on the action's tile with the face button that does it 1198ms
     ✓ bush: every turn has a plan whose presses end on the action's tile with the face button that does it 380ms
     ✓ bushFire: every turn has a plan whose presses end on the action's tile with the face button that does it 1148ms
     ✓ metal: every turn has a plan whose presses end on the action's tile with the face button that does it 1043ms
     ✓ oil: every turn has a plan whose presses end on the action's tile with the face button that does it 883ms
     ✓ oilSlide: every turn has a plan whose presses end on the action's tile with the face button that does it 45ms
     ✓ spikes: every turn has a plan whose presses end on the action's tile with the face button that does it 61ms
     ✓ barrel: every turn has a plan whose presses end on the action's tile with the face button that does it 1551ms
     ✓ dieIntoBlast: every turn has a plan whose presses end on the action's tile with the face button that does it 60ms
     ✓ dieNotFar: every turn has a plan whose presses end on the action's tile with the face button that does it 49ms
     ✓ dieBlockedIn: every turn has a plan whose presses end on the action's tile with the face button that does it 280ms
     ✓ dieChain: every turn has a plan whose presses end on the action's tile with the face button that does it 324ms
     ✓ dieEnemy: every turn has a plan whose presses end on the action's tile with the face button that does it 54ms
     ✓ dieDetonator: every turn has a plan whose presses end on the action's tile with the face button that does it 36ms
     ✓ dieRun: every turn has a plan whose presses end on the action's tile with the face button that does it 47ms
     ✓ every scene the pad plays, whose touch caption talks of a tap, finger or hold, has a pad caption 1ms
   ✓ cursorPath (3)
     ✓ is empty to the player's own tile 0ms
     ✓ one press to a tile next to the player 0ms
     ✓ null for a tile that is not actionable 0ms
   ✓ padPlan (5)
     ✓ Wait is one press, with the cursor on the player 0ms
     ✓ a step is a direction, then Move 1ms
     ✓ choices and picks are left to the dialogs 0ms
     ✓ a tile where no face button does the action has no plan (the pad picks per button: a tile with two options is not shown) 3ms
     ✓ an action with no tile, or a tile nothing can be done on, has no plan 0ms
   ✓ padCaptions (2)
     ✓ every scene caption and still-scene caption draws, with no unknown picture name 5ms
     ✓ the charge scenes name the charge button 0ms
   ✓ pressPart (1)
     ✓ maps the four directions, the face buttons and the rest to the controller's parts 0ms
   ✓ padHops (1)
     ✓ hops to tiles not been on, the first from the player, none twice 1ms
   ✓ padDemoOrder (2)
     ✓ puts the pad scenes first 0ms
     ✓ drops the touch-only scenes and the ones that need a dialog 1ms
 ✓ test/padTarget.test.ts (12 tests) 14ms
 ✓ test/danger.test.ts (4 tests) 765ms
   ✓ danger overlay (1)
     ✓ "now" is exactly what burns if the player waits, and "next" what burns the turn after 732ms
 ✓ test/shop.test.ts (8 tests) 36ms
 ✓ test/spatial.test.ts (10 tests) 13ms
 ✓ test/test-scenes.test.ts (18 tests) 74ms
 ✓ test/padHold.test.ts (8 tests) 9ms
 ✓ test/scores.test.ts (5 tests) 22ms
 ✓ test/animation.test.ts (5 tests) 15ms
 ✓ test/changelog.test.ts (8 tests) 15ms
 ✓ test/demoInput.test.ts (5 tests) 8ms
 ✓ test/padPlaces.test.ts (3 tests) 15ms
 ✓ test/routePreview.test.ts (8 tests) 216ms
 ✓ test/explosions.test.ts (4 tests) 11ms
 ✓ test/reveal.test.ts (5 tests) 9ms
 ✓ test/levelgen.test.ts (201 tests) 287ms
 ✓ test/sprites.test.ts (2 tests) 11ms
 ✓ test/holdRing.test.ts (4 tests) 9ms
 ✓ test/toast.test.ts (3 tests) 6ms
 ❯ test/demo.test.ts (62 tests | 1 failed) 56061ms
   ❯ demo scenes (62)
     ✓ tapMove: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 34ms
     ✓ holdBomb: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 47ms
     ✓ bombButton: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 41ms
     ✓ wait: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 387ms
     ✓ autoMove: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 56ms
     ✓ kill: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1903ms
     ✓ arrows: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1265ms
     ✓ escape: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 75ms
     ✓ chain: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 3233ms
     ✓ lingering: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 285ms
     ✓ enemies: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 60ms
     ✓ coins: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 2408ms
     ✓ gem: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 921ms
     ✓ bombPlus: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1626ms
     ✓ firePlus: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 98ms
     ✓ fusePlus: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 537ms
     ✓ run: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 676ms
     ✓ kick: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 701ms
     ✓ throw: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 181ms
     ✓ teleport: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1261ms
     ✓ diagonal: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1303ms
     ✓ detonate: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 74ms
     ✓ rpg: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 212ms
     ✓ proximity: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 59ms
     ✓ slide: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 23ms
     ✓ icbm: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 322ms
     ✓ wallPass: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 62ms
     ✓ bombPass: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 55ms
     ✓ flamePass: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 128ms
     ✓ star: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 511ms
     ✓ pierce: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 2989ms
     ✓ power: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 3201ms
     ✓ nuke: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 2461ms
     ✓ acid: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 640ms
     ✓ rubble: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1926ms
     ✓ shield: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 213ms
     ✓ freeze: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 4017ms
     × decoy: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 8918ms
     ✓ chargeSwap: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 49ms
     ✓ exit: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 3246ms
     ✓ doorBlast: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1147ms
     ✓ lastEnemy: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 258ms
     ✓ crate: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 56ms
     ✓ rainbowGem: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 36ms
     ✓ immortal: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 32ms
     ✓ pillar: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 51ms
     ✓ bush: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 363ms
     ✓ bushFire: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1126ms
     ✓ metal: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1023ms
     ✓ oil: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 815ms
     ✓ oilSlide: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 63ms
     ✓ spikes: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 77ms
     ✓ barrel: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 1759ms
     ✓ dieIntoBlast: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 59ms
     ✓ dieNotFar: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 49ms
     ✓ dieBlockedIn: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 248ms
     ✓ dieChain: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 301ms
     ✓ dieEnemy: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 54ms
     ✓ dieDetonator: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 28ms
     ✓ dieRun: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene) 40ms
     ✓ rubble: the ceiling falls at the moment, and the aftermath shows it 958ms
     ✓ the same seed gives the same scene 1303ms
 ✓ test/channel.test.ts (2 tests) 5ms
 ✓ test/turnNumber.test.ts (1 test) 5ms
 ✓ test/version.test.ts (1 test) 5ms
 ✓ test/balance.test.ts (3 tests) 1103ms
   ✓ the balance lab (3)
     ✓ the Careful bot clears the first levels of a seed without stalling 509ms
     ✓ the same seed and bot play the same run 590ms

⎯⎯⎯⎯⎯⎯⎯ Failed Tests 3 ⎯⎯⎯⎯⎯⎯⎯

 FAIL  test/demo.test.ts > demo scenes > decoy: found, its moment 3-6 turns in from a calm start, each turn played by its gesture, the player alive (or dying at the end of a death scene)
Error: Test timed out in 5000ms.
If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout".
 ❯ test/demo.test.ts:39:5
     37| describe('demo scenes', () => {
     38|   for (const kind of SCENE_KINDS.filter((k) => !SCENES[k].fixed)) {
     39|     it(`${kind}: found, its moment ${MIN_STEPS}-${MAX_STEPS} turns in …
       |     ^
     40|       for (let seed = 1; seed <= 6; seed++) {
     41|         const scene = generateScene(kind, seed)!

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/3]⎯

 FAIL  test/keyDemo.test.ts > keyPlan on the demo scenes > decoy: every turn has keys that, replayed through the game's rules, play that action on that tile
Error: Test timed out in 5000ms.
If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout".
 ❯ test/keyDemo.test.ts:14:5
     12| describe('keyPlan on the demo scenes', () => {
     13|   for (const kind of KINDS) {
     14|     it(`${kind}: every turn has keys that, replayed through the game's…
       |     ^
     15|       for (let seed = 1; seed <= 6; seed++) {
     16|         const scene = generateScene(kind, seed)!

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/3]⎯

 FAIL  test/padDemo.test.ts > padPlan on the demo scenes > decoy: every turn has a plan whose presses end on the action's tile with the face button that does it
Error: Test timed out in 5000ms.
If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout".
 ❯ test/padDemo.test.ts:14:5
     12| describe('padPlan on the demo scenes', () => {
     13|   for (const kind of KINDS) {
     14|     it(`${kind}: every turn has a plan whose presses end on the action…
       |     ^
     15|       for (let seed = 1; seed <= 6; seed++) {
     16|         const scene = generateScene(kind, seed)!

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/3]⎯


 Test Files  3 failed | 43 passed (46)
      Tests  3 failed | 1295 passed (1298)
   Start at  06:34:02
   Duration  63.39s (tests 94%, import 3%, transform 3%)