veza/vitest-output.txt

1182 lines
77 KiB
Text
Raw Normal View History

RUN v3.2.4 /home/senke/git/talas/veza/apps/web
src/hooks/usePreload.test.ts (7 tests | 3 failed) 180ms
× usePreload > should preload images 96ms
→ waitFor is not defined
× usePreload > should preload scripts 12ms
→ waitFor is not defined
× usePreload > should preload styles 11ms
→ waitFor is not defined
✓ usePreload > should prefetch resources 14ms
✓ usePreload > should cleanup preload links on unmount 13ms
✓ usePreloadRoute > should prefetch route 7ms
✓ usePreloadRoute > should cleanup prefetch link on unmount 5ms
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue POST requests
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue POST requests
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks {"requestId":"req_1771008236442_pzzrch99v","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should not queue GET requests
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue PUT requests
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue PUT requests
[INFO] [OfflineQueue] Request queued: PUT /api/v1/tracks/123 {"requestId":"req_1771008236452_mcqgdhv9g","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue DELETE requests
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue DELETE requests
[INFO] [OfflineQueue] Request queued: DELETE /api/v1/tracks/123 {"requestId":"req_1771008236454_eg0drj5ov","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue PATCH requests
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should queue PATCH requests
[INFO] [OfflineQueue] Request queued: PATCH /api/v1/tracks/123 {"requestId":"req_1771008236455_f7r5s8cmf","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should respect priority levels
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should respect priority levels
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks {"requestId":"req_1771008236460_8sa9kbgbf","priority":"low","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should respect priority levels
[INFO] [OfflineQueue] Request queued: POST /api/v1/playlists {"requestId":"req_1771008236460_vc8ah51et","priority":"high","queueSize":2}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should respect priority levels
[INFO] [OfflineQueue] Request queued: POST /api/v1/comments {"requestId":"req_1771008236461_yzpkdfom4","priority":"normal","queueSize":3}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/0 {"requestId":"req_1771008236463_2xbedtobt","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/1 {"requestId":"req_1771008236463_j8rg176m0","priority":"normal","queueSize":2}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/2 {"requestId":"req_1771008236464_i4gg9kgbr","priority":"normal","queueSize":3}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/3 {"requestId":"req_1771008236464_q6dw1ufgx","priority":"normal","queueSize":4}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/4 {"requestId":"req_1771008236465_jmmcmjoqi","priority":"normal","queueSize":5}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/5 {"requestId":"req_1771008236465_qzw3r3uxw","priority":"normal","queueSize":6}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/6 {"requestId":"req_1771008236465_7spjbmy6y","priority":"normal","queueSize":7}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/7 {"requestId":"req_1771008236465_od52yzbjg","priority":"normal","queueSize":8}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/8 {"requestId":"req_1771008236466_cvamk9py6","priority":"normal","queueSize":9}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/9 {"requestId":"req_1771008236466_a5b24n90a","priority":"normal","queueSize":10}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/10 {"requestId":"req_1771008236466_4icvd2haj","priority":"normal","queueSize":11}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/11 {"requestId":"req_1771008236466_40p0716gu","priority":"normal","queueSize":12}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/12 {"requestId":"req_1771008236467_56pjqkbdj","priority":"normal","queueSize":13}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/13 {"requestId":"req_1771008236467_red8lifgt","priority":"normal","queueSize":14}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/14 {"requestId":"req_1771008236467_1rl0ix36m","priority":"normal","queueSize":15}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/15 {"requestId":"req_1771008236467_49a37sufo","priority":"normal","queueSize":16}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/16 {"requestId":"req_1771008236467_gqd8dje06","priority":"normal","queueSize":17}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/17 {"requestId":"req_1771008236468_4o7m4xjd3","priority":"normal","queueSize":18}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/18 {"requestId":"req_1771008236468_2xwhnij3x","priority":"normal","queueSize":19}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/19 {"requestId":"req_1771008236468_desbzitpl","priority":"normal","queueSize":20}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/20 {"requestId":"req_1771008236468_leimga6ns","priority":"normal","queueSize":21}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/21 {"requestId":"req_1771008236469_ss741qz1i","priority":"normal","queueSize":22}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/22 {"requestId":"req_1771008236469_2gxqutp96","priority":"normal","queueSize":23}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/23 {"requestId":"req_1771008236469_rra5p4tgg","priority":"normal","queueSize":24}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/24 {"requestId":"req_1771008236469_vk9aji61p","priority":"normal","queueSize":25}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/25 {"requestId":"req_1771008236469_6jue5df83","priority":"normal","queueSize":26}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/26 {"requestId":"req_1771008236470_xav3u94v1","priority":"normal","queueSize":27}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/27 {"requestId":"req_1771008236470_gac278wbo","priority":"normal","queueSize":28}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/28 {"requestId":"req_1771008236470_nqb5t9e5q","priority":"normal","queueSize":29}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/29 {"requestId":"req_1771008236470_kd89fwakx","priority":"normal","queueSize":30}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/30 {"requestId":"req_1771008236470_zqlwmkmh6","priority":"normal","queueSize":31}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/31 {"requestId":"req_1771008236471_1c5mgzwl5","priority":"normal","queueSize":32}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/32 {"requestId":"req_1771008236471_ohdyf3o63","priority":"normal","queueSize":33}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/33 {"requestId":"req_1771008236471_klyvebzxj","priority":"normal","queueSize":34}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/34 {"requestId":"req_1771008236471_kw07cxrur","priority":"normal","queueSize":35}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/35 {"requestId":"req_1771008236471_82c5ueke2","priority":"normal","queueSize":36}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/36 {"requestId":"req_1771008236472_uopsw0s4i","priority":"normal","queueSize":37}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/37 {"requestId":"req_1771008236472_kcixn7afs","priority":"normal","queueSize":38}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/38 {"requestId":"req_1771008236472_iq9lcubm3","priority":"normal","queueSize":39}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/39 {"requestId":"req_1771008236472_l9kh5lvxz","priority":"normal","queueSize":40}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/40 {"requestId":"req_1771008236473_rhwxclkyb","priority":"normal","queueSize":41}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/41 {"requestId":"req_1771008236473_u3yxz0qbr","priority":"normal","queueSize":42}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/42 {"requestId":"req_1771008236473_54kr8mroz","priority":"normal","queueSize":43}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/43 {"requestId":"req_1771008236473_1xs1eb3jg","priority":"normal","queueSize":44}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/44 {"requestId":"req_1771008236473_gjodl8u81","priority":"normal","queueSize":45}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/45 {"requestId":"req_1771008236474_r3b8zi9c0","priority":"normal","queueSize":46}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/46 {"requestId":"req_1771008236474_0avgmynl0","priority":"normal","queueSize":47}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/47 {"requestId":"req_1771008236474_c97og8et3","priority":"normal","queueSize":48}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/48 {"requestId":"req_1771008236474_jo6vcufo1","priority":"normal","queueSize":49}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/49 {"requestId":"req_1771008236475_dk7mzbdhi","priority":"normal","queueSize":50}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/50 {"requestId":"req_1771008236475_i13gaar1x","priority":"normal","queueSize":51}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/51 {"requestId":"req_1771008236475_w50c1c2wm","priority":"normal","queueSize":52}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/52 {"requestId":"req_1771008236476_pz92nmmzg","priority":"normal","queueSize":53}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/53 {"requestId":"req_1771008236476_vk81lhxvl","priority":"normal","queueSize":54}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/54 {"requestId":"req_1771008236476_tqiyq88rq","priority":"normal","queueSize":55}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/55 {"requestId":"req_1771008236477_tt53f0peo","priority":"normal","queueSize":56}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/56 {"requestId":"req_1771008236477_54bdukfxn","priority":"normal","queueSize":57}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/57 {"requestId":"req_1771008236477_dizgyii0g","priority":"normal","queueSize":58}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/58 {"requestId":"req_1771008236477_bktdae6wc","priority":"normal","queueSize":59}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/59 {"requestId":"req_1771008236478_kp7j0p47e","priority":"normal","queueSize":60}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/60 {"requestId":"req_1771008236478_k1szjn4jw","priority":"normal","queueSize":61}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/61 {"requestId":"req_1771008236478_wirgj6zun","priority":"normal","queueSize":62}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/62 {"requestId":"req_1771008236478_cvdjrpj55","priority":"normal","queueSize":63}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/63 {"requestId":"req_1771008236479_xw3ipn5ud","priority":"normal","queueSize":64}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/64 {"requestId":"req_1771008236479_q2m90q7c1","priority":"normal","queueSize":65}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/65 {"requestId":"req_1771008236479_yqb2bu3u6","priority":"normal","queueSize":66}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/66 {"requestId":"req_1771008236479_zpfqo6rur","priority":"normal","queueSize":67}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/67 {"requestId":"req_1771008236480_4cxe7apaa","priority":"normal","queueSize":68}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/68 {"requestId":"req_1771008236480_qj4ntbu0e","priority":"normal","queueSize":69}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/69 {"requestId":"req_1771008236480_uniwy8lj8","priority":"normal","queueSize":70}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/70 {"requestId":"req_1771008236480_3ebwiftaw","priority":"normal","queueSize":71}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/71 {"requestId":"req_1771008236481_el1j76ro9","priority":"normal","queueSize":72}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/72 {"requestId":"req_1771008236481_el97sto6t","priority":"normal","queueSize":73}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/73 {"requestId":"req_1771008236481_37vbsds3w","priority":"normal","queueSize":74}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/74 {"requestId":"req_1771008236482_ikqv47k5f","priority":"normal","queueSize":75}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/75 {"requestId":"req_1771008236482_rbayzjxhw","priority":"normal","queueSize":76}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/76 {"requestId":"req_1771008236482_2px6lnwqg","priority":"normal","queueSize":77}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/77 {"requestId":"req_1771008236482_x07zi5ng1","priority":"normal","queueSize":78}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/78 {"requestId":"req_1771008236483_238ydws0h","priority":"normal","queueSize":79}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/79 {"requestId":"req_1771008236483_tkdsvqxbw","priority":"normal","queueSize":80}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/80 {"requestId":"req_1771008236483_vo20i0kbl","priority":"normal","queueSize":81}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/81 {"requestId":"req_1771008236484_6o467fi6s","priority":"normal","queueSize":82}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/82 {"requestId":"req_1771008236484_806z951gn","priority":"normal","queueSize":83}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/83 {"requestId":"req_1771008236484_fdoef7m4x","priority":"normal","queueSize":84}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/84 {"requestId":"req_1771008236485_wcu4td6zh","priority":"normal","queueSize":85}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/85 {"requestId":"req_1771008236485_jek5pgbxf","priority":"normal","queueSize":86}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/86 {"requestId":"req_1771008236485_pzvskpczq","priority":"normal","queueSize":87}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/87 {"requestId":"req_1771008236485_vdbt5nfto","priority":"normal","queueSize":88}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/88 {"requestId":"req_1771008236486_z2acn8hix","priority":"normal","queueSize":89}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/89 {"requestId":"req_1771008236486_wrl2sn0l5","priority":"normal","queueSize":90}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/90 {"requestId":"req_1771008236486_xsrjcry95","priority":"normal","queueSize":91}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/91 {"requestId":"req_1771008236487_uu4s2b7bv","priority":"normal","queueSize":92}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/92 {"requestId":"req_1771008236487_sps83ba5u","priority":"normal","queueSize":93}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/93 {"requestId":"req_1771008236487_6lpzbv1rn","priority":"normal","queueSize":94}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/94 {"requestId":"req_1771008236487_vlk076ey6","priority":"normal","queueSize":95}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/95 {"requestId":"req_1771008236488_qe55ccp93","priority":"normal","queueSize":96}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/96 {"requestId":"req_1771008236488_gp7eu2vky","priority":"normal","queueSize":97}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/97 {"requestId":"req_1771008236488_96887ph12","priority":"normal","queueSize":98}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/98 {"requestId":"req_1771008236488_roc8ro4sn","priority":"normal","queueSize":99}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/99 {"requestId":"req_1771008236489_8h9k5rwue","priority":"normal","queueSize":100}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > queueRequest > should evict oldest low-priority request when queue is full
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks/new {"requestId":"req_1771008236489_roma172vo","priority":"low","queueSize":100}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should process queued requests when online
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should process queued requests when online
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks {"requestId":"req_1771008236492_5q0sb6iml","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should process queued requests when online
[INFO] [OfflineQueue] Processing 1 queued requests
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should process queued requests when online
[INFO] [OfflineQueue] Request succeeded: POST /api/v1/tracks {"requestId":"req_1771008236492_5q0sb6iml"}
stderr | src/features/streaming/hooks/usePlaybackAnalytics.test.ts > usePlaybackAnalytics > should send analytics periodically
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stdout | src/features/streaming/hooks/usePlaybackAnalytics.test.ts > usePlaybackAnalytics > should handle errors when sending analytics
[ERROR] [PlaybackAnalytics] Failed to record playback analytics after all retries: {"error":{}}
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should handle stats_update messages
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should call onAnalyticsUpdate callback when analytics update is received
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should call onStatsUpdate callback when stats update is received
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should disconnect when disconnect is called
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should reconnect on connection loss
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should cleanup on unmount
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackAnalytics.test.ts > usePlaybackAnalytics > should clear error
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should handle invalid JSON messages gracefully
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackRealtime.test.ts > usePlaybackRealtime > should update connection state when trackId changes
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stderr | src/features/streaming/hooks/usePlaybackAnalytics.test.ts > usePlaybackAnalytics > should limit completion rate to 100%
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
Warning: An update to TestComponent inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
at TestComponent (/home/senke/git/talas/veza/node_modules/@testing-library/react/dist/pure.js:307:5)
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should process queued requests when online
[INFO] [OfflineQueue] All queued requests processed successfully
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should not process queue when offline
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should not process queue when offline
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks {"requestId":"req_1771008236604_d6l2itj66","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should retry failed requests up to max retries
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should retry failed requests up to max retries
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks {"requestId":"req_1771008236607_93kx9dmpf","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should retry failed requests up to max retries
[INFO] [OfflineQueue] Processing 1 queued requests
src/features/streaming/hooks/usePlaybackRealtime.test.ts (13 tests | 8 failed) 171ms
✓ usePlaybackRealtime > should initialize with default state 50ms
✓ usePlaybackRealtime > should connect to WebSocket when trackId is provided and autoConnect is true 10ms
✓ usePlaybackRealtime > should not connect when autoConnect is false 3ms
✓ usePlaybackRealtime > should subscribe to track after connection 6ms
✓ usePlaybackRealtime > should handle analytics_update messages 16ms
× usePlaybackRealtime > should handle stats_update messages 20ms
→ waitFor is not defined
× usePlaybackRealtime > should call onAnalyticsUpdate callback when analytics update is received 6ms
→ waitFor is not defined
× usePlaybackRealtime > should call onStatsUpdate callback when stats update is received 4ms
→ waitFor is not defined
× usePlaybackRealtime > should disconnect when disconnect is called 12ms
→ waitFor is not defined
× usePlaybackRealtime > should reconnect on connection loss 9ms
→ waitFor is not defined
× usePlaybackRealtime > should cleanup on unmount 4ms
→ waitFor is not defined
× usePlaybackRealtime > should handle invalid JSON messages gracefully 13ms
→ waitFor is not defined
× usePlaybackRealtime > should update connection state when trackId changes 4ms
→ waitFor is not defined
✓ src/features/streaming/hooks/usePlaybackAnalytics.test.ts (19 tests) 171ms
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should retry on network error
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Network error: Unable to connect to server. Please check your connection and try again.","status":0,"timestamp":"2026-02-13T18:43:56.933Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should retry on network error
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Network error: Unable to connect to server. Please check your connection and try again.","status":0,"timestamp":"2026-02-13T18:43:57.933Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should save to localStorage on final failure
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Network error: Unable to connect to server. Please check your connection and try again.","status":0,"timestamp":"2026-02-13T18:43:56.966Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should save to localStorage on final failure
[INFO] [PlaybackAnalytics] Saved event to localStorage (1 pending) {"trackId":"42","playTime":180}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should not retry on 400 error
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Invalid request","status":400,"timestamp":"2026-02-13T18:43:56.983Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should not retry on 400 error
[INFO] [PlaybackAnalytics] Saved event to localStorage (1 pending) {"trackId":"42","playTime":180}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should not retry on 401 error
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Unauthorized","status":401,"timestamp":"2026-02-13T18:43:56.989Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should not retry on 401 error
[INFO] [PlaybackAnalytics] Saved event to localStorage (1 pending) {"trackId":"42","playTime":180}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should call onError callback on error
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Server error","status":500,"timestamp":"2026-02-13T18:43:56.994Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should call onError callback on error
[INFO] [PlaybackAnalytics] Saved event to localStorage (1 pending) {"trackId":"42","playTime":180}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should call onRetry callback on retry
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Network error: Unable to connect to server. Please check your connection and try again.","status":0,"timestamp":"2026-02-13T18:43:57.002Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should skip retry if skipRetry option is true
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Server error","status":500,"timestamp":"2026-02-13T18:43:57.012Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should skip retry if skipRetry option is true
[INFO] [PlaybackAnalytics] Saved event to localStorage (1 pending) {"trackId":"42","playTime":180}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > recordPlaybackEvent > should skip fallback if skipFallback option is true
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Network error: Unable to connect to server. Please check your connection and try again.","status":0,"timestamp":"2026-02-13T18:43:57.017Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > getPlaybackDashboard > should retry on network error
[ERROR] [PlaybackAnalytics] Failed to get dashboard: {"trackId":"42","error":"Network error: Unable to connect to server. Please check your connection and try again.","status":0,"timestamp":"2026-02-13T18:43:57.027Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > retryPendingAnalytics > should retry pending analytics successfully
[INFO] [PlaybackAnalytics] Retried 1 pending events
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > retryPendingAnalytics > should remove events after max retries
[ERROR] [PlaybackAnalytics] Failed to record event: {"trackId":"42","playTime":180,"error":"Network error: Unable to connect to server. Please check your connection and try again.","status":0,"timestamp":"2026-02-13T18:43:57.049Z"}
stdout | src/features/streaming/services/playbackAnalyticsService.test.ts > playbackAnalyticsService > retryPendingAnalytics > should remove events after max retries
[WARN] [PlaybackAnalytics] Removed event after 5 failed retries {"trackId":"42"}
✓ src/features/streaming/services/playbackAnalyticsService.test.ts (17 tests) 161ms
stdout | src/features/streaming/components/PlaybackSummary.test.tsx > PlaybackSummary > should render error state
[ERROR] Failed to load playback summary: {"message":"Failed to fetch"}
stderr | src/features/auth/pages/RegisterPage.test.tsx > RegisterPage > should render register form
⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition.
⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath.
✓ src/features/streaming/components/PlaybackSummary.test.tsx (12 tests) 777ms
stderr | src/features/settings/pages/SettingsPage.test.tsx > SettingsPage > should load and display settings
⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition.
⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath.
stderr | src/features/auth/pages/ResetPasswordPage.test.tsx > ResetPasswordPage > should render reset password form when token is present
⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition.
⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath.
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should retry failed requests up to max retries
[ERROR] [OfflineQueue] Request failed after 3 retries: POST /api/v1/tracks {"requestId":"req_1771008236607_93kx9dmpf","error":{}}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should retry failed requests up to max retries
[INFO] [OfflineQueue] All queued requests processed successfully
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should remove request from queue after max retries
[INFO] [OfflineQueue] Queue cleared
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should remove request from queue after max retries
[INFO] [OfflineQueue] Request queued: POST /api/v1/tracks {"requestId":"req_1771008239619_ndpz4evee","priority":"normal","queueSize":1}
stdout | src/services/offlineQueue.test.ts > OfflineQueueService > processQueue > should remove request from queue after max retries
[INFO] [OfflineQueue] Processing 1 queued requests
src/features/settings/pages/SettingsPage.test.tsx (6 tests | 2 failed) 2488ms
✓ SettingsPage > should load and display settings 161ms
✓ SettingsPage > should display loading state 18ms
✓ SettingsPage > should save settings on button click 123ms
✓ SettingsPage > should display validation errors 37ms
× SettingsPage > should handle load error 1031ms
→ Unable to find an element with the text: /failed to load settings/i. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.
Ignored nodes: comments, script, style
<body>
<div>
<div
class="container mx-auto px-4 py-8 flex items-center justify-center min-h-layout-page"
>
<div
class="flex flex-col rounded-lg text-card-foreground transition-[box-shadow,background-color,border-color] duration-[var(--sumi-duration-normal)] ease-out relative overflow-hidden bg-card border shadow-card hover:shadow-card-hover hover:bg-card/95 border-destructive/30 glass"
data-slot="card"
>
<div
class="relative z-10 w-full h-full flex flex-col"
>
<div
class="p-4 pt-6"
data-slot="card-content"
>
<div
aria-live="polite"
class="rounded-lg border flex shadow-card bg-destructive/10 border-destructive/30 text-destructive p-4 gap-4"
role="alert"
>
<div
class="flex-shrink-0 pt-0.5"
>
<svg
class="lucide lucide-alert-circle w-5 h-5 text-destructive"
fill="none"
height="24"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
width="24"
xmlns="http://www.w3.org/2000/svg"
>
<circle
cx="12"
cy="12"
r="10"
/>
<line
x1="12"
x2="12"
y1="8"
y2="12"
/>
<line
x1="12"
x2="12.01"
y1="16"
y2="16"
/>
</svg>
</div>
<div
class="flex-1 min-w-0"
>
<div
class="font-semibold mb-1 text-base"
>
Error
</div>
<div
class="opacity-90 text-sm"
>
Une erreur inattendue s'est produite. Veuillez réessayer.
</div>
<div
class="mt-4 flex flex-wrap gap-2 items-center"
>
<button
class="inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-sans font-medium tracking-tight transition-[color,box-shadow,border-color,background-color] duration-[var(--sumi-duration-normal)] ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:shadow-[var(--sumi-shadow-glow)] disabled:pointer-events-none disabled:opacity-50 gap-2 border hover:border-border h-10 px-4 py-2 border-current text-current hover:bg-current/10 bg-transparent"
>
Retry
</button>
<button
class="inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-sans font-medium tracking-tight transition-[color,box-shadow,border-color,background-color] duration-[var(--sumi-duration-normal)] ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:shadow-[var(--sumi-shadow-glow)] disabled:pointer-events-none disabled:opacity-50 gap-2 h-10 px-4 py-2 text-current hover:bg-current/10 hover:text-current"
>
<svg
class="lucide lucide-chevron-down w-4 h-4 mr-1"
fill="none"
height="24"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
width="24"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="m6 9 6 6 6-6"
/>
</svg>
Show Details
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class="fixed z-50 flex flex-col gap-2 top-4 right-4"
/>
</div>
</body>
Ignored nodes: comments, script, style
<html>
<head />
<body>
<div>
<div
class="container mx-auto px-4 py-8 flex items-center justify-center min-h-layout-page"
>
<div
class="flex flex-col rounded-lg text-card-foreground transition-[box-shadow,background-color,border-color] duration-[var(--sumi-duration-normal)] ease-out relative overflow-hidden bg-card border shadow-card hover:shadow-card-hover hover:bg-card/95 border-destructive/30 glass"
data-slot="card"
>
<div
class="relative z-10 w-full h-full flex flex-col"
>
<div
class="p-4 pt-6"
data-slot="card-content"
>
<div
aria-live="polite"
class="rounded-lg border flex shadow-card bg-destructive/10 border-destructive/30 text-destructive p-4 gap-4"
role="alert"
>
<div
class="flex-shrink-0 pt-0.5"
>
<svg
class="lucide lucide-alert-circle w-5 h-5 text-destructive"
fill="none"
height="24"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
width="24"
xmlns="http://www.w3.org/2000/svg"
>
<circle
cx="12"
cy="12"
r="10"
/>
<line
x1="12"
x2="12"
y1="8"
y2="12"
/>
<line
x1="12"
x2="12.01"
y1="16"
y2="16"
/>
</svg>
</div>
<div
class="flex-1 min-w-0"
>
<div
class="font-semibold mb-1 text-base"
>
Error
</div>
<div
class="opacity-90 text-sm"
>
Une erreur inattendue s'est produite. Veuillez réessayer.
</div>
<div
class="mt-4 flex flex-wrap gap-2 items-center"
>
<button
class="inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-sans font-medium tracking-tight transition-[color,box-shadow,border-color,background-color] duration-[var(--sumi-duration-normal)] ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:shadow-[var(--sumi-shadow-glow)] disabled:pointer-events-none disabled:opacity-50 gap-2 border hover:border-border h-10 px-4 py-2 border-current text-current hover:bg-current/10 bg-transparent"
>
Retry
</button>
<button
class="inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-sans font-medium tracking-tight transition-[color,box-shadow,border-color,background-color] duration-[var(--sumi-duration-normal)] ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:shadow-[var(--sumi-shadow-glow)] disabled:pointer-events-none disabled:opacity-50 gap-2 h-10 px-4 py-2 text-current hover:bg-current/10 hover:text-current"
>
<svg
class="lucide lucide-chevron-down w-4 h-4 mr-1"
fill="none"
height="24"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
width="24"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="m6 9 6 6 6-6"
/>
</svg>
Show Details
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class="fixed z-50 flex flex-col gap-2 top-4 right-4"
/>
</div>
</body>
</html>
× SettingsPage > should handle save error 1086ms
→ expected "spy" to be called at least once
Ignored nodes: comments, script, style
<html>
<head />
<body>
<div>
<div
class="container mx-auto px-4 py-8 pb-24 max-w-5xl"
>
<div
class="mb-8 flex items-end justify-between"
>
<div>
<h1
class="text-display font-heading text-foreground mb-2"
>
System Config
</h1>
<p
class="text-muted-foreground flex items-center gap-2"
>
<svg
class="lucide lucide-shield w-4 h-4 text-primary"
fill="none"
height="24"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
width="24"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"
/>
</svg>
Manage your neural link and interface preferences.
</p>
</div>
<button
class="inline-flex items-center justify-center whitespace-nowrap font-sans tracking-tight transition-[color,box-shadow,border-color,background-color] duration-[var(--sumi-duration-normal)] ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:shadow-[var(--sumi-shadow-glow)] disabled:pointer-events-none disabled:opacity-50 gap-2 bg-primary text-primary-foreground hover:bg-primary/90 border border-transparent font-semibold h-12 rounded-full px-8 text-base shadow-glow-cyan min-w-36"
>
<svg
class="lucide lucide-save mr-2 h-4 w-4"
fill="none"
height="24"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
width="24"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"
/>
<polyline
points="17 21 17 13 7 13 7 21"
/>
<polyline
points="7 3 7 8 15 8"
/>
</svg>
 Save Config
</button>
</div>
<div
class="flex flex-col rounded-lg text-card-foreground transition-[box-shadow,background-color,border-color] duration-[var(--sumi-duration-normal)] ease-out relative dark:bg-black/20 border overflow-hidden border-border bg-card/80 backdrop-blur-xl"
data-slot="card"
>
<div
class="relative z-10 w-full h-full flex flex-col"
>
<div
class="p-6 border-b border-border bg-muted/20 flex items-center gap-2"
>
<svg
class="lucide lucide-sliders w-5 h-5 text-primary"
fill="none"
height="24"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
width="24"
xmlns="http://www.w3.org/2000/svg"
>
<line
x1="4"
x2="4"
y1="21"
y2="14"
/>
<line
x1="4"
x2="4"
y1="10"
y2="3"
/>
<line
x1="12"
x2="12"
y1="21"
y2="12"
/>
<line
x1="12"
x2="12"
y1="8"
y2="3"
/>
<line
x1="20"
x2="20"
y1="21"
y2="16"
/>
<line
x1="20"
x2="20"
y1="12"
y2="3"
/>
<line
x1="2"
x2="6"
y1="14"
y2="14"
/>
<line
x1="10"
x2="14"
y1="8"
y2="8"
/>
<line
x1="18"
x2="22"
y1="16"
y2="16"
/>
</svg>
<h2
class="font-bold text-lg"
>
Global Preferences
</h2>
</div>
<div
class="p-6"
>
<div
data-testid="settings-tabs"
>
<button>
Change Language
</button>
</div>
</div>
</div>
</div>
</div>
<div
class="fixed z-50 flex flex-col gap-2 top-4 right-4"
/>
</div>
</body>
</html>