1182 lines
77 KiB
Text
1182 lines
77 KiB
Text
|
|
|
|||
|
|
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
|
|||
|
|
[36m<body>[39m
|
|||
|
|
[36m<div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"container mx-auto px-4 py-8 flex items-center justify-center min-h-layout-page"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[33mdata-slot[39m=[32m"card"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"relative z-10 w-full h-full flex flex-col"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"p-4 pt-6"[39m
|
|||
|
|
[33mdata-slot[39m=[32m"card-content"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33maria-live[39m=[32m"polite"[39m
|
|||
|
|
[33mclass[39m=[32m"rounded-lg border flex shadow-card bg-destructive/10 border-destructive/30 text-destructive p-4 gap-4"[39m
|
|||
|
|
[33mrole[39m=[32m"alert"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"flex-shrink-0 pt-0.5"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<svg[39m
|
|||
|
|
[33mclass[39m=[32m"lucide lucide-alert-circle w-5 h-5 text-destructive"[39m
|
|||
|
|
[33mfill[39m=[32m"none"[39m
|
|||
|
|
[33mheight[39m=[32m"24"[39m
|
|||
|
|
[33mstroke[39m=[32m"currentColor"[39m
|
|||
|
|
[33mstroke-linecap[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-linejoin[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-width[39m=[32m"2"[39m
|
|||
|
|
[33mviewBox[39m=[32m"0 0 24 24"[39m
|
|||
|
|
[33mwidth[39m=[32m"24"[39m
|
|||
|
|
[33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<circle[39m
|
|||
|
|
[33mcx[39m=[32m"12"[39m
|
|||
|
|
[33mcy[39m=[32m"12"[39m
|
|||
|
|
[33mr[39m=[32m"10"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"12"[39m
|
|||
|
|
[33mx2[39m=[32m"12"[39m
|
|||
|
|
[33my1[39m=[32m"8"[39m
|
|||
|
|
[33my2[39m=[32m"12"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"12"[39m
|
|||
|
|
[33mx2[39m=[32m"12.01"[39m
|
|||
|
|
[33my1[39m=[32m"16"[39m
|
|||
|
|
[33my2[39m=[32m"16"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</svg>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"flex-1 min-w-0"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"font-semibold mb-1 text-base"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mError[0m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"opacity-90 text-sm"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mUne erreur inattendue s'est produite. Veuillez réessayer.[0m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"mt-4 flex flex-wrap gap-2 items-center"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<button[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mRetry[0m
|
|||
|
|
[36m</button>[39m
|
|||
|
|
[36m<button[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<svg[39m
|
|||
|
|
[33mclass[39m=[32m"lucide lucide-chevron-down w-4 h-4 mr-1"[39m
|
|||
|
|
[33mfill[39m=[32m"none"[39m
|
|||
|
|
[33mheight[39m=[32m"24"[39m
|
|||
|
|
[33mstroke[39m=[32m"currentColor"[39m
|
|||
|
|
[33mstroke-linecap[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-linejoin[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-width[39m=[32m"2"[39m
|
|||
|
|
[33mviewBox[39m=[32m"0 0 24 24"[39m
|
|||
|
|
[33mwidth[39m=[32m"24"[39m
|
|||
|
|
[33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<path[39m
|
|||
|
|
[33md[39m=[32m"m6 9 6 6 6-6"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</svg>[39m
|
|||
|
|
[0mShow Details[0m
|
|||
|
|
[36m</button>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"fixed z-50 flex flex-col gap-2 top-4 right-4"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</body>[39m
|
|||
|
|
|
|||
|
|
Ignored nodes: comments, script, style
|
|||
|
|
[36m<html>[39m
|
|||
|
|
[36m<head />[39m
|
|||
|
|
[36m<body>[39m
|
|||
|
|
[36m<div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"container mx-auto px-4 py-8 flex items-center justify-center min-h-layout-page"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[33mdata-slot[39m=[32m"card"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"relative z-10 w-full h-full flex flex-col"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"p-4 pt-6"[39m
|
|||
|
|
[33mdata-slot[39m=[32m"card-content"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33maria-live[39m=[32m"polite"[39m
|
|||
|
|
[33mclass[39m=[32m"rounded-lg border flex shadow-card bg-destructive/10 border-destructive/30 text-destructive p-4 gap-4"[39m
|
|||
|
|
[33mrole[39m=[32m"alert"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"flex-shrink-0 pt-0.5"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<svg[39m
|
|||
|
|
[33mclass[39m=[32m"lucide lucide-alert-circle w-5 h-5 text-destructive"[39m
|
|||
|
|
[33mfill[39m=[32m"none"[39m
|
|||
|
|
[33mheight[39m=[32m"24"[39m
|
|||
|
|
[33mstroke[39m=[32m"currentColor"[39m
|
|||
|
|
[33mstroke-linecap[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-linejoin[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-width[39m=[32m"2"[39m
|
|||
|
|
[33mviewBox[39m=[32m"0 0 24 24"[39m
|
|||
|
|
[33mwidth[39m=[32m"24"[39m
|
|||
|
|
[33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<circle[39m
|
|||
|
|
[33mcx[39m=[32m"12"[39m
|
|||
|
|
[33mcy[39m=[32m"12"[39m
|
|||
|
|
[33mr[39m=[32m"10"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"12"[39m
|
|||
|
|
[33mx2[39m=[32m"12"[39m
|
|||
|
|
[33my1[39m=[32m"8"[39m
|
|||
|
|
[33my2[39m=[32m"12"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"12"[39m
|
|||
|
|
[33mx2[39m=[32m"12.01"[39m
|
|||
|
|
[33my1[39m=[32m"16"[39m
|
|||
|
|
[33my2[39m=[32m"16"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</svg>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"flex-1 min-w-0"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"font-semibold mb-1 text-base"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mError[0m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"opacity-90 text-sm"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mUne erreur inattendue s'est produite. Veuillez réessayer.[0m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"mt-4 flex flex-wrap gap-2 items-center"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<button[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mRetry[0m
|
|||
|
|
[36m</button>[39m
|
|||
|
|
[36m<button[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<svg[39m
|
|||
|
|
[33mclass[39m=[32m"lucide lucide-chevron-down w-4 h-4 mr-1"[39m
|
|||
|
|
[33mfill[39m=[32m"none"[39m
|
|||
|
|
[33mheight[39m=[32m"24"[39m
|
|||
|
|
[33mstroke[39m=[32m"currentColor"[39m
|
|||
|
|
[33mstroke-linecap[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-linejoin[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-width[39m=[32m"2"[39m
|
|||
|
|
[33mviewBox[39m=[32m"0 0 24 24"[39m
|
|||
|
|
[33mwidth[39m=[32m"24"[39m
|
|||
|
|
[33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<path[39m
|
|||
|
|
[33md[39m=[32m"m6 9 6 6 6-6"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</svg>[39m
|
|||
|
|
[0mShow Details[0m
|
|||
|
|
[36m</button>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"fixed z-50 flex flex-col gap-2 top-4 right-4"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</body>[39m
|
|||
|
|
[36m</html>[39m
|
|||
|
|
× SettingsPage > should handle save error 1086ms
|
|||
|
|
→ expected "spy" to be called at least once
|
|||
|
|
|
|||
|
|
Ignored nodes: comments, script, style
|
|||
|
|
[36m<html>[39m
|
|||
|
|
[36m<head />[39m
|
|||
|
|
[36m<body>[39m
|
|||
|
|
[36m<div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"container mx-auto px-4 py-8 pb-24 max-w-5xl"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"mb-8 flex items-end justify-between"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div>[39m
|
|||
|
|
[36m<h1[39m
|
|||
|
|
[33mclass[39m=[32m"text-display font-heading text-foreground mb-2"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mSystem Config[0m
|
|||
|
|
[36m</h1>[39m
|
|||
|
|
[36m<p[39m
|
|||
|
|
[33mclass[39m=[32m"text-muted-foreground flex items-center gap-2"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<svg[39m
|
|||
|
|
[33mclass[39m=[32m"lucide lucide-shield w-4 h-4 text-primary"[39m
|
|||
|
|
[33mfill[39m=[32m"none"[39m
|
|||
|
|
[33mheight[39m=[32m"24"[39m
|
|||
|
|
[33mstroke[39m=[32m"currentColor"[39m
|
|||
|
|
[33mstroke-linecap[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-linejoin[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-width[39m=[32m"2"[39m
|
|||
|
|
[33mviewBox[39m=[32m"0 0 24 24"[39m
|
|||
|
|
[33mwidth[39m=[32m"24"[39m
|
|||
|
|
[33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<path[39m
|
|||
|
|
[33md[39m=[32m"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</svg>[39m
|
|||
|
|
[0mManage your neural link and interface preferences.[0m
|
|||
|
|
[36m</p>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<button[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<svg[39m
|
|||
|
|
[33mclass[39m=[32m"lucide lucide-save mr-2 h-4 w-4"[39m
|
|||
|
|
[33mfill[39m=[32m"none"[39m
|
|||
|
|
[33mheight[39m=[32m"24"[39m
|
|||
|
|
[33mstroke[39m=[32m"currentColor"[39m
|
|||
|
|
[33mstroke-linecap[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-linejoin[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-width[39m=[32m"2"[39m
|
|||
|
|
[33mviewBox[39m=[32m"0 0 24 24"[39m
|
|||
|
|
[33mwidth[39m=[32m"24"[39m
|
|||
|
|
[33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<path[39m
|
|||
|
|
[33md[39m=[32m"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<polyline[39m
|
|||
|
|
[33mpoints[39m=[32m"17 21 17 13 7 13 7 21"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<polyline[39m
|
|||
|
|
[33mpoints[39m=[32m"7 3 7 8 15 8"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</svg>[39m
|
|||
|
|
[0m Save Config[0m
|
|||
|
|
[36m</button>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"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"[39m
|
|||
|
|
[33mdata-slot[39m=[32m"card"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"relative z-10 w-full h-full flex flex-col"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"p-6 border-b border-border bg-muted/20 flex items-center gap-2"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<svg[39m
|
|||
|
|
[33mclass[39m=[32m"lucide lucide-sliders w-5 h-5 text-primary"[39m
|
|||
|
|
[33mfill[39m=[32m"none"[39m
|
|||
|
|
[33mheight[39m=[32m"24"[39m
|
|||
|
|
[33mstroke[39m=[32m"currentColor"[39m
|
|||
|
|
[33mstroke-linecap[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-linejoin[39m=[32m"round"[39m
|
|||
|
|
[33mstroke-width[39m=[32m"2"[39m
|
|||
|
|
[33mviewBox[39m=[32m"0 0 24 24"[39m
|
|||
|
|
[33mwidth[39m=[32m"24"[39m
|
|||
|
|
[33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"4"[39m
|
|||
|
|
[33mx2[39m=[32m"4"[39m
|
|||
|
|
[33my1[39m=[32m"21"[39m
|
|||
|
|
[33my2[39m=[32m"14"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"4"[39m
|
|||
|
|
[33mx2[39m=[32m"4"[39m
|
|||
|
|
[33my1[39m=[32m"10"[39m
|
|||
|
|
[33my2[39m=[32m"3"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"12"[39m
|
|||
|
|
[33mx2[39m=[32m"12"[39m
|
|||
|
|
[33my1[39m=[32m"21"[39m
|
|||
|
|
[33my2[39m=[32m"12"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"12"[39m
|
|||
|
|
[33mx2[39m=[32m"12"[39m
|
|||
|
|
[33my1[39m=[32m"8"[39m
|
|||
|
|
[33my2[39m=[32m"3"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"20"[39m
|
|||
|
|
[33mx2[39m=[32m"20"[39m
|
|||
|
|
[33my1[39m=[32m"21"[39m
|
|||
|
|
[33my2[39m=[32m"16"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"20"[39m
|
|||
|
|
[33mx2[39m=[32m"20"[39m
|
|||
|
|
[33my1[39m=[32m"12"[39m
|
|||
|
|
[33my2[39m=[32m"3"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"2"[39m
|
|||
|
|
[33mx2[39m=[32m"6"[39m
|
|||
|
|
[33my1[39m=[32m"14"[39m
|
|||
|
|
[33my2[39m=[32m"14"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"10"[39m
|
|||
|
|
[33mx2[39m=[32m"14"[39m
|
|||
|
|
[33my1[39m=[32m"8"[39m
|
|||
|
|
[33my2[39m=[32m"8"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m<line[39m
|
|||
|
|
[33mx1[39m=[32m"18"[39m
|
|||
|
|
[33mx2[39m=[32m"22"[39m
|
|||
|
|
[33my1[39m=[32m"16"[39m
|
|||
|
|
[33my2[39m=[32m"16"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</svg>[39m
|
|||
|
|
[36m<h2[39m
|
|||
|
|
[33mclass[39m=[32m"font-bold text-lg"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[0mGlobal Preferences[0m
|
|||
|
|
[36m</h2>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"p-6"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mdata-testid[39m=[32m"settings-tabs"[39m
|
|||
|
|
[36m>[39m
|
|||
|
|
[36m<button>[39m
|
|||
|
|
[0mChange Language[0m
|
|||
|
|
[36m</button>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m<div[39m
|
|||
|
|
[33mclass[39m=[32m"fixed z-50 flex flex-col gap-2 top-4 right-4"[39m
|
|||
|
|
[36m/>[39m
|
|||
|
|
[36m</div>[39m
|
|||
|
|
[36m</body>[39m
|
|||
|
|
[36m</html>[39m
|