1.4 MiB
1.4 MiB
> flyer-crawler@0.11.11 test
> node scripts/check-linux.js && cross-env NODE_ENV=test tsx ./node_modules/vitest/vitest.mjs run
RUN v4.0.16 /app
--- [EXECUTION PROOF] tailwind.config.js is being loaded. ---
--- [EXECUTION PROOF] postcss.config.js is being loaded. ---
[POSTCSS] Attempting to use Tailwind config at: /app/tailwind.config.js
[POSTCSS] Imported tailwind.config.js object: {
"content": [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}"
]
}
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 983ms
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 2.00s
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 2.91s
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 3.91s
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 4.92s
❯ src/services/apiClient.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 5.73s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 5.86s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts [queued]
❯ src/services/db/user.db.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 8.60s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts [queued]
❯ src/services/db/user.db.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 9.51s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts [queued]
❯ src/services/db/user.db.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 11.18s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts [queued]
❯ src/services/db/user.db.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 12.57s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts [queued]
❯ src/services/db/user.db.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (0)
Start at 07:51:47
Duration 13.49s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts 0/62
❯ src/services/db/user.db.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (62)
Start at 07:51:47
Duration 14.55s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts 0/62
❯ src/services/db/user.db.test.ts [queued]
Test Files 0 passed (242)
Tests 0 passed (62)
Start at 07:51:47
Duration 14.78s
✓ src/services/db/expiry.db.test.ts (62 tests) 291ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts 62/62
❯ src/services/db/user.db.test.ts [queued]
Test Files 1 passed (242)
Tests 62 passed (62)
Start at 07:51:47
Duration 15.40s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts 62/62
❯ src/services/db/user.db.test.ts [queued]
Test Files 1 passed (242)
Tests 62 passed (62)
Start at 07:51:47
Duration 15.77s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts [queued]
❯ src/services/db/expiry.db.test.ts 62/62
❯ src/services/db/user.db.test.ts 1/69
Test Files 1 passed (242)
Tests 63 passed (131)
Start at 07:51:47
Duration 16.28s
✓ src/services/db/user.db.test.ts (69 tests) 204ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts 0/112
❯ src/services/db/user.db.test.ts 69/69
Test Files 2 passed (242)
Tests 131 passed (243)
Start at 07:51:47
Duration 16.56s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts 1/112
❯ src/services/db/user.db.test.ts 69/69
Test Files 2 passed (242)
Tests 132 passed (243)
Start at 07:51:47
Duration 16.86s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts 56/112
❯ src/services/db/user.db.test.ts 69/69
Test Files 2 passed (242)
Tests 187 passed (243)
Start at 07:51:47
Duration 16.96s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts [queued]
❯ src/services/apiClient.test.ts 75/112
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 2 passed (242)
Tests 206 passed (243)
Start at 07:51:47
Duration 17.27s
✓ src/services/apiClient.test.ts (112 tests) 547ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts 1/49
❯ src/services/apiClient.test.ts 112/112
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 3 passed (242)
Tests 244 passed (292)
Start at 07:51:47
Duration 17.41s
stdout | src/services/aiService.server.test.ts > AI Service (Server) > extractCoreDataFromFlyerImage > should throw an error if the AI response contains malformed JSON
TEST START: 'should throw an error if the AI response contains malformed JSON'
stdout | src/services/aiService.server.test.ts > AI Service (Server) > extractCoreDataFromFlyerImage > should throw an error if the AI API call fails
TEST START: 'should throw an error if the AI API call fails'
stdout | src/services/aiService.server.test.ts > AI Service (Server) > _parseJsonFromAiResponse (private method) > should handle JSON arrays correctly
--- TEST LOG: "should handle JSON arrays correctly" ---
- Test Input String: "Some text preceding ```json\n\n[1, 2, 3]\n\n``` and some text after."
- Actual Output from function: [1,2,3]
- Expected Output: [1,2,3]
--- END TEST LOG ---
stdout | src/services/aiService.server.test.ts > AI Service (Server) > extractTextFromImageArea > should call sharp to crop the image and call the AI with the correct prompt
TEST START: 'should call sharp to crop...'
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts 9/49
❯ src/services/apiClient.test.ts 112/112
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 3 passed (242)
Tests 252 passed (292)
Start at 07:51:47
Duration 17.71s
stdout | src/services/aiService.server.test.ts > AI Service (Server) > extractTextFromImageArea > should throw an error if the AI API call fails
TEST START: 'should throw an error if the AI API call fails' (extractTextFromImageArea)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts 49/49
❯ src/services/apiClient.test.ts 112/112
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 17.96s
stderr | src/services/aiService.server.test.ts > AI Service (Server) > enqueueFlyerProcessing > should enqueue job with user address if profile exists
[DEBUG] aiService.enqueueFlyerProcessing resolved baseUrl: "https://example.com"
stderr | src/services/aiService.server.test.ts > AI Service (Server) > enqueueFlyerProcessing > should enqueue job without address if profile is missing
[DEBUG] aiService.enqueueFlyerProcessing resolved baseUrl: "https://example.com"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts 49/49
❯ src/services/apiClient.test.ts 112/112
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 17.96s
✓ src/services/aiService.server.test.ts (49 tests) 489ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/aiService.server.test.ts 49/49
❯ src/services/apiClient.test.ts 112/112
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 17.96s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/receipt.db.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 18.59s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/receipt.db.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 19.38s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/receipt.db.test.ts [queued]
❯ src/services/upcService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 19.50s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/flyer.db.test.ts [queued]
❯ src/services/db/receipt.db.test.ts [queued]
❯ src/services/upcService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 20.33s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/flyer.db.test.ts [queued]
❯ src/services/db/receipt.db.test.ts [queued]
❯ src/services/upcService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (292)
Start at 07:51:47
Duration 21.34s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/flyer.db.test.ts [queued]
❯ src/services/db/receipt.db.test.ts 0/46
❯ src/services/upcService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 292 passed (338)
Start at 07:51:47
Duration 21.74s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/flyer.db.test.ts [queued]
❯ src/services/db/receipt.db.test.ts 1/46
❯ src/services/upcService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 4 passed (242)
Tests 293 passed (338)
Start at 07:51:47
Duration 21.95s
✓ src/services/db/receipt.db.test.ts (46 tests) 190ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/flyer.db.test.ts 1/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 0/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 5 passed (242)
Tests 339 passed (441)
Start at 07:51:47
Duration 22.23s
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should execute an INSERT query and return the new flyer
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"file_name": "test.jpg",
"image_url": "https://example.com/images/test.jpg",
"icon_url": "https://example.com/images/icons/test.jpg",
"checksum": "checksum123",
"store_id": 1,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 Test St",
"status": "processed",
"item_count": 10,
"uploaded_by": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"
}
[DB DEBUG] Final URLs for insert: {
imageUrl: 'https://example.com/images/test.jpg',
iconUrl: 'https://example.com/images/icons/test.jpg'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw UniqueConstraintError on duplicate checksum
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"checksum": "duplicate-checksum"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw UniqueConstraintError on duplicate checksum
[DB DEBUG] insertFlyer caught error: Error: duplicate key value violates unique constraint "flyers_checksum_key"
at /app/src/services/db/flyer.db.test.ts:185:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23505'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw UniqueConstraintError on duplicate checksum
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"checksum": "duplicate-checksum"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw UniqueConstraintError on duplicate checksum
[DB DEBUG] insertFlyer caught error: Error: duplicate key value violates unique constraint "flyers_checksum_key"
at /app/src/services/db/flyer.db.test.ts:185:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23505'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw a generic error if the database query fails
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"checksum": "fail-checksum"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw a generic error if the database query fails
[DB DEBUG] insertFlyer caught error: Error: DB Connection Error
at /app/src/services/db/flyer.db.test.ts:211:48
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid checksum format
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"checksum": "short"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid checksum format
[DB DEBUG] insertFlyer caught error: Error: violates check constraint "flyers_checksum_check"
at /app/src/services/db/flyer.db.test.ts:223:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23514'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid checksum format
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"checksum": "short"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid checksum format
[DB DEBUG] insertFlyer caught error: Error: violates check constraint "flyers_checksum_check"
at /app/src/services/db/flyer.db.test.ts:223:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23514'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid status
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"status": "invalid_status"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid status
[DB DEBUG] insertFlyer caught error: Error: violates check constraint "flyers_status_check"
at /app/src/services/db/flyer.db.test.ts:237:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23514'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid status
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"status": "invalid_status"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid status
[DB DEBUG] insertFlyer caught error: Error: violates check constraint "flyers_status_check"
at /app/src/services/db/flyer.db.test.ts:237:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23514'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid URL format
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"image_url": "not-a-url"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'not-a-url',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/not-a-url', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid URL format
[DB DEBUG] insertFlyer caught error: Error: violates check constraint "url_check"
at /app/src/services/db/flyer.db.test.ts:251:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23514'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid URL format
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"image_url": "not-a-url"
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'not-a-url',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/not-a-url', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should throw CheckConstraintError for invalid URL format
[DB DEBUG] insertFlyer caught error: Error: violates check constraint "url_check"
at /app/src/services/db/flyer.db.test.ts:251:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12) {
code: '23514'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should transform relative icon_url to absolute URL with leading slash
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"file_name": "test.jpg",
"image_url": "https://example.com/images/test.jpg",
"icon_url": "/uploads/icons/test-icon.jpg",
"checksum": "checksum-with-relative-icon",
"store_id": 1,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 Test St",
"status": "processed",
"item_count": 10,
"uploaded_by": null
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'https://example.com/images/test.jpg',
originalIcon: '/uploads/icons/test-icon.jpg'
}
[DB DEBUG] Final URLs for insert: {
imageUrl: 'https://example.com/images/test.jpg',
iconUrl: 'http://localhost:3000/uploads/icons/test-icon.jpg'
}
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > insertFlyer > should transform relative icon_url to absolute URL without leading slash
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"file_name": "test.jpg",
"image_url": "https://example.com/images/test.jpg",
"icon_url": "uploads/icons/test-icon.jpg",
"checksum": "checksum-with-relative-icon2",
"store_id": 1,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 Test St",
"status": "processed",
"item_count": 10,
"uploaded_by": null
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'https://example.com/images/test.jpg',
originalIcon: 'uploads/icons/test-icon.jpg'
}
[DB DEBUG] Final URLs for insert: {
imageUrl: 'https://example.com/images/test.jpg',
iconUrl: 'http://localhost:3000/uploads/icons/test-icon.jpg'
}
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts [queued]
❯ src/routes/user.routes.test.ts [queued]
❯ src/services/db/flyer.db.test.ts 1/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 0/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 5 passed (242)
Tests 339 passed (441)
Start at 07:51:47
Duration 22.23s
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > createFlyerAndItems > should execute find/create store, insert flyer, and insert items using the provided client
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"file_name": "transact.jpg",
"store_name": "Transaction Store",
"store_id": 1
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > createFlyerAndItems > should create a flyer with no items if items array is empty
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"file_name": "empty.jpg",
"store_name": "Empty Store",
"store_id": 2
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > createFlyerAndItems > should propagate an error if any step fails
[DB DEBUG] FlyerRepository.insertFlyer called with: {
"file_name": "fail.jpg",
"store_name": "Fail Store",
"store_id": 1
}
[DB DEBUG] Transforming relative URLs: {
baseUrl: 'http://localhost:3000',
originalImage: 'placeholder.jpg',
originalIcon: null
}
[DB DEBUG] Final URLs for insert: { imageUrl: 'http://localhost:3000/placeholder.jpg', iconUrl: null }
stderr | src/services/db/flyer.db.test.ts > Flyer DB Service > createFlyerAndItems > should propagate an error if any step fails
[DB DEBUG] insertFlyer caught error: Error: Underlying DB call failed
at /app/src/services/db/flyer.db.test.ts:592:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 0/61
❯ src/routes/user.routes.test.ts 0/107
❯ src/services/db/flyer.db.test.ts 20/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 43/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 5 passed (242)
Tests 401 passed (609)
Start at 07:51:47
Duration 22.44s
stdout | src/services/db/flyer.db.test.ts > Flyer DB Service > getFlyers > should use default limit and offset when none are provided
[TEST DEBUG] Running test: getFlyers > should use default limit and offset
stdout | src/services/db/flyer.db.test.ts > Flyer DB Service > getFlyers > should use default limit and offset when none are provided
[TEST DEBUG] mockPoolInstance.query calls: [
[
"\n SELECT\n f.*,\n json_build_object(\n 'store_id', s.store_id,\n 'name', s.name,\n 'logo_url', s.logo_url,\n 'locations', COALESCE(\n (SELECT json_agg(\n json_build_object(\n 'address_line_1', a.address_line_1,\n 'city', a.city,\n 'province_state', a.province_state,\n 'postal_code', a.postal_code\n )\n )\n FROM public.store_locations sl\n JOIN public.addresses a ON sl.address_id = a.address_id\n WHERE sl.store_id = s.store_id),\n '[]'::json\n )\n ) as store\n FROM public.flyers f\n JOIN public.stores s ON f.store_id = s.store_id\n ORDER BY f.created_at DESC LIMIT $1 OFFSET $2",
[
20,
0
]
]
]
stdout | src/services/db/flyer.db.test.ts > Flyer DB Service > getFlyers > should use provided limit and offset values
[TEST DEBUG] Running test: getFlyers > should use provided limit and offset
stdout | src/services/db/flyer.db.test.ts > Flyer DB Service > getFlyers > should use provided limit and offset values
[TEST DEBUG] mockPoolInstance.query calls: [
[
"\n SELECT\n f.*,\n json_build_object(\n 'store_id', s.store_id,\n 'name', s.name,\n 'logo_url', s.logo_url,\n 'locations', COALESCE(\n (SELECT json_agg(\n json_build_object(\n 'address_line_1', a.address_line_1,\n 'city', a.city,\n 'province_state', a.province_state,\n 'postal_code', a.postal_code\n )\n )\n FROM public.store_locations sl\n JOIN public.addresses a ON sl.address_id = a.address_id\n WHERE sl.store_id = s.store_id),\n '[]'::json\n )\n ) as store\n FROM public.flyers f\n JOIN public.stores s ON f.store_id = s.store_id\n ORDER BY f.created_at DESC LIMIT $1 OFFSET $2",
[
10,
5
]
]
]
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 0/61
❯ src/routes/user.routes.test.ts 0/107
❯ src/services/db/flyer.db.test.ts 20/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 43/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 5 passed (242)
Tests 401 passed (609)
Start at 07:51:47
Duration 22.44s
❯ src/services/db/flyer.db.test.ts (45 tests | 1 failed) 319ms
✓ should find an existing store and return its ID 16ms
✓ should create a new store if it does not exist and return its ID 3ms
✓ should throw an error if the database query fails 9ms
✓ should throw an error if store is not found after upsert (edge case) 6ms
✓ should execute an INSERT query and return the new flyer 19ms
✓ should throw UniqueConstraintError on duplicate checksum 34ms
✓ should throw a generic error if the database query fails 13ms
✓ should throw CheckConstraintError for invalid checksum format 17ms
✓ should throw CheckConstraintError for invalid status 11ms
✓ should throw CheckConstraintError for invalid URL format 14ms
✓ should transform relative icon_url to absolute URL with leading slash 5ms
✓ should transform relative icon_url to absolute URL without leading slash 4ms
✓ should build a bulk INSERT query and return the new items 3ms
✓ should return an empty array and not query the DB if items array is empty 2ms
✓ should throw ForeignKeyConstraintError if flyerId is invalid 4ms
✓ should throw a generic error if the database query fails 9ms
✓ should sanitize empty or whitespace-only price_display to "N/A" 2ms
✓ should execute find/create store, insert flyer, and insert items using the provided client 11ms
✓ should create a flyer with no items if items array is empty 3ms
✓ should propagate an error if any step fails 18ms
✓ should execute the correct SELECT query and return brands 7ms
✓ should throw an error if the database query fails 2ms
× should return a flyer if found 22ms
✓ should throw NotFoundError if flyer is not found 4ms
✓ should use default limit and offset when none are provided 8ms
✓ should use provided limit and offset values 11ms
✓ should throw an error if the database query fails 3ms
✓ should return items for a specific flyer 13ms
✓ should return an empty array if flyer has no items 2ms
✓ should throw an error if the database query fails 4ms
✓ should return items for multiple flyers using ANY 2ms
✓ should return an empty array if no items are found for the given flyer IDs 1ms
✓ should throw an error if the database query fails 3ms
✓ should return the total count of items 2ms
✓ should return 0 if the flyerIds array is empty 1ms
✓ should throw an error if the database query fails 3ms
✓ should return a flyer for a given checksum 3ms
✓ should return undefined if no flyer is found for the checksum 1ms
✓ should throw an error if the database query fails 2ms
✓ should increment view_count for a "view" interaction 2ms
✓ should increment click_count for a "click" interaction 1ms
✓ should not throw an error if the database query fails (fire-and-forget) 2ms
✓ should use withTransaction to delete a flyer 1ms
✓ should throw an error if the flyer to delete is not found 1ms
✓ should rollback transaction on generic error 2ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 1/61
❯ src/routes/user.routes.test.ts 0/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 48/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 431 passed (609)
Start at 07:51:47
Duration 22.54s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should enqueue a job and return 202 on success
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should return 400 if checksum is missing
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 4/61
❯ src/routes/user.routes.test.ts 2/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 50/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 438 passed (609)
Start at 07:51:47
Duration 22.78s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > GET /profile > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 4/61
❯ src/routes/user.routes.test.ts 2/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 50/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 438 passed (609)
Start at 07:51:47
Duration 22.78s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > GET /profile > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:171:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should return 409 if flyer checksum already exists
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 4/61
❯ src/routes/user.routes.test.ts 2/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 50/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 438 passed (609)
Start at 07:51:47
Duration 22.78s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > GET /watched-items > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 7/61
❯ src/routes/user.routes.test.ts 6/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 52/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 447 passed (609)
Start at 07:51:47
Duration 22.88s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > GET /watched-items > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:194:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should return 500 if enqueuing the job fails
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 7/61
❯ src/routes/user.routes.test.ts 6/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 52/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 447 passed (609)
Start at 07:51:47
Duration 22.88s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should return 500 if enqueuing the job fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 7/61
❯ src/routes/user.routes.test.ts 6/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 52/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 447 passed (609)
Start at 07:51:47
Duration 22.88s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should return 500 if enqueuing the job fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Redis connection failed
at /app/src/routes/ai.routes.test.ts:237:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should pass user ID to the job when authenticated
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should pass user profile address to the job when authenticated user has an address
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 7/61
❯ src/routes/user.routes.test.ts 6/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/db/receipt.db.test.ts 46/46
❯ src/services/upcService.server.test.ts 52/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 447 passed (609)
Start at 07:51:47
Duration 22.88s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > POST /watched-items > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 13/61
❯ src/routes/user.routes.test.ts 11/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 55/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 461 passed (609)
Start at 07:51:47
Duration 23.24s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > POST /watched-items > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:220:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-and-process > should clean up the uploaded file if validation fails (e.g., missing checksum)
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-legacy > should process a legacy flyer and return 200 on success
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 13/61
❯ src/routes/user.routes.test.ts 11/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 55/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 461 passed (609)
Start at 07:51:47
Duration 23.24s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > DELETE /watched-items/:masterItemId > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 13/61
❯ src/routes/user.routes.test.ts 11/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 55/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 461 passed (609)
Start at 07:51:47
Duration 23.24s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > DELETE /watched-items/:masterItemId > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:273:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 13/61
❯ src/routes/user.routes.test.ts 11/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 55/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 461 passed (609)
Start at 07:51:47
Duration 23.24s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Routes > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Routes > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:296:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Routes > should return 500 on a generic database error during creation
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Routes > should return 500 on a generic database error during creation
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:340:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Routes > DELETE /shopping-lists/:listId > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Routes > DELETE /shopping-lists/:listId > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:374:27
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-legacy > should return 409 and cleanup file if a duplicate flyer is detected
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-legacy > should return 500 and cleanup file on a generic service error
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-legacy > should return 500 and cleanup file on a generic service error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /upload-legacy > should return 500 and cleanup file on a generic service error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Internal service failure
at /app/src/routes/ai.routes.test.ts:427:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy) > should save a flyer and return 201 on success
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy) > should return 409 Conflict and delete the uploaded file if flyer checksum already exists
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy) > should accept payload when extractedData.items is missing and save with empty items
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy) > should fallback to a safe store name when store_name is missing
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 20/61
❯ src/routes/user.routes.test.ts 23/107
❯ src/services/db/flyer.db.test.ts 45/45
❯ src/services/upcService.server.test.ts 57/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 5 passed (242)
Tests 1 failed | 482 passed (609)
Start at 07:51:47
Duration 23.44s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Item Routes > should return 500 on a generic database error when adding an item
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Item Routes > should return 500 on a generic database error when adding an item
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:462:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
✓ src/services/upcService.server.test.ts (58 tests) 1357ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy) > should handle a generic error during flyer creation
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Item Routes > should return 500 on a generic database error when updating an item
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Item Routes > should return 500 on a generic database error when updating an item
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:505:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy) > should handle a generic error during flyer creation
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy) > should handle a generic error during flyer creation
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB transaction failed
at /app/src/routes/ai.routes.test.ts:547:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 22/61
❯ src/routes/user.routes.test.ts 33/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 495 passed (609)
Start at 07:51:47
Duration 23.54s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Item Routes > DELETE /shopping-lists/items/:itemId > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 23/61
❯ src/routes/user.routes.test.ts 34/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 497 passed (609)
Start at 07:51:47
Duration 23.86s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Shopping List Item Routes > DELETE /shopping-lists/items/:itemId > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:543:27
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 23/61
❯ src/routes/user.routes.test.ts 34/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 497 passed (609)
Start at 07:51:47
Duration 23.86s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > PUT /profile > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 23/61
❯ src/routes/user.routes.test.ts 34/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 497 passed (609)
Start at 07:51:47
Duration 23.86s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > PUT /profile > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:585:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 23/61
❯ src/routes/user.routes.test.ts 34/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 497 passed (609)
Start at 07:51:47
Duration 23.86s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > PUT /profile/password > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 23/61
❯ src/routes/user.routes.test.ts 34/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 497 passed (609)
Start at 07:51:47
Duration 23.86s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > PUT /profile/password > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:617:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 23/61
❯ src/routes/user.routes.test.ts 34/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 497 passed (609)
Start at 07:51:47
Duration 23.86s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy Payload Variations) > should handle payload where "data" field is an object, not stringified JSON
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy Payload Variations) > should handle payload where extractedData is null
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy Payload Variations) > should handle payload where extractedData is a string
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy Payload Variations) > should handle payload where extractedData is at the root of the body
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy Payload Variations) > should default item quantity to 1 if missing
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy Error Handling) > should handle malformed JSON in data field and return 400
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > DELETE /account > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > DELETE /account > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:681:11
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /flyers/process (Legacy Error Handling) > should return 400 if checksum is missing from legacy payload
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /check-flyer > should return 200 with a stubbed response on success
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /check-flyer > should return 500 on a generic error
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /check-flyer > should return 500 on a generic error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /check-flyer > should return 500 on a generic error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Logging failed
at Object.<anonymous> (/app/src/routes/ai.routes.test.ts:717:15)
at Object.Mock (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/ai.routes.ts:487:15
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at done (/app/node_modules/multer/lib/make-middleware.js:59:7)
at indicateDone (/app/node_modules/multer/lib/make-middleware.js:63:68)
at Multipart.<anonymous> (/app/node_modules/multer/lib/make-middleware.js:187:7)
at Multipart.emit (node:events:524:28)
at emitCloseNT (node:internal/streams/destroy:147:10)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > PUT /profile/preferences > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > PUT /profile/preferences > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:711:27
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/dietary-restrictions > GET should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/dietary-restrictions > GET should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:748:27
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 31/61
❯ src/routes/user.routes.test.ts 47/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 518 passed (609)
Start at 07:51:47
Duration 24.10s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/dietary-restrictions > PUT should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 34/61
❯ src/routes/user.routes.test.ts 61/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 535 passed (609)
Start at 07:51:47
Duration 24.20s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/dietary-restrictions > PUT should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:785:27
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 34/61
❯ src/routes/user.routes.test.ts 61/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 535 passed (609)
Start at 07:51:47
Duration 24.20s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/appliances > GET should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 34/61
❯ src/routes/user.routes.test.ts 61/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 535 passed (609)
Start at 07:51:47
Duration 24.20s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/appliances > GET should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:812:27
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /rescan-area > should return 400 if cropArea or extractionType is missing
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 34/61
❯ src/routes/user.routes.test.ts 61/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 535 passed (609)
Start at 07:51:47
Duration 24.20s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/appliances > PUT should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 34/61
❯ src/routes/user.routes.test.ts 61/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 535 passed (609)
Start at 07:51:47
Duration 24.20s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > User Preferences and Personalization > GET and PUT /users/me/appliances > PUT should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:843:27
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 34/61
❯ src/routes/user.routes.test.ts 61/107
❯ src/services/upcService.server.test.ts 58/58
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 535 passed (609)
Start at 07:51:47
Duration 24.20s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /rescan-area > should return 400 if cropArea is malformed JSON
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Notification Routes > GET /notifications should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Notification Routes > GET /notifications should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:902:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Notification Routes > POST /notifications/mark-all-read should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Notification Routes > POST /notifications/mark-all-read should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:919:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Notification Routes > POST /notifications/:notificationId/mark-read should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Notification Routes > POST /notifications/:notificationId/mark-read should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:940:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Address Routes > GET /addresses/:addressId should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Address Routes > GET /addresses/:addressId should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/user.routes.test.ts:975:65
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Address Routes > PUT /profile/address should return 500 on a generic service error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Address Routes > PUT /profile/address should return 500 on a generic service error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:1025:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 35/61
❯ src/routes/user.routes.test.ts 66/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 541 passed (609)
Start at 07:51:47
Duration 24.58s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-address > should return 200 with a stubbed response on success
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-address > should return 500 on a generic error
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-address > should return 500 on a generic error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-address > should return 500 on a generic error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Logging failed
at Object.<anonymous> (/app/src/routes/ai.routes.test.ts:774:15)
at Object.Mock (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/ai.routes.ts:533:15
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at done (/app/node_modules/multer/lib/make-middleware.js:59:7)
at indicateDone (/app/node_modules/multer/lib/make-middleware.js:63:68)
at Multipart.<anonymous> (/app/node_modules/multer/lib/make-middleware.js:187:7)
at Multipart.emit (node:events:524:28)
at emitCloseNT (node:internal/streams/destroy:147:10)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-logo > should return 200 with a stubbed response on success
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-logo > should return 500 on a generic error
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-logo > should return 500 on a generic error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /extract-logo > should return 500 on a generic error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Logging failed
at Object.<anonymous> (/app/src/routes/ai.routes.test.ts:802:15)
at Object.Mock (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/ai.routes.ts:581:15
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at done (/app/node_modules/multer/lib/make-middleware.js:59:7)
at indicateDone (/app/node_modules/multer/lib/make-middleware.js:63:68)
at Multipart.<anonymous> (/app/node_modules/multer/lib/make-middleware.js:187:7)
at Multipart.emit (node:events:524:28)
at emitCloseNT (node:internal/streams/destroy:147:10)
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /rescan-area (authenticated) > should call the AI service and return the result on success (authenticated)
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /rescan-area (authenticated) > should return 500 if the AI service throws an error (authenticated)
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /rescan-area (authenticated) > should return 500 if the AI service throws an error (authenticated)
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > POST /rescan-area (authenticated) > should return 500 if the AI service throws an error (authenticated)
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: AI API is down
at /app/src/routes/ai.routes.test.ts:848:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > POST /profile/avatar > should return 500 if updating the profile fails after upload
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > POST /profile/avatar > should return 500 if updating the profile fails after upload
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:1067:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /quick-insights should return 500 on a generic error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /quick-insights should return 500 on a generic error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Logging failed
at Object.<anonymous> (/app/src/routes/ai.routes.test.ts:886:15)
at Object.Mock (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/ai.routes.ts:628:15
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at /app/src/middleware/validation.middleware.ts:43:14
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 44/61
❯ src/routes/user.routes.test.ts 84/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 568 passed (609)
Start at 07:51:47
Duration 24.68s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /plan-trip should return 500 if the AI service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /plan-trip should return 500 if the AI service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Maps API key invalid
at /app/src/routes/ai.routes.test.ts:951:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /deep-dive should return 500 on a generic error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /deep-dive should return 500 on a generic error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Deep dive logging failed
at Object.<anonymous> (/app/src/routes/ai.routes.test.ts:968:15)
at Object.Mock (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/ai.routes.ts:673:15
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at /app/src/middleware/validation.middleware.ts:43:14
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /search-web should return 500 on a generic error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /search-web should return 500 on a generic error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Search web logging failed
at Object.<anonymous> (/app/src/routes/ai.routes.test.ts:979:15)
at Object.Mock (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/ai.routes.ts:717:15
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at /app/src/middleware/validation.middleware.ts:43:14
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stdout | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /compare-prices should return 500 on a generic error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stderr | src/routes/ai.routes.test.ts > AI Routes (/api/ai) > when user is authenticated > POST /compare-prices should return 500 on a generic error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Compare prices logging failed
at Object.<anonymous> (/app/src/routes/ai.routes.test.ts:990:15)
at Object.Mock (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/ai.routes.ts:763:15
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at /app/src/middleware/validation.middleware.ts:43:14
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 45/61
❯ src/routes/user.routes.test.ts 85/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 6 passed (242)
Tests 1 failed | 570 passed (609)
Start at 07:51:47
Duration 24.85s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > POST /profile/avatar > should clean up the uploaded file if updating the profile fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > POST /profile/avatar > should clean up the uploaded file if updating the profile fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:1112:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > POST /recipes should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > POST /recipes should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:1158:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > DELETE /recipes/:recipeId should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > DELETE /recipes/:recipeId should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:1185:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > PUT /recipes/:recipeId should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > PUT /recipes/:recipeId should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:1233:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
✓ src/routes/ai.routes.test.ts (61 tests) 2427ms
stdout | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > GET /shopping-lists/:listId should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
stderr | src/routes/user.routes.test.ts > User Routes (/api/users) > when user is authenticated > Recipe Routes > GET /shopping-lists/:listId should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/user.routes.test.ts:1282:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 104/107
❯ src/tests/integration/flyer-processing.integration.test.ts [queued]
Test Files 1 failed | 7 passed (242)
Tests 1 failed | 605 passed (609)
Start at 07:51:47
Duration 25.21s
✓ src/routes/user.routes.test.ts (107 tests) 2815ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 107/107
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 25.64s
stderr | src/tests/integration/flyer-processing.integration.test.ts > Flyer Processing Background Job Integration Test
[TEST SETUP] STORAGE_PATH: /app/flyer-images
[TEST SETUP] FRONTEND_URL stubbed to: https://example.com
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/ai.routes.test.ts 61/61
❯ src/routes/user.routes.test.ts 107/107
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 26.92s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 27.09s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/shopping.db.test.ts [queued]
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 27.71s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/shopping.db.test.ts [queued]
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 28.93s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts [queued]
❯ src/services/db/shopping.db.test.ts [queued]
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 29.03s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts [queued]
❯ src/services/db/shopping.db.test.ts [queued]
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/services/receiptService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 30.36s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts [queued]
❯ src/services/db/shopping.db.test.ts [queued]
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/services/receiptService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (616)
Start at 07:51:47
Duration 31.35s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts [queued]
❯ src/services/db/shopping.db.test.ts 0/62
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/services/receiptService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 608 passed (678)
Start at 07:51:47
Duration 31.59s
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts [queued]
❯ src/services/db/shopping.db.test.ts 1/62
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/services/receiptService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 8 passed (242)
Tests 1 failed | 609 passed (678)
Start at 07:51:47
Duration 31.76s
✓ src/services/db/shopping.db.test.ts (62 tests) 115ms
❯ src/pages/admin/components/ProfileManager.test.tsx [queued]
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts 0/56
❯ src/services/db/shopping.db.test.ts 62/62
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/services/receiptService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 9 passed (242)
Tests 1 failed | 670 passed (734)
Start at 07:51:47
Duration 32.03s
❯ src/pages/admin/components/ProfileManager.test.tsx 0/46
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts 0/56
❯ src/services/db/shopping.db.test.ts 62/62
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/services/receiptService.server.test.ts 0/37
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 9 passed (242)
Tests 1 failed | 670 passed (817)
Start at 07:51:47
Duration 32.33s
✓ src/services/db/personalization.db.test.ts (56 tests) 193ms
✓ src/services/receiptService.server.test.ts (37 tests) 205ms
❯ src/pages/admin/components/ProfileManager.test.tsx 0/46
❯ src/routes/auth.routes.test.ts [queued]
❯ src/services/db/personalization.db.test.ts 56/56
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/services/receiptService.server.test.ts 37/37
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 763 passed (817)
Start at 07:51:47
Duration 33.37s
❯ src/pages/admin/components/ProfileManager.test.tsx 0/46
❯ src/routes/auth.routes.test.ts 0/47
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 763 passed (864)
Start at 07:51:47
Duration 33.79s
❯ src/pages/admin/components/ProfileManager.test.tsx 0/46
❯ src/routes/auth.routes.test.ts 1/47
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 764 passed (864)
Start at 07:51:47
Duration 34.30s
stderr | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authentication Flows (Signed Out) > should render the Sign In form when authStatus is SIGNED_OUT
React does not recognize the `showStrength` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `showstrength` instead. If you accidentally passed it from a parent component, remove it from the DOM element.
❯ src/pages/admin/components/ProfileManager.test.tsx 0/46
❯ src/routes/auth.routes.test.ts 5/47
❯ src/services/flyerProcessingService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 768 passed (864)
Start at 07:51:47
Duration 34.42s
stdout | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /register > should return 500 if a generic database error occurs during registration
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx 0/46
❯ src/routes/auth.routes.test.ts 6/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 769 passed (884)
Start at 07:51:47
Duration 34.53s
stderr | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /register > should return 500 if a generic database error occurs during registration
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB connection lost
at /app/src/routes/auth.routes.test.ts:267:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx 0/46
❯ src/routes/auth.routes.test.ts 6/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 769 passed (884)
Start at 07:51:47
Duration 34.53s
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should process an image file successfully and enqueue a cleanup job
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.jpg
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should process an image file successfully and enqueue a cleanup job
[WORKER DEBUG] ProcessingService: fileHandler returned 1 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should process an image file successfully and enqueue a cleanup job
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should process an image file successfully and enqueue a cleanup job
[WORKER DEBUG] ProcessingService: aiProcessor returned data for store: Mock Store
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should process an image file successfully and enqueue a cleanup job
[WORKER DEBUG] ProcessingService: Generating icon from /tmp/flyer-processed.jpeg to /tmp/icons
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 7/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 771 passed (884)
Start at 07:51:47
Duration 34.63s
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should process an image file successfully and enqueue a cleanup job
[WORKER DEBUG] ProcessingService: Icon generated: icon-flyer.webp
[DEBUG] FlyerProcessingService resolved baseUrl: "https://example.com" (job.data.baseUrl: "https://example.com", env.FRONTEND_URL: "http://localhost:3000")
[DEBUG] FlyerProcessingService calling transformer with: {
originalFileName: 'flyer.jpg',
imageFileName: 'flyer-processed.jpeg',
iconFileName: 'icon-flyer.webp',
checksum: 'checksum-123',
baseUrl: 'https://example.com'
}
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should process an image file successfully and enqueue a cleanup job
[DEBUG] FlyerProcessingService transformer output URLs: {
imageUrl: 'https://example.com/test.jpg',
iconUrl: 'https://example.com/icon.webp'
}
[DEBUG] Full Flyer Data to be saved: {
"file_name": "test.jpg",
"image_url": "https://example.com/test.jpg",
"icon_url": "https://example.com/icon.webp",
"store_name": "Mock Store",
"status": "processed",
"item_count": 0,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07"
}
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should convert a PDF, process its images, and enqueue a cleanup job for all files
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.pdf
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should convert a PDF, process its images, and enqueue a cleanup job for all files
[WORKER DEBUG] ProcessingService: fileHandler returned 2 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should convert a PDF, process its images, and enqueue a cleanup job for all files
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should convert a PDF, process its images, and enqueue a cleanup job for all files
[WORKER DEBUG] ProcessingService: aiProcessor returned data for store: Mock Store
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should convert a PDF, process its images, and enqueue a cleanup job for all files
[WORKER DEBUG] ProcessingService: Generating icon from /tmp/flyer-1.jpg to /tmp/icons
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should convert a PDF, process its images, and enqueue a cleanup job for all files
[WORKER DEBUG] ProcessingService: Icon generated: icon-flyer-1.webp
[DEBUG] FlyerProcessingService resolved baseUrl: "https://example.com" (job.data.baseUrl: "https://example.com", env.FRONTEND_URL: "http://localhost:3000")
[DEBUG] FlyerProcessingService calling transformer with: {
originalFileName: 'flyer.pdf',
imageFileName: 'flyer-1.jpg',
iconFileName: 'icon-flyer-1.webp',
checksum: 'checksum-123',
baseUrl: 'https://example.com'
}
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 13/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 777 passed (884)
Start at 07:51:47
Duration 34.83s
stdout | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /login > should return 500 if saving the refresh token fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 13/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 777 passed (884)
Start at 07:51:47
Duration 34.83s
stderr | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /login > should return 500 if saving the refresh token fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB write failed
at /app/src/routes/auth.routes.test.ts:357:65
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should convert a PDF, process its images, and enqueue a cleanup job for all files
[DEBUG] FlyerProcessingService transformer output URLs: {
imageUrl: 'https://example.com/test.jpg',
iconUrl: 'https://example.com/icon.webp'
}
[DEBUG] Full Flyer Data to be saved: {
"file_name": "test.jpg",
"image_url": "https://example.com/test.jpg",
"icon_url": "https://example.com/icon.webp",
"store_name": "Mock Store",
"status": "processed",
"item_count": 0,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07"
}
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 13/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 777 passed (884)
Start at 07:51:47
Duration 34.83s
stdout | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /login > should return 500 if passport strategy returns an error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 13/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 777 passed (884)
Start at 07:51:47
Duration 34.83s
stderr | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /login > should return 500 if passport strategy returns an error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Database connection failed
at /app/src/routes/auth.routes.test.ts:33:25
at /app/src/routes/auth.routes.ts:294:5
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at /app/src/middleware/validation.middleware.ts:43:14
at processTicksAndRejections (node:internal/process/task_queues:95:5)
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the AI service fails
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.jpg
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the AI service fails
[WORKER DEBUG] ProcessingService: fileHandler returned 1 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the AI service fails
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 13/47
❯ src/services/flyerProcessingService.server.test.ts 0/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 777 passed (884)
Start at 07:51:47
Duration 34.83s
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 17/47
❯ src/services/flyerProcessingService.server.test.ts 2/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 783 passed (884)
Start at 07:51:47
Duration 34.94s
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw UnrecoverableError for quota issues and not enqueue cleanup
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.jpg
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw UnrecoverableError for quota issues and not enqueue cleanup
[WORKER DEBUG] ProcessingService: fileHandler returned 1 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw UnrecoverableError for quota issues and not enqueue cleanup
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw PdfConversionError and not enqueue cleanup if PDF conversion fails
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/bad.pdf
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 21/47
❯ src/services/flyerProcessingService.server.test.ts 5/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 790 passed (884)
Start at 07:51:47
Duration 35.05s
stdout | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /forgot-password > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 21/47
❯ src/services/flyerProcessingService.server.test.ts 5/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 790 passed (884)
Start at 07:51:47
Duration 35.05s
stderr | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /forgot-password > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB connection failed
at /app/src/routes/auth.routes.test.ts:460:57
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw AiDataValidationError and not enqueue cleanup if AI validation fails
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.jpg
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw AiDataValidationError and not enqueue cleanup if AI validation fails
[WORKER DEBUG] ProcessingService: fileHandler returned 1 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw AiDataValidationError and not enqueue cleanup if AI validation fails
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should handle convertible image types and include original and converted files in cleanup
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.gif
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should handle convertible image types and include original and converted files in cleanup
[WORKER DEBUG] ProcessingService: fileHandler returned 1 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should handle convertible image types and include original and converted files in cleanup
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should handle convertible image types and include original and converted files in cleanup
[WORKER DEBUG] ProcessingService: aiProcessor returned data for store: Mock Store
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should handle convertible image types and include original and converted files in cleanup
[WORKER DEBUG] ProcessingService: Generating icon from /tmp/flyer-converted.png to /tmp/icons
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should handle convertible image types and include original and converted files in cleanup
[WORKER DEBUG] ProcessingService: Icon generated: icon-flyer-converted.webp
[DEBUG] FlyerProcessingService resolved baseUrl: "https://example.com" (job.data.baseUrl: "https://example.com", env.FRONTEND_URL: "http://localhost:3000")
[DEBUG] FlyerProcessingService calling transformer with: {
originalFileName: 'flyer.gif',
imageFileName: 'flyer-converted.png',
iconFileName: 'icon-flyer-converted.webp',
checksum: 'checksum-123',
baseUrl: 'https://example.com'
}
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should handle convertible image types and include original and converted files in cleanup
[DEBUG] FlyerProcessingService transformer output URLs: {
imageUrl: 'https://example.com/test.jpg',
iconUrl: 'https://example.com/icon.webp'
}
[DEBUG] Full Flyer Data to be saved: {
"file_name": "test.jpg",
"image_url": "https://example.com/test.jpg",
"icon_url": "https://example.com/icon.webp",
"store_name": "Mock Store",
"status": "processed",
"item_count": 0,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07"
}
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 21/47
❯ src/services/flyerProcessingService.server.test.ts 5/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 790 passed (884)
Start at 07:51:47
Duration 35.05s
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the database service fails
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.jpg
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the database service fails
[WORKER DEBUG] ProcessingService: fileHandler returned 1 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the database service fails
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the database service fails
[WORKER DEBUG] ProcessingService: aiProcessor returned data for store: Mock Store
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the database service fails
[WORKER DEBUG] ProcessingService: Generating icon from /tmp/flyer.jpg to /tmp/icons
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the database service fails
[WORKER DEBUG] ProcessingService: Icon generated: icon-flyer.webp
[DEBUG] FlyerProcessingService resolved baseUrl: "https://example.com" (job.data.baseUrl: "https://example.com", env.FRONTEND_URL: "http://localhost:3000")
[DEBUG] FlyerProcessingService calling transformer with: {
originalFileName: 'flyer.jpg',
imageFileName: 'flyer.jpg',
iconFileName: 'icon-flyer.webp',
checksum: 'checksum-123',
baseUrl: 'https://example.com'
}
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw an error and not enqueue cleanup if the database service fails
[DEBUG] FlyerProcessingService transformer output URLs: {
imageUrl: 'https://example.com/test.jpg',
iconUrl: 'https://example.com/icon.webp'
}
[DEBUG] Full Flyer Data to be saved: {
"file_name": "test.jpg",
"image_url": "https://example.com/test.jpg",
"icon_url": "https://example.com/icon.webp",
"store_name": "Mock Store",
"status": "processed",
"item_count": 0,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07"
}
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should throw UnsupportedFileTypeError for an unsupported file type
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/document.txt
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should delegate to _reportErrorAndThrow if icon generation fails
[WORKER DEBUG] ProcessingService: Calling fileHandler.prepareImageInputs for /tmp/flyer.jpg
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should delegate to _reportErrorAndThrow if icon generation fails
[WORKER DEBUG] ProcessingService: fileHandler returned 1 images.
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should delegate to _reportErrorAndThrow if icon generation fails
[WORKER DEBUG] ProcessingService: Calling aiProcessor.extractAndValidateData
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should delegate to _reportErrorAndThrow if icon generation fails
[WORKER DEBUG] ProcessingService: aiProcessor returned data for store: Mock Store
stderr | src/services/flyerProcessingService.server.test.ts > FlyerProcessingService > processJob (Orchestrator) > should delegate to _reportErrorAndThrow if icon generation fails
[WORKER DEBUG] ProcessingService: Generating icon from /tmp/flyer.jpg to /tmp/icons
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 24/47
❯ src/services/flyerProcessingService.server.test.ts 11/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 11 passed (242)
Tests 1 failed | 799 passed (884)
Start at 07:51:47
Duration 35.15s
stdout | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /reset-password > should return 500 if updatePassword throws an error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 27/47
❯ src/services/flyerProcessingService.server.test.ts 20/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 811 passed (884)
Start at 07:51:47
Duration 35.25s
stderr | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /reset-password > should return 500 if updatePassword throws an error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Database connection failed
at /app/src/routes/auth.routes.test.ts:520:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 27/47
❯ src/services/flyerProcessingService.server.test.ts 20/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 811 passed (884)
Start at 07:51:47
Duration 35.25s
✓ src/services/flyerProcessingService.server.test.ts (20 tests) 724ms
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 27/47
❯ src/services/flyerProcessingService.server.test.ts 20/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 811 passed (884)
Start at 07:51:47
Duration 35.25s
stdout | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /refresh-token > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 31/47
❯ src/services/flyerProcessingService.server.test.ts 20/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 815 passed (884)
Start at 07:51:47
Duration 35.36s
stderr | src/routes/auth.routes.test.ts > Auth Routes (/api/auth) > POST /refresh-token > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/auth.routes.test.ts:565:62
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 31/47
❯ src/services/flyerProcessingService.server.test.ts 20/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 815 passed (884)
Start at 07:51:47
Duration 35.36s
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 34/47
❯ src/services/flyerProcessingService.server.test.ts 20/20
❯ src/tests/integration/flyer-processing.integration.test.ts 0/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 818 passed (884)
Start at 07:51:47
Duration 35.61s
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 36/47
❯ src/services/flyerProcessingService.server.test.ts 20/20
❯ src/tests/integration/flyer-processing.integration.test.ts 1/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 820 passed | 1 skipped (884)
Start at 07:51:47
Duration 35.71s
stderr | src/tests/integration/flyer-processing.integration.test.ts > Flyer Processing Background Job Integration Test
[TEST TEARDOWN] Closing in-process workers...
❯ src/pages/admin/components/ProfileManager.test.tsx 1/46
❯ src/routes/auth.routes.test.ts 37/47
❯ src/tests/integration/flyer-processing.integration.test.ts 1/7
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 821 passed | 1 skipped (884)
Start at 07:51:47
Duration 36.64s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 3/46
❯ src/routes/auth.routes.test.ts 42/47
❯ src/services/db/admin.db.test.ts [queued]
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 828 passed | 7 skipped (884)
Start at 07:51:47
Duration 36.80s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 3/46
❯ src/routes/auth.routes.test.ts 47/47
❯ src/services/db/admin.db.test.ts [queued]
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 12 passed (242)
Tests 1 failed | 833 passed | 7 skipped (884)
Start at 07:51:47
Duration 38.35s
✓ src/routes/auth.routes.test.ts (47 tests) 3327ms
✓ should block requests after exceeding the limit when the opt-in header is sent 397ms
✓ should NOT block requests when the opt-in header is not sent (default test behavior) 354ms
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should handle failure when fetching user address
[TEST DEBUG] Running: should handle failure when fetching user address
[TEST DEBUG] Mocked apiClient.getUserAddress to reject.
[TEST DEBUG] Waiting for assertions. Current logger calls: []
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should handle failure when fetching user address
[TEST DEBUG] Waiting for assertions. Current logger calls: [ [ '[useProfileAddress] Fetch returned null for addressId: 123.' ] ]
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 12/46
❯ src/routes/auth.routes.test.ts 47/47
❯ src/services/db/admin.db.test.ts [queued]
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 13 passed (242)
Tests 1 failed | 842 passed | 7 skipped (884)
Start at 07:51:47
Duration 38.71s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 13/46
❯ src/routes/auth.routes.test.ts 47/47
❯ src/services/db/admin.db.test.ts [queued]
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 13 passed (242)
Tests 1 failed | 843 passed | 7 skipped (884)
Start at 07:51:47
Duration 38.93s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 15/46
❯ src/routes/auth.routes.test.ts 47/47
❯ src/services/db/admin.db.test.ts [queued]
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 13 passed (242)
Tests 1 failed | 845 passed | 7 skipped (884)
Start at 07:51:47
Duration 39.23s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 16/46
❯ src/services/db/admin.db.test.ts [queued]
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 13 passed (242)
Tests 1 failed | 846 passed | 7 skipped (884)
Start at 07:51:47
Duration 40.92s
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should not geocode if address already has coordinates (using fake timers)
[TEST LOG] Waiting for initial address load...
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 17/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/db/admin.db.test.ts [queued]
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 13 passed (242)
Tests 1 failed | 847 passed | 7 skipped (884)
Start at 07:51:47
Duration 41.07s
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should not geocode if address already has coordinates (using fake timers)
[TEST LOG] Wait complete. Verifying no geocode call.
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 17/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/db/admin.db.test.ts 0/54
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 13 passed (242)
Tests 1 failed | 847 passed | 7 skipped (938)
Start at 07:51:47
Duration 41.27s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 17/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/db/admin.db.test.ts 1/54
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 13 passed (242)
Tests 1 failed | 848 passed | 7 skipped (938)
Start at 07:51:47
Duration 41.40s
✓ src/services/db/admin.db.test.ts (54 tests) 174ms
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 17/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/db/admin.db.test.ts 54/54
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts [queued]
Test Files 1 failed | 14 passed (242)
Tests 1 failed | 901 passed | 7 skipped (938)
Start at 07:51:47
Duration 42.12s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 18/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/db/admin.db.test.ts 54/54
❯ src/services/expiryService.server.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 1 failed | 14 passed (242)
Tests 1 failed | 902 passed | 7 skipped (969)
Start at 07:51:47
Duration 42.24s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 18/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/db/admin.db.test.ts 54/54
❯ src/services/expiryService.server.test.ts 1/26
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 1 failed | 14 passed (242)
Tests 1 failed | 903 passed | 7 skipped (995)
Start at 07:51:47
Duration 42.61s
✓ src/services/expiryService.server.test.ts (26 tests) 153ms
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 18/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/db/admin.db.test.ts 54/54
❯ src/services/expiryService.server.test.ts 26/26
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 1 failed | 15 passed (242)
Tests 1 failed | 928 passed | 7 skipped (995)
Start at 07:51:47
Duration 42.82s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 18/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/services/expiryService.server.test.ts 26/26
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 1 failed | 15 passed (242)
Tests 1 failed | 928 passed | 7 skipped (995)
Start at 07:51:47
Duration 43.06s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 19/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 1 failed | 15 passed (242)
Tests 1 failed | 929 passed | 7 skipped (995)
Start at 07:51:47
Duration 44.34s
Sourcemap for "/app/node_modules/node-cron/dist/esm/node-cron.js" points to missing source files
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 20/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 1 failed | 15 passed (242)
Tests 1 failed | 930 passed | 7 skipped (995)
Start at 07:51:47
Duration 45.45s
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 21/46
❯ src/services/backgroundJobService.test.ts [queued]
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 1 failed | 15 passed (242)
Tests 1 failed | 931 passed | 7 skipped (995)
Start at 07:51:47
Duration 45.97s
❯ src/tests/integration/flyer-processing.integration.test.ts (7 tests | 7 skipped) 20095ms
↓ should successfully process a flyer for an AUTHENTICATED user via the background queue
↓ should successfully process a flyer for an ANONYMOUS user via the background queue
↓ should strip EXIF data from uploaded JPEG images during processing
↓ should strip metadata from uploaded PNG images during processing
↓ should handle a failure from the AI service gracefully - requires mock injection mechanism
↓ should handle a database failure during flyer creation - requires mock injection mechanism
↓ should NOT clean up temporary files when a job fails - requires mock injection mechanism
❯ src/App.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 21/46
❯ src/services/backgroundJobService.test.ts 0/28
❯ src/tests/integration/flyer-processing.integration.test.ts 7/7
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 15 passed (242)
Tests 1 failed | 931 passed | 7 skipped (1023)
Start at 07:51:47
Duration 46.11s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 21/46
❯ src/services/backgroundJobService.test.ts 0/28
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 15 passed (242)
Tests 1 failed | 931 passed | 7 skipped (1023)
Start at 07:51:47
Duration 46.40s
✓ src/services/backgroundJobService.test.ts (28 tests) 449ms
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 22/46
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 960 passed | 7 skipped (1023)
Start at 07:51:47
Duration 47.15s
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should handle toggling dark mode when profile preferences are initially null
[TEST LOG] Clicking preferences tab...
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should handle toggling dark mode when profile preferences are initially null
[TEST LOG] Clicking dark mode toggle...
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 23/46
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 961 passed | 7 skipped (1023)
Start at 07:51:47
Duration 47.65s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 26/46
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 964 passed | 7 skipped (1023)
Start at 07:51:47
Duration 48.82s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 26/46
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 964 passed | 7 skipped (1023)
Start at 07:51:47
Duration 49.19s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 27/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 965 passed | 7 skipped (1023)
Start at 07:51:47
Duration 49.30s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 28/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 966 passed | 7 skipped (1023)
Start at 07:51:47
Duration 49.54s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 29/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 967 passed | 7 skipped (1023)
Start at 07:51:47
Duration 50.16s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 30/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 968 passed | 7 skipped (1023)
Start at 07:51:47
Duration 50.42s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 31/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 969 passed | 7 skipped (1023)
Start at 07:51:47
Duration 50.80s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 32/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 970 passed | 7 skipped (1023)
Start at 07:51:47
Duration 50.91s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 32/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 970 passed | 7 skipped (1023)
Start at 07:51:47
Duration 51.21s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 33/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 971 passed | 7 skipped (1023)
Start at 07:51:47
Duration 51.46s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 34/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 972 passed | 7 skipped (1023)
Start at 07:51:47
Duration 51.74s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts 0/28
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 35/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 973 passed | 7 skipped (1051)
Start at 07:51:47
Duration 52.00s
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts 1/28
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 35/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 16 passed (242)
Tests 1 failed | 974 passed | 7 skipped (1051)
Start at 07:51:47
Duration 52.21s
✓ src/config/passport.test.ts (28 tests) 115ms
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should log warning if address fetch returns null
[TEST DEBUG] Running: should log warning if address fetch returns null
[TEST DEBUG] Mocked apiClient.getUserAddress to resolve with a null body.
[TEST DEBUG] Waiting for assertions. Current logger calls: []
stdout | src/pages/admin/components/ProfileManager.test.tsx > ProfileManager > Authenticated User Features > should log warning if address fetch returns null
[TEST DEBUG] Waiting for assertions. Current logger calls: [ [ '[useProfileAddress] Fetch returned null for addressId: 123.' ] ]
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts 28/28
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 36/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 0/31
Test Files 2 failed | 17 passed (242)
Tests 1 failed | 1002 passed | 7 skipped (1051)
Start at 07:51:47
Duration 52.56s
❯ src/tests/integration/inventory.integration.test.ts (31 tests | 31 skipped) 10023ms
↓ should add a new inventory item
↓ should add item without expiry date
↓ should add item with notes and purchase_date
↓ should reject invalid location
↓ should reject missing item_name
↓ should reject unauthenticated requests
↓ should return all inventory items
↓ should filter by location
↓ should support pagination
↓ should compute expiry_status correctly for items
↓ should only return items for the authenticated user
↓ should return item details
↓ should return 404 for non-existent item
↓ should not allow accessing another user's item
↓ should update item quantity
↓ should update item location
↓ should update expiry_date
↓ should reject empty update body
↓ should delete an inventory item
↓ should mark item as consumed
↓ should verify item is marked as consumed
↓ should return 404 for already consumed or non-existent item
↓ should return items expiring within default days
↓ should respect days parameter
↓ should return expired items
↓ should return alert settings
↓ should update alert settings for email method
↓ should reject invalid days_before_expiry
↓ should reject invalid alert method
↓ should return recipe suggestions for expiring items
↓ should handle full add-track-consume workflow
❯ src/App.test.tsx [queued]
❯ src/config/passport.test.ts 28/28
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 39/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 31/31
Test Files 3 failed | 17 passed (242)
Tests 1 failed | 1005 passed | 38 skipped (1051)
Start at 07:51:47
Duration 52.69s
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 40/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts [queued]
❯ src/tests/integration/inventory.integration.test.ts 31/31
Test Files 3 failed | 17 passed (242)
Tests 1 failed | 1006 passed | 38 skipped (1051)
Start at 07:51:47
Duration 53.27s
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 42/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts 1/38
Test Files 3 failed | 17 passed (242)
Tests 1 failed | 1009 passed | 38 skipped (1089)
Start at 07:51:47
Duration 53.58s
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 43/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts 8/38
Test Files 3 failed | 17 passed (242)
Tests 1 failed | 1017 passed | 38 skipped (1089)
Start at 07:51:47
Duration 53.71s
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 43/46
❯ src/routes/health.routes.test.ts [queued]
❯ src/routes/receipt.routes.test.ts 12/38
Test Files 3 failed | 17 passed (242)
Tests 1 failed | 1021 passed | 38 skipped (1089)
Start at 07:51:47
Duration 54.54s
✓ src/routes/receipt.routes.test.ts (38 tests) 957ms
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 44/46
❯ src/routes/health.routes.test.ts 0/32
❯ src/routes/receipt.routes.test.ts 38/38
Test Files 3 failed | 18 passed (242)
Tests 1 failed | 1048 passed | 38 skipped (1121)
Start at 07:51:47
Duration 54.98s
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 45/46
❯ src/routes/health.routes.test.ts 0/32
❯ src/routes/receipt.routes.test.ts 38/38
Test Files 3 failed | 18 passed (242)
Tests 1 failed | 1049 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.49s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Connection timed out
at /app/src/routes/health.routes.test.ts:88:26
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping returns an unexpected response
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping returns an unexpected response
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Unexpected Redis ping response: OK
at /app/src/routes/health.routes.ts:432:13
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /db-schema > should return 500 if tables are missing
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /db-schema > should return 500 if tables are missing
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Database schema check failed. Missing tables: missing_table_1, missing_table_2.
at /app/src/routes/health.routes.ts:333:9
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /db-schema > should return 500 if the database check fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /db-schema > should return 500 if the database check fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB connection failed
at /app/src/routes/health.routes.test.ts:159:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /db-schema > should return 500 if the database check fails
[DEBUG] health.routes.test.ts: Verifying logger.error for DB schema check failure
✓ src/pages/admin/components/ProfileManager.test.tsx (46 tests) 22832ms
✓ should render the Sign In form when authStatus is SIGNED_OUT 1933ms
✓ should switch to the Create an Account form and register successfully 1601ms
✓ should switch to the Reset Password form and request a reset 579ms
✓ should render profile tabs when authStatus is AUTHENTICATED 329ms
✓ should handle unexpected Promise.allSettled rejection during save 432ms
✓ should show error if geocoding is attempted with no address string 350ms
✓ should automatically geocode address after user stops typing (using fake timers) 1629ms
✓ should show an error when trying to link an account 827ms
✓ should show an error when trying to link a GitHub account 1198ms
✓ should switch between all tabs correctly 1959ms
✓ should show an error if password is too short 585ms
✓ should show an error if account deletion fails 1192ms
✓ should handle toggling dark mode when profile preferences are initially null 801ms
✓ should allow updating the user profile and address 376ms
✓ should show an error if updating the address fails but profile succeeds 413ms
✓ should allow updating the password 335ms
✓ should show an error if passwords do not match 371ms
✓ should trigger data export 428ms
✓ should handle account deletion flow 515ms
✓ should allow toggling dark mode 314ms
✓ should allow changing unit system when preferences are initially null 494ms
✓ should not call onProfileUpdate if updating unit system fails 314ms
✓ should only call updateAddress when only address data has changed 331ms
✓ should handle updating the user profile and address with empty strings 587ms
✓ should show error notification when manual geocoding fails 388ms
✓ should handle permission denied error during geocoding 513ms
✓ should not trigger OAuth link if user profile is missing 968ms
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /db-schema > should return 500 if the database check fails with a non-Error object
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /db-schema > should return 500 if the database check fails with a non-Error object
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB connection failed
at /app/src/routes/health.routes.ts:344:17
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /storage > should return 500 if storage is not accessible or writable
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /storage > should return 500 if storage is not accessible or writable
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Storage check failed. Ensure the directory '/var/www/flyer-crawler.projectium.com/flyer-images' exists and is writable by the application.
at /app/src/routes/health.routes.ts:362:7
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /storage > should return 500 if storage check fails with a non-Error object
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /storage > should return 500 if storage check fails with a non-Error object
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Storage check failed. Ensure the directory '/var/www/flyer-crawler.projectium.com/flyer-images' exists and is writable by the application.
at /app/src/routes/health.routes.ts:362:7
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 8/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1058 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.61s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > should return 500 if getPoolStatus throws an error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > should return 500 if getPoolStatus throws an error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Pool is not initialized
at /app/src/routes/health.routes.test.ts:293:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > should return 500 if getPoolStatus throws a non-Error object
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > should return 500 if getPoolStatus throws a non-Error object
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Pool is not initialized
at /app/src/routes/health.routes.ts:401:19
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at /app/src/middleware/validation.middleware.ts:43:14
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Connection timed out
at /app/src/routes/health.routes.test.ts:334:26
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping fails
[DEBUG] health.routes.test.ts: Checking if logger.error was called with the correct pattern
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping returns an unexpected response
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping returns an unexpected response
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Unexpected Redis ping response: OK
at /app/src/routes/health.routes.ts:432:13
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stdout | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping fails with a non-Error object
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
stderr | src/routes/health.routes.test.ts > Health Routes (/api/health) > GET /redis > should return 500 if Redis ping fails with a non-Error object
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Non-error rejection
at /app/src/routes/health.routes.ts:440:19
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/App.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
❯ src/pages/admin/components/ProfileManager.test.tsx 46/46
❯ src/routes/health.routes.test.ts 13/32
Test Files 3 failed | 19 passed (242)
Tests 1 failed | 1063 passed | 38 skipped (1121)
Start at 07:51:47
Duration 55.76s
✓ src/routes/health.routes.test.ts (32 tests) 793ms
❯ src/App.test.tsx [queued]
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1082 passed | 38 skipped (1121)
Start at 07:51:47
Duration 56.46s
❯ src/App.test.tsx [queued]
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 0/15
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1082 passed | 38 skipped (1136)
Start at 07:51:47
Duration 56.60s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should render the initial state correctly
--- [TEST LOG] ---: Starting test: "FlyerUploader > should render the initial state correctly"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should render the initial state correctly
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should render the initial state correctly
--- [TEST LOG] ---: Finished test: "FlyerUploader > should render the initial state correctly"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: Starting test: "FlyerUploader > should handle file upload and start polling"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 1. Setting up mocks for upload and polling.
--- [TEST LOG] ---: 2. Rendering component and preparing file.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 3. Firing file change event.
--- [TEST LOG] ---: 4. File change event fired. Now AWAITING UI update.
--- [TEST LOG] ---: 5a. Awaiting screen.findByText("Checking...")
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
[LOGGER.INFO] FlyerUploader Status: Checking...
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 5b. SUCCESS: UI updated to polling state.
--- [TEST LOG] ---: 6. Asserting mock calls after UI update.
--- [TEST LOG] ---: 7. Mocks verified. Advancing timers now...
--- [TEST LOG] ---: 9. Act block finished. Now checking if getJobStatus was called again.
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
❯ src/App.test.tsx [queued]
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 1/15
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1083 passed | 38 skipped (1136)
Start at 07:51:47
Duration 58.23s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
❯ src/App.test.tsx [queued]
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 1/15
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1083 passed | 38 skipped (1136)
Start at 07:51:47
Duration 58.36s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
❯ src/App.test.tsx [queued]
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 1/15
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1083 passed | 38 skipped (1136)
Start at 07:51:47
Duration 59.17s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 10. waitFor check: getJobStatus calls = 2
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: 11. SUCCESS: Second poll confirmed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload and start polling
--- [TEST LOG] ---: Finished test: "FlyerUploader > should handle file upload and start polling"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload via drag and drop
--- [TEST LOG] ---: Starting test: "FlyerUploader > should handle file upload via drag and drop"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload via drag and drop
--- [TEST LOG] ---: 1. Setting up mocks for drag and drop.
--- [TEST LOG] ---: 2. Rendering component and preparing file for drop.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 3. Firing drop event.
--- [TEST LOG] ---: 4. Awaiting UI update to "Dropped...".
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload via drag and drop
[LOGGER.INFO] FlyerUploader Status: Dropped...
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload via drag and drop
--- [TEST LOG] ---: 5. Asserting upload was called.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle file upload via drag and drop
--- [TEST LOG] ---: Finished test: "FlyerUploader > should handle file upload via drag and drop"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: Starting test: "FlyerUploader > should poll for status, complete successfully, and redirect"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 1. Setting up mock sequence for polling.
--- [TEST LOG] ---: 2. Rendering component and uploading file.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 3. Fired event. Now AWAITING UI update to "Analyzing...".
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
[LOGGER.INFO] FlyerUploader Status: Analyzing...
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 4. SUCCESS: UI is showing "Analyzing...".
--- [TEST LOG] ---: 5. First poll confirmed. Now AWAITING timer advancement.
--- [TEST LOG] ---: 8a. waitFor check: Waiting for completion text and job status count.
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
❯ src/App.test.tsx [queued]
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 2/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1084 passed | 38 skipped (1136)
Start at 07:51:47
Duration 60.10s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
❯ src/App.test.tsx [queued]
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1085 passed | 38 skipped (1136)
Start at 07:51:47
Duration 61.55s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
❯ src/App.test.tsx 0/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1085 passed | 38 skipped (1162)
Start at 07:51:47
Duration 61.83s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/App.test.tsx > App Component > should render the main layout and header
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
❯ src/App.test.tsx 0/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts 0/15
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1085 passed | 38 skipped (1177)
Start at 07:51:47
Duration 62.05s
stdout | src/App.test.tsx > App Component > should render the footer
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
❯ src/App.test.tsx 0/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts 1/15
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1086 passed | 38 skipped (1177)
Start at 07:51:47
Duration 62.31s
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > should call AI service and return validated data on success
[WORKER DEBUG] FlyerAiProcessor[itaaks]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > should call AI service and return validated data on success
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "AI Store",
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 AI St",
"items": [
{
"item": "Test Item",
"price_display": "$1.99",
"price_in_cents": 199,
"quantity": "each",
"category_name": "Grocery"
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > should throw an error if getAllMasterItems fails
[WORKER DEBUG] FlyerAiProcessor[wzq44]: extractAndValidateData called with 1 images, extractFn=null
❯ src/App.test.tsx 0/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts 1/15
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1086 passed | 38 skipped (1177)
Start at 07:51:47
Duration 62.31s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
❯ src/App.test.tsx 0/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts 1/15
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1086 passed | 38 skipped (1177)
Start at 07:51:47
Duration 62.31s
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should pass validation and not flag for review with good quality data
[WORKER DEBUG] FlyerAiProcessor[ain34]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should pass validation and not flag for review with good quality data
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Good Store",
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 Good St",
"items": [
{
"item": "Priced Item 1",
"price_in_cents": 199,
"price_display": "$1.99",
"quantity": "1",
"category_name": "A"
},
{
"item": "Priced Item 2",
"price_in_cents": 299,
"price_display": "$2.99",
"quantity": "1",
"category_name": "B"
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should throw AiDataValidationError if AI response has incorrect data structure
[WORKER DEBUG] FlyerAiProcessor[k77mvq]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should throw AiDataValidationError if AI response has incorrect data structure
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Invalid Store",
"valid_from": null,
"valid_to": null,
"store_address": null,
"items": [
"n",
"o",
"t",
"-",
"a",
"n",
"-",
"a",
"r",
"r",
"a",
"y"
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if store_name is missing
[WORKER DEBUG] FlyerAiProcessor[7qe8nn]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if store_name is missing
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": null,
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": null,
"items": [
{
"item": "Test Item",
"price_display": "$1.99",
"price_in_cents": 199,
"quantity": "each",
"category_name": "Grocery"
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if items array is empty
[WORKER DEBUG] FlyerAiProcessor[05z3b]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if items array is empty
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Test Store",
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": null,
"items": []
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if item price quality is low
[WORKER DEBUG] FlyerAiProcessor[6914zi]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if item price quality is low
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Test Store",
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 Test St",
"items": [
{
"item": "Priced Item",
"price_in_cents": 199,
"price_display": "$1.99",
"quantity": "1",
"category_name": "A"
},
{
"item": "Unpriced Item 1",
"price_in_cents": null,
"price_display": "See store",
"quantity": "1",
"category_name": "B"
},
{
"item": "Unpriced Item 2",
"price_in_cents": null,
"price_display": "FREE",
"quantity": "1",
"category_name": "C"
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should use a custom price quality threshold from an environment variable
[WORKER DEBUG] FlyerAiProcessor[aik80k]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should use a custom price quality threshold from an environment variable
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Test Store",
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 Test St",
"items": [
{
"item": "Priced Item 1",
"price_in_cents": 199,
"price_display": "$1.99",
"quantity": "1",
"category_name": "A"
},
{
"item": "Priced Item 2",
"price_in_cents": 299,
"price_display": "$2.99",
"quantity": "1",
"category_name": "B"
},
{
"item": "Priced Item 3",
"price_in_cents": 399,
"price_display": "$3.99",
"quantity": "1",
"category_name": "C"
},
{
"item": "Unpriced Item 1",
"price_in_cents": null,
"price_display": "See store",
"quantity": "1",
"category_name": "D"
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if validity dates are missing
[WORKER DEBUG] FlyerAiProcessor[9pvovw]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should flag for review if validity dates are missing
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Test Store",
"valid_from": null,
"valid_to": null,
"store_address": "123 Test St",
"items": [
{
"item": "Test Item",
"price_in_cents": 199,
"price_display": "$1.99",
"quantity": "1",
"category_name": "A"
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should combine multiple quality issues in the log
[WORKER DEBUG] FlyerAiProcessor[vvow6w]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Validation and Quality Checks > should combine multiple quality issues in the log
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": null,
"valid_from": null,
"valid_to": null,
"store_address": null,
"items": []
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > should pass the userProfileAddress from jobData to the AI service
[WORKER DEBUG] FlyerAiProcessor[qg4lr]: extractAndValidateData called with 1 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > should pass the userProfileAddress from jobData to the AI service
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Test Store",
"valid_from": "2024-01-01",
"valid_to": "2024-01-07",
"store_address": "123 Test St",
"items": [
{
"item": "Test Item",
"price_in_cents": 199,
"price_display": "$1.99",
"quantity": "1",
"category_name": "A"
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Batching Logic > should process images in batches and merge the results correctly
[WORKER DEBUG] FlyerAiProcessor[8m4yo]: extractAndValidateData called with 5 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Batching Logic > should process images in batches and merge the results correctly
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Batch 1 Store",
"valid_from": "2025-01-01",
"valid_to": "2025-01-07",
"store_address": "123 Batch St",
"items": [
{
"item": "Item A",
"price_display": "$1",
"price_in_cents": 100,
"quantity": "1",
"category_name": "Cat A",
"master_item_id": 1
},
{
"item": "Item B",
"price_display": "$2",
"price_in_cents": 200,
"quantity": "1",
"category_name": "Cat B",
"master_item_id": 2
},
{
"item": "Item C",
"price_display": "$3",
"price_in_cents": 300,
"quantity": "1",
"category_name": "Cat C",
"master_item_id": 3
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Batching Logic > should handle an empty object response from a batch without crashing
[WORKER DEBUG] FlyerAiProcessor[m9excw]: extractAndValidateData called with 5 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Batching Logic > should handle an empty object response from a batch without crashing
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Good Store",
"valid_from": "2025-01-01",
"valid_to": "2025-01-07",
"store_address": "123 Good St",
"items": [
{
"item": "Item A",
"price_display": "$1",
"price_in_cents": 100,
"quantity": "1",
"category_name": "Cat A",
"master_item_id": 1
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Batching Logic > should fill in missing metadata from subsequent batches
[WORKER DEBUG] FlyerAiProcessor[nge3r]: extractAndValidateData called with 5 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > Batching Logic > should fill in missing metadata from subsequent batches
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Batch 2 Store",
"valid_from": "2025-01-01",
"valid_to": "2025-01-07",
"store_address": "456 Subsequent St",
"items": [
{
"item": "Item A",
"price_display": "$1",
"price_in_cents": 100,
"quantity": "1",
"category_name": "Cat A",
"master_item_id": 1
},
{
"item": "Item C",
"price_display": "$3",
"price_in_cents": 300,
"quantity": "1",
"category_name": "Cat C",
"master_item_id": 3
}
]
}
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > should handle a single batch correctly when image count is less than BATCH_SIZE
[WORKER DEBUG] FlyerAiProcessor[xp57uo]: extractAndValidateData called with 2 images, extractFn=null
stderr | src/services/flyerAiProcessor.server.test.ts > FlyerAiProcessor > should handle a single batch correctly when image count is less than BATCH_SIZE
[WORKER DEBUG] FlyerAiProcessor: Merged AI Data: {
"store_name": "Single Batch Store",
"valid_from": "2025-02-01",
"valid_to": "2025-02-07",
"store_address": "789 Single St",
"items": [
{
"item": "Item X",
"price_display": "$10",
"price_in_cents": 1000,
"quantity": "1",
"category_name": "Cat X",
"master_item_id": 10
}
]
}
❯ src/App.test.tsx 0/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts 1/15
❯ src/tests/integration/receipt.integration.test.ts [queued]
Test Files 3 failed | 20 passed (242)
Tests 1 failed | 1086 passed | 38 skipped (1177)
Start at 07:51:47
Duration 62.31s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/App.test.tsx > App Component > should render the BulkImporter for an admin user
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > should render the BulkImporter for an admin user
[TEST DEBUG] Test Start: should render the BulkImporter for an admin user
[TEST DEBUG] Rendering App with /admin route
[TEST DEBUG] Waiting for admin-page-mock
stdout | src/App.test.tsx > App Component > should show a welcome message when no flyer is selected
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > should render the admin page on the /admin route
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > should render the admin page on the /admin route
[TEST DEBUG] Rendering App with /admin route
[TEST DEBUG] Waiting for admin-page-mock
stdout | src/App.test.tsx > App Component > should render the reset password page on the correct route
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Flyer Selection from URL > should select a flyer when flyerId is present in the URL
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
✓ src/services/flyerAiProcessor.server.test.ts (15 tests) 113ms
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/App.test.tsx > App Component > Flyer Selection from URL > should not select a flyer if the flyerId from the URL does not exist
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/App.test.tsx > App Component > Flyer Selection from URL > should select the first flyer if no flyer is selected and flyers are available
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/App.test.tsx > App Component > Modal Interactions > should open and close the ProfileManager modal
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
❯ src/App.test.tsx 7/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts 15/15
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 21 passed (242)
Tests 1 failed | 1107 passed | 38 skipped (1200)
Start at 07:51:47
Duration 62.42s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/App.test.tsx > App Component > Modal Interactions > should open and close the ProfileManager modal
[TEST DEBUG] Test Start: should open and close the ProfileManager modal
❯ src/App.test.tsx 8/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/services/flyerAiProcessor.server.test.ts 15/15
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 21 passed (242)
Tests 1 failed | 1108 passed | 38 skipped (1200)
Start at 07:51:47
Duration 62.81s
stdout | src/App.test.tsx > App Component > Modal Interactions > should open and close the ProfileManager modal
[TEST DEBUG] ProfileManager modal opened. Now closing...
stdout | src/App.test.tsx > App Component > Modal Interactions > should open and close the ProfileManager modal
[TEST DEBUG] ProfileManager modal closed.
stdout | src/App.test.tsx > App Component > Modal Interactions > should open and close the VoiceAssistant modal for authenticated users
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Modal Interactions > should open and close the VoiceAssistant modal for authenticated users
[TEST DEBUG] Test Start: should open and close the VoiceAssistant modal
[TEST DEBUG] Rendering App
[TEST DEBUG] Clicking Open Voice Assistant
[TEST DEBUG] Waiting for voice-assistant-mock
stdout | src/App.test.tsx > App Component > Modal Interactions > should not render the FlyerCorrectionTool if no flyer is selected
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Modal Interactions > should open and close the FlyerCorrectionTool modal
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Modal Interactions > should render admin sub-routes correctly
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Modal Interactions > should render admin sub-routes correctly
[TEST DEBUG] Test Start: should render admin sub-routes correctly
Testing admin sub-routes with renderApp wrapper to ensure ModalProvider context
[TEST DEBUG] Rendering App with /admin/corrections
[TEST DEBUG] Waiting for corrections-page-mock
stdout | src/App.test.tsx > App Component > Flyer Correction Tool Data Handling > should handle store name extraction from the correction tool
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=1
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 8b. waitFor interval: calls=2
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 9. SUCCESS: Completion message found.
stdout | src/App.test.tsx > App Component > Flyer Correction Tool Data Handling > should handle date extraction from the correction tool
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Profile and Login Handlers > should call updateProfile when handleProfileUpdate is triggered
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Profile and Login Handlers > should call updateProfile when handleProfileUpdate is triggered
[TEST DEBUG] Test Start: should call updateProfile when handleProfileUpdate is triggered
[TEST DEBUG] Rendering App
[TEST DEBUG] Opening Profile
stdout | src/App.test.tsx > App Component > Profile and Login Handlers > should call updateProfile when handleProfileUpdate is triggered
[TEST DEBUG] Clicking Update Profile
[TEST DEBUG] Checking mockUpdateProfile calls: [ [ { full_name: 'Updated' } ] ]
stdout | src/App.test.tsx > App Component > Profile and Login Handlers > should set an error state if login fails inside handleLoginSuccess
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
❯ src/App.test.tsx 13/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 21 passed (242)
Tests 1 failed | 1113 passed | 38 skipped (1200)
Start at 07:51:47
Duration 63.42s
❯ src/App.test.tsx 16/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 21 passed (242)
Tests 1 failed | 1116 passed | 38 skipped (1200)
Start at 07:51:47
Duration 63.71s
stdout | src/App.test.tsx > App Component > Profile and Login Handlers > should set an error state if login fails inside handleLoginSuccess
[TEST DEBUG] Test Start: should set an error state if login fails inside handleLoginSuccess
[TEST DEBUG] Rendering App
[TEST DEBUG] Opening Profile
stdout | src/App.test.tsx > App Component > Profile and Login Handlers > should set an error state if login fails inside handleLoginSuccess
[TEST DEBUG] Clicking Login
[TEST DEBUG] Checking mockLogin calls: [ [ 'token', {} ] ]
stdout | src/App.test.tsx > App Component > Version Display and What's New > should display the version number and commit link
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > Version Display and What's New > should open the "What's New" modal when the question mark icon is clicked
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > handleDataExtractedFromCorrection edge cases > should handle the early return when selectedFlyer is null
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > handleDataExtractedFromCorrection edge cases > should update store name in selectedFlyer when extracting store_name
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > handleDataExtractedFromCorrection edge cases > should handle dates extraction type
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
❯ src/App.test.tsx 21/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 21 passed (242)
Tests 1 failed | 1121 passed | 38 skipped (1200)
Start at 07:51:47
Duration 64.15s
stdout | src/App.test.tsx > App Component > Debug logging in test environment > should trigger debug logging when NODE_ENV is test
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > handleFlyerSelect callback > should update selectedFlyer when handleFlyerSelect is called
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
stdout | src/App.test.tsx > App Component > URL-based flyer selection edge cases > should not re-select the same flyer if already selected
[TEST DEBUG] beforeEach: Clearing mocks and setting up defaults
[TEST DEBUG] beforeEach: Setup complete
❯ src/App.test.tsx 25/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 21 passed (242)
Tests 1 failed | 1125 passed | 38 skipped (1200)
Start at 07:51:47
Duration 64.25s
✓ src/App.test.tsx (26 tests) 2431ms
✓ should set an error state if login fails inside handleLoginSuccess 862ms
❯ src/App.test.tsx 26/26
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1126 passed | 38 skipped (1200)
Start at 07:51:47
Duration 65.08s
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 3/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1126 passed | 38 skipped (1200)
Start at 07:51:47
Duration 65.19s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: 11. Timers advanced. Now asserting navigation.
--- [TEST LOG] ---: 12. Callback and navigation confirmed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should poll for status, complete successfully, and redirect
--- [TEST LOG] ---: Finished test: "FlyerUploader > should poll for status, complete successfully, and redirect"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a failed job
--- [TEST LOG] ---: Starting test: "FlyerUploader > should handle a failed job"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a failed job
--- [TEST LOG] ---: 1. Setting up mocks for a failed job.
--- [TEST LOG] ---: 2. Rendering and uploading.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 3. Firing file change event.
--- [TEST LOG] ---: 3. File upload triggered.
--- [TEST LOG] ---: 4. AWAITING failure message...
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 4/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1127 passed | 38 skipped (1200)
Start at 07:51:47
Duration 65.33s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a failed job
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a failed job
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
[LOGGER.ERROR] [FlyerUploader] Error encountered: Polling failed: AI model exploded { duplicateFlyerId: null }
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 4/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1127 passed | 38 skipped (1200)
Start at 07:51:47
Duration 65.33s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a failed job
--- [TEST LOG] ---: 5. SUCCESS: Failure message found.
--- [TEST LOG] ---: 6. "Upload Another" button confirmed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a failed job
--- [TEST LOG] ---: Finished test: "FlyerUploader > should handle a failed job"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should clear the polling timeout when a job fails
--- [TEST LOG] ---: Starting test: "FlyerUploader > should clear the polling timeout when a job fails"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should clear the polling timeout when a job fails
--- [TEST LOG] ---: 1. Setting up mocks for failed job timeout clearance.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should clear the polling timeout when a job fails
[LOGGER.INFO] FlyerUploader Status: Working...
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 4/15
❯ src/pages/admin/components/SystemCheck.test.tsx [queued]
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1127 passed | 38 skipped (1200)
Start at 07:51:47
Duration 65.33s
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 5/15
❯ src/pages/admin/components/SystemCheck.test.tsx 0/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1128 passed | 38 skipped (1232)
Start at 07:51:47
Duration 65.87s
❯ src/features/flyer/ExtractedDataTable.test.tsx [queued]
❯ src/features/flyer/FlyerUploader.test.tsx 5/15
❯ src/pages/admin/components/SystemCheck.test.tsx 0/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1128 passed | 38 skipped (1232)
Start at 07:51:47
Duration 66.04s
❯ src/features/flyer/ExtractedDataTable.test.tsx 0/22
❯ src/features/flyer/FlyerUploader.test.tsx 5/15
❯ src/pages/admin/components/SystemCheck.test.tsx 0/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1128 passed | 38 skipped (1254)
Start at 07:51:47
Duration 67.70s
❯ src/features/flyer/ExtractedDataTable.test.tsx 4/22
❯ src/features/flyer/FlyerUploader.test.tsx 5/15
❯ src/pages/admin/components/SystemCheck.test.tsx 1/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1133 passed | 38 skipped (1254)
Start at 07:51:47
Duration 68.53s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should clear the polling timeout when a job fails
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should clear the polling timeout when a job fails
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
[LOGGER.ERROR] [FlyerUploader] Error encountered: Polling failed: Fatal Error { duplicateFlyerId: null }
❯ src/features/flyer/ExtractedDataTable.test.tsx 10/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 5/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1144 passed | 38 skipped (1254)
Start at 07:51:47
Duration 68.63s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should clear the polling timeout when a job fails
--- [TEST LOG] ---: Finished test: "FlyerUploader > should clear the polling timeout when a job fails"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should stop polling for job status when the component unmounts
--- [TEST LOG] ---: Starting test: "FlyerUploader > should stop polling for job status when the component unmounts"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should stop polling for job status when the component unmounts
--- [TEST LOG] ---: 1. Setting up mocks for unmount polling stop.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should stop polling for job status when the component unmounts
[LOGGER.INFO] FlyerUploader Status: Polling...
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should stop polling for job status when the component unmounts
--- [TEST LOG] ---: 2. First poll confirmed.
--- [TEST LOG] ---: 3. Unmounting component.
--- [TEST LOG] ---: 4. Waiting for 4 seconds to check for further polling.
❯ src/features/flyer/ExtractedDataTable.test.tsx 10/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 5/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1144 passed | 38 skipped (1254)
Start at 07:51:47
Duration 68.63s
❯ src/features/flyer/ExtractedDataTable.test.tsx 10/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 6/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1145 passed | 38 skipped (1254)
Start at 07:51:47
Duration 69.07s
❯ src/features/flyer/ExtractedDataTable.test.tsx 10/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 7/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts [queued]
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1146 passed | 38 skipped (1254)
Start at 07:51:47
Duration 69.24s
❯ src/features/flyer/ExtractedDataTable.test.tsx 11/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 7/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 0/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1147 passed | 38 skipped (1295)
Start at 07:51:47
Duration 69.50s
stdout | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET / > should return 500 if service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 12/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 8/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 1/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1150 passed | 38 skipped (1295)
Start at 07:51:47
Duration 69.68s
stderr | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET / > should return 500 if service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/inventory.routes.test.ts:184:63
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 12/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 8/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 1/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1150 passed | 38 skipped (1295)
Start at 07:51:47
Duration 69.68s
stdout | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > POST / > should return 500 if service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 14/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 13/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1166 passed | 38 skipped (1295)
Start at 07:51:47
Duration 69.88s
stderr | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > POST / > should return 500 if service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/inventory.routes.test.ts:248:67
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 14/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 13/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1166 passed | 38 skipped (1295)
Start at 07:51:47
Duration 69.88s
stdout | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /expiring/summary > should return 500 if service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 14/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 14/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1167 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.03s
stderr | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /expiring/summary > should return 500 if service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/inventory.routes.test.ts:421:74
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 14/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 14/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1167 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.03s
stdout | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /expired > should return 500 if service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 15/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 29/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1183 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.13s
stderr | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /expired > should return 500 if service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/inventory.routes.test.ts:483:66
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 15/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 29/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1183 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.13s
stdout | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /alerts > should return 500 if service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 15/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 29/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1183 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.13s
stderr | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /alerts > should return 500 if service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/inventory.routes.test.ts:520:67
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 15/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 29/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1183 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.13s
stdout | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > PUT /alerts/:alertMethod > should return 500 if service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 15/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 29/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1183 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.13s
stderr | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > PUT /alerts/:alertMethod > should return 500 if service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/inventory.routes.test.ts:583:70
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 15/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 29/41
❯ src/services/aiApiClient.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 22 passed (242)
Tests 1 failed | 1183 passed | 38 skipped (1295)
Start at 07:51:47
Duration 70.13s
stdout | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /recipes/suggestions > should return 500 if service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 0/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1196 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.23s
stderr | src/routes/inventory.routes.test.ts > Inventory Routes (/api/inventory) > GET /recipes/suggestions > should return 500 if service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/inventory.routes.test.ts:657:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 0/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1196 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.23s
✓ src/routes/inventory.routes.test.ts (41 tests) 691ms
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 0/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1196 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.23s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer > should construct FormData with file and checksum and send a POST request
--- [TEST START] uploadAndProcessFlyer ---
[TEST ARRANGE] Created mock file: { name: 'flyer.pdf', size: 18, type: 'application/pdf' }
[apiFetch MOCK] FormData detected. Searching for file to preserve its name.
[apiFetch MOCK] Found file: 'flyer.pdf'. Setting 'X-Test-Filename' header.
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/upload-and-process.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer > should construct FormData with file and checksum and send a POST request
[aiApiClient] uploadAndProcessFlyer: Uploading file 'flyer.pdf' with checksum 'checksum-abc-123'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer > should construct FormData with file and checksum and send a POST request
--- [MSW HANDLER] Intercepted POST to 'upload-and-process' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer > should construct FormData with file and checksum and send a POST request
[MSW HANDLER] Reading 'X-Test-Filename' header. Value: 'flyer.pdf'
[MSW HANDLER DEBUG] Found file-like object for key 'flyerFile'. Original name: 'blob'. Using preserved name: 'flyer.pdf'
[MSW HANDLER] Finished processing FormData. Final object for spy: {
flyerFile: { name: 'flyer.pdf', size: 18, type: 'application/pdf' },
checksum: 'checksum-abc-123'
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer > should construct FormData with file and checksum and send a POST request
[TEST ASSERT] Request object received by spy: {
"endpoint": "upload-and-process",
"method": "POST",
"body": {
"flyerFile": {
"name": "flyer.pdf",
"size": 18,
"type": "application/pdf"
},
"checksum": "checksum-abc-123"
},
"headers": {}
}
[TEST DEBUG] uploadAndProcessFlyer - Body received by spy: {
flyerFile: { name: 'flyer.pdf', size: 18, type: 'application/pdf' },
checksum: 'checksum-abc-123'
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer error handling > should throw a structured error with JSON body on non-ok response
[apiFetch MOCK] FormData detected. Searching for file to preserve its name.
[apiFetch MOCK] Found file: 'flyer.pdf'. Setting 'X-Test-Filename' header.
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/upload-and-process.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer error handling > should throw a structured error with JSON body on non-ok response
[aiApiClient] uploadAndProcessFlyer: Uploading file 'flyer.pdf' with checksum 'checksum-abc-123'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer error handling > should throw a structured error with text body on non-ok, non-JSON response
[apiFetch MOCK] FormData detected. Searching for file to preserve its name.
[apiFetch MOCK] Found file: 'flyer.pdf'. Setting 'X-Test-Filename' header.
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/upload-and-process.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > uploadAndProcessFlyer error handling > should throw a structured error with text body on non-ok, non-JSON response
[aiApiClient] uploadAndProcessFlyer: Uploading file 'flyer.pdf' with checksum 'checksum-abc-123'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus > should send a GET request to the correct job status URL
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/jobs/job-id-456/status.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus > should send a GET request to the correct job status URL
[aiApiClient] getJobStatus: Fetching status for job 'job-id-456'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a JobFailedError if job state is "failed"
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/jobs/job-id-789/status.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a JobFailedError if job state is "failed"
[aiApiClient] getJobStatus: Fetching status for job 'job-id-789'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should use failedReason for JobFailedError if progress message is missing
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/jobs/job-id-789/status.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should use failedReason for JobFailedError if progress message is missing
[aiApiClient] getJobStatus: Fetching status for job 'job-id-789'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a generic error if the API response is not ok
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/jobs/job-id-789/status.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a generic error if the API response is not ok
[aiApiClient] getJobStatus: Fetching status for job 'job-id-789'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a specific error if a 200 OK response is not valid JSON
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/jobs/job-id-789/status.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a specific error if a 200 OK response is not valid JSON
[aiApiClient] getJobStatus: Fetching status for job 'job-id-789'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a generic error with status text if the non-ok API response is not valid JSON
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/jobs/job-id-789/status.
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stderr | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getJobStatus error handling > should throw a generic error with status text if the non-ok API response is not valid JSON
[aiApiClient] getJobStatus: Fetching status for job 'job-id-789'
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > isImageAFlyer > should construct FormData and send a POST request
--- [TEST START] isImageAFlyer ---
[apiFetch MOCK] FormData detected. Searching for file to preserve its name.
[apiFetch MOCK] Found file: 'flyer.jpg'. Setting 'X-Test-Filename' header.
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/check-flyer.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > isImageAFlyer > should construct FormData and send a POST request
--- [MSW HANDLER] Intercepted POST to 'check-flyer' ---
❯ src/features/flyer/ExtractedDataTable.test.tsx 16/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 10/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 1/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1197 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.55s
stdout | src/features/flyer/ExtractedDataTable.test.tsx > ExtractedDataTable > Data Edge Cases > should correctly format unit price for metric system
--- DEBUG: Metric System Test Case ---
DOM Structure: <tr
class="group hover:bg-gray-50 dark:hover:bg-gray-800/50"
>
<td
class="px-6 py-4 whitespace-normal"
>
<div
class="flex justify-between items-center mb-2"
>
<div
class="text-sm font-semibold text-gray-900 dark:text-white"
>
Boneless Chicken
</div>
<div
class="flex items-center space-x-2 shrink-0 ml-4"
>
<button
class="text-gray-400 hover:text-brand-primary disabled:text-gray-300 disabled:cursor-not-allowed dark:text-gray-500 dark:hover:text-brand-light transition-colors"
title="Add Chicken Breast to list"
>
<svg
class="w-5 h-5"
fill="none"
stroke="currentColor"
stroke-width="1.5"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</button>
<button
class="text-xs bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 text-brand-primary dark:text-brand-light font-semibold py-1 px-2.5 rounded-md transition-colors duration-200"
title="Add 'Chicken Breast' to your watchlist"
>
+ Watch
</button>
</div>
</div>
<div
class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-x-6 gap-y-1 text-xs text-gray-600 dark:text-gray-400"
>
<div
class="flex items-baseline space-x-2"
>
<span
class="font-medium text-gray-500 w-16 shrink-0"
>
Price:
</span>
<span>
$8.00/kg
</span>
</div>
<div
class="flex items-baseline space-x-2"
>
<span
class="font-medium text-gray-500 w-16 shrink-0"
>
Deal:
</span>
<div
class="flex items-baseline"
>
<span>
per kg
</span>
</div>
</div>
<div
class="flex items-baseline space-x-2"
>
<span
class="font-medium text-gray-500 w-16 shrink-0"
>
Unit Price:
</span>
<div
class="flex items-baseline"
>
<span
class="font-semibold text-gray-700 dark:text-gray-300"
>
$0.080
</span>
<span
class="ml-1 text-xs text-gray-500 dark:text-gray-400"
>
/kg
</span>
</div>
</div>
<div
class="flex items-baseline space-x-2"
>
<span
class="font-medium text-gray-500 w-16 shrink-0"
>
Category:
</span>
<span
class="italic"
>
Meat
</span>
<span
class="ml-4 italic text-gray-400"
>
(Canonical:
Chicken Breast
)
</span>
</div>
</div>
</td>
</tr>
Row Text Content: Boneless Chicken+ WatchPrice:$8.00/kgDeal:per kgUnit Price:$0.080/kgCategory:Meat(Canonical: Chicken Breast)
Found 2 elements containing "$":
[0] Tag: <span>, Text: "$8.00/kg"
[1] Tag: <span>, Text: "$0.080"
Match Check: Strict='$8.00' found? false
Match Check: Lax='$8.00' found? true
--- DEBUG End ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > isImageAFlyer > should construct FormData and send a POST request
[MSW HANDLER] Reading 'X-Test-Filename' header. Value: 'flyer.jpg'
[MSW HANDLER DEBUG] Found file-like object for key 'image'. Original name: 'blob'. Using preserved name: 'flyer.jpg'
[MSW HANDLER] Finished processing FormData. Final object for spy: { image: { name: 'flyer.jpg', size: 19, type: 'image/jpeg' } }
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > isImageAFlyer > should construct FormData and send a POST request
[TEST ASSERT] Request object received by spy: {
"endpoint": "check-flyer",
"method": "POST",
"body": {
"image": {
"name": "flyer.jpg",
"size": 19,
"type": "image/jpeg"
}
},
"headers": {}
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractAddressFromImage > should construct FormData and send a POST request
--- [TEST START] extractAddressFromImage ---
[apiFetch MOCK] FormData detected. Searching for file to preserve its name.
[apiFetch MOCK] Found file: 'flyer.jpg'. Setting 'X-Test-Filename' header.
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/extract-address.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractAddressFromImage > should construct FormData and send a POST request
--- [MSW HANDLER] Intercepted POST to 'extract-address' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractAddressFromImage > should construct FormData and send a POST request
[MSW HANDLER] Reading 'X-Test-Filename' header. Value: 'flyer.jpg'
[MSW HANDLER DEBUG] Found file-like object for key 'image'. Original name: 'blob'. Using preserved name: 'flyer.jpg'
[MSW HANDLER] Finished processing FormData. Final object for spy: { image: { name: 'flyer.jpg', size: 19, type: 'image/jpeg' } }
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractAddressFromImage > should construct FormData and send a POST request
[TEST ASSERT] Request object received by spy: {
"endpoint": "extract-address",
"method": "POST",
"body": {
"image": {
"name": "flyer.jpg",
"size": 19,
"type": "image/jpeg"
}
},
"headers": {}
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractLogoFromImage > should construct FormData and send a POST request
--- [TEST START] extractLogoFromImage ---
[apiFetch MOCK] FormData detected. Searching for file to preserve its name.
[apiFetch MOCK] Found file: 'logo.jpg'. Setting 'X-Test-Filename' header.
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/extract-logo.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractLogoFromImage > should construct FormData and send a POST request
--- [MSW HANDLER] Intercepted POST to 'extract-logo' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractLogoFromImage > should construct FormData and send a POST request
[MSW HANDLER] Reading 'X-Test-Filename' header. Value: 'logo.jpg'
[MSW HANDLER DEBUG] Found file-like object for key 'images'. Original name: 'blob'. Using preserved name: 'logo.jpg'
[MSW HANDLER] Finished processing FormData. Final object for spy: { images: { name: 'logo.jpg', size: 19, type: 'image/jpeg' } }
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > extractLogoFromImage > should construct FormData and send a POST request
[TEST ASSERT] Request object received by spy: {
"endpoint": "extract-logo",
"method": "POST",
"body": {
"images": {
"name": "logo.jpg",
"size": 19,
"type": "image/jpeg"
}
},
"headers": {}
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getQuickInsights > should send items as JSON in the body
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/quick-insights.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getQuickInsights > should send items as JSON in the body
--- [MSW HANDLER] Intercepted POST to 'quick-insights' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getDeepDiveAnalysis > should send items as JSON in the body
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/deep-dive.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > getDeepDiveAnalysis > should send items as JSON in the body
--- [MSW HANDLER] Intercepted POST to 'deep-dive' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > searchWeb > should send query as JSON in the body
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/search-web.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > searchWeb > should send query as JSON in the body
--- [MSW HANDLER] Intercepted POST to 'search-web' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > generateImageFromText > should send prompt as JSON in the body
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/generate-image.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > generateImageFromText > should send prompt as JSON in the body
--- [MSW HANDLER] Intercepted POST to 'generate-image' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > generateSpeechFromText > should send text as JSON in the body
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/generate-speech.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > generateSpeechFromText > should send text as JSON in the body
--- [MSW HANDLER] Intercepted POST to 'generate-speech' ---
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > planTripWithMaps > should send items, store, and location as JSON in the body
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/plan-trip.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > planTripWithMaps > should send items, store, and location as JSON in the body
--- [MSW HANDLER] Intercepted POST to 'plan-trip' ---
❯ src/features/flyer/ExtractedDataTable.test.tsx 19/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 11/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 8/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 23 passed (242)
Tests 1 failed | 1208 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.69s
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > planTripWithMaps > should send items, store, and location as JSON in the body
[TEST DEBUG] planTripWithMaps - Body received by spy: {
items: [
{
flyer_item_id: 1,
flyer_id: 1,
item: 'bread',
price_display: '$1.99',
price_in_cents: 199,
unit_price: null,
quantity: '1 loaf',
view_count: 0,
click_count: 0,
created_at: '2026-01-19T07:52:58.128Z',
updated_at: '2026-01-19T07:52:58.128Z',
category_name: 'Bakery'
}
],
store: {
store_id: 1,
name: 'Test Store',
logo_url: null,
created_by: null,
created_at: '2026-01-19T07:52:58.128Z',
updated_at: '2026-01-19T07:52:58.128Z'
},
userLocation: {
latitude: 45,
longitude: -75,
accuracy: 0,
altitude: null,
altitudeAccuracy: null,
heading: null,
speed: null
}
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > rescanImageArea > should construct FormData with image, cropArea, and extractionType
--- [TEST START] rescanImageArea ---
[apiFetch MOCK] FormData detected. Searching for file to preserve its name.
[apiFetch MOCK] Found file: 'flyer-page.jpg'. Setting 'X-Test-Filename' header.
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/rescan-area.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > rescanImageArea > should construct FormData with image, cropArea, and extractionType
--- [MSW HANDLER] Intercepted POST to 'rescan-area' ---
✓ src/features/flyer/ExtractedDataTable.test.tsx (22 tests) 4392ms
✓ should render the table with items 934ms
✓ should sort watched items to the top 681ms
✓ should sort items alphabetically within watched and unwatched groups 401ms
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > rescanImageArea > should construct FormData with image, cropArea, and extractionType
[MSW HANDLER] Reading 'X-Test-Filename' header. Value: 'flyer-page.jpg'
[MSW HANDLER DEBUG] Found file-like object for key 'image'. Original name: 'blob'. Using preserved name: 'flyer-page.jpg'
[MSW HANDLER] Finished processing FormData. Final object for spy: {
image: { name: 'flyer-page.jpg', size: 19, type: 'image/jpeg' },
cropArea: '{"x":10,"y":20,"width":100,"height":50}',
extractionType: 'item_details'
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > rescanImageArea > should construct FormData with image, cropArea, and extractionType
[TEST ASSERT] Request object received by spy: {
"endpoint": "rescan-area",
"method": "POST",
"body": {
"image": {
"name": "flyer-page.jpg",
"size": 19,
"type": "image/jpeg"
},
"cropArea": "{\"x\":10,\"y\":20,\"width\":100,\"height\":50}",
"extractionType": "item_details"
},
"headers": {}
}
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > compareWatchedItemPrices > should send items as JSON in the body
[apiFetch MOCK] Executing fetch for URL: http://localhost/api/ai/compare-prices.
stdout | src/services/aiApiClient.test.ts > AI API Client (Network Mocking with MSW) > compareWatchedItemPrices > should send items as JSON in the body
--- [MSW HANDLER] Intercepted POST to 'compare-prices' ---
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 12/32
❯ src/routes/admin.content.routes.test.ts [queued]
❯ src/routes/inventory.routes.test.ts 41/41
❯ src/services/aiApiClient.test.ts 18/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 24 passed (242)
Tests 1 failed | 1222 passed | 38 skipped (1316)
Start at 07:51:47
Duration 70.82s
✓ src/services/aiApiClient.test.ts (21 tests) 488ms
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 12/32
❯ src/routes/admin.content.routes.test.ts 0/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1225 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.27s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 12/32
❯ src/routes/admin.content.routes.test.ts 1/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1226 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.48s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:205:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 12/32
❯ src/routes/admin.content.routes.test.ts 1/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1226 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.48s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > POST /corrections/:id/approve should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 12/32
❯ src/routes/admin.content.routes.test.ts 1/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1226 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.48s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > POST /corrections/:id/approve should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:226:73
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 12/32
❯ src/routes/admin.content.routes.test.ts 1/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1226 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.48s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > POST /corrections/:id/reject should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 13/32
❯ src/routes/admin.content.routes.test.ts 6/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1232 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.58s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > POST /corrections/:id/reject should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:241:72
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 13/32
❯ src/routes/admin.content.routes.test.ts 6/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1232 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.58s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > PUT /corrections/:id should return 500 on a generic DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 13/32
❯ src/routes/admin.content.routes.test.ts 6/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1232 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.58s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Corrections Routes > PUT /corrections/:id should return 500 on a generic DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Generic DB Error
at /app/src/routes/admin.content.routes.test.ts:283:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/ExtractedDataTable.test.tsx 22/22
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 13/32
❯ src/routes/admin.content.routes.test.ts 6/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1232 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.58s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Flyer Review Routes > GET /review/flyers should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 11/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1238 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.87s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Flyer Review Routes > GET /review/flyers should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:309:74
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 11/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1238 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.87s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Stats Routes > GET /stats should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 11/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1238 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.87s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Stats Routes > GET /stats should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:319:75
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 11/36
❯ src/services/aiApiClient.test.ts 21/21
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1238 passed | 38 skipped (1352)
Start at 07:51:47
Duration 71.87s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > GET /brands should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > GET /brands should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:336:68
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > POST /brands/:id/logo should upload a logo and update the brand
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > POST /brands/:id/logo should return 500 on DB error
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > POST /brands/:id/logo should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > POST /brands/:id/logo should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:360:71
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > should clean up the uploaded file if updating the brand logo fails
[MULTER DEBUG] Flyer storage destination: /var/www/flyer-crawler.projectium.com/flyer-images
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > should clean up the uploaded file if updating the brand logo fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Brand Routes > should clean up the uploaded file if updating the brand logo fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/admin.content.routes.test.ts:377:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Recipe and Comment Routes > DELETE /recipes/:recipeId should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Recipe and Comment Routes > DELETE /recipes/:recipeId should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:431:69
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Recipe and Comment Routes > PUT /recipes/:id/status should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Recipe and Comment Routes > PUT /recipes/:id/status should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:460:74
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Recipe and Comment Routes > PUT /comments/:id/status should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Recipe and Comment Routes > PUT /comments/:id/status should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:495:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Unmatched Items Route > GET /unmatched-items should return 500 on DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Unmatched Items Route > GET /unmatched-items should return 500 on DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.content.routes.test.ts:520:78
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Flyer Routes > DELETE /flyers/:flyerId should return 500 on a generic DB error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin) > Flyer Routes > DELETE /flyers/:flyerId should return 500 on a generic DB error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Generic DB Error
at /app/src/routes/admin.content.routes.test.ts:551:67
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
stderr | src/routes/admin.content.routes.test.ts > Admin Content Management Routes (/api/admin)
Error during admin content test file cleanup: TypeError: __vi_import_4__.default.readdir is not a function
at /app/src/routes/admin.content.routes.test.ts:176:33
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at runHook (file:///app/node_modules/@vitest/runner/dist/index.js:1514:51)
at callSuiteHook (file:///app/node_modules/@vitest/runner/dist/index.js:1520:25)
at file:///app/node_modules/@vitest/runner/dist/index.js:1826:36
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runSuite (file:///app/node_modules/@vitest/runner/dist/index.js:1826:10)
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 14/32
❯ src/routes/admin.content.routes.test.ts 16/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 0/23
Test Files 3 failed | 25 passed (242)
Tests 1 failed | 1243 passed | 38 skipped (1352)
Start at 07:51:47
Duration 72.53s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should stop polling for job status when the component unmounts
--- [TEST LOG] ---: 5. Asserting no new polls occurred.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should stop polling for job status when the component unmounts
--- [TEST LOG] ---: Finished test: "FlyerUploader > should stop polling for job status when the component unmounts"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a duplicate flyer error (409)
--- [TEST LOG] ---: Starting test: "FlyerUploader > should handle a duplicate flyer error (409)"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a duplicate flyer error (409)
--- [TEST LOG] ---: 1. Setting up mock for 409 duplicate error.
--- [TEST LOG] ---: 2. Rendering and uploading.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 3. Firing file change event.
--- [TEST LOG] ---: 3. File upload triggered.
--- [TEST LOG] ---: 4. AWAITING duplicate flyer message...
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 15/32
❯ src/routes/admin.content.routes.test.ts 36/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 23/23
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1264 passed | 61 skipped (1352)
Start at 07:51:47
Duration 72.83s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a duplicate flyer error (409)
[LOGGER.ERROR] [FlyerUploader] Error encountered: This flyer has already been processed. { duplicateFlyerId: 99 }
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 15/32
❯ src/routes/admin.content.routes.test.ts 36/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 23/23
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1264 passed | 61 skipped (1352)
Start at 07:51:47
Duration 72.83s
✓ src/routes/admin.content.routes.test.ts (36 tests) 1030ms
❯ src/tests/integration/receipt.integration.test.ts (23 tests | 23 skipped) 10017ms
↓ should upload a receipt image successfully
↓ should upload receipt without optional fields
↓ should reject request without file
↓ should reject unauthenticated requests
↓ should return paginated list of receipts
↓ should support status filter
↓ should support pagination
↓ should only return receipts for the authenticated user
↓ should return receipt with items
↓ should return 404 for non-existent receipt
↓ should not allow accessing another user's receipt
↓ should delete a receipt
↓ should queue a failed receipt for reprocessing
↓ should return 404 for non-existent receipt
↓ should return all receipt items
↓ should update item status
↓ should reject invalid status
↓ should return unadded items
↓ should confirm items and add to inventory
↓ should skip items with include: false
↓ should reject invalid location
↓ should return processing logs
↓ should handle full upload-process-confirm workflow
❯ src/features/flyer/FlyerUploader.test.tsx 6/15
❯ src/pages/admin/components/SystemCheck.test.tsx 15/32
❯ src/routes/admin.content.routes.test.ts 36/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 23/23
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1264 passed | 61 skipped (1352)
Start at 07:51:47
Duration 72.83s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a duplicate flyer error (409)
--- [TEST LOG] ---: 5. SUCCESS: Duplicate message found.
--- [TEST LOG] ---: 6. Duplicate link confirmed.
❯ src/features/flyer/FlyerUploader.test.tsx 7/15
❯ src/pages/admin/components/SystemCheck.test.tsx 16/32
❯ src/routes/admin.content.routes.test.ts 36/36
❯ src/tests/integration/admin.integration.test.ts [queued]
❯ src/tests/integration/receipt.integration.test.ts 23/23
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1266 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.13s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should handle a duplicate flyer error (409)
--- [TEST LOG] ---: Finished test: "FlyerUploader > should handle a duplicate flyer error (409)"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should allow the user to stop watching progress
--- [TEST LOG] ---: Starting test: "FlyerUploader > should allow the user to stop watching progress"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should allow the user to stop watching progress
--- [TEST LOG] ---: 1. Setting up mocks for infinite polling.
--- [TEST LOG] ---: 2. Rendering and uploading.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 3. Firing file change event.
--- [TEST LOG] ---: 3. File upload triggered.
--- [TEST LOG] ---: 4. AWAITING polling UI...
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should allow the user to stop watching progress
[LOGGER.INFO] FlyerUploader Status: Analyzing...
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should allow the user to stop watching progress
--- [TEST LOG] ---: 5. SUCCESS: Polling UI is visible.
--- [TEST LOG] ---: 6. Clicking "Stop Watching Progress" button.
--- [TEST LOG] ---: 7. Click event fired.
--- [TEST LOG] ---: 8. AWAITING UI reset to idle state...
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should allow the user to stop watching progress
--- [TEST LOG] ---: 9. SUCCESS: UI has reset and message removed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > should allow the user to stop watching progress
--- [TEST LOG] ---: Finished test: "FlyerUploader > should allow the user to stop watching progress"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle checksum generation failure
--- [TEST LOG] ---: Starting test: "FlyerUploader > Error Handling and Edge Cases > should handle checksum generation failure"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle checksum generation failure
--- [TEST LOG] ---: 1. Setting up mock for checksum failure.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 2. Firing file change event.
--- [TEST LOG] ---: 3. Awaiting error message.
❯ src/features/flyer/FlyerUploader.test.tsx 8/15
❯ src/pages/admin/components/SystemCheck.test.tsx 17/32
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1268 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.60s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle checksum generation failure
[LOGGER.ERROR] [FlyerUploader] Error encountered: Checksum generation failed { duplicateFlyerId: null }
❯ src/features/flyer/FlyerUploader.test.tsx 8/15
❯ src/pages/admin/components/SystemCheck.test.tsx 17/32
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1268 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.60s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle checksum generation failure
--- [TEST LOG] ---: 4. Assertions passed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle checksum generation failure
--- [TEST LOG] ---: Finished test: "FlyerUploader > Error Handling and Edge Cases > should handle checksum generation failure"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during upload
--- [TEST LOG] ---: Starting test: "FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during upload"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during upload
--- [TEST LOG] ---: 1. Setting up mock for generic upload error.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 2. Firing file change event.
--- [TEST LOG] ---: 3. Awaiting error message.
❯ src/features/flyer/FlyerUploader.test.tsx 8/15
❯ src/pages/admin/components/SystemCheck.test.tsx 17/32
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1268 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.60s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during upload
[LOGGER.ERROR] [FlyerUploader] Error encountered: Network Error During Upload { duplicateFlyerId: null }
❯ src/features/flyer/FlyerUploader.test.tsx 8/15
❯ src/pages/admin/components/SystemCheck.test.tsx 17/32
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1268 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.60s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during upload
--- [TEST LOG] ---: 4. Assertions passed.
❯ src/features/flyer/FlyerUploader.test.tsx 8/15
❯ src/pages/admin/components/SystemCheck.test.tsx 17/32
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1268 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.60s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during upload
--- [TEST LOG] ---: Finished test: "FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during upload"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling
--- [TEST LOG] ---: Starting test: "FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling
--- [TEST LOG] ---: 1. Setting up mock for polling error.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 2. Firing file change event.
--- [TEST LOG] ---: 3. Awaiting error message.
❯ src/features/flyer/FlyerUploader.test.tsx 11/15
❯ src/pages/admin/components/SystemCheck.test.tsx 18/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1272 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.70s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
[LOGGER.ERROR] [FlyerUploader] Error encountered: Polling failed: Polling Network Error { duplicateFlyerId: null }
❯ src/features/flyer/FlyerUploader.test.tsx 11/15
❯ src/pages/admin/components/SystemCheck.test.tsx 18/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1272 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.70s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling
--- [TEST LOG] ---: 4. Assertions passed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling
--- [TEST LOG] ---: Finished test: "FlyerUploader > Error Handling and Edge Cases > should handle a generic network error during polling"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a completed job with a missing flyerId
--- [TEST LOG] ---: Starting test: "FlyerUploader > Error Handling and Edge Cases > should handle a completed job with a missing flyerId"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a completed job with a missing flyerId
--- [TEST LOG] ---: 1. Setting up mock for malformed completion payload.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 2. Firing file change event.
--- [TEST LOG] ---: 3. Awaiting error message.
❯ src/features/flyer/FlyerUploader.test.tsx 11/15
❯ src/pages/admin/components/SystemCheck.test.tsx 18/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1272 passed | 61 skipped (1352)
Start at 07:51:47
Duration 73.70s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a completed job with a missing flyerId
[LOGGER.ERROR] [FlyerUploader] Error encountered: Job completed but did not return a flyer ID. { duplicateFlyerId: null }
❯ src/features/flyer/FlyerUploader.test.tsx 12/15
❯ src/pages/admin/components/SystemCheck.test.tsx 19/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1274 passed | 61 skipped (1352)
Start at 07:51:47
Duration 74.09s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a completed job with a missing flyerId
--- [TEST LOG] ---: 4. Assertions passed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a completed job with a missing flyerId
--- [TEST LOG] ---: Finished test: "FlyerUploader > Error Handling and Edge Cases > should handle a completed job with a missing flyerId"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling
--- [TEST LOG] ---: Starting test: "FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling"
--- [TEST LOG] ---: Mocks reset.
❯ src/features/flyer/FlyerUploader.test.tsx 12/15
❯ src/pages/admin/components/SystemCheck.test.tsx 19/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 26 passed (242)
Tests 1 failed | 1274 passed | 61 skipped (1352)
Start at 07:51:47
Duration 74.09s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling
--- [TEST LOG] ---: 1. Setting up mock for non-JSON response.
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
--- [TEST LOG] ---: 2. Firing file change event.
--- [TEST LOG] ---: 3. Awaiting error message.
❯ src/features/flyer/FlyerUploader.test.tsx 15/15
❯ src/pages/admin/components/SystemCheck.test.tsx 19/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1277 passed | 61 skipped (1352)
Start at 07:51:47
Duration 74.23s
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
stderr | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling
[LOGGER.WARN] [useFlyerUploader] Polling stopped due to query error state.
[LOGGER.ERROR] [FlyerUploader] Error encountered: Polling failed: Failed to parse JSON response from server. Body: <html>502 Bad Gateway</html> { duplicateFlyerId: null }
❯ src/features/flyer/FlyerUploader.test.tsx 15/15
❯ src/pages/admin/components/SystemCheck.test.tsx 19/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1277 passed | 61 skipped (1352)
Start at 07:51:47
Duration 74.23s
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling
--- [TEST LOG] ---: 4. Assertions passed.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling
--- [TEST LOG] ---: Finished test: "FlyerUploader > Error Handling and Edge Cases > should handle a non-JSON response during polling"
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should do nothing if the file input is cancelled
--- [TEST LOG] ---: Starting test: "FlyerUploader > Error Handling and Edge Cases > should do nothing if the file input is cancelled"
--- [TEST LOG] ---: Mocks reset.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should do nothing if the file input is cancelled
--- [TEST LOG] ---: Rendering component inside MemoryRouter.
stdout | src/features/flyer/FlyerUploader.test.tsx > FlyerUploader > Error Handling and Edge Cases > should do nothing if the file input is cancelled
--- [TEST LOG] ---: Finished test: "FlyerUploader > Error Handling and Edge Cases > should do nothing if the file input is cancelled"
✓ src/features/flyer/FlyerUploader.test.tsx (15 tests) 17232ms
✓ should handle file upload and start polling 3166ms
✓ should poll for status, complete successfully, and redirect 5073ms
✓ should clear the polling timeout when a job fails 3048ms
✓ should stop polling for job status when the component unmounts 4063ms
✓ should handle a duplicate flyer error (409) 841ms
❯ src/features/flyer/FlyerUploader.test.tsx 15/15
❯ src/pages/admin/components/SystemCheck.test.tsx 19/32
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1277 passed | 61 skipped (1352)
Start at 07:51:47
Duration 74.23s
❯ src/pages/admin/components/SystemCheck.test.tsx 21/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1279 passed | 61 skipped (1352)
Start at 07:51:47
Duration 74.34s
❯ src/pages/admin/components/SystemCheck.test.tsx 22/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1280 passed | 61 skipped (1352)
Start at 07:51:47
Duration 74.97s
❯ src/pages/admin/components/SystemCheck.test.tsx 22/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1280 passed | 61 skipped (1384)
Start at 07:51:47
Duration 75.08s
❯ src/pages/admin/components/SystemCheck.test.tsx 24/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1282 passed | 61 skipped (1384)
Start at 07:51:47
Duration 75.39s
❯ src/pages/admin/components/SystemCheck.test.tsx 25/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1283 passed | 61 skipped (1384)
Start at 07:51:47
Duration 75.72s
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/pages/admin/components/SystemCheck.test.tsx 26/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1284 passed | 61 skipped (1384)
Start at 07:51:47
Duration 75.83s
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/pages/admin/components/SystemCheck.test.tsx 27/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/services/db/upc.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1285 passed | 61 skipped (1384)
Start at 07:51:47
Duration 76.05s
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/pages/admin/components/SystemCheck.test.tsx 32/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts [queued]
❯ src/services/db/upc.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts [queued]
Test Files 4 failed | 27 passed (242)
Tests 1 failed | 1290 passed | 61 skipped (1384)
Start at 07:51:47
Duration 76.93s
✓ src/pages/admin/components/SystemCheck.test.tsx (32 tests) 10628ms
✓ should render initial idle state and then run checks automatically on mount 1500ms
✓ should show backend connection as failed if pingBackend fails 385ms
✓ should skip schema and seed checks if DB pool check fails 302ms
✓ should show seeded user check as failed if loginUser fails 311ms
✓ should display a loading spinner and disable button while checks are running 700ms
✓ should re-run checks when the "Re-run Checks" button is clicked 713ms
✓ should call triggerFailingJob and show a success toast 476ms
✓ should show a loading state while triggering the job 809ms
✓ should show an error toast if triggering the job fails 352ms
✓ should show an error toast if the API returns a non-OK response 309ms
✓ should call clearGeocodeCache and show a success toast 375ms
✓ should not call clearGeocodeCache if user cancels confirmation 339ms
✓ should show an error toast if the API returns a non-OK response 398ms
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/pages/admin/components/SystemCheck.test.tsx 32/32
❯ src/services/authService.test.ts [queued]
❯ src/services/db/recipe.db.test.ts 0/42
❯ src/services/db/upc.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts [queued]
Test Files 4 failed | 28 passed (242)
Tests 1 failed | 1290 passed | 61 skipped (1426)
Start at 07:51:47
Duration 77.50s
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/pages/admin/components/SystemCheck.test.tsx 32/32
❯ src/services/authService.test.ts 0/27
❯ src/services/db/recipe.db.test.ts 1/42
❯ src/services/db/upc.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts [queued]
Test Files 4 failed | 28 passed (242)
Tests 1 failed | 1291 passed | 61 skipped (1453)
Start at 07:51:47
Duration 77.60s
✓ src/services/db/recipe.db.test.ts (42 tests) 178ms
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/services/authService.test.ts 0/27
❯ src/services/db/recipe.db.test.ts 42/42
❯ src/services/db/upc.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
Test Files 4 failed | 29 passed (242)
Tests 1 failed | 1332 passed | 61 skipped (1473)
Start at 07:51:47
Duration 78.54s
stdout | src/services/authService.test.ts > AuthService > registerAndLoginUser > should register user and return tokens
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
stdout | src/services/authService.test.ts > AuthService > generateAuthTokens > should generate access and refresh tokens
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
stdout | src/services/authService.test.ts > AuthService > resetPassword > should process password reset for existing user
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
stdout | src/services/authService.test.ts > AuthService > resetPassword > should log error if sending email fails but still return token
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/services/authService.test.ts 5/27
❯ src/services/db/upc.db.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
Test Files 4 failed | 29 passed (242)
Tests 1 failed | 1337 passed | 61 skipped (1473)
Start at 07:51:47
Duration 79.01s
stdout | src/services/authService.test.ts > AuthService > refreshAccessToken > should return new access token if user found
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
✓ src/services/authService.test.ts (27 tests) 1223ms
✓ should successfully register a new user 942ms
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/services/authService.test.ts 27/27
❯ src/services/db/upc.db.test.ts 1/34
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
Test Files 4 failed | 30 passed (242)
Tests 1 failed | 1360 passed | 61 skipped (1507)
Start at 07:51:47
Duration 79.11s
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/services/authService.test.ts 27/27
❯ src/services/db/upc.db.test.ts 14/34
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
Test Files 4 failed | 30 passed (242)
Tests 1 failed | 1373 passed | 61 skipped (1507)
Start at 07:51:47
Duration 79.21s
✓ src/services/db/upc.db.test.ts (34 tests) 200ms
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/services/db/upc.db.test.ts 34/34
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1393 passed | 61 skipped (1507)
Start at 07:51:47
Duration 79.82s
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/services/db/upc.db.test.ts 34/34
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1393 passed | 61 skipped (1507)
Start at 07:51:47
Duration 80.06s
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1393 passed | 61 skipped (1507)
Start at 07:51:47
Duration 80.37s
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 0/24
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1393 passed | 61 skipped (1531)
Start at 07:51:47
Duration 80.49s
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 3/24
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1396 passed | 61 skipped (1531)
Start at 07:51:47
Duration 81.14s
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 6/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1399 passed | 61 skipped (1531)
Start at 07:51:47
Duration 81.54s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 8/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1401 passed | 61 skipped (1531)
Start at 07:51:47
Duration 81.95s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 9/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1402 passed | 61 skipped (1531)
Start at 07:51:47
Duration 82.44s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 10/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts [queued]
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1403 passed | 61 skipped (1531)
Start at 07:51:47
Duration 82.56s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 10/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1403 passed | 61 skipped (1543)
Start at 07:51:47
Duration 82.83s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 12/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1405 passed | 61 skipped (1543)
Start at 07:51:47
Duration 83.20s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 13/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1406 passed | 61 skipped (1543)
Start at 07:51:47
Duration 83.49s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 16/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1409 passed | 61 skipped (1543)
Start at 07:51:47
Duration 84.10s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 17/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1410 passed | 61 skipped (1543)
Start at 07:51:47
Duration 84.24s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx [queued]
❯ src/pages/admin/components/CorrectionRow.test.tsx 18/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1411 passed | 61 skipped (1543)
Start at 07:51:47
Duration 84.80s
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 0/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 19/24
❯ src/routes/upc.routes.test.ts [queued]
❯ src/tests/integration/admin.integration.test.ts 0/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 4 failed | 31 passed (242)
Tests 1 failed | 1412 passed | 61 skipped (1556)
Start at 07:51:47
Duration 85.19s
❯ src/tests/integration/admin.integration.test.ts (32 tests | 32 skipped) 10013ms
↓ should allow an admin to fetch application stats
↓ should forbid a regular user from fetching application stats
↓ should allow an admin to fetch daily stats
↓ should forbid a regular user from fetching daily stats
↓ should allow an admin to fetch suggested corrections
↓ should forbid a regular user from fetching suggested corrections
↓ should allow an admin to fetch all brands
↓ should forbid a regular user from fetching all brands
↓ should allow an admin to approve a correction
↓ should allow an admin to reject a correction
↓ should allow an admin to update a correction
↓ should allow an admin to update a recipe status
↓ should allow an admin to delete another user's account
↓ should prevent an admin from deleting their own account
↓ should return 404 if the user to be deleted is not found
↓ should return queue status for all queues
↓ should forbid regular users from viewing queue status
↓ should enqueue an analytics report job
↓ should forbid regular users from triggering analytics report
↓ should enqueue a weekly analytics job
↓ should forbid regular users from triggering weekly analytics
↓ should enqueue a daily deal check job
↓ should forbid regular users from triggering daily deal check
↓ should clear the application cache
↓ should forbid regular users from clearing cache
↓ should return validation error for invalid queue name
↓ should return 404 for non-existent job
↓ should forbid regular users from retrying jobs
↓ should return all users for admin
↓ should forbid regular users from listing all users
↓ should return pending review flyers for admin
↓ should forbid regular users from viewing pending flyers
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 0/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 21/24
❯ src/routes/upc.routes.test.ts 0/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 31 passed (242)
Tests 1 failed | 1414 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.38s
stdout | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > POST /scan > should return 500 if the scan service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 6/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 21/24
❯ src/routes/upc.routes.test.ts 4/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 31 passed (242)
Tests 1 failed | 1424 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.48s
stderr | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > POST /scan > should return 500 if the scan service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Scan service error
at /app/src/routes/upc.routes.test.ts:193:55
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 6/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 21/24
❯ src/routes/upc.routes.test.ts 4/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 31 passed (242)
Tests 1 failed | 1424 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.48s
✓ src/hooks/useActiveDeals.test.tsx (13 tests) 388ms
stdout | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > GET /lookup > should return 500 if the lookup service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 21/24
❯ src/routes/upc.routes.test.ts 9/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1436 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.59s
stderr | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > GET /lookup > should return 500 if the lookup service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Lookup error
at /app/src/routes/upc.routes.test.ts:280:57
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 21/24
❯ src/routes/upc.routes.test.ts 9/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1436 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.59s
stdout | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > GET /history > should return 500 if the history service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 22/24
❯ src/routes/upc.routes.test.ts 16/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1444 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.79s
stderr | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > GET /history > should return 500 if the history service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: History error
at /app/src/routes/upc.routes.test.ts:377:62
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 22/24
❯ src/routes/upc.routes.test.ts 16/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1444 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.79s
stdout | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > GET /stats > should return 500 if the stats service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 22/24
❯ src/routes/upc.routes.test.ts 16/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1444 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.79s
stderr | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > GET /stats > should return 500 if the stats service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Stats error
at /app/src/routes/upc.routes.test.ts:454:60
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 22/24
❯ src/routes/upc.routes.test.ts 16/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1444 passed | 93 skipped (1583)
Start at 07:51:47
Duration 85.79s
stdout | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > POST /link > should return 500 if the link service fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 22/24
❯ src/routes/upc.routes.test.ts 23/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1451 passed | 93 skipped (1583)
Start at 07:51:47
Duration 86.01s
stderr | src/routes/upc.routes.test.ts > UPC Routes (/api/upc) > POST /link > should return 500 if the link service fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Link error
at /app/src/routes/upc.routes.test.ts:519:64
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 22/24
❯ src/routes/upc.routes.test.ts 23/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 32 passed (242)
Tests 1 failed | 1451 passed | 93 skipped (1583)
Start at 07:51:47
Duration 86.01s
✓ src/routes/upc.routes.test.ts (27 tests) 779ms
❯ src/features/flyer/FlyerList.test.tsx [queued]
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 24/24
❯ src/routes/upc.routes.test.ts 27/27
❯ src/tests/integration/admin.integration.test.ts 32/32
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 33 passed (242)
Tests 1 failed | 1457 passed | 93 skipped (1583)
Start at 07:51:47
Duration 86.11s
✓ src/pages/admin/components/CorrectionRow.test.tsx (24 tests) 5498ms
✓ should render correction data correctly 375ms
✓ should call approveCorrection when approval is confirmed 842ms
✓ should display an error message if an action fails 461ms
✓ should display a generic error if saving an edit fails with a non-Error object 330ms
✓ should save an edited value for INCORRECT_ITEM_LINK 344ms
✓ should render a select for INCORRECT_ITEM_LINK 372ms
✓ should render a select for ITEM_IS_MISCATEGORIZED 343ms
❯ src/features/flyer/FlyerList.test.tsx 0/25
❯ src/hooks/useActiveDeals.test.tsx 13/13
❯ src/pages/admin/components/CorrectionRow.test.tsx 24/24
❯ src/routes/upc.routes.test.ts 27/27
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 34 passed (242)
Tests 1 failed | 1457 passed | 93 skipped (1608)
Start at 07:51:47
Duration 86.25s
❯ src/features/flyer/FlyerList.test.tsx 0/25
❯ src/pages/admin/components/CorrectionRow.test.tsx 24/24
❯ src/routes/upc.routes.test.ts 27/27
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 34 passed (242)
Tests 1 failed | 1457 passed | 93 skipped (1608)
Start at 07:51:47
Duration 86.46s
❯ src/features/flyer/FlyerList.test.tsx 0/25
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 34 passed (242)
Tests 1 failed | 1457 passed | 93 skipped (1608)
Start at 07:51:47
Duration 87.17s
❯ src/features/flyer/FlyerList.test.tsx 3/25
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 34 passed (242)
Tests 1 failed | 1460 passed | 93 skipped (1608)
Start at 07:51:47
Duration 87.94s
❯ src/features/flyer/FlyerList.test.tsx 7/25
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/upc.integration.test.ts 0/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 5 failed | 34 passed (242)
Tests 1 failed | 1464 passed | 93 skipped (1608)
Start at 07:51:47
Duration 88.37s
❯ src/tests/integration/upc.integration.test.ts (20 tests | 20 skipped) 10027ms
↓ should record a manual UPC scan successfully
↓ should record scan with product lookup result
↓ should reject invalid UPC code format
↓ should reject invalid scan_source
↓ should reject unauthenticated requests
↓ should return null for unknown UPC code
↓ should return product for known UPC code
↓ should reject missing upc_code parameter
↓ should return paginated scan history
↓ should support pagination parameters
↓ should filter by scan_source
↓ should only return scans for the authenticated user
↓ should return a specific scan by ID
↓ should return 404 for non-existent scan
↓ should not allow accessing another user's scan
↓ should return user scan statistics
↓ should allow admin to link UPC to product
↓ should reject non-admin users
↓ should reject invalid product_id
↓ should handle full scan-lookup-history workflow
❯ src/features/flyer/FlyerList.test.tsx 16/25
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/upc.integration.test.ts 20/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 6 failed | 34 passed (242)
Tests 1 failed | 1473 passed | 113 skipped (1608)
Start at 07:51:47
Duration 88.68s
❯ src/features/flyer/FlyerList.test.tsx 18/25
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/upc.integration.test.ts 20/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 6 failed | 34 passed (242)
Tests 1 failed | 1475 passed | 113 skipped (1608)
Start at 07:51:47
Duration 89.33s
✓ src/features/flyer/FlyerList.test.tsx (25 tests) 2959ms
✓ should render the heading 837ms
❯ src/features/flyer/FlyerList.test.tsx 25/25
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/upc.integration.test.ts 20/20
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 6 failed | 35 passed (242)
Tests 1 failed | 1482 passed | 113 skipped (1608)
Start at 07:51:47
Duration 89.90s
❯ src/services/userService.test.ts [queued]
❯ src/tests/e2e/inventory-journey.e2e.test.ts [queued]
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 6 failed | 35 passed (242)
Tests 1 failed | 1482 passed | 113 skipped (1608)
Start at 07:51:47
Duration 90.37s
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/services/userService.test.ts [queued]
❯ src/tests/e2e/inventory-journey.e2e.test.ts 0/1
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 6 failed | 35 passed (242)
Tests 1 failed | 1482 passed | 113 skipped (1609)
Start at 07:51:47
Duration 91.08s
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/services/userService.test.ts [queued]
❯ src/tests/e2e/inventory-journey.e2e.test.ts 0/1
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 6 failed | 35 passed (242)
Tests 1 failed | 1482 passed | 113 skipped (1609)
Start at 07:51:47
Duration 92.17s
❯ src/tests/e2e/inventory-journey.e2e.test.ts (1 test | 1 failed) 243ms
× should complete inventory journey: Register -> Add Items -> Track Expiry -> Consume -> Configure Alerts 234ms
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts [queued]
❯ src/tests/integration/user.integration.test.ts 0/12
Test Files 7 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 113 skipped (1609)
Start at 07:51:47
Duration 92.38s
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts [queued]
❯ src/tests/integration/user.integration.test.ts 1/12
Test Files 7 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 114 skipped (1609)
Start at 07:51:47
Duration 93.03s
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts [queued]
❯ src/tests/integration/user.integration.test.ts 1/12
Test Files 7 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 114 skipped (1609)
Start at 07:51:47
Duration 93.39s
❯ src/tests/integration/user.integration.test.ts (12 tests | 12 skipped) 10013ms
↓ should fetch the authenticated user profile via GET /api/users/profile
↓ should update the user profile via PUT /api/users/profile
↓ should allow updating the profile with an empty string for avatar_url
↓ should update user preferences via PUT /api/users/profile/preferences
↓ should reject registration with a weak password
↓ should allow a user to delete their own account and then fail to log in
↓ should allow a user to reset their password and log in with the new one
↓ should allow a user to add and remove a watched item
↓ should allow a user to manage a shopping list
↓ should allow a user to upload an avatar image and update their profile
↓ should reject avatar upload for an invalid file type
↓ should reject avatar upload for a file that is too large
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts [queued]
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 125 skipped (1609)
Start at 07:51:47
Duration 93.70s
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts [queued]
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 125 skipped (1609)
Start at 07:51:47
Duration 94.39s
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts [queued]
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 125 skipped (1609)
Start at 07:51:47
Duration 94.70s
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts [queued]
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 125 skipped (1609)
Start at 07:51:47
Duration 95.80s
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts 0/19
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 35 passed (242)
Tests 2 failed | 1482 passed | 125 skipped (1628)
Start at 07:51:47
Duration 95.95s
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/services/userService.test.ts 1/19
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 35 passed (242)
Tests 2 failed | 1483 passed | 125 skipped (1628)
Start at 07:51:47
Duration 96.10s
✓ src/services/userService.test.ts (19 tests) 166ms
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts [queued]
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 36 passed (242)
Tests 2 failed | 1501 passed | 125 skipped (1628)
Start at 07:51:47
Duration 96.31s
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > should initialize with correct default states
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > should initialize with correct default states
TEST: should initialize with correct default states
Asserting initial state...
Initial state assertions passed.
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should call the correct service method for QUICK_INSIGHTS and update state on success
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should call the correct service method for QUICK_INSIGHTS and update state on success
TEST: should handle QUICK_INSIGHTS success
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should call the correct service method for QUICK_INSIGHTS and update state on success
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT {
payload: { analysisType: 'QUICK_INSIGHTS', data: 'Quick insights text' }
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should call the correct service method for DEEP_DIVE
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should call the correct service method for DEEP_DIVE
TEST: should call execute for DEEP_DIVE
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should call the correct service method for DEEP_DIVE
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'DEEP_DIVE' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'DEEP_DIVE', data: 'Deep dive text' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle grounded responses for WEB_SEARCH
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle grounded responses for WEB_SEARCH
TEST: should handle grounded responses for WEB_SEARCH
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle grounded responses for WEB_SEARCH
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'WEB_SEARCH' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_GROUNDED {
payload: {
analysisType: 'WEB_SEARCH',
data: { text: 'Web search text', sources: [Array] }
}
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle PLAN_TRIP and its specific arguments
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle PLAN_TRIP and its specific arguments
TEST: should handle PLAN_TRIP
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle PLAN_TRIP and its specific arguments
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'PLAN_TRIP' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_GROUNDED {
payload: {
analysisType: 'PLAN_TRIP',
data: { text: 'Trip plan text', sources: [Array] }
}
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle COMPARE_PRICES and its specific arguments
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle COMPARE_PRICES and its specific arguments
TEST: should handle COMPARE_PRICES
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should handle COMPARE_PRICES and its specific arguments
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'COMPARE_PRICES' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_GROUNDED {
payload: {
analysisType: 'COMPARE_PRICES',
data: { text: 'Price comparison text', sources: [Array] }
}
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should set error if PLAN_TRIP is called without a store
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should set error if PLAN_TRIP is called without a store
TEST: should set error if PLAN_TRIP is called without a store
[LOG ERROR] runAnalysis failed for type PLAN_TRIP {
error: Error: Store information is not available for trip planning.
at Object.runAnalysis (/app/src/hooks/useAiAnalysis.ts:127:21)
at /app/src/hooks/useAiAnalysis.test.ts:187:30
at /app/node_modules/@testing-library/react/dist/act-compat.js:47:24
at process.env.NODE_ENV.exports.act (/app/node_modules/react/cjs/react.development.js:814:22)
at Proxy.<anonymous> (/app/node_modules/@testing-library/react/dist/act-compat.js:46:25)
at /app/src/hooks/useAiAnalysis.test.ts:186:13
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should set error if PLAN_TRIP is called without a store
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'PLAN_TRIP' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_ERROR {
payload: { error: 'Store information is not available for trip planning.' }
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should set the error state if a service call fails
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should set the error state if a service call fails
TEST: should set error state on failure
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should set the error state if a service call fails
[LOG ERROR] runAnalysis failed for type QUICK_INSIGHTS {
error: Error: API is down
at /app/src/hooks/useAiAnalysis.test.ts:196:24
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should set the error state if a service call fails
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_ERROR { payload: { error: 'API is down' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should clear previous error when starting a new analysis
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should clear previous error when starting a new analysis
TEST: should clear previous error when starting a new analysis
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should clear previous error when starting a new analysis
[LOG ERROR] runAnalysis failed for type QUICK_INSIGHTS {
error: Error: First failure
at /app/src/hooks/useAiAnalysis.test.ts:211:24
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should clear previous error when starting a new analysis
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_ERROR { payload: { error: 'First failure' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > runAnalysis > should clear previous error when starting a new analysis
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'QUICK_INSIGHTS', data: 'Success' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should not call the service if there is no DEEP_DIVE result
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should not call the service if there is no DEEP_DIVE result
TEST: should not run generateImage if DEEP_DIVE results are missing
[LOG WARN] generateImage called but no meal plan text available.
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should call the service and update state on successful image generation
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should call the service and update state on successful image generation
TEST: should generate image on success
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should call the service and update state on successful image generation
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'DEEP_DIVE' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'DEEP_DIVE', data: 'A great meal plan' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should call the service and update state on successful image generation
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'GENERATE_IMAGE' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_IMAGE { payload: { data: 'base64string' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should set an error if image generation fails
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should set an error if image generation fails
TEST: should handle image generation failure
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should set an error if image generation fails
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'DEEP_DIVE' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'DEEP_DIVE', data: 'A great meal plan' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should set an error if image generation fails
[LOG ERROR] generateImage failed {
error: Error: Image model failed
at /app/src/hooks/useAiAnalysis.test.ts:272:24
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > generateImage > should set an error if image generation fails
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'GENERATE_IMAGE' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_ERROR { payload: { error: 'Image model failed' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should preserve existing results when running a new analysis
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should preserve existing results when running a new analysis
TEST: should preserve existing results
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should preserve existing results when running a new analysis
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'QUICK_INSIGHTS', data: 'Insight 1' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should preserve existing results when running a new analysis
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'DEEP_DIVE' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'DEEP_DIVE', data: 'Insight 2' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should log reducer actions
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should log reducer actions
TEST: should log reducer actions
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should log reducer actions
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'QUICK_INSIGHTS', data: 'Insight' } }
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts 1/18
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/utils/zodUtils.test.ts [queued]
Test Files 8 failed | 36 passed (242)
Tests 2 failed | 1502 passed | 125 skipped (1646)
Start at 07:51:47
Duration 96.61s
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should set loading state but not call service for unhandled analysis types in runAnalysis
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should set loading state but not call service for unhandled analysis types in runAnalysis
TEST: unhandled analysis type
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > State Management and Logging > should set loading state but not call service for unhandled analysis types in runAnalysis
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'GENERATE_IMAGE' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > Helper Functions > should clear error when clearError is called
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > Helper Functions > should clear error when clearError is called
[LOG ERROR] runAnalysis failed for type QUICK_INSIGHTS {
error: Error: Some error
at /app/src/hooks/useAiAnalysis.test.ts:347:24
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
}
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > Helper Functions > should clear error when clearError is called
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_ERROR { payload: { error: 'Some error' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > Helper Functions > should clear error when clearError is called
[LOG INFO] [aiAnalysisReducer] Dispatched action: CLEAR_ERROR { payload: {} }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > Helper Functions > should reset state when resetAnalysis is called
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > Helper Functions > should reset state when resetAnalysis is called
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_START { payload: { analysisType: 'QUICK_INSIGHTS' } }
[LOG INFO] [aiAnalysisReducer] Dispatched action: FETCH_SUCCESS_TEXT { payload: { analysisType: 'QUICK_INSIGHTS', data: 'Insight' } }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > Helper Functions > should reset state when resetAnalysis is called
[LOG INFO] [aiAnalysisReducer] Dispatched action: RESET_STATE { payload: {} }
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > aiAnalysisReducer > should return current state for unknown action
--- TEST CASE START ---
stdout | src/hooks/useAiAnalysis.test.ts > useAiAnalysis Hook > aiAnalysisReducer > should return current state for unknown action
[LOG INFO] [aiAnalysisReducer] Dispatched action: UNKNOWN_ACTION { payload: {} }
✓ src/hooks/useAiAnalysis.test.ts (18 tests) 497ms
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts 18/18
❯ src/pages/admin/components/AuthView.test.tsx [queued]
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/utils/zodUtils.test.ts 1/46
Test Files 8 failed | 37 passed (242)
Tests 2 failed | 1520 passed | 125 skipped (1692)
Start at 07:51:47
Duration 97.15s
✓ src/utils/zodUtils.test.ts (46 tests) 138ms
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts 18/18
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/utils/zodUtils.test.ts 46/46
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1565 passed | 125 skipped (1713)
Start at 07:51:47
Duration 97.88s
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/hooks/useAiAnalysis.test.ts 18/18
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/utils/zodUtils.test.ts 46/46
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1565 passed | 125 skipped (1713)
Start at 07:51:47
Duration 97.99s
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1565 passed | 125 skipped (1713)
Start at 07:51:47
Duration 98.96s
stdout | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > GET / > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 1/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1566 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.00s
stderr | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > GET / > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Connection Failed
at /app/src/routes/gamification.routes.test.ts:106:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 1/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1566 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.00s
stdout | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > GET /me > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 7/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1572 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.23s
stderr | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > GET /me > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/gamification.routes.test.ts:166:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 7/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1572 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.23s
stdout | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > POST /award > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 7/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1572 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.23s
stderr | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > POST /award > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/gamification.routes.test.ts:225:73
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 7/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1572 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.23s
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 11/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1576 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.50s
stdout | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > GET /leaderboard > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 14/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1579 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.76s
stderr | src/routes/gamification.routes.test.ts > Gamification Routes (/api/achievements) > GET /leaderboard > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/gamification.routes.test.ts:324:71
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 14/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 38 passed (242)
Tests 2 failed | 1579 passed | 125 skipped (1733)
Start at 07:51:47
Duration 100.76s
✓ src/routes/gamification.routes.test.ts (20 tests) 984ms
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 0/21
❯ src/routes/gamification.routes.test.ts 20/20
❯ src/routes/recipe.routes.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1585 passed | 125 skipped (1733)
Start at 07:51:47
Duration 101.64s
stderr | src/pages/admin/components/AuthView.test.tsx > AuthView > Initial Render and Login > should render the Sign In form by default
React does not recognize the `showStrength` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `showstrength` instead. If you accidentally passed it from a parent component, remove it from the DOM element.
❯ src/components/FlyerCorrectionTool.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 1/21
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/services/flyerDataTransformer.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1586 passed | 125 skipped (1733)
Start at 07:51:47
Duration 101.74s
❯ src/components/FlyerCorrectionTool.test.tsx 0/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 1/21
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/services/flyerDataTransformer.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1586 passed | 125 skipped (1746)
Start at 07:51:47
Duration 101.85s
❯ src/components/FlyerCorrectionTool.test.tsx 0/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 2/21
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/services/flyerDataTransformer.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1587 passed | 125 skipped (1746)
Start at 07:51:47
Duration 102.46s
❯ src/components/FlyerCorrectionTool.test.tsx 0/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 3/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/services/flyerDataTransformer.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1588 passed | 125 skipped (1746)
Start at 07:51:47
Duration 102.59s
❯ src/components/FlyerCorrectionTool.test.tsx 0/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 4/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/services/flyerDataTransformer.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1589 passed | 125 skipped (1746)
Start at 07:51:47
Duration 103.77s
❯ src/components/FlyerCorrectionTool.test.tsx 3/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 6/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/services/flyerDataTransformer.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1594 passed | 125 skipped (1746)
Start at 07:51:47
Duration 103.92s
❯ src/components/FlyerCorrectionTool.test.tsx 3/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 7/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts [queued]
❯ src/services/flyerDataTransformer.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1595 passed | 125 skipped (1746)
Start at 07:51:47
Duration 104.08s
❯ src/components/FlyerCorrectionTool.test.tsx 4/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 7/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 0/27
❯ src/services/flyerDataTransformer.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1596 passed | 125 skipped (1773)
Start at 07:51:47
Duration 104.81s
stdout | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /by-sale-percentage > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stderr | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /by-sale-percentage > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/recipe.routes.test.ts:87:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stdout | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /by-sale-ingredients > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stderr | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /by-sale-ingredients > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/recipe.routes.test.ts:122:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stdout | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /by-ingredient-and-tag > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stderr | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /by-ingredient-and-tag > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/recipe.routes.test.ts:156:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stdout | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /:recipeId/comments > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stderr | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /:recipeId/comments > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/recipe.routes.test.ts:197:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stdout | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /:recipeId > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stderr | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > GET /:recipeId > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/recipe.routes.test.ts:240:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 15/27
❯ src/services/flyerDataTransformer.test.ts 0/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1613 passed | 125 skipped (1783)
Start at 07:51:47
Duration 104.91s
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > should transform AI data into database-ready format with a user ID
[DEBUG] FlyerDataTransformer.transform called with baseUrl: https://example.com
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'https://example.com'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: https://example.com
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'https://example.com/flyer-images/flyer-page-1.jpg',
iconUrl: 'https://example.com/flyer-images/icons/icon-flyer-page-1.webp'
}
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 17/27
❯ src/services/flyerDataTransformer.test.ts 3/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1618 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.10s
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should call rescanImageArea with correct parameters and show success
--- [TEST LOG] ---: Starting test: "should call rescanImageArea..."
--- [TEST LOG] ---: 1. Setting up controllable promise for rescanImageArea.
--- [TEST LOG] ---: Awaiting image fetch inside component...
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 17/27
❯ src/services/flyerDataTransformer.test.ts 3/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1618 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.10s
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > should handle missing optional data gracefully
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://another.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'another.png',
iconFileName: 'icon-another.webp',
baseUrl: 'http://another.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://another.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://another.host/flyer-images/another.png',
iconUrl: 'http://another.host/flyer-images/icons/icon-another.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > should correctly normalize item fields with null, undefined, or empty values
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://normalize.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'http://normalize.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://normalize.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://normalize.host/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://normalize.host/flyer-images/icons/icon-flyer-page-1.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > should use fallback baseUrl from getBaseUrl if none is provided
[DEBUG] FlyerDataTransformer.transform called with baseUrl:
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: ''
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://fallback-url.com
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://fallback-url.com/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://fallback-url.com/flyer-images/icons/icon-flyer-page-1.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > _normalizeItem price parsing > should use price_in_cents from AI if it is valid, ignoring price_display
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'http://test.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://test.host/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://test.host/flyer-images/icons/icon-flyer-page-1.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > _normalizeItem price parsing > should use parsePriceToCents as a fallback if AI price_in_cents is null
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'http://test.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://test.host/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://test.host/flyer-images/icons/icon-flyer-page-1.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > _normalizeItem price parsing > should result in null if both AI price and display price are unparsable
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'http://test.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://test.host/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://test.host/flyer-images/icons/icon-flyer-page-1.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > should handle non-string values for string fields gracefully by converting them
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://robust.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'http://robust.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://robust.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://robust.host/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://robust.host/flyer-images/icons/icon-flyer-page-1.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > needsReview flag handling > should set status to "processed" when needsReview is false
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'http://test.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://test.host/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://test.host/flyer-images/icons/icon-flyer-page-1.webp'
}
stderr | src/services/flyerDataTransformer.test.ts > FlyerDataTransformer > needsReview flag handling > should set status to "needs_review" when needsReview is true
[DEBUG] FlyerDataTransformer.transform called with baseUrl: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls inputs: {
imageFileName: 'flyer-page-1.jpg',
iconFileName: 'icon-flyer-page-1.webp',
baseUrl: 'http://test.host'
}
[DEBUG] FlyerDataTransformer._buildUrls finalBaseUrl resolved to: http://test.host
[DEBUG] FlyerDataTransformer._buildUrls constructed: {
imageUrl: 'http://test.host/flyer-images/flyer-page-1.jpg',
iconUrl: 'http://test.host/flyer-images/icons/icon-flyer-page-1.webp'
}
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 8/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 17/27
❯ src/services/flyerDataTransformer.test.ts 3/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 39 passed (242)
Tests 2 failed | 1618 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.10s
✓ src/services/flyerDataTransformer.test.ts (10 tests) 169ms
stdout | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > POST /suggest > should return 500 on service error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 9/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 24/27
❯ src/services/flyerDataTransformer.test.ts 10/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 40 passed (242)
Tests 2 failed | 1633 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.20s
stderr | src/routes/recipe.routes.test.ts > Recipe Routes (/api/recipes) > POST /suggest > should return 500 on service error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: AI Error
at /app/src/routes/recipe.routes.test.ts:310:21
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/FlyerCorrectionTool.test.tsx 5/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 9/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 24/27
❯ src/services/flyerDataTransformer.test.ts 10/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 40 passed (242)
Tests 2 failed | 1633 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.20s
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should call rescanImageArea with correct parameters and show success
--- [TEST LOG] ---: Image fetch complete.
--- [TEST LOG] ---: Mocking image dimensions.
--- [TEST LOG] ---: Simulating user drawing a rectangle...
--- [TEST LOG] ---: Rectangle drawn.
--- [TEST LOG] ---: 2. Clicking "Extract Store Name" button.
--- [TEST LOG] ---: 3. Awaiting "Processing..." loading state.
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should call rescanImageArea with correct parameters and show success
--- [TEST LOG] ---: 3a. SUCCESS: Found "Processing..." text.
--- [TEST LOG] ---: 4. Awaiting API call verification...
--- [TEST LOG] ---: 4a. waitFor check: Checking rescanImageArea call...
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should call rescanImageArea with correct parameters and show success
--- [TEST LOG] ---: 4b. SUCCESS: API call verified.
--- [TEST LOG] ---: 5. Manually resolving the API promise inside act()...
--- [TEST LOG] ---: 5a. Calling resolveRescanPromise...
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should call rescanImageArea with correct parameters and show success
--- [TEST LOG] ---: 5b. Promise resolved and act() block finished.
--- [TEST LOG] ---: 6. Awaiting final state assertions...
--- [TEST LOG] ---: 6a. waitFor check: Verifying notifications and callbacks...
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should call rescanImageArea with correct parameters and show success
--- [TEST LOG] ---: 6b. SUCCESS: Final state verified.
❯ src/components/FlyerCorrectionTool.test.tsx 6/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 9/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 24/27
❯ src/services/flyerDataTransformer.test.ts 10/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 40 passed (242)
Tests 2 failed | 1634 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.70s
❯ src/components/FlyerCorrectionTool.test.tsx 7/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 9/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 26/27
❯ src/services/flyerDataTransformer.test.ts 10/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 40 passed (242)
Tests 2 failed | 1637 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.80s
✓ src/routes/recipe.routes.test.ts (27 tests) 1461ms
✓ should block requests after exceeding the limit when the opt-in header is sent 387ms
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should show an error if rescan is attempted before image is loaded
TEST: Starting "should show an error if rescan is attempted before image is loaded"
TEST: fetch called, returning pending promise to simulate loading
TEST: fetch called, returning pending promise to simulate loading
TEST: fetch called, returning pending promise to simulate loading
TEST: Drawing selection to enable button
TEST: Button is enabled, clicking now...
TEST: Checking for error notification
❯ src/components/FlyerCorrectionTool.test.tsx 8/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 9/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 27/27
❯ src/services/flyerDataTransformer.test.ts 10/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 41 passed (242)
Tests 2 failed | 1639 passed | 125 skipped (1783)
Start at 07:51:47
Duration 105.90s
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should handle non-standard API errors during rescan
TEST: Starting "should handle non-standard API errors during rescan"
❯ src/components/FlyerCorrectionTool.test.tsx 9/13
❯ src/features/shopping/ShoppingList.test.tsx [queued]
❯ src/pages/admin/components/AuthView.test.tsx 9/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/routes/recipe.routes.test.ts 27/27
❯ src/services/flyerDataTransformer.test.ts 10/10
❯ src/tests/integration/auth.integration.test.ts [queued]
Test Files 8 failed | 41 passed (242)
Tests 2 failed | 1640 passed | 125 skipped (1783)
Start at 07:51:47
Duration 106.02s
❯ src/components/FlyerCorrectionTool.test.tsx 9/13
❯ src/features/shopping/ShoppingList.test.tsx 0/23
❯ src/pages/admin/components/AuthView.test.tsx 10/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 41 passed (242)
Tests 2 failed | 1641 passed | 125 skipped (1806)
Start at 07:51:47
Duration 107.34s
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should handle non-standard API errors during rescan
TEST: Clicking button to trigger API error
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should handle API failure response (ok: false) correctly
TEST: Starting "should handle API failure response (ok: false) correctly"
stdout | src/components/FlyerCorrectionTool.test.tsx > FlyerCorrectionTool > should redraw the canvas when the image loads
TEST: Starting "should redraw the canvas when the image loads"
❯ src/components/FlyerCorrectionTool.test.tsx 13/13
❯ src/features/shopping/ShoppingList.test.tsx 0/23
❯ src/pages/admin/components/AuthView.test.tsx 12/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 41 passed (242)
Tests 2 failed | 1647 passed | 125 skipped (1806)
Start at 07:51:47
Duration 107.44s
✓ src/components/FlyerCorrectionTool.test.tsx (13 tests) 5540ms
✓ should render correctly when isOpen is true 1306ms
✓ should enable extraction buttons after a selection is made 676ms
✓ should stop drawing when the mouse leaves the canvas 389ms
✓ should call rescanImageArea with correct parameters and show success 652ms
✓ should show an error if rescan is attempted before image is loaded 424ms
✓ should handle non-standard API errors during rescan 523ms
✓ should handle API failure response (ok: false) correctly 435ms
✓ should call rescanImageArea with "dates" type when Extract Sale Dates is clicked 434ms
❯ src/components/FlyerCorrectionTool.test.tsx 13/13
❯ src/features/shopping/ShoppingList.test.tsx 0/23
❯ src/pages/admin/components/AuthView.test.tsx 13/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 42 passed (242)
Tests 2 failed | 1648 passed | 125 skipped (1806)
Start at 07:51:47
Duration 108.11s
❯ src/components/FlyerCorrectionTool.test.tsx 13/13
❯ src/features/shopping/ShoppingList.test.tsx 0/23
❯ src/pages/admin/components/AuthView.test.tsx 13/21
❯ src/routes/flyer.routes.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 42 passed (242)
Tests 2 failed | 1648 passed | 125 skipped (1829)
Start at 07:51:47
Duration 108.31s
❯ src/features/shopping/ShoppingList.test.tsx 1/23
❯ src/pages/admin/components/AuthView.test.tsx 13/21
❯ src/routes/flyer.routes.test.ts 0/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 42 passed (242)
Tests 2 failed | 1649 passed | 125 skipped (1860)
Start at 07:51:47
Duration 108.60s
❯ src/features/shopping/ShoppingList.test.tsx 1/23
❯ src/pages/admin/components/AuthView.test.tsx 13/21
❯ src/routes/flyer.routes.test.ts 0/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 42 passed (242)
Tests 2 failed | 1649 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.05s
stdout | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > GET / > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stderr | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > GET / > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/flyer.routes.test.ts:76:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stdout | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > GET /:id > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stderr | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > GET /:id > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/flyer.routes.test.ts:130:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stdout | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > GET /:id/items > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stderr | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > GET /:id/items > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/flyer.routes.test.ts:162:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stdout | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > POST /items/batch-fetch > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stderr | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > POST /items/batch-fetch > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/flyer.routes.test.ts:205:72
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stdout | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > POST /items/batch-count > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stderr | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > POST /items/batch-count > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/flyer.routes.test.ts:244:74
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stdout | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > POST /items/:itemId/track > should return 500 if the tracking function throws synchronously
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
stderr | src/routes/flyer.routes.test.ts > Flyer Routes (/api/flyers) > POST /items/:itemId/track > should return 500 if the tracking function throws synchronously
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Sync error in tracking
at /app/src/routes/flyer.routes.test.ts:314:25
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
✓ src/routes/flyer.routes.test.ts (31 tests) 1152ms
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 15/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1685 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.26s
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 17/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1687 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.68s
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 17/21
❯ src/routes/flyer.routes.test.ts 31/31
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1687 passed | 125 skipped (1860)
Start at 07:51:47
Duration 110.98s
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 17/21
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1687 passed | 125 skipped (1860)
Start at 07:51:47
Duration 111.18s
❯ src/features/shopping/ShoppingList.test.tsx 4/23
❯ src/pages/admin/components/AuthView.test.tsx 17/21
❯ src/services/barcodeService.server.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1687 passed | 125 skipped (1860)
Start at 07:51:47
Duration 111.96s
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 5/23
❯ src/pages/admin/components/AuthView.test.tsx 17/21
❯ src/services/barcodeService.server.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1688 passed | 125 skipped (1860)
Start at 07:51:47
Duration 112.09s
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 7/23
❯ src/pages/admin/components/AuthView.test.tsx 19/21
❯ src/services/barcodeService.server.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts [queued]
Test Files 8 failed | 43 passed (242)
Tests 2 failed | 1692 passed | 125 skipped (1860)
Start at 07:51:47
Duration 113.34s
✓ src/pages/admin/components/AuthView.test.tsx (21 tests) 15117ms
✓ should render the Sign In form by default 3336ms
✓ should call loginUser and onLoginSuccess on successful login 555ms
✓ should switch to the registration form 920ms
✓ should call registerUser on successful registration 403ms
✓ should allow registration without providing a full name 446ms
✓ should display an error on failed registration 482ms
✓ should display an error on non-OK registration response 588ms
✓ should switch to the reset password form 903ms
✓ should call requestPasswordReset and show success message 676ms
✓ should display an error on failed password reset request 586ms
✓ should display an error on non-OK password reset response 699ms
✓ should switch back to sign in from forgot password 1126ms
✓ should set window.location.href for Google OAuth 515ms
✓ should set window.location.href for GitHub OAuth 704ms
✓ should show loading state during login submission 1445ms
✓ should show loading state during password reset submission 329ms
✓ should show loading state during registration submission 793ms
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 9/23
❯ src/pages/admin/components/AuthView.test.tsx 21/21
❯ src/services/barcodeService.server.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 44 passed (242)
Tests 2 failed | 1696 passed | 125 skipped (1862)
Start at 07:51:47
Duration 113.51s
stderr | src/features/shopping/ShoppingList.test.tsx > ShoppingListComponent (in shopping feature) > should call generateSpeechFromText when "Read aloud" is clicked
[vitest] The vi.fn() mock did not use 'function' or 'class' in its implementation, see https://vitest.dev/api/vi#vi-spyon for examples.
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 10/23
❯ src/pages/admin/components/AuthView.test.tsx 21/21
❯ src/services/barcodeService.server.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 44 passed (242)
Tests 2 failed | 1697 passed | 125 skipped (1862)
Start at 07:51:47
Duration 114.19s
Not implemented: Window's alert() method
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 13/23
❯ src/services/barcodeService.server.test.ts 0/35
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 44 passed (242)
Tests 2 failed | 1700 passed | 125 skipped (1897)
Start at 07:51:47
Duration 114.47s
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 13/23
❯ src/services/barcodeService.server.test.ts 1/35
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 44 passed (242)
Tests 2 failed | 1701 passed | 125 skipped (1897)
Start at 07:51:47
Duration 115.00s
✓ src/services/barcodeService.server.test.ts (35 tests) 242ms
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 14/23
❯ src/services/barcodeService.server.test.ts 35/35
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts [queued]
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1736 passed | 125 skipped (1897)
Start at 07:51:47
Duration 115.25s
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 15/23
❯ src/services/barcodeService.server.test.ts 35/35
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1737 passed | 125 skipped (1909)
Start at 07:51:47
Duration 115.83s
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 16/23
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1738 passed | 125 skipped (1909)
Start at 07:51:47
Duration 116.18s
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 16/23
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1738 passed | 125 skipped (1909)
Start at 07:51:47
Duration 116.28s
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 17/23
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1739 passed | 125 skipped (1909)
Start at 07:51:47
Duration 117.11s
Not implemented: Window's alert() method
stderr | src/features/shopping/ShoppingList.test.tsx > ShoppingListComponent (in shopping feature) > Loading States and Disabled States > should show a loading spinner while reading the list aloud
[vitest] The vi.fn() mock did not use 'function' or 'class' in its implementation, see https://vitest.dev/api/vi#vi-spyon for examples.
❯ src/features/charts/PriceHistoryChart.test.tsx [queued]
❯ src/features/shopping/ShoppingList.test.tsx 18/23
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1740 passed | 125 skipped (1909)
Start at 07:51:47
Duration 117.21s
❯ src/features/charts/PriceHistoryChart.test.tsx 0/13
❯ src/features/shopping/ShoppingList.test.tsx 18/23
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1740 passed | 125 skipped (1922)
Start at 07:51:47
Duration 117.42s
❯ src/features/charts/PriceHistoryChart.test.tsx 1/13
❯ src/features/shopping/ShoppingList.test.tsx 18/23
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1741 passed | 125 skipped (1922)
Start at 07:51:47
Duration 117.92s
❯ src/features/charts/PriceHistoryChart.test.tsx 2/13
❯ src/features/shopping/ShoppingList.test.tsx 20/23
❯ src/tests/integration/auth.integration.test.ts 0/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1744 passed | 125 skipped (1922)
Start at 07:51:47
Duration 118.03s
❯ src/features/charts/PriceHistoryChart.test.tsx 3/13
❯ src/features/shopping/ShoppingList.test.tsx 20/23
❯ src/tests/integration/auth.integration.test.ts 1/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 8 failed | 45 passed (242)
Tests 2 failed | 1745 passed | 126 skipped (1922)
Start at 07:51:47
Duration 118.23s
❯ src/tests/integration/auth.integration.test.ts (23 tests | 23 skipped) 10026ms
↓ should successfully log in a registered user
↓ should fail to log in with an incorrect password
↓ should fail to log in with a non-existent email
↓ should allow registration with an empty string for avatar_url and save it as null
↓ should successfully refresh an access token using a refresh token cookie
↓ should fail to refresh an access token with an invalid refresh token cookie
↓ should successfully log out and clear the refresh token cookie
↓ should block requests to /forgot-password after exceeding the limit
↓ should reject empty Bearer token
↓ should reject token without dots (invalid JWT structure)
↓ should reject token with only 2 parts (missing signature)
↓ should reject token with invalid signature
↓ should accept lowercase "bearer" scheme (case-insensitive)
↓ should reject Basic auth scheme
↓ should reject missing Authorization header
↓ should return same error for wrong password and non-existent user
↓ should return same response for forgot-password on existing and non-existing email
↓ should return validation error for missing login fields
↓ should reject reset with invalid token
↓ should reject duplicate email registration
↓ should reject invalid email format
↓ should reject weak password
↓ should return error when refresh token cookie is missing
❯ src/features/charts/PriceHistoryChart.test.tsx 4/13
❯ src/features/shopping/ShoppingList.test.tsx 21/23
❯ src/services/db/budget.db.test.ts [queued]
❯ src/tests/integration/auth.integration.test.ts 23/23
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 9 failed | 45 passed (242)
Tests 2 failed | 1747 passed | 148 skipped (1922)
Start at 07:51:47
Duration 118.36s
✓ src/features/shopping/ShoppingList.test.tsx (23 tests) 12198ms
✓ should render correctly when authenticated with an active list 2234ms
✓ should call onSelectList when changing the list in the dropdown 301ms
✓ should call onCreateList when creating a new list 1364ms
✓ should not call onCreateList if prompt is cancelled 1112ms
✓ should call onDeleteList when deleting a list after confirmation 661ms
✓ should not call onDeleteList if deletion is not confirmed 418ms
✓ should call onAddItem when adding a custom item 679ms
✓ should call onUpdateItem when toggling an item checkbox 372ms
✓ should disable the "Add" button for custom items when input is empty or whitespace 940ms
✓ should show a loading spinner while adding a custom item 974ms
✓ should show a loading spinner while creating a new list 924ms
✓ should not call onCreateList if the prompt returns an empty or whitespace string 708ms
✓ should render an item gracefully if it has no custom name or master item name 352ms
✓ src/features/charts/PriceHistoryChart.test.tsx (13 tests) 1264ms
✓ should render a placeholder when there are no watched items 333ms
❯ src/features/charts/PriceHistoryChart.test.tsx 13/13
❯ src/features/shopping/ShoppingList.test.tsx 23/23
❯ src/services/db/budget.db.test.ts [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 9 failed | 47 passed (242)
Tests 2 failed | 1758 passed | 148 skipped (1922)
Start at 07:51:47
Duration 119.28s
❯ src/features/charts/PriceHistoryChart.test.tsx 13/13
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/budget.db.test.ts [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 9 failed | 47 passed (242)
Tests 2 failed | 1758 passed | 148 skipped (1922)
Start at 07:51:47
Duration 119.79s
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/budget.db.test.ts [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 9 failed | 47 passed (242)
Tests 2 failed | 1758 passed | 148 skipped (1922)
Start at 07:51:47
Duration 120.55s
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/budget.db.test.ts [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 9 failed | 47 passed (242)
Tests 2 failed | 1758 passed | 148 skipped (1922)
Start at 07:51:47
Duration 121.64s
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/budget.db.test.ts [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 9 failed | 47 passed (242)
Tests 2 failed | 1758 passed | 148 skipped (1922)
Start at 07:51:47
Duration 123.09s
❯ src/features/voice-assistant/VoiceAssistant.test.tsx [queued]
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/budget.db.test.ts 0/17
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
Test Files 9 failed | 47 passed (242)
Tests 2 failed | 1758 passed | 148 skipped (1939)
Start at 07:51:47
Duration 123.19s
✓ src/services/db/budget.db.test.ts (17 tests) 113ms
❯ src/features/voice-assistant/VoiceAssistant.test.tsx [queued]
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/budget.db.test.ts 17/17
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 0/2
❯ src/utils/pdfConverter.test.ts [queued]
Test Files 9 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 148 skipped (1939)
Start at 07:51:47
Duration 124.34s
❯ src/tests/integration/gamification.integration.test.ts (2 tests | 2 skipped) 10199ms
↓ should award the "First Upload" achievement after a user successfully uploads and processes their first flyer
↓ should process a legacy upload and save fully qualified URLs to the database
❯ src/features/voice-assistant/VoiceAssistant.test.tsx [queued]
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 2/2
❯ src/utils/pdfConverter.test.ts [queued]
Test Files 10 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 150 skipped (1939)
Start at 07:51:47
Duration 125.15s
❯ src/features/voice-assistant/VoiceAssistant.test.tsx [queued]
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 0/12
❯ src/tests/integration/gamification.integration.test.ts 2/2
❯ src/utils/pdfConverter.test.ts [queued]
Test Files 10 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 150 skipped (1939)
Start at 07:51:47
Duration 125.25s
❯ src/features/voice-assistant/VoiceAssistant.test.tsx [queued]
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 1/12
❯ src/utils/pdfConverter.test.ts [queued]
Test Files 10 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 151 skipped (1939)
Start at 07:51:47
Duration 126.26s
❯ src/tests/integration/data-integrity.integration.test.ts (12 tests | 12 skipped) 10026ms
↓ should cascade delete shopping lists when user is deleted
↓ should cascade delete budgets when user is deleted
↓ should cascade delete shopping list items when list is deleted
↓ should prevent admin from deleting their own account via admin route
↓ should return error when adding item with invalid shopping list ID
↓ should enforce FK constraints at database level
↓ should return CONFLICT for duplicate email registration
↓ should reject budget with invalid period via API
↓ should reject budget with negative amount via API
↓ should enforce CHECK constraints at database level
↓ should require budget name via API
↓ should rollback partial inserts on constraint violation
❯ src/features/voice-assistant/VoiceAssistant.test.tsx [queued]
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/tests/integration/data-integrity.integration.test.ts 12/12
❯ src/utils/pdfConverter.test.ts [queued]
Test Files 11 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 162 skipped (1939)
Start at 07:51:47
Duration 127.43s
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 0/14
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/utils/pdfConverter.test.ts [queued]
Test Files 11 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 162 skipped (1953)
Start at 07:51:47
Duration 127.53s
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 0/14
❯ src/hooks/useShoppingLists.test.tsx [queued]
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/notification.db.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
❯ src/utils/pdfConverter.test.ts [queued]
Test Files 11 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 162 skipped (1953)
Start at 07:51:47
Duration 128.88s
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 0/14
❯ src/hooks/useShoppingLists.test.tsx 0/21
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/notification.db.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
❯ src/utils/pdfConverter.test.ts 0/11
Test Files 11 failed | 48 passed (242)
Tests 2 failed | 1775 passed | 162 skipped (1985)
Start at 07:51:47
Duration 129.27s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 1/14
❯ src/hooks/useShoppingLists.test.tsx 13/21
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/notification.db.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
❯ src/utils/pdfConverter.test.ts 0/11
Test Files 11 failed | 48 passed (242)
Tests 2 failed | 1789 passed | 162 skipped (1985)
Start at 07:51:47
Duration 129.42s
✓ src/hooks/useShoppingLists.test.tsx (21 tests) 406ms
✓ src/utils/pdfConverter.test.ts (11 tests) 100ms
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 3/14
❯ src/hooks/useShoppingLists.test.tsx 21/21
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/notification.db.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
❯ src/utils/pdfConverter.test.ts 11/11
Test Files 11 failed | 50 passed (242)
Tests 2 failed | 1810 passed | 162 skipped (1985)
Start at 07:51:47
Duration 129.87s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 6/14
❯ src/hooks/useShoppingLists.test.tsx 21/21
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/notification.db.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
❯ src/utils/pdfConverter.test.ts 11/11
Test Files 11 failed | 50 passed (242)
Tests 2 failed | 1813 passed | 162 skipped (1985)
Start at 07:51:47
Duration 130.17s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 8/14
❯ src/hooks/useShoppingLists.test.tsx 21/21
❯ src/layouts/MainLayout.test.tsx [queued]
❯ src/services/db/notification.db.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
❯ src/utils/pdfConverter.test.ts 11/11
Test Files 11 failed | 50 passed (242)
Tests 2 failed | 1815 passed | 162 skipped (1985)
Start at 07:51:47
Duration 130.29s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 9/14
❯ src/layouts/MainLayout.test.tsx 0/16
❯ src/services/db/notification.db.test.ts 0/22
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
Test Files 11 failed | 50 passed (242)
Tests 2 failed | 1816 passed | 162 skipped (2023)
Start at 07:51:47
Duration 130.81s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 10/14
❯ src/layouts/MainLayout.test.tsx 1/16
❯ src/services/db/notification.db.test.ts 0/22
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
Test Files 11 failed | 50 passed (242)
Tests 2 failed | 1818 passed | 162 skipped (2023)
Start at 07:51:47
Duration 131.23s
✓ src/layouts/MainLayout.test.tsx (16 tests) 508ms
✓ src/services/db/notification.db.test.ts (22 tests) 88ms
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 14/14
❯ src/layouts/MainLayout.test.tsx 16/16
❯ src/services/db/notification.db.test.ts 22/22
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts [queued]
Test Files 11 failed | 52 passed (242)
Tests 2 failed | 1859 passed | 162 skipped (2023)
Start at 07:51:47
Duration 131.49s
✓ src/features/voice-assistant/VoiceAssistant.test.tsx (14 tests) 3449ms
✓ should render correctly when isOpen is true 1088ms
✓ should call handleClose when mic is clicked while listening 342ms
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/features/voice-assistant/VoiceAssistant.test.tsx 14/14
❯ src/layouts/MainLayout.test.tsx 16/16
❯ src/services/db/notification.db.test.ts 22/22
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 11 failed | 53 passed (242)
Tests 2 failed | 1859 passed | 162 skipped (2036)
Start at 07:51:47
Duration 132.15s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 11 failed | 53 passed (242)
Tests 2 failed | 1859 passed | 162 skipped (2036)
Start at 07:51:47
Duration 132.48s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 11 failed | 53 passed (242)
Tests 2 failed | 1859 passed | 162 skipped (2036)
Start at 07:51:47
Duration 133.78s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 11 failed | 53 passed (242)
Tests 2 failed | 1859 passed | 162 skipped (2036)
Start at 07:51:47
Duration 134.49s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts [queued]
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 11 failed | 53 passed (242)
Tests 2 failed | 1859 passed | 162 skipped (2036)
Start at 07:51:47
Duration 134.66s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 11 failed | 53 passed (242)
Tests 2 failed | 1859 passed | 162 skipped (2054)
Start at 07:51:47
Duration 136.33s
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts 1/1
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 11 failed | 53 passed (242)
Tests 3 failed | 1859 passed | 162 skipped (2055)
Start at 07:51:47
Duration 136.80s
❯ src/tests/e2e/receipt-journey.e2e.test.ts (1 test | 1 failed) 357ms
× should complete receipt journey: Register -> Upload -> View -> Manage Items -> Add to Inventory 342ms
❯ src/features/flyer/AnalysisPanel.test.tsx [queued]
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts 1/1
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1859 passed | 162 skipped (2055)
Start at 07:51:47
Duration 137.40s
stdout | src/features/flyer/AnalysisPanel.test.tsx
DEBUG: Setting up AiAnalysisService mock
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/receipt-journey.e2e.test.ts 1/1
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1859 passed | 162 skipped (2068)
Start at 07:51:47
Duration 137.77s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should render tabs and an initial "Generate" button
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1859 passed | 162 skipped (2068)
Start at 07:51:47
Duration 137.88s
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1859 passed | 162 skipped (2068)
Start at 07:51:47
Duration 138.43s
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1859 passed | 162 skipped (2068)
Start at 07:51:47
Duration 139.35s
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx [queued]
❯ src/middleware/errorHandler.test.ts [queued]
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1859 passed | 162 skipped (2068)
Start at 07:51:47
Duration 140.43s
stdout | src/middleware/errorHandler.test.ts > errorHandler Middleware > should return a generic 500 error for a standard Error object
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
stdout | src/middleware/errorHandler.test.ts > errorHandler Middleware > should return a generic 500 error for a standard Error object
[DEBUG] errorHandler.test.ts: Received 500 error response with ID: mocked_random_id
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 0/12
❯ src/middleware/errorHandler.test.ts 1/12
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1860 passed | 162 skipped (2092)
Start at 07:51:47
Duration 140.84s
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 1/12
❯ src/middleware/errorHandler.test.ts 2/12
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1862 passed | 162 skipped (2092)
Start at 07:51:47
Duration 140.94s
stdout | src/middleware/errorHandler.test.ts > errorHandler Middleware > should handle a DatabaseError with a 500 status and a generic message
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
stdout | src/middleware/errorHandler.test.ts > errorHandler Middleware > when NODE_ENV is "production" > should return a generic message with an error ID for a 500 error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 3/12
❯ src/middleware/errorHandler.test.ts 9/12
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 53 passed (242)
Tests 3 failed | 1871 passed | 162 skipped (2092)
Start at 07:51:47
Duration 141.15s
✓ src/middleware/errorHandler.test.ts (12 tests) 618ms
stdout | src/hooks/useAuth.test.tsx > useAuth Hook and AuthProvider > login function > sets token, fetches profile, and updates state on successful login
[TEST-DEBUG] Waiting for initial auth check to complete...
stdout | src/hooks/useAuth.test.tsx > useAuth Hook and AuthProvider > login function > sets token, fetches profile, and updates state on successful login
[TEST-DEBUG] Initial auth check complete. Current status: SIGNED_OUT
[TEST-DEBUG] Calling login function...
stdout | src/hooks/useAuth.test.tsx > useAuth Hook and AuthProvider > login function > sets token, fetches profile, and updates state on successful login
[TEST-DEBUG] Login function promise resolved.
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 5/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts [queued]
❯ src/tests/e2e/auth.e2e.test.ts 0/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 54 passed (242)
Tests 3 failed | 1876 passed | 162 skipped (2104)
Start at 07:51:47
Duration 141.25s
stdout | src/hooks/useAuth.test.tsx > useAuth Hook and AuthProvider > login function > sets token, fetches profile, and updates state on successful login
[TEST-DEBUG] State immediately after login `act` call: {
userProfile: {
role: 'user',
points: 100,
full_name: 'Test User',
avatar_url: null,
preferences: {},
address_id: null,
created_by: null,
address: null,
created_at: '2026-01-19T07:54:07.918Z',
updated_at: '2026-01-19T07:54:07.918Z',
user: {
user_id: 'user-abc-123',
email: 'test@example.com',
created_at: '2026-01-19T07:54:07.918Z',
updated_at: '2026-01-19T07:54:07.918Z'
}
},
authStatus: 'AUTHENTICATED',
isLoading: false,
login: [AsyncFunction (anonymous)],
logout: [Function (anonymous)],
updateProfile: [Function (anonymous)]
}
[TEST-DEBUG] Checking authStatus in waitFor... Current status: AUTHENTICATED
stdout | src/hooks/useAuth.test.tsx > useAuth Hook and AuthProvider > login function > sets token, fetches profile, and updates state on successful login
[TEST-DEBUG] Final state after successful login: {
userProfile: {
role: 'user',
points: 100,
full_name: 'Test User',
avatar_url: null,
preferences: {},
address_id: null,
created_by: null,
address: null,
created_at: '2026-01-19T07:54:07.918Z',
updated_at: '2026-01-19T07:54:07.918Z',
user: {
user_id: 'user-abc-123',
email: 'test@example.com',
created_at: '2026-01-19T07:54:07.918Z',
updated_at: '2026-01-19T07:54:07.918Z'
}
},
authStatus: 'AUTHENTICATED',
isLoading: false,
login: [AsyncFunction (anonymous)],
logout: [Function (anonymous)],
updateProfile: [Function (anonymous)]
}
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 7/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 0/18
❯ src/tests/e2e/auth.e2e.test.ts 0/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 12 failed | 54 passed (242)
Tests 3 failed | 1878 passed | 162 skipped (2122)
Start at 07:51:47
Duration 141.35s
stderr | src/tests/e2e/auth.e2e.test.ts > Authentication E2E Flow
[FATAL] Setup failed. DB might be down. TypeError: Failed to parse URL from /api/auth/register
at node:internal/deps/undici/undici:14900:13
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at createAndLoginUser (/app/src/tests/utils/testHelpers.ts:76:5)
at /app/src/tests/e2e/auth.e2e.test.ts:21:31 {
[cause]: TypeError: Invalid URL
at new URL (node:internal/url:806:29)
at new Request (node:internal/deps/undici/undici:9776:25)
at fetch (node:internal/deps/undici/undici:10505:25)
at fetch (node:internal/deps/undici/undici:14898:10)
at fetch (node:internal/bootstrap/web/exposed-window-or-worker:72:12)
at publicPost (/app/src/services/apiClient.ts:186:10)
at Module.registerUser (/app/src/services/apiClient.ts:829:10)
at createAndLoginUser (/app/src/tests/utils/testHelpers.ts:76:21)
at /app/src/tests/e2e/auth.e2e.test.ts:21:37
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20 {
code: 'ERR_INVALID_URL',
input: '/api/auth/register'
}
}
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 9/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 1/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 54 passed (242)
Tests 3 failed | 1881 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.45s
❯ src/tests/e2e/auth.e2e.test.ts (12 tests | 12 skipped) 227ms
↓ should successfully register a new user
↓ should fail to register a user with a weak password
↓ should fail to register a user with a duplicate email
↓ should successfully log in a registered user
↓ should fail to log in with an incorrect password
↓ should fail to log in with a non-existent email
↓ should be able to access a protected route after logging in
↓ should allow an authenticated user to update their profile
↓ should allow a user to reset their password and log in with the new one
↓ should return a generic success message for a non-existent email to prevent enumeration
↓ should allow an authenticated user to refresh their access token and use it
↓ should fail to refresh with an invalid or missing token
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 9/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 1/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 54 passed (242)
Tests 3 failed | 1881 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.45s
stdout | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/daily-deal-check > should return 500 if triggering the job fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 2/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1885 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.69s
stderr | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/daily-deal-check > should return 500 if triggering the job fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Job runner failed
at Object.<anonymous> (/app/src/routes/admin.jobs.routes.test.ts:129:15)
at Object.Mock [as runDailyDealCheck] (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at /app/src/routes/admin.routes.ts:977:28
at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
at next (/app/node_modules/router/lib/route.js:157:13)
at /app/src/middleware/validation.middleware.ts:43:14
at processTicksAndRejections (node:internal/process/task_queues:95:5)
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 2/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1885 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.69s
✓ src/hooks/useAuth.test.tsx (12 tests) 1035ms
stdout | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/failing-job > should return 500 if enqueuing the job fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 2/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1885 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.69s
stderr | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/failing-job > should return 500 if enqueuing the job fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Queue is down
at /app/src/routes/admin.jobs.routes.test.ts:150:55
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 2/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1885 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.69s
stdout | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/analytics-report > should return 500 if enqueuing the analytics job fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 2/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1885 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.69s
stderr | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/analytics-report > should return 500 if enqueuing the analytics job fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Queue error
at /app/src/routes/admin.jobs.routes.test.ts:174:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 2/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1885 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.69s
stdout | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/weekly-analytics > should return 500 if enqueuing the weekly analytics job fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 10/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1893 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.79s
stderr | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /trigger/weekly-analytics > should return 500 if enqueuing the weekly analytics job fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Queue error
at /app/src/routes/admin.jobs.routes.test.ts:196:9
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 10/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1893 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.79s
stdout | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /flyers/:flyerId/cleanup > should return 500 if enqueuing the cleanup job fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 10/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1893 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.79s
stderr | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /flyers/:flyerId/cleanup > should return 500 if enqueuing the cleanup job fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Queue is down
at /app/src/routes/admin.jobs.routes.test.ts:218:53
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 10/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1893 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.79s
stdout | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /jobs/:queueName/:jobId/retry > should return 500 if job.retry() throws an error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 13/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1896 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.89s
stderr | src/routes/admin.jobs.routes.test.ts > Admin Job Trigger Routes (/api/admin/trigger) > POST /jobs/:queueName/:jobId/retry > should return 500 if job.retry() throws an error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Cannot retry job
at /app/src/routes/admin.jobs.routes.test.ts:305:69
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/middleware/errorHandler.test.ts 12/12
❯ src/routes/admin.jobs.routes.test.ts 13/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 0/13
Test Files 13 failed | 55 passed (242)
Tests 3 failed | 1896 passed | 174 skipped (2122)
Start at 07:51:47
Duration 141.89s
✓ src/routes/admin.jobs.routes.test.ts (18 tests) 591ms
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/hooks/useAuth.test.tsx 12/12
❯ src/routes/admin.jobs.routes.test.ts 18/18
❯ src/tests/e2e/auth.e2e.test.ts 12/12
❯ src/tests/integration/budget.integration.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 1/13
Test Files 13 failed | 56 passed (242)
Tests 3 failed | 1901 passed | 175 skipped (2122)
Start at 07:51:47
Duration 142.23s
❯ src/tests/integration/recipe.integration.test.ts (13 tests | 13 skipped) 10049ms
↓ should fetch a single public recipe by its ID
↓ should return 404 for a non-existent recipe ID
↓ should allow an authenticated user to create a new recipe
↓ should allow an authenticated user to update their own recipe
↓ should prevent a user from updating another user's recipe
↓ should allow an authenticated user to delete their own recipe
↓ should prevent a user from deleting another user's recipe
↓ should allow an authenticated user to post a comment on a recipe
↓ should allow an authenticated user to fork a recipe
↓ should allow forking seed recipes (null user_id)
↓ should return comments for a recipe
↓ should return empty array for recipe with no comments
↓ should return a recipe suggestion based on ingredients
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should render tabs and an initial "Generate" button
DEBUG: Starting render for initial state test
DEBUG: AiAnalysisService constructor mocked call
DEBUG: Render finished in 404ms
DEBUG: Asserting tab existence
DEBUG: Initial state test complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should render tabs and an initial "Generate" button
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should switch tabs and update the generate button text
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
❯ src/features/flyer/AnalysisPanel.test.tsx 0/13
❯ src/tests/integration/budget.integration.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
❯ src/tests/integration/recipe.integration.test.ts 13/13
Test Files 14 failed | 56 passed (242)
Tests 3 failed | 1901 passed | 187 skipped (2122)
Start at 07:51:47
Duration 143.70s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should switch tabs and update the generate button text
DEBUG: AiAnalysisService constructor mocked call
❯ src/features/flyer/AnalysisPanel.test.tsx 1/13
❯ src/tests/integration/budget.integration.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
Test Files 14 failed | 56 passed (242)
Tests 3 failed | 1902 passed | 187 skipped (2122)
Start at 07:51:47
Duration 144.15s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should switch tabs and update the generate button text
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should call getQuickInsights and display the result
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should call getQuickInsights and display the result
DEBUG: AiAnalysisService constructor mocked call
❯ src/features/flyer/AnalysisPanel.test.tsx 2/13
❯ src/tests/integration/budget.integration.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
Test Files 14 failed | 56 passed (242)
Tests 3 failed | 1903 passed | 187 skipped (2122)
Start at 07:51:47
Duration 144.37s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should call getQuickInsights and display the result
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display results with sources, and handle sources without a URI
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
❯ src/features/flyer/AnalysisPanel.test.tsx 2/13
❯ src/tests/integration/budget.integration.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
Test Files 14 failed | 56 passed (242)
Tests 3 failed | 1903 passed | 187 skipped (2122)
Start at 07:51:47
Duration 144.67s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display results with sources, and handle sources without a URI
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display results with sources, and handle sources without a URI
DEBUG: afterEach - cleaning up
❯ src/features/flyer/AnalysisPanel.test.tsx 3/13
❯ src/tests/integration/budget.integration.test.ts [queued]
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
Test Files 14 failed | 56 passed (242)
Tests 3 failed | 1904 passed | 187 skipped (2122)
Start at 07:51:47
Duration 145.08s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner when fetching initial items
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner when fetching initial items
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner when fetching initial items
DEBUG: afterEach - cleaning up
❯ src/features/flyer/AnalysisPanel.test.tsx 4/13
❯ src/tests/integration/budget.integration.test.ts 0/20
❯ src/tests/integration/edge-cases.integration.test.ts 0/18
Test Files 14 failed | 56 passed (242)
Tests 3 failed | 1905 passed | 187 skipped (2142)
Start at 07:51:47
Duration 145.18s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show an error if fetching items fails
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show an error if fetching items fails
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show an error if fetching items fails
DEBUG: afterEach - cleaning up
❯ src/tests/integration/edge-cases.integration.test.ts (18 tests | 18 skipped) 10023ms
↓ should reject missing checksum
↓ should reject invalid checksum format (non-hex)
↓ should reject short checksum (not 64 characters)
↓ should require flyerFile field
↓ should accept unicode characters and emojis
↓ should store XSS payloads as-is (frontend must escape)
↓ should reject null bytes in JSON
↓ should return 404 (not 403) for accessing another user's shopping list
↓ should return 404 when trying to update another user's shopping list
↓ should return 404 when trying to delete another user's shopping list
↓ should safely handle SQL injection in query params
↓ should safely handle SQL injection in search params
↓ should return 404 for non-existent resources with clear message
↓ should return validation error for malformed JSON body
↓ should return validation error for missing required fields
↓ should return validation error for invalid data types
↓ should handle concurrent writes without data loss
↓ should handle concurrent reads without errors
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner during analysis
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
❯ src/features/flyer/AnalysisPanel.test.tsx 4/13
❯ src/services/db/errors.db.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 56 passed (242)
Tests 3 failed | 1905 passed | 205 skipped (2142)
Start at 07:51:47
Duration 145.38s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner during analysis
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner during analysis
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display an error message if analysis fails
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
❯ src/features/flyer/AnalysisPanel.test.tsx 6/13
❯ src/services/db/errors.db.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 56 passed (242)
Tests 3 failed | 1907 passed | 205 skipped (2142)
Start at 07:51:47
Duration 146.10s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display an error message if analysis fails
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display an error message if analysis fails
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should handle the image generation flow
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
❯ src/config/env.test.ts [queued]
❯ src/features/flyer/AnalysisPanel.test.tsx 7/13
❯ src/services/db/errors.db.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 56 passed (242)
Tests 3 failed | 1908 passed | 205 skipped (2142)
Start at 07:51:47
Duration 146.20s
❯ src/config/env.test.ts [queued]
❯ src/features/flyer/AnalysisPanel.test.tsx 7/13
❯ src/services/db/errors.db.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
❯ src/utils/apiResponse.test.ts [queued]
Test Files 15 failed | 56 passed (242)
Tests 3 failed | 1908 passed | 205 skipped (2142)
Start at 07:51:47
Duration 147.50s
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should handle the image generation flow
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should handle the image generation flow
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should not show sources for non-search analysis types
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should not show sources for non-search analysis types
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should not show sources for non-search analysis types
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display sources for Plan Trip analysis type
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display sources for Plan Trip analysis type
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display sources for Plan Trip analysis type
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display sources for Compare Prices analysis type
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display sources for Compare Prices analysis type
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should display sources for Compare Prices analysis type
DEBUG: afterEach - cleaning up
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner when loading watched items
DEBUG: beforeEach setup start
DEBUG: beforeEach setup complete
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner when loading watched items
DEBUG: AiAnalysisService constructor mocked call
stdout | src/features/flyer/AnalysisPanel.test.tsx > AnalysisPanel > should show a loading spinner when loading watched items
DEBUG: afterEach - cleaning up
❯ src/config/env.test.ts [queued]
❯ src/features/flyer/AnalysisPanel.test.tsx 12/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/errors.db.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
❯ src/utils/apiResponse.test.ts [queued]
Test Files 15 failed | 56 passed (242)
Tests 3 failed | 1913 passed | 205 skipped (2142)
Start at 07:51:47
Duration 148.29s
✓ src/features/flyer/AnalysisPanel.test.tsx (13 tests) 9917ms
✓ should render tabs and an initial "Generate" button 4844ms
✓ should switch tabs and update the generate button text 1548ms
✓ should display results with sources, and handle sources without a URI 645ms
✓ should handle the image generation flow 915ms
✓ should display sources for Plan Trip analysis type 541ms
✓ should display sources for Compare Prices analysis type 514ms
❯ src/config/env.test.ts [queued]
❯ src/features/flyer/AnalysisPanel.test.tsx 13/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/errors.db.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
❯ src/utils/apiResponse.test.ts [queued]
Test Files 15 failed | 57 passed (242)
Tests 3 failed | 1914 passed | 205 skipped (2142)
Start at 07:51:47
Duration 148.48s
❯ src/config/env.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/errors.db.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
❯ src/utils/apiResponse.test.ts [queued]
Test Files 15 failed | 57 passed (242)
Tests 3 failed | 1914 passed | 205 skipped (2142)
Start at 07:51:47
Duration 150.01s
❯ src/config/env.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/errors.db.test.ts 0/31
❯ src/services/queueService.server.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
❯ src/utils/apiResponse.test.ts 1/33
Test Files 15 failed | 57 passed (242)
Tests 3 failed | 1915 passed | 205 skipped (2206)
Start at 07:51:47
Duration 150.13s
✓ src/services/db/errors.db.test.ts (31 tests) 134ms
❯ src/config/env.test.ts 0/36
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts [queued]
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
❯ src/utils/apiResponse.test.ts 10/33
Test Files 15 failed | 58 passed (242)
Tests 3 failed | 1955 passed | 205 skipped (2242)
Start at 07:51:47
Duration 150.27s
✓ src/utils/apiResponse.test.ts (33 tests) 231ms
❯ src/config/env.test.ts 0/36
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts [queued]
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 59 passed (242)
Tests 3 failed | 1978 passed | 205 skipped (2242)
Start at 07:51:47
Duration 152.07s
❯ src/config/env.test.ts 16/36
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts [queued]
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/e2e/deals-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 59 passed (242)
Tests 3 failed | 1994 passed | 205 skipped (2242)
Start at 07:51:47
Duration 152.23s
❯ src/config/env.test.ts 26/36
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts [queued]
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/e2e/deals-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 59 passed (242)
Tests 3 failed | 2004 passed | 205 skipped (2242)
Start at 07:51:47
Duration 152.82s
✓ src/config/env.test.ts (36 tests) 2422ms
✓ should parse valid configuration with all required fields 1194ms
❯ src/config/env.test.ts 36/36
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts [queued]
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/e2e/deals-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 60 passed (242)
Tests 3 failed | 2014 passed | 205 skipped (2242)
Start at 07:51:47
Duration 153.08s
❯ src/config/env.test.ts 36/36
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/e2e/deals-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 60 passed (242)
Tests 3 failed | 2014 passed | 205 skipped (2251)
Start at 07:51:47
Duration 153.50s
❯ src/pages/VoiceLabPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/e2e/deals-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 60 passed (242)
Tests 3 failed | 2014 passed | 205 skipped (2251)
Start at 07:51:47
Duration 153.75s
❯ src/pages/VoiceLabPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/e2e/budget-journey.e2e.test.ts [queued]
❯ src/tests/e2e/deals-journey.e2e.test.ts [queued]
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 60 passed (242)
Tests 3 failed | 2014 passed | 205 skipped (2251)
Start at 07:51:47
Duration 154.27s
❯ src/pages/VoiceLabPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/e2e/budget-journey.e2e.test.ts 1/1
❯ src/tests/e2e/deals-journey.e2e.test.ts 0/1
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 15 failed | 60 passed (242)
Tests 4 failed | 2014 passed | 205 skipped (2253)
Start at 07:51:47
Duration 154.70s
❯ src/tests/e2e/budget-journey.e2e.test.ts (1 test | 1 failed) 158ms
× should complete budget journey: Register -> Create Budget -> Track Spending -> Update -> Delete 152ms
❯ src/tests/e2e/deals-journey.e2e.test.ts (1 test | 1 failed) 164ms
× should complete deals journey: Register -> Watch Items -> View Prices -> Check Deals 155ms
❯ src/features/shopping/WatchedItemsList.test.tsx [queued]
❯ src/pages/VoiceLabPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/e2e/deals-journey.e2e.test.ts 1/1
❯ src/tests/integration/budget.integration.test.ts 0/20
Test Files 17 failed | 60 passed (242)
Tests 5 failed | 2014 passed | 205 skipped (2253)
Start at 07:51:47
Duration 155.09s
❯ src/tests/integration/budget.integration.test.ts (20 tests | 20 skipped) 10010ms
↓ should fetch budgets for the authenticated user
↓ should return 401 if user is not authenticated
↓ should allow an authenticated user to create a new budget
↓ should return 400 for invalid budget data
↓ should return 401 if user is not authenticated
↓ should reject period="yearly" (only weekly/monthly allowed)
↓ should reject negative amount_cents
↓ should reject invalid date format
↓ should require name field
↓ should allow an authenticated user to update their own budget
↓ should return 404 when updating a non-existent budget
↓ should return 400 when no update fields are provided
↓ should return 401 if user is not authenticated
↓ should allow an authenticated user to delete their own budget
↓ should return 404 when deleting a non-existent budget
↓ should return 401 if user is not authenticated
↓ should return spending analysis for the authenticated user
↓ should return 400 for invalid date format
↓ should return 400 when required query params are missing
↓ should return 401 if user is not authenticated
❯ src/features/shopping/WatchedItemsList.test.tsx [queued]
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/e2e/deals-journey.e2e.test.ts 1/1
❯ src/tests/integration/budget.integration.test.ts 20/20
Test Files 18 failed | 60 passed (242)
Tests 5 failed | 2014 passed | 225 skipped (2263)
Start at 07:51:47
Duration 155.33s
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > should render the initial state correctly
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
❯ src/features/shopping/WatchedItemsList.test.tsx [queued]
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/integration/budget.integration.test.ts 20/20
Test Files 18 failed | 60 passed (242)
Tests 5 failed | 2014 passed | 225 skipped (2263)
Start at 07:51:47
Duration 156.20s
stderr | src/routes/store.routes.test.ts
[vitest] The vi.fn() mock did not use 'function' or 'class' in its implementation, see https://vitest.dev/api/vi#vi-spyon for examples.
❯ src/features/shopping/WatchedItemsList.test.tsx [queued]
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 0/9
❯ src/tests/integration/budget.integration.test.ts 20/20
Test Files 18 failed | 60 passed (242)
Tests 5 failed | 2014 passed | 225 skipped (2263)
Start at 07:51:47
Duration 156.20s
❯ src/features/shopping/WatchedItemsList.test.tsx [queued]
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 1/9
Test Files 18 failed | 60 passed (242)
Tests 5 failed | 2015 passed | 225 skipped (2263)
Start at 07:51:47
Duration 156.73s
stdout | src/services/queueService.server.test.ts > Worker Service Lifecycle > gracefulShutdown > should close all workers, queues, the redis connection, and exit the process
[DEBUG] queueService.server.test.ts: Restoring process.exit spy
stdout | src/services/queueService.server.test.ts > Worker Service Lifecycle > gracefulShutdown > should log an error if a worker fails to close
[DEBUG] queueService.server.test.ts: Restoring process.exit spy
stdout | src/services/queueService.server.test.ts > Worker Service Lifecycle > gracefulShutdown > should log an error if Redis connection fails to close
[DEBUG] queueService.server.test.ts: Restoring process.exit spy
stdout | src/services/queueService.server.test.ts > Worker Service Lifecycle > gracefulShutdown > should timeout if shutdown takes too long
[DEBUG] queueService.server.test.ts: Restoring process.exit spy
❯ src/features/shopping/WatchedItemsList.test.tsx [queued]
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.server.test.ts 4/9
Test Files 18 failed | 60 passed (242)
Tests 5 failed | 2018 passed | 225 skipped (2263)
Start at 07:51:47
Duration 156.99s
✓ src/services/queueService.server.test.ts (9 tests) 3405ms
✓ should log a success message when Redis connects 3094ms
❯ src/features/shopping/WatchedItemsList.test.tsx [queued]
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 61 passed (242)
Tests 5 failed | 2023 passed | 225 skipped (2263)
Start at 07:51:47
Duration 157.12s
❯ src/features/shopping/WatchedItemsList.test.tsx 0/16
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 61 passed (242)
Tests 5 failed | 2023 passed | 225 skipped (2279)
Start at 07:51:47
Duration 157.99s
❯ src/components/ErrorBoundary.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 0/16
❯ src/pages/VoiceLabPage.test.tsx 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 61 passed (242)
Tests 5 failed | 2023 passed | 225 skipped (2279)
Start at 07:51:47
Duration 158.19s
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > should render the initial state correctly
[TEST DEBUG] Test: render initial state
[TEST DEBUG] Test: render initial state passed
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > should render the initial state correctly
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] Test: generateSpeechFromText success flow
[TEST DEBUG] Clicking generate button
[TEST DEBUG] Waiting for generateSpeechFromText call
[TEST DEBUG] Mock response.json() called
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] Audio constructor called with URL: data:audio/mpeg;base64,mock-audio-data
[TEST DEBUG] mockAudioPlay executed
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] Waiting for Audio constructor call
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] Waiting for mockAudioPlay call
❯ src/components/ErrorBoundary.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 0/16
❯ src/pages/VoiceLabPage.test.tsx 1/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts [queued]
❯ src/services/workers.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 61 passed (242)
Tests 5 failed | 2024 passed | 225 skipped (2279)
Start at 07:51:47
Duration 159.01s
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] Waiting for UI update (button enabled, replay visible)
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] Test: generateSpeechFromText success flow passed
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should call generateSpeechFromText and play audio on success
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error notification if text is empty
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error notification if text is empty
[TEST DEBUG] Test: empty text validation
[TEST DEBUG] Clicking generate button with empty text
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error notification if text is empty
[TEST DEBUG] Test: empty text validation passed
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error notification if text is empty
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error notification if API call fails
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error notification if API call fails
[TEST DEBUG] Test: API failure
[TEST DEBUG] Clicking generate button (expecting failure)
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error notification if API call fails
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error if API returns no audio data
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error if API returns no audio data
[TEST DEBUG] Test: No audio data returned
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error if API returns no audio data
[TEST DEBUG] Test: No audio data returned passed
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should show an error if API returns no audio data
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should handle non-Error objects in catch block
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should handle non-Error objects in catch block
[TEST DEBUG] Test: Non-error object rejection
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should handle non-Error objects in catch block
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should allow replaying the generated audio
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should allow replaying the generated audio
[TEST DEBUG] Test: Replay functionality
[TEST DEBUG] Clicking generate button for replay test
[TEST DEBUG] Waiting for replay button to appear
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should allow replaying the generated audio
[TEST DEBUG] Audio constructor called with URL: data:audio/mpeg;base64,mock-audio-data
[TEST DEBUG] mockAudioPlay executed
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should allow replaying the generated audio
[TEST DEBUG] Replay button found
[TEST DEBUG] Verifying initial play count: 1
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should allow replaying the generated audio
[TEST DEBUG] Clicking replay button
[TEST DEBUG] mockAudioPlay executed
[TEST DEBUG] Verifying play count reaches 2. Current calls: 2
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should allow replaying the generated audio
[TEST DEBUG] Test: Replay functionality passed
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Text-to-Speech Generation > should allow replaying the generated audio
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Real-time Voice Session > should call startVoiceSession and show an error notification
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Real-time Voice Session > should call startVoiceSession and show an error notification
[TEST DEBUG] Test: Real-time voice session error
[TEST DEBUG] mocked startVoiceSession called
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Real-time Voice Session > should call startVoiceSession and show an error notification
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Real-time Voice Session > should handle unknown errors in startVoiceSession
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
❯ src/components/ErrorBoundary.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 0/16
❯ src/pages/VoiceLabPage.test.tsx 2/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts [queued]
❯ src/services/workers.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 61 passed (242)
Tests 5 failed | 2025 passed | 225 skipped (2279)
Start at 07:51:47
Duration 159.48s
❯ src/components/ErrorBoundary.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 2/16
❯ src/pages/VoiceLabPage.test.tsx 8/10
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts [queued]
❯ src/services/workers.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 61 passed (242)
Tests 5 failed | 2033 passed | 225 skipped (2279)
Start at 07:51:47
Duration 160.74s
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Real-time Voice Session > should handle unknown errors in startVoiceSession
[TEST DEBUG] afterEach: unstubbing globals
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Real-time Voice Session > should handle successful startVoiceSession and log messages
[TEST DEBUG] beforeEach: Cleaning mocks and setting up Audio mock
stdout | src/pages/VoiceLabPage.test.tsx > VoiceLabPage > Real-time Voice Session > should handle successful startVoiceSession and log messages
[TEST DEBUG] afterEach: unstubbing globals
❯ src/components/ErrorBoundary.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 2/16
❯ src/pages/VoiceLabPage.test.tsx 9/10
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts [queued]
❯ src/services/workers.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 61 passed (242)
Tests 5 failed | 2034 passed | 225 skipped (2279)
Start at 07:51:47
Duration 161.41s
✓ src/pages/VoiceLabPage.test.tsx (10 tests) 4987ms
✓ should render the initial state correctly 2300ms
✓ should call generateSpeechFromText and play audio on success 741ms
✓ should show an error notification if text is empty 387ms
❯ src/components/ErrorBoundary.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 3/16
❯ src/pages/VoiceLabPage.test.tsx 10/10
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts [queued]
❯ src/services/workers.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 62 passed (242)
Tests 5 failed | 2036 passed | 225 skipped (2279)
Start at 07:51:47
Duration 161.51s
❯ src/components/ErrorBoundary.test.tsx 0/22
❯ src/features/shopping/WatchedItemsList.test.tsx 3/16
❯ src/pages/VoiceLabPage.test.tsx 10/10
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts [queued]
❯ src/services/workers.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 62 passed (242)
Tests 5 failed | 2036 passed | 225 skipped (2301)
Start at 07:51:47
Duration 161.94s
❯ src/components/ErrorBoundary.test.tsx 0/22
❯ src/features/shopping/WatchedItemsList.test.tsx 4/16
❯ src/pages/VoiceLabPage.test.tsx 10/10
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts 0/29
❯ src/services/workers.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 62 passed (242)
Tests 5 failed | 2037 passed | 225 skipped (2330)
Start at 07:51:47
Duration 162.19s
❯ src/components/ErrorBoundary.test.tsx 3/22
❯ src/features/shopping/WatchedItemsList.test.tsx 4/16
❯ src/pages/VoiceLabPage.test.tsx 10/10
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts 1/29
❯ src/services/workers.server.test.ts 0/15
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 62 passed (242)
Tests 5 failed | 2041 passed | 225 skipped (2345)
Start at 07:51:47
Duration 162.43s
✓ src/services/cacheService.server.test.ts (29 tests) 84ms
❯ src/components/ErrorBoundary.test.tsx 6/22
❯ src/features/shopping/WatchedItemsList.test.tsx 5/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts 29/29
❯ src/services/workers.server.test.ts 0/15
❯ src/tests/integration/public.routes.integration.test.ts [queued]
Test Files 18 failed | 63 passed (242)
Tests 5 failed | 2073 passed | 225 skipped (2345)
Start at 07:51:47
Duration 162.81s
❯ src/components/ErrorBoundary.test.tsx 7/22
❯ src/features/shopping/WatchedItemsList.test.tsx 5/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts 29/29
❯ src/services/workers.server.test.ts 0/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 63 passed (242)
Tests 5 failed | 2074 passed | 225 skipped (2362)
Start at 07:51:47
Duration 163.06s
❯ src/components/ErrorBoundary.test.tsx 12/22
❯ src/features/shopping/WatchedItemsList.test.tsx 6/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/cacheService.server.test.ts 29/29
❯ src/services/workers.server.test.ts 0/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 63 passed (242)
Tests 5 failed | 2080 passed | 225 skipped (2362)
Start at 07:51:47
Duration 163.27s
❯ src/components/ErrorBoundary.test.tsx 13/22
❯ src/features/shopping/WatchedItemsList.test.tsx 7/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 0/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 63 passed (242)
Tests 5 failed | 2082 passed | 225 skipped (2362)
Start at 07:51:47
Duration 163.37s
❯ src/components/ErrorBoundary.test.tsx 14/22
❯ src/features/shopping/WatchedItemsList.test.tsx 8/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 0/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 63 passed (242)
Tests 5 failed | 2084 passed | 225 skipped (2362)
Start at 07:51:47
Duration 163.57s
❯ src/components/ErrorBoundary.test.tsx 16/22
❯ src/features/shopping/WatchedItemsList.test.tsx 8/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 1/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 63 passed (242)
Tests 5 failed | 2087 passed | 225 skipped (2362)
Start at 07:51:47
Duration 163.67s
❯ src/components/ErrorBoundary.test.tsx 18/22
❯ src/features/shopping/WatchedItemsList.test.tsx 8/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 3/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 63 passed (242)
Tests 5 failed | 2091 passed | 225 skipped (2362)
Start at 07:51:47
Duration 164.04s
✓ src/components/ErrorBoundary.test.tsx (22 tests) 2078ms
✓ should render reload button in default fallback 667ms
✓ should show report feedback button when Sentry is configured and eventId exists 338ms
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 8/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 7/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2099 passed | 225 skipped (2362)
Start at 07:51:47
Duration 164.14s
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 8/16
❯ src/routes/budget.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 8/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2100 passed | 225 skipped (2362)
Start at 07:51:47
Duration 164.25s
stdout | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > GET / > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/routes/budget.routes.test.ts 0/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 10/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2104 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.35s
stderr | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > GET / > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/budget.routes.test.ts:95:68
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/routes/budget.routes.test.ts 0/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 10/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2104 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.35s
stdout | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > POST / > should return 500 if a generic database error occurs
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/routes/budget.routes.test.ts 3/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 12/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2109 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.45s
stderr | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > POST / > should return 500 if a generic database error occurs
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/budget.routes.test.ts:146:63
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/routes/budget.routes.test.ts 3/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 12/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2109 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.45s
stdout | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > PUT /:id > should return 500 if a generic database error occurs
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/routes/budget.routes.test.ts 7/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 13/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2114 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.65s
stderr | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > PUT /:id > should return 500 if a generic database error occurs
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/budget.routes.test.ts:204:63
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/ErrorBoundary.test.tsx 22/22
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/routes/budget.routes.test.ts 7/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 13/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 64 passed (242)
Tests 5 failed | 2114 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.65s
✓ src/services/workers.server.test.ts (15 tests) 2453ms
✓ should call flyerProcessingService.processJob with the job data 1277ms
stdout | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > DELETE /:id > should return 500 if a generic database error occurs
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/budget.routes.test.ts 12/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 15/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 65 passed (242)
Tests 5 failed | 2121 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.76s
stderr | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > DELETE /:id > should return 500 if a generic database error occurs
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/budget.routes.test.ts:250:63
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/budget.routes.test.ts 12/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 15/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 65 passed (242)
Tests 5 failed | 2121 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.76s
stdout | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > GET /spending-analysis > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/budget.routes.test.ts 18/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 15/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 65 passed (242)
Tests 5 failed | 2127 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.86s
stderr | src/routes/budget.routes.test.ts > Budget Routes (/api/budgets) > GET /spending-analysis > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/budget.routes.test.ts:281:72
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/budget.routes.test.ts 18/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 15/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 65 passed (242)
Tests 5 failed | 2127 passed | 225 skipped (2382)
Start at 07:51:47
Duration 164.86s
✓ src/routes/budget.routes.test.ts (20 tests) 622ms
❯ src/features/shopping/WatchedItemsList.test.tsx 10/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/budget.routes.test.ts 20/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 15/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 66 passed (242)
Tests 5 failed | 2129 passed | 225 skipped (2382)
Start at 07:51:47
Duration 165.09s
❯ src/features/shopping/WatchedItemsList.test.tsx 13/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/budget.routes.test.ts 20/20
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/workers.server.test.ts 15/15
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 66 passed (242)
Tests 5 failed | 2132 passed | 225 skipped (2382)
Start at 07:51:47
Duration 165.66s
❯ src/features/flyer/ProcessingStatus.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 13/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 66 passed (242)
Tests 5 failed | 2132 passed | 225 skipped (2382)
Start at 07:51:47
Duration 166.29s
✓ src/features/shopping/WatchedItemsList.test.tsx (16 tests) 8079ms
✓ should render the form and item list when user is authenticated 1219ms
✓ should allow adding a new item 1048ms
✓ should show a loading spinner while adding an item 716ms
✓ should allow removing an item 729ms
✓ should filter items by category 301ms
✓ should sort items ascending and descending 945ms
✓ should disable the "Add" button if item name is empty or whitespace 761ms
✓ should disable the "Add" button if category is not selected 690ms
✓ should reset loading state and log an error if onAddItem rejects 629ms
❯ src/features/flyer/ProcessingStatus.test.tsx [queued]
❯ src/features/shopping/WatchedItemsList.test.tsx 16/16
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 67 passed (242)
Tests 5 failed | 2135 passed | 225 skipped (2382)
Start at 07:51:47
Duration 167.32s
❯ src/features/flyer/ProcessingStatus.test.tsx 0/17
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 67 passed (242)
Tests 5 failed | 2135 passed | 225 skipped (2399)
Start at 07:51:47
Duration 167.43s
❯ src/features/flyer/ProcessingStatus.test.tsx 0/17
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts [queued]
❯ src/services/sentry.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 67 passed (242)
Tests 5 failed | 2135 passed | 225 skipped (2399)
Start at 07:51:47
Duration 168.13s
❯ src/features/flyer/ProcessingStatus.test.tsx 1/17
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts [queued]
❯ src/services/sentry.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 67 passed (242)
Tests 5 failed | 2136 passed | 225 skipped (2399)
Start at 07:51:47
Duration 169.25s
❯ src/features/flyer/ProcessingStatus.test.tsx 9/17
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts [queued]
❯ src/services/queueService.workers.test.ts [queued]
❯ src/services/sentry.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 67 passed (242)
Tests 5 failed | 2144 passed | 225 skipped (2399)
Start at 07:51:47
Duration 169.35s
❯ src/features/flyer/ProcessingStatus.test.tsx 10/17
❯ src/pages/admin/components/AdminBrandManager.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts [queued]
❯ src/services/queueService.workers.test.ts [queued]
❯ src/services/sentry.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 67 passed (242)
Tests 5 failed | 2145 passed | 225 skipped (2399)
Start at 07:51:47
Duration 169.55s
✓ src/features/flyer/ProcessingStatus.test.tsx (17 tests) 2248ms
✓ should render the title and initial time remaining 874ms
❯ src/features/flyer/ProcessingStatus.test.tsx 17/17
❯ src/pages/admin/components/AdminBrandManager.test.tsx 0/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts [queued]
❯ src/services/queueService.workers.test.ts [queued]
❯ src/services/sentry.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 68 passed (242)
Tests 5 failed | 2152 passed | 225 skipped (2412)
Start at 07:51:47
Duration 169.91s
❯ src/features/flyer/ProcessingStatus.test.tsx 17/17
❯ src/pages/admin/components/AdminBrandManager.test.tsx 0/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts [queued]
❯ src/services/queueService.workers.test.ts [queued]
❯ src/services/sentry.server.test.ts [queued]
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 68 passed (242)
Tests 5 failed | 2152 passed | 225 skipped (2412)
Start at 07:51:47
Duration 170.46s
❯ src/pages/admin/components/AdminBrandManager.test.tsx 0/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts 0/12
❯ src/services/queueService.workers.test.ts [queued]
❯ src/services/sentry.server.test.ts 0/28
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 68 passed (242)
Tests 5 failed | 2152 passed | 225 skipped (2452)
Start at 07:51:47
Duration 170.83s
✓ src/services/geocodingService.server.test.ts (12 tests) 136ms
❯ src/pages/admin/components/AdminBrandManager.test.tsx 1/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts 12/12
❯ src/services/queueService.workers.test.ts [queued]
❯ src/services/sentry.server.test.ts 0/28
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 69 passed (242)
Tests 5 failed | 2165 passed | 225 skipped (2452)
Start at 07:51:47
Duration 171.45s
❯ src/pages/admin/components/AdminBrandManager.test.tsx 7/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/geocodingService.server.test.ts 12/12
❯ src/services/queueService.workers.test.ts 0/13
❯ src/services/sentry.server.test.ts 1/28
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 69 passed (242)
Tests 5 failed | 2172 passed | 225 skipped (2465)
Start at 07:51:47
Duration 171.74s
✓ src/services/sentry.server.test.ts (28 tests) 792ms
✓ should not initialize Sentry when not configured 696ms
❯ src/pages/admin/components/AdminBrandManager.test.tsx 8/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 0/13
❯ src/services/sentry.server.test.ts 28/28
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 70 passed (242)
Tests 5 failed | 2200 passed | 225 skipped (2465)
Start at 07:51:47
Duration 172.16s
❯ src/pages/admin/components/AdminBrandManager.test.tsx 9/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 0/13
❯ src/services/sentry.server.test.ts 28/28
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 70 passed (242)
Tests 5 failed | 2201 passed | 225 skipped (2465)
Start at 07:51:47
Duration 172.26s
❯ src/pages/admin/components/AdminBrandManager.test.tsx 9/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 0/13
❯ src/services/sentry.server.test.ts 28/28
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 70 passed (242)
Tests 5 failed | 2201 passed | 225 skipped (2465)
Start at 07:51:47
Duration 172.46s
❯ src/pages/admin/components/AdminBrandManager.test.tsx 10/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 0/13
❯ src/services/sentry.server.test.ts 28/28
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 70 passed (242)
Tests 5 failed | 2202 passed | 225 skipped (2465)
Start at 07:51:47
Duration 172.69s
❯ src/pages/admin/components/AdminBrandManager.test.tsx 11/13
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 0/13
❯ src/tests/integration/public.routes.integration.test.ts 0/17
Test Files 18 failed | 70 passed (242)
Tests 5 failed | 2203 passed | 225 skipped (2465)
Start at 07:51:47
Duration 172.92s
✓ src/pages/admin/components/AdminBrandManager.test.tsx (13 tests) 2956ms
✓ should render the list of brands when data is fetched successfully 854ms
✓ should show an error toast for oversized file 602ms
✓ should render an empty table if no brands are found 332ms
❯ src/tests/integration/public.routes.integration.test.ts (17 tests | 17 skipped) 10019ms
↓ GET /api/health/ping should return "pong"
↓ GET /api/health/db-schema should return success
↓ GET /api/health/storage should return success
↓ GET /api/health/db-pool should return success
↓ GET /api/health/time should return the server time
↓ GET /api/flyers should return a list of flyers
↓ GET /api/flyers/:id/items should return items for a specific flyer
↓ POST /api/flyers/items/batch-fetch should return items for multiple flyers
↓ POST /api/flyers/items/batch-count should return a count for multiple flyers
↓ GET /api/personalization/master-items should return a list of master grocery items
↓ GET /api/recipes/by-sale-percentage should return recipes
↓ GET /api/recipes/by-ingredient-and-tag should return recipes
↓ GET /api/recipes/:recipeId/comments should return comments for a recipe
↓ GET /api/stats/most-frequent-sales should return frequent items
↓ GET /api/personalization/dietary-restrictions should return a list of restrictions
↓ GET /api/personalization/appliances should return a list of appliances
↓ should block requests to /api/personalization/master-items after exceeding the limit
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 1/13
❯ src/tests/integration/public.routes.integration.test.ts 17/17
Test Files 19 failed | 71 passed (242)
Tests 5 failed | 2206 passed | 242 skipped (2465)
Start at 07:51:47
Duration 173.02s
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 1/13
❯ src/tests/integration/public.routes.integration.test.ts 17/17
Test Files 19 failed | 71 passed (242)
Tests 5 failed | 2206 passed | 242 skipped (2465)
Start at 07:51:47
Duration 173.98s
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.workers.test.ts 11/13
Test Files 19 failed | 71 passed (242)
Tests 5 failed | 2216 passed | 242 skipped (2465)
Start at 07:51:47
Duration 174.09s
✓ src/services/queueService.workers.test.ts (13 tests) 2536ms
✓ should call flyerProcessingService.processJob with the job data 1365ms
❯ src/features/flyer/BulkImporter.test.tsx [queued]
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts [queued]
Test Files 19 failed | 72 passed (242)
Tests 5 failed | 2218 passed | 242 skipped (2465)
Start at 07:51:47
Duration 175.13s
❯ src/features/flyer/BulkImporter.test.tsx [queued]
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts [queued]
❯ src/services/emailService.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts [queued]
Test Files 19 failed | 72 passed (242)
Tests 5 failed | 2218 passed | 242 skipped (2465)
Start at 07:51:47
Duration 175.88s
❯ src/features/flyer/BulkImporter.test.tsx [queued]
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts [queued]
❯ src/services/emailService.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts [queued]
Test Files 19 failed | 72 passed (242)
Tests 5 failed | 2218 passed | 242 skipped (2465)
Start at 07:51:47
Duration 176.24s
❯ src/features/flyer/BulkImporter.test.tsx [queued]
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts [queued]
❯ src/services/emailService.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts [queued]
Test Files 19 failed | 72 passed (242)
Tests 5 failed | 2218 passed | 242 skipped (2465)
Start at 07:51:47
Duration 176.75s
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendPasswordResetEmail > should call sendMail with the correct recipient, subject, and constructed link
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendPasswordResetEmail > should call sendMail with the correct recipient, subject, and constructed link
[TEST DEBUG] mockSendMail (default) called with: test@example.com
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendWelcomeEmail > should send a personalized welcome email when a name is provided
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendWelcomeEmail > should send a generic welcome email when a name is not provided
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendDealNotificationEmail > should send a personalized email with a list of deals
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendDealNotificationEmail > should send a personalized email with a list of deals
[TEST DEBUG] mockSendMail (default) called with: deal.hunter@example.com
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendDealNotificationEmail > should send a generic email when name is null
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendDealNotificationEmail > should send a generic email when name is null
[TEST DEBUG] mockSendMail (default) called with: anonymous.user@example.com
stdout | src/services/emailService.server.test.ts > Email Service (Server) > sendDealNotificationEmail > should log an error if sendMail fails
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > processEmailJob > should call sendMail with job data and log success
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > processEmailJob > should log an error and re-throw if sendMail fails
[TEST SETUP] Setting up Email Service mocks
stdout | src/services/emailService.server.test.ts > Email Service (Server) > processEmailJob > should handle non-Error objects thrown during processing
[TEST SETUP] Setting up Email Service mocks
❯ src/features/flyer/BulkImporter.test.tsx [queued]
❯ src/providers/AuthProvider.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts [queued]
❯ src/services/emailService.server.test.ts 1/9
❯ src/tests/integration/user.routes.integration.test.ts [queued]
Test Files 19 failed | 72 passed (242)
Tests 5 failed | 2219 passed | 242 skipped (2474)
Start at 07:51:47
Duration 176.89s
✓ src/services/emailService.server.test.ts (9 tests) 80ms
❯ src/features/flyer/BulkImporter.test.tsx [queued]
❯ src/providers/AuthProvider.test.tsx 0/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts [queued]
❯ src/services/emailService.server.test.ts 9/9
❯ src/tests/integration/user.routes.integration.test.ts [queued]
Test Files 19 failed | 73 passed (242)
Tests 5 failed | 2227 passed | 242 skipped (2483)
Start at 07:51:47
Duration 177.18s
❯ src/features/flyer/BulkImporter.test.tsx 0/13
❯ src/providers/AuthProvider.test.tsx 2/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts 0/9
❯ src/services/emailService.server.test.ts 9/9
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 19 failed | 73 passed (242)
Tests 5 failed | 2229 passed | 242 skipped (2514)
Start at 07:51:47
Duration 177.67s
❯ src/features/flyer/BulkImporter.test.tsx 0/13
❯ src/providers/AuthProvider.test.tsx 2/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts 1/9
❯ src/services/emailService.server.test.ts 9/9
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 19 failed | 73 passed (242)
Tests 6 failed | 2229 passed | 242 skipped (2514)
Start at 07:51:47
Duration 178.02s
❯ src/services/db/storeLocation.db.test.ts (9 tests | 8 failed) 75ms
× should link a store to an address 23ms
× should prevent duplicate store-address pairs 3ms
× should retrieve all locations for a store 4ms
× should return empty array for store with no locations 3ms
× should retrieve store with all its locations 2ms
× should work for stores with no locations 2ms
× should delete a store location link 3ms
✓ should throw error for non-existent location 10ms
× should update a store location to point to a different address 3ms
❯ src/features/flyer/BulkImporter.test.tsx 7/13
❯ src/providers/AuthProvider.test.tsx 2/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts 9/9
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 73 passed (242)
Tests 13 failed | 2237 passed | 242 skipped (2514)
Start at 07:51:47
Duration 178.69s
✓ src/features/flyer/BulkImporter.test.tsx (13 tests) 1264ms
❯ src/features/flyer/BulkImporter.test.tsx 13/13
❯ src/providers/AuthProvider.test.tsx 5/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/storeLocation.db.test.ts 9/9
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2246 passed | 242 skipped (2514)
Start at 07:51:47
Duration 179.01s
❯ src/features/flyer/BulkImporter.test.tsx 13/13
❯ src/providers/AuthProvider.test.tsx 5/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 0/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2246 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.11s
❯ src/features/flyer/BulkImporter.test.tsx 13/13
❯ src/providers/AuthProvider.test.tsx 6/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 0/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2247 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.42s
stdout | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > GET /users > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/flyer/BulkImporter.test.tsx 13/13
❯ src/providers/AuthProvider.test.tsx 6/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 1/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2248 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.52s
stderr | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > GET /users > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.users.routes.test.ts:133:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/flyer/BulkImporter.test.tsx 13/13
❯ src/providers/AuthProvider.test.tsx 6/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 1/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2248 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.52s
❯ src/features/flyer/BulkImporter.test.tsx 13/13
❯ src/providers/AuthProvider.test.tsx 6/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 2/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2249 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.62s
stdout | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > GET /users/:id > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/providers/AuthProvider.test.tsx 7/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 4/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2252 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.73s
stderr | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > GET /users/:id > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.users.routes.test.ts:161:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/providers/AuthProvider.test.tsx 7/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 4/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2252 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.73s
❯ src/providers/AuthProvider.test.tsx 7/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 5/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2253 passed | 242 skipped (2526)
Start at 07:51:47
Duration 179.83s
stdout | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > PUT /users/:id > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/providers/AuthProvider.test.tsx 7/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 11/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2259 passed | 242 skipped (2526)
Start at 07:51:47
Duration 180.03s
stderr | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > PUT /users/:id > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.users.routes.test.ts:201:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/providers/AuthProvider.test.tsx 7/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 11/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2259 passed | 242 skipped (2526)
Start at 07:51:47
Duration 180.03s
stdout | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > DELETE /users/:id > should return 500 on a generic database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/providers/AuthProvider.test.tsx 7/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 11/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2259 passed | 242 skipped (2526)
Start at 07:51:47
Duration 180.03s
stderr | src/routes/admin.users.routes.test.ts > Admin User Management Routes (/api/admin/users) > DELETE /users/:id > should return 500 on a generic database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.users.routes.test.ts:248:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/providers/AuthProvider.test.tsx 7/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 11/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 74 passed (242)
Tests 13 failed | 2259 passed | 242 skipped (2526)
Start at 07:51:47
Duration 180.03s
✓ src/routes/admin.users.routes.test.ts (12 tests) 850ms
❯ src/providers/AuthProvider.test.tsx 8/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 12/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 75 passed (242)
Tests 13 failed | 2261 passed | 242 skipped (2526)
Start at 07:51:47
Duration 180.13s
✓ src/providers/AuthProvider.test.tsx (9 tests) 3003ms
✓ should log in a user with provided profile data 1148ms
✓ should log in a user and fetch profile if not provided 408ms
✓ should throw an error and log out if profile fetch fails after login 364ms
✓ should update the user profile 451ms
❯ src/providers/AuthProvider.test.tsx 9/9
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/admin.users.routes.test.ts 12/12
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 180.65s
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 181.39s
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 181.65s
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 183.16s
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 183.54s
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 183.65s
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 184.13s
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2262 passed | 242 skipped (2526)
Start at 07:51:47
Duration 184.47s
stdout | src/routes/admin.monitoring.routes.test.ts > Admin Monitoring Routes (/api/admin) > GET /activity-log > should return 500 if fetching activity log fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts 1/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2263 passed | 242 skipped (2534)
Start at 07:51:47
Duration 185.27s
stderr | src/routes/admin.monitoring.routes.test.ts > Admin Monitoring Routes (/api/admin) > GET /activity-log > should return 500 if fetching activity log fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.monitoring.routes.test.ts:158:61
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts 1/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2263 passed | 242 skipped (2534)
Start at 07:51:47
Duration 185.27s
stdout | src/routes/admin.monitoring.routes.test.ts > Admin Monitoring Routes (/api/admin) > GET /workers/status > should return 500 if fetching worker statuses fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts 1/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2263 passed | 242 skipped (2534)
Start at 07:51:47
Duration 185.27s
stderr | src/routes/admin.monitoring.routes.test.ts > Admin Monitoring Routes (/api/admin) > GET /workers/status > should return 500 if fetching worker statuses fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Worker Error
at /app/src/routes/admin.monitoring.routes.test.ts:192:72
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts 1/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2263 passed | 242 skipped (2534)
Start at 07:51:47
Duration 185.27s
stdout | src/routes/admin.monitoring.routes.test.ts > Admin Monitoring Routes (/api/admin) > GET /queues/status > should return 500 if fetching queue counts fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts 1/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2263 passed | 242 skipped (2534)
Start at 07:51:47
Duration 185.27s
stderr | src/routes/admin.monitoring.routes.test.ts > Admin Monitoring Routes (/api/admin) > GET /queues/status > should return 500 if fetching queue counts fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Redis is down
at /app/src/routes/admin.monitoring.routes.test.ts:256:71
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts 1/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 76 passed (242)
Tests 13 failed | 2263 passed | 242 skipped (2534)
Start at 07:51:47
Duration 185.27s
✓ src/routes/admin.monitoring.routes.test.ts (8 tests) 207ms
❯ src/middleware/multer.middleware.test.ts [queued]
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/admin.monitoring.routes.test.ts 8/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 77 passed (242)
Tests 13 failed | 2270 passed | 242 skipped (2534)
Start at 07:51:47
Duration 185.38s
❯ src/middleware/multer.middleware.test.ts 0/12
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 77 passed (242)
Tests 13 failed | 2270 passed | 242 skipped (2546)
Start at 07:51:47
Duration 186.30s
❯ src/middleware/multer.middleware.test.ts 0/12
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts [queued]
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 77 passed (242)
Tests 13 failed | 2270 passed | 242 skipped (2546)
Start at 07:51:47
Duration 186.96s
✓ src/middleware/multer.middleware.test.ts (12 tests) 79ms
❯ src/middleware/multer.middleware.test.ts 12/12
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts 0/13
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 78 passed (242)
Tests 13 failed | 2282 passed | 242 skipped (2559)
Start at 07:51:47
Duration 187.06s
❯ src/middleware/multer.middleware.test.ts 12/12
❯ src/pages/admin/ActivityLog.test.tsx [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts 1/13
❯ src/services/logger.server.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 0/9
Test Files 20 failed | 78 passed (242)
Tests 13 failed | 2283 passed | 242 skipped (2559)
Start at 07:51:47
Duration 187.28s
✓ src/services/db/reaction.db.test.ts (13 tests) 92ms
❯ src/middleware/multer.middleware.test.ts 12/12
❯ src/pages/admin/ActivityLog.test.tsx 0/8
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts 13/13
❯ src/services/logger.server.test.ts 0/12
❯ src/tests/integration/user.routes.integration.test.ts 1/9
Test Files 20 failed | 79 passed (242)
Tests 13 failed | 2295 passed | 243 skipped (2579)
Start at 07:51:47
Duration 187.68s
stderr | src/services/logger.server.test.ts > Server Logger > createScopedLogger > should create a child logger with module name
Failed to create log directory /app/logs: Error: Permission denied
at Object.<anonymous> (/app/src/services/logger.server.test.ts:149:13)
at Object.Mock [as mkdirSync] (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at ensureLogDirectory (/app/src/services/logger.server.ts:47:10)
at createLogger (/app/src/services/logger.server.ts:74:18)
at /app/src/services/logger.server.ts:126:23
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at VitestModuleEvaluator._runInlinedModule (file:///app/node_modules/vitest/dist/module-evaluator.js:197:4)
at VitestModuleRunner.directRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1146:59)
at VitestModuleRunner.cachedRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1053:73)
at /app/src/services/logger.server.test.ts:176:38
stderr | src/services/logger.server.test.ts > Server Logger > createScopedLogger > should enable debug level when DEBUG_MODULES includes module name
Failed to create log directory /app/logs: Error: Permission denied
at Object.<anonymous> (/app/src/services/logger.server.test.ts:149:13)
at Object.Mock [as mkdirSync] (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at ensureLogDirectory (/app/src/services/logger.server.ts:47:10)
at createLogger (/app/src/services/logger.server.ts:74:18)
at /app/src/services/logger.server.ts:126:23
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at VitestModuleEvaluator._runInlinedModule (file:///app/node_modules/vitest/dist/module-evaluator.js:197:4)
at VitestModuleRunner.directRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1146:59)
at VitestModuleRunner.cachedRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1053:73)
at /app/src/services/logger.server.test.ts:189:38
stderr | src/services/logger.server.test.ts > Server Logger > createScopedLogger > should enable debug level when DEBUG_MODULES includes wildcard
Failed to create log directory /app/logs: Error: Permission denied
at Object.<anonymous> (/app/src/services/logger.server.test.ts:149:13)
at Object.Mock [as mkdirSync] (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at ensureLogDirectory (/app/src/services/logger.server.ts:47:10)
at createLogger (/app/src/services/logger.server.ts:74:18)
at /app/src/services/logger.server.ts:126:23
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at VitestModuleEvaluator._runInlinedModule (file:///app/node_modules/vitest/dist/module-evaluator.js:197:4)
at VitestModuleRunner.directRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1146:59)
at VitestModuleRunner.cachedRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1053:73)
at /app/src/services/logger.server.test.ts:204:38
stderr | src/services/logger.server.test.ts > Server Logger > createScopedLogger > should use default level when module not in DEBUG_MODULES
Failed to create log directory /app/logs: Error: Permission denied
at Object.<anonymous> (/app/src/services/logger.server.test.ts:149:13)
at Object.Mock [as mkdirSync] (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at ensureLogDirectory (/app/src/services/logger.server.ts:47:10)
at createLogger (/app/src/services/logger.server.ts:74:18)
at /app/src/services/logger.server.ts:126:23
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at VitestModuleEvaluator._runInlinedModule (file:///app/node_modules/vitest/dist/module-evaluator.js:197:4)
at VitestModuleRunner.directRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1146:59)
at VitestModuleRunner.cachedRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1053:73)
at /app/src/services/logger.server.test.ts:219:38
stderr | src/services/logger.server.test.ts > Server Logger > createScopedLogger > should handle empty DEBUG_MODULES
Failed to create log directory /app/logs: Error: Permission denied
at Object.<anonymous> (/app/src/services/logger.server.test.ts:149:13)
at Object.Mock [as mkdirSync] (file:///app/node_modules/@vitest/spy/dist/index.js:285:34)
at ensureLogDirectory (/app/src/services/logger.server.ts:47:10)
at createLogger (/app/src/services/logger.server.ts:74:18)
at /app/src/services/logger.server.ts:126:23
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at VitestModuleEvaluator._runInlinedModule (file:///app/node_modules/vitest/dist/module-evaluator.js:197:4)
at VitestModuleRunner.directRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1146:59)
at VitestModuleRunner.cachedRequest (file:///app/node_modules/vite/dist/node/module-runner.js:1053:73)
at /app/src/services/logger.server.test.ts:234:38
❯ src/middleware/multer.middleware.test.ts 12/12
❯ src/pages/admin/ActivityLog.test.tsx 1/8
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts 13/13
❯ src/services/logger.server.test.ts 12/12
❯ src/tests/integration/user.routes.integration.test.ts 9/9
Test Files 20 failed | 80 passed (242)
Tests 13 failed | 2308 passed | 251 skipped (2579)
Start at 07:51:47
Duration 187.89s
✓ src/services/logger.server.test.ts (12 tests) 315ms
❯ src/middleware/multer.middleware.test.ts 12/12
❯ src/pages/admin/ActivityLog.test.tsx 1/8
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts 13/13
❯ src/services/logger.server.test.ts 12/12
❯ src/tests/integration/user.routes.integration.test.ts 9/9
Test Files 20 failed | 80 passed (242)
Tests 13 failed | 2308 passed | 251 skipped (2579)
Start at 07:51:47
Duration 187.89s
❯ src/tests/integration/user.routes.integration.test.ts (9 tests | 9 skipped) 10109ms
↓ should return the profile for the authenticated user
↓ should return 401 Unauthorized if no token is provided
↓ should update the user profile
↓ should update user preferences
↓ should create, retrieve, and delete a shopping list
↓ should prevent a user from modifying another user's shopping list
↓ should add an item to a shopping list
↓ should update an item in a shopping list
↓ should delete an item from a shopping list
❯ src/pages/admin/ActivityLog.test.tsx 4/8
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/reaction.db.test.ts 13/13
❯ src/services/logger.server.test.ts 12/12
❯ src/tests/integration/notification.integration.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 9/9
Test Files 21 failed | 80 passed (242)
Tests 13 failed | 2311 passed | 251 skipped (2579)
Start at 07:51:47
Duration 188.00s
❯ src/pages/admin/ActivityLog.test.tsx 5/8
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/logger.server.test.ts 12/12
❯ src/tests/integration/notification.integration.test.ts [queued]
❯ src/tests/integration/user.routes.integration.test.ts 9/9
Test Files 21 failed | 80 passed (242)
Tests 13 failed | 2312 passed | 251 skipped (2579)
Start at 07:51:47
Duration 188.52s
❯ src/pages/admin/ActivityLog.test.tsx 6/8
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
Test Files 21 failed | 80 passed (242)
Tests 13 failed | 2313 passed | 251 skipped (2579)
Start at 07:51:47
Duration 188.94s
❯ src/pages/admin/ActivityLog.test.tsx 7/8
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
Test Files 21 failed | 80 passed (242)
Tests 13 failed | 2314 passed | 251 skipped (2579)
Start at 07:51:47
Duration 189.67s
✓ src/pages/admin/ActivityLog.test.tsx (8 tests) 2131ms
✓ should render a list of activities successfully covering all types 445ms
✓ should handle missing details in logs gracefully (fallback values) 1080ms
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 13 failed | 2315 passed | 251 skipped (2579)
Start at 07:51:47
Duration 190.29s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 13 failed | 2315 passed | 251 skipped (2579)
Start at 07:51:47
Duration 190.70s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 13 failed | 2315 passed | 251 skipped (2579)
Start at 07:51:47
Duration 191.55s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 0/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 13 failed | 2315 passed | 251 skipped (2592)
Start at 07:51:47
Duration 191.67s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 0/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
❯ src/utils/dateUtils.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 13 failed | 2315 passed | 251 skipped (2592)
Start at 07:51:47
Duration 191.95s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 0/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts [queued]
❯ src/utils/dateUtils.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 13 failed | 2315 passed | 251 skipped (2592)
Start at 07:51:47
Duration 193.45s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 0/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts 0/1
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 13 failed | 2315 passed | 251 skipped (2604)
Start at 07:51:47
Duration 193.55s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 0/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts 1/1
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts [queued]
Test Files 21 failed | 81 passed (242)
Tests 14 failed | 2315 passed | 251 skipped (2604)
Start at 07:51:47
Duration 194.30s
❯ src/tests/e2e/upc-journey.e2e.test.ts (1 test | 1 failed) 281ms
× should complete full UPC scanning journey: Register -> Scan -> Lookup -> History -> Stats 260ms
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 4/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/upc-journey.e2e.test.ts 1/1
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts [queued]
Test Files 22 failed | 81 passed (242)
Tests 14 failed | 2319 passed | 251 skipped (2604)
Start at 07:51:47
Duration 194.45s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 4/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts [queued]
Test Files 22 failed | 81 passed (242)
Tests 14 failed | 2319 passed | 251 skipped (2604)
Start at 07:51:47
Duration 195.39s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 7/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts [queued]
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts 1/38
Test Files 22 failed | 81 passed (242)
Tests 14 failed | 2323 passed | 251 skipped (2642)
Start at 07:51:47
Duration 196.18s
✓ src/utils/dateUtils.test.ts (38 tests) 118ms
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 8/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts 38/38
Test Files 22 failed | 82 passed (242)
Tests 14 failed | 2361 passed | 251 skipped (2652)
Start at 07:51:47
Duration 196.85s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 10/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts 38/38
Test Files 22 failed | 82 passed (242)
Tests 14 failed | 2363 passed | 251 skipped (2652)
Start at 07:51:47
Duration 197.17s
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 11/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/utils/dateUtils.test.ts 38/38
Test Files 22 failed | 82 passed (242)
Tests 14 failed | 2364 passed | 251 skipped (2652)
Start at 07:51:47
Duration 197.28s
✓ src/pages/UserProfilePage.test.tsx (13 tests) 5666ms
✓ should display a loading message initially 327ms
✓ should render the profile and achievements on successful fetch 1951ms
✓ should allow editing and saving the user name 1280ms
✓ should allow canceling the name edit 612ms
✓ should show an error if saving the name fails with a non-ok response 1007ms
❯ src/config/swagger.test.ts [queued]
❯ src/pages/UserProfilePage.test.tsx 13/13
❯ src/routes/reactions.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2366 passed | 251 skipped (2652)
Start at 07:51:47
Duration 197.92s
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 0/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2366 passed | 251 skipped (2665)
Start at 07:51:47
Duration 198.73s
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 0/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2366 passed | 251 skipped (2665)
Start at 07:51:47
Duration 198.94s
stdout | src/routes/reactions.routes.test.ts > Reaction Routes (/api/reactions) > GET / > should return 500 on database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 5/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2371 passed | 251 skipped (2665)
Start at 07:51:47
Duration 199.14s
stderr | src/routes/reactions.routes.test.ts > Reaction Routes (/api/reactions) > GET / > should return 500 on database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/reactions.routes.test.ts:85:21
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 5/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2371 passed | 251 skipped (2665)
Start at 07:51:47
Duration 199.14s
stdout | src/routes/reactions.routes.test.ts > Reaction Routes (/api/reactions) > GET /summary > should return 500 on database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 5/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2371 passed | 251 skipped (2665)
Start at 07:51:47
Duration 199.14s
stderr | src/routes/reactions.routes.test.ts > Reaction Routes (/api/reactions) > GET /summary > should return 500 on database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/reactions.routes.test.ts:121:21
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 5/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2371 passed | 251 skipped (2665)
Start at 07:51:47
Duration 199.14s
stdout | src/routes/reactions.routes.test.ts > Reaction Routes (/api/reactions) > POST /toggle > should return 500 on database error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 10/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2376 passed | 251 skipped (2665)
Start at 07:51:47
Duration 199.24s
stderr | src/routes/reactions.routes.test.ts > Reaction Routes (/api/reactions) > POST /toggle > should return 500 on database error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/reactions.routes.test.ts:192:21
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/config/swagger.test.ts [queued]
❯ src/routes/reactions.routes.test.ts 10/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 83 passed (242)
Tests 14 failed | 2376 passed | 251 skipped (2665)
Start at 07:51:47
Duration 199.24s
✓ src/routes/reactions.routes.test.ts (13 tests) 501ms
❯ src/config/swagger.test.ts 0/34
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/sentry.client.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
Test Files 22 failed | 84 passed (242)
Tests 14 failed | 2379 passed | 251 skipped (2699)
Start at 07:51:47
Duration 199.88s
❯ src/config/swagger.test.ts 1/34
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/sentry.client.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/tests/integration/reactions.integration.test.ts [queued]
Test Files 22 failed | 84 passed (242)
Tests 14 failed | 2380 passed | 251 skipped (2699)
Start at 07:51:47
Duration 200.00s
✓ src/config/swagger.test.ts (34 tests) 137ms
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/sentry.client.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/tests/integration/reactions.integration.test.ts [queued]
Test Files 22 failed | 85 passed (242)
Tests 14 failed | 2413 passed | 251 skipped (2699)
Start at 07:51:47
Duration 200.47s
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/sentry.client.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/tests/integration/reactions.integration.test.ts [queued]
Test Files 22 failed | 85 passed (242)
Tests 14 failed | 2413 passed | 251 skipped (2699)
Start at 07:51:47
Duration 201.16s
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts [queued]
❯ src/services/sentry.client.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/tests/integration/reactions.integration.test.ts [queued]
Test Files 22 failed | 85 passed (242)
Tests 14 failed | 2413 passed | 251 skipped (2699)
Start at 07:51:47
Duration 201.45s
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts [queued]
❯ src/services/sentry.client.test.ts 0/18
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/tests/integration/reactions.integration.test.ts [queued]
Test Files 22 failed | 85 passed (242)
Tests 14 failed | 2413 passed | 251 skipped (2717)
Start at 07:51:47
Duration 202.20s
✓ src/services/sentry.client.test.ts (18 tests) 507ms
✓ should have isSentryConfigured as false in test environment 426ms
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts [queued]
❯ src/services/sentry.client.test.ts 18/18
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/tests/integration/reactions.integration.test.ts [queued]
Test Files 22 failed | 86 passed (242)
Tests 14 failed | 2431 passed | 251 skipped (2717)
Start at 07:51:47
Duration 203.26s
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 0/11
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 22 failed | 86 passed (242)
Tests 14 failed | 2431 passed | 251 skipped (2730)
Start at 07:51:47
Duration 203.36s
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 1/11
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 22 failed | 86 passed (242)
Tests 14 failed | 2431 passed | 252 skipped (2730)
Start at 07:51:47
Duration 203.93s
❯ src/tests/integration/notification.integration.test.ts (11 tests | 11 skipped) 10014ms
↓ should fetch unread notifications for the authenticated user by default
↓ should fetch all notifications when includeRead=true
↓ should respect pagination with limit and offset
↓ should return 401 if user is not authenticated
↓ should mark a single notification as read
↓ should mark all unread notifications as read
↓ should return 404 for non-existent job
↓ should be accessible without authentication (public endpoint)
↓ should delete a specific notification
↓ should return 404 for non-existent notification
↓ should prevent deleting another user's notification
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 11/11
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 86 passed (242)
Tests 14 failed | 2431 passed | 262 skipped (2730)
Start at 07:51:47
Duration 204.04s
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts 1/10
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 11/11
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 86 passed (242)
Tests 14 failed | 2432 passed | 262 skipped (2740)
Start at 07:51:47
Duration 204.14s
❯ src/hooks/useUserData.test.tsx [queued]
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts 9/10
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 11/11
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 86 passed (242)
Tests 14 failed | 2440 passed | 262 skipped (2740)
Start at 07:51:47
Duration 204.24s
✓ src/services/db/connection.db.test.ts (10 tests) 246ms
❯ src/hooks/useUserData.test.tsx 0/6
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts 10/10
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/notification.integration.test.ts 11/11
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 87 passed (242)
Tests 14 failed | 2441 passed | 262 skipped (2746)
Start at 07:51:47
Duration 204.76s
❯ src/hooks/useUserData.test.tsx 1/6
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/connection.db.test.ts 10/10
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 87 passed (242)
Tests 14 failed | 2442 passed | 262 skipped (2746)
Start at 07:51:47
Duration 205.11s
✓ src/hooks/useUserData.test.tsx (6 tests) 287ms
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 88 passed (242)
Tests 14 failed | 2447 passed | 262 skipped (2746)
Start at 07:51:47
Duration 205.69s
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 0/10
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 88 passed (242)
Tests 14 failed | 2447 passed | 262 skipped (2746)
Start at 07:51:47
Duration 206.49s
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 1/10
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 23 failed | 88 passed (242)
Tests 14 failed | 2447 passed | 263 skipped (2746)
Start at 07:51:47
Duration 206.69s
❯ src/tests/integration/ai.integration.test.ts (10 tests | 10 skipped) 10095ms
↓ POST /api/ai/check-flyer should return a boolean
↓ POST /api/ai/extract-address should return a stubbed address
↓ POST /api/ai/extract-logo should return a stubbed response
↓ POST /api/ai/quick-insights should return a stubbed insight
↓ POST /api/ai/deep-dive should return a stubbed analysis
↓ POST /api/ai/search-web should return a stubbed search result
↓ POST /api/ai/plan-trip should return an error as the feature is disabled
↓ POST /api/ai/generate-image should reject because it is not implemented
↓ POST /api/ai/generate-speech should reject because it is not implemented
↓ should block requests to /api/ai/quick-insights after exceeding the limit
❯ src/pages/ResetPasswordPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 10/10
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 88 passed (242)
Tests 14 failed | 2447 passed | 272 skipped (2746)
Start at 07:51:47
Duration 207.74s
❯ src/pages/ResetPasswordPage.test.tsx 0/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts [queued]
❯ src/tests/integration/ai.integration.test.ts 10/10
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 88 passed (242)
Tests 14 failed | 2447 passed | 272 skipped (2754)
Start at 07:51:47
Duration 207.84s
❯ src/pages/ResetPasswordPage.test.tsx 0/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 88 passed (242)
Tests 14 failed | 2447 passed | 272 skipped (2754)
Start at 07:51:47
Duration 208.14s
❯ src/pages/ResetPasswordPage.test.tsx 0/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts 0/10
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 88 passed (242)
Tests 14 failed | 2447 passed | 272 skipped (2764)
Start at 07:51:47
Duration 208.63s
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > should convert a PDF and return image paths
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.pdf
[WORKER DEBUG] FlyerFileHandler: Detected extension: .pdf
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > should throw PdfConversionError if PDF conversion yields no images
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.pdf
[WORKER DEBUG] FlyerFileHandler: Detected extension: .pdf
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > should convert convertible image types to PNG
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.gif
[WORKER DEBUG] FlyerFileHandler: Detected extension: .gif
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > should throw UnsupportedFileTypeError for unsupported types
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/document.txt
[WORKER DEBUG] FlyerFileHandler: Detected extension: .txt
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > Image Processing > should process a JPEG to strip EXIF data
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.jpg
[WORKER DEBUG] FlyerFileHandler: Detected extension: .jpg
❯ src/pages/ResetPasswordPage.test.tsx 0/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts 1/10
❯ src/services/monitoringService.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 88 passed (242)
Tests 14 failed | 2448 passed | 272 skipped (2764)
Start at 07:51:47
Duration 208.73s
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > Image Processing > should process a PNG to strip metadata
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.png
[WORKER DEBUG] FlyerFileHandler: Detected extension: .png
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > Image Processing > should handle other supported image types (e.g. webp) directly without processing
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.webp
[WORKER DEBUG] FlyerFileHandler: Detected extension: .webp
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > Image Processing > should throw ImageConversionError if sharp fails during JPEG processing
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.jpg
[WORKER DEBUG] FlyerFileHandler: Detected extension: .jpg
stderr | src/services/flyerFileHandler.server.test.ts > FlyerFileHandler > Image Processing > should throw ImageConversionError if sharp fails during PNG processing
[WORKER DEBUG] FlyerFileHandler: prepareImageInputs called for /tmp/flyer.png
[WORKER DEBUG] FlyerFileHandler: Detected extension: .png
❯ src/pages/ResetPasswordPage.test.tsx 0/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts 10/10
❯ src/services/monitoringService.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts [queued]
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 88 passed (242)
Tests 14 failed | 2457 passed | 272 skipped (2764)
Start at 07:51:47
Duration 210.05s
✓ src/services/flyerFileHandler.server.test.ts (10 tests) 137ms
❯ src/pages/ResetPasswordPage.test.tsx 2/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts 10/10
❯ src/services/monitoringService.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 89 passed (242)
Tests 14 failed | 2459 passed | 272 skipped (2769)
Start at 07:51:47
Duration 210.15s
❯ src/pages/ResetPasswordPage.test.tsx 3/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts 10/10
❯ src/services/monitoringService.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 89 passed (242)
Tests 14 failed | 2460 passed | 272 skipped (2769)
Start at 07:51:47
Duration 210.65s
❯ src/pages/ResetPasswordPage.test.tsx 3/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts [queued]
❯ src/services/flyerFileHandler.server.test.ts 10/10
❯ src/services/monitoringService.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 89 passed (242)
Tests 14 failed | 2460 passed | 272 skipped (2769)
Start at 07:51:47
Duration 211.06s
❯ src/pages/ResetPasswordPage.test.tsx 4/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts [queued]
❯ src/services/monitoringService.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 89 passed (242)
Tests 14 failed | 2461 passed | 272 skipped (2769)
Start at 07:51:47
Duration 211.17s
❯ src/pages/ResetPasswordPage.test.tsx 4/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts [queued]
❯ src/services/monitoringService.server.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts 0/10
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 89 passed (242)
Tests 14 failed | 2461 passed | 272 skipped (2779)
Start at 07:51:47
Duration 211.41s
✓ src/services/monitoringService.server.test.ts (8 tests) 66ms
❯ src/pages/ResetPasswordPage.test.tsx 4/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts 1/18
❯ src/services/monitoringService.server.test.ts 8/8
❯ src/tests/e2e/error-reporting.e2e.test.ts 0/10
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 24 failed | 90 passed (242)
Tests 15 failed | 2469 passed | 272 skipped (2805)
Start at 07:51:47
Duration 211.61s
❯ src/services/db/store.db.test.ts (18 tests | 14 failed) 114ms
× should create a store with just a name 41ms
× should create a store with name and logo URL 9ms
× should create a store with created_by user ID 2ms
× should reject duplicate store names 3ms
× should retrieve a store by ID 3ms
✓ should throw NotFoundError for non-existent store 9ms
× should retrieve all stores 1ms
✓ should return empty array when no stores exist 3ms
× should update store name 3ms
× should update store logo URL 2ms
× should update both name and logo 2ms
✓ should throw error for non-existent store 6ms
× should delete a store 3ms
✓ should throw error when deleting non-existent store 7ms
× should find stores by partial name match 3ms
× should be case-insensitive 2ms
× should return empty array for no matches 2ms
× should limit results to 10 by default 3ms
❯ src/pages/ResetPasswordPage.test.tsx 5/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts 18/18
❯ src/services/monitoringService.server.test.ts 8/8
❯ src/tests/e2e/error-reporting.e2e.test.ts 3/10
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 25 failed | 90 passed (242)
Tests 28 failed | 2477 passed | 272 skipped (2805)
Start at 07:51:47
Duration 211.82s
❯ src/pages/ResetPasswordPage.test.tsx 5/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts 18/18
❯ src/services/monitoringService.server.test.ts 8/8
❯ src/tests/e2e/error-reporting.e2e.test.ts 3/10
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 25 failed | 90 passed (242)
Tests 28 failed | 2477 passed | 272 skipped (2805)
Start at 07:51:47
Duration 212.02s
❯ src/pages/ResetPasswordPage.test.tsx 5/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/store.db.test.ts 18/18
❯ src/services/monitoringService.server.test.ts 8/8
❯ src/tests/e2e/error-reporting.e2e.test.ts 9/10
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 25 failed | 90 passed (242)
Tests 28 failed | 2483 passed | 272 skipped (2805)
Start at 07:51:47
Duration 212.23s
✓ src/tests/e2e/error-reporting.e2e.test.ts (10 tests) 850ms
✓ should export initSentry function 443ms
❯ src/pages/ResetPasswordPage.test.tsx 7/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts 10/10
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 25 failed | 91 passed (242)
Tests 28 failed | 2486 passed | 272 skipped (2805)
Start at 07:51:47
Duration 212.73s
✓ src/pages/ResetPasswordPage.test.tsx (8 tests) 4916ms
✓ should render the form with password fields and a submit button 1264ms
✓ should call resetPassword and show success message on valid submission 581ms
✓ should show an error message if passwords do not match 407ms
✓ should show an error message if the API call fails 589ms
✓ should show an error message if API returns a non-JSON error response 465ms
✓ should show a loading spinner while submitting 687ms
✓ should show an error if no token is provided 468ms
✓ should handle unknown errors 437ms
❯ src/pages/ResetPasswordPage.test.tsx 8/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/error-reporting.e2e.test.ts 10/10
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 0/13
Test Files 25 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 272 skipped (2805)
Start at 07:51:47
Duration 213.04s
❯ src/pages/ResetPasswordPage.test.tsx 8/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 1/13
Test Files 25 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 273 skipped (2805)
Start at 07:51:47
Duration 213.45s
❯ src/tests/integration/reactions.integration.test.ts (13 tests | 13 skipped) 10024ms
↓ should return reactions (public endpoint)
↓ should filter reactions by entityType
↓ should filter reactions by entityId
↓ should return reaction summary for an entity
↓ should return 400 when entityType is missing
↓ should return 400 when entityId is missing
↓ should require authentication
↓ should add a reaction when none exists
↓ should remove the reaction when toggled again
↓ should return 400 for missing entity_type
↓ should return 400 for missing entity_id
↓ should return 400 for missing reaction_type
↓ should accept entity_id as string (required format)
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 13/13
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 213.75s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
❯ src/tests/integration/reactions.integration.test.ts 13/13
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 214.21s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 215.13s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/hooks/useFlyers.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 215.23s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/hooks/useFlyers.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 216.15s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/features/charts/TopDeals.test.tsx [queued]
❯ src/hooks/useFlyers.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 216.52s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/features/charts/TopDeals.test.tsx [queued]
❯ src/hooks/useFlyers.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/processingErrors.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 217.79s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/features/charts/TopDeals.test.tsx [queued]
❯ src/hooks/useFlyers.test.tsx [queued]
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/processingErrors.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 92 passed (242)
Tests 28 failed | 2487 passed | 285 skipped (2805)
Start at 07:51:47
Duration 218.80s
✓ src/services/processingErrors.test.ts (13 tests) 45ms
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/features/charts/TopDeals.test.tsx [queued]
❯ src/hooks/useFlyers.test.tsx [queued]
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/processingErrors.test.ts 13/13
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 93 passed (242)
Tests 28 failed | 2500 passed | 285 skipped (2818)
Start at 07:51:47
Duration 218.94s
❯ src/components/RecipeSuggester.test.tsx [queued]
❯ src/features/charts/TopDeals.test.tsx [queued]
❯ src/hooks/useFlyers.test.tsx 0/6
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/processingErrors.test.ts 13/13
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 93 passed (242)
Tests 28 failed | 2500 passed | 285 skipped (2824)
Start at 07:51:47
Duration 219.29s
❯ src/components/RecipeSuggester.test.tsx 0/8
❯ src/features/charts/TopDeals.test.tsx 0/5
❯ src/hooks/useFlyers.test.tsx 1/6
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/processingErrors.test.ts 13/13
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 93 passed (242)
Tests 28 failed | 2501 passed | 285 skipped (2837)
Start at 07:51:47
Duration 219.49s
✓ src/hooks/useFlyers.test.tsx (6 tests) 161ms
❯ src/components/RecipeSuggester.test.tsx 0/8
❯ src/features/charts/TopDeals.test.tsx 0/5
❯ src/hooks/useFlyers.test.tsx 6/6
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/processingErrors.test.ts 13/13
❯ src/tests/integration/price.integration.test.ts 0/5
Test Files 26 failed | 94 passed (242)
Tests 28 failed | 2506 passed | 285 skipped (2837)
Start at 07:51:47
Duration 219.73s
❯ src/tests/integration/price.integration.test.ts (5 tests | 5 skipped) 10021ms
↓ should return the correct price history for a given master item ID
↓ should respect the limit parameter
↓ should respect the offset parameter
↓ should return price history sorted by date in ascending order
↓ should return an empty array for a master item ID with no price history
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > renders correctly with initial state
TEST: Verifying initial render state
❯ src/components/RecipeSuggester.test.tsx 0/8
❯ src/features/charts/TopDeals.test.tsx 1/5
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 5/5
Test Files 27 failed | 94 passed (242)
Tests 28 failed | 2507 passed | 290 skipped (2837)
Start at 07:51:47
Duration 220.90s
❯ src/components/RecipeSuggester.test.tsx 0/8
❯ src/features/charts/TopDeals.test.tsx 2/5
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/price.integration.test.ts 5/5
Test Files 27 failed | 94 passed (242)
Tests 28 failed | 2508 passed | 290 skipped (2837)
Start at 07:51:47
Duration 221.17s
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > shows validation error if no ingredients are entered
TEST: Verifying validation for empty input
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > shows validation error if no ingredients are entered
TEST: Validation error displayed correctly
❯ src/components/RecipeSuggester.test.tsx 1/8
❯ src/features/charts/TopDeals.test.tsx 2/5
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx 0/6
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 94 passed (242)
Tests 28 failed | 2509 passed | 290 skipped (2843)
Start at 07:51:47
Duration 221.37s
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > calls suggestRecipe and displays suggestion on success
TEST: Verifying successful recipe suggestion flow
✓ src/features/charts/TopDeals.test.tsx (5 tests) 2074ms
✓ should render the correct heading 1114ms
✓ should display up to 10 items, sorted by price_in_cents ascending 811ms
❯ src/components/RecipeSuggester.test.tsx 2/8
❯ src/features/charts/TopDeals.test.tsx 5/5
❯ src/pages/admin/AdminStatsPage.test.tsx [queued]
❯ src/pages/admin/CorrectionsPage.test.tsx 0/6
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 95 passed (242)
Tests 28 failed | 2513 passed | 290 skipped (2843)
Start at 07:51:47
Duration 221.64s
❯ src/components/RecipeSuggester.test.tsx 2/8
❯ src/features/charts/TopDeals.test.tsx 5/5
❯ src/pages/admin/AdminStatsPage.test.tsx 0/7
❯ src/pages/admin/CorrectionsPage.test.tsx 0/6
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 95 passed (242)
Tests 28 failed | 2513 passed | 290 skipped (2850)
Start at 07:51:47
Duration 221.95s
❯ src/components/RecipeSuggester.test.tsx 2/8
❯ src/features/charts/TopDeals.test.tsx 5/5
❯ src/pages/admin/AdminStatsPage.test.tsx 0/7
❯ src/pages/admin/CorrectionsPage.test.tsx 0/6
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 95 passed (242)
Tests 28 failed | 2513 passed | 290 skipped (2850)
Start at 07:51:47
Duration 222.16s
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > calls suggestRecipe and displays suggestion on success
TEST: Suggestion displayed and API called with correct args
❯ src/components/RecipeSuggester.test.tsx 2/8
❯ src/pages/admin/AdminStatsPage.test.tsx 0/7
❯ src/pages/admin/CorrectionsPage.test.tsx 1/6
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 95 passed (242)
Tests 28 failed | 2514 passed | 290 skipped (2850)
Start at 07:51:47
Duration 222.78s
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > handles API errors (non-200 response) gracefully
TEST: Verifying API error handling (400/500 responses)
❯ src/components/RecipeSuggester.test.tsx 2/8
❯ src/pages/admin/AdminStatsPage.test.tsx 0/7
❯ src/pages/admin/CorrectionsPage.test.tsx 2/6
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 95 passed (242)
Tests 28 failed | 2515 passed | 290 skipped (2850)
Start at 07:51:47
Duration 222.88s
❯ src/components/RecipeSuggester.test.tsx 3/8
❯ src/pages/admin/AdminStatsPage.test.tsx 0/7
❯ src/pages/admin/CorrectionsPage.test.tsx 3/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
Test Files 27 failed | 95 passed (242)
Tests 28 failed | 2517 passed | 290 skipped (2850)
Start at 07:51:47
Duration 223.08s
❯ src/components/RecipeSuggester.test.tsx 3/8
❯ src/pages/admin/AdminStatsPage.test.tsx 0/7
❯ src/pages/admin/CorrectionsPage.test.tsx 5/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
Test Files 27 failed | 95 passed (242)
Tests 28 failed | 2519 passed | 290 skipped (2850)
Start at 07:51:47
Duration 223.18s
✓ src/pages/admin/CorrectionsPage.test.tsx (6 tests) 1791ms
✓ should render a loading spinner while fetching data 1295ms
❯ src/components/RecipeSuggester.test.tsx 3/8
❯ src/pages/admin/AdminStatsPage.test.tsx 0/7
❯ src/pages/admin/CorrectionsPage.test.tsx 6/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
Test Files 27 failed | 96 passed (242)
Tests 28 failed | 2520 passed | 290 skipped (2850)
Start at 07:51:47
Duration 224.43s
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > handles API errors (non-200 response) gracefully
TEST: API error message displayed to user
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > handles network exceptions and logs them
TEST: Verifying network exception handling
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > handles network exceptions and logs them
TEST: Network error caught and logged
❯ src/components/RecipeSuggester.test.tsx 4/8
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/pages/admin/AdminStatsPage.test.tsx 4/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
Test Files 27 failed | 96 passed (242)
Tests 28 failed | 2525 passed | 290 skipped (2850)
Start at 07:51:47
Duration 224.53s
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > clears previous errors when submitting again
TEST: Verifying error clearing on re-submit
❯ src/components/RecipeSuggester.test.tsx 5/8
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/pages/admin/AdminStatsPage.test.tsx 4/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
Test Files 27 failed | 96 passed (242)
Tests 28 failed | 2526 passed | 290 skipped (2850)
Start at 07:51:47
Duration 225.89s
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > clears previous errors when submitting again
TEST: Previous error cleared successfully
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > uses default error message when API error response has no message
TEST: Verifying default error message for API failure
stdout | src/components/RecipeSuggester.test.tsx > RecipeSuggester Component > handles non-Error objects thrown during fetch
TEST: Verifying handling of non-Error exceptions
✓ src/pages/admin/AdminStatsPage.test.tsx (7 tests) 2856ms
✓ should render a loading spinner while fetching stats 1539ms
✓ should display stats cards when data is fetched successfully 426ms
✓ should render a link back to the admin dashboard 485ms
❯ src/components/RecipeSuggester.test.tsx 7/8
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
Test Files 27 failed | 97 passed (242)
Tests 28 failed | 2531 passed | 290 skipped (2850)
Start at 07:51:47
Duration 226.02s
❯ src/components/RecipeSuggester.test.tsx 8/8
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
Test Files 27 failed | 97 passed (242)
Tests 28 failed | 2532 passed | 290 skipped (2850)
Start at 07:51:47
Duration 226.69s
✓ src/components/RecipeSuggester.test.tsx (8 tests) 6943ms
✓ renders correctly with initial state 1100ms
✓ shows validation error if no ingredients are entered 847ms
✓ calls suggestRecipe and displays suggestion on success 1461ms
✓ handles API errors (non-200 response) gracefully 896ms
✓ handles network exceptions and logs them 596ms
✓ clears previous errors when submitting again 941ms
✓ uses default error message when API error response has no message 560ms
✓ handles non-Error objects thrown during fetch 530ms
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
❯ src/utils/unitConverter.test.ts [queued]
Test Files 27 failed | 98 passed (242)
Tests 28 failed | 2532 passed | 290 skipped (2850)
Start at 07:51:47
Duration 226.80s
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/useFlyerSelection.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
❯ src/utils/unitConverter.test.ts [queued]
Test Files 27 failed | 98 passed (242)
Tests 28 failed | 2532 passed | 290 skipped (2850)
Start at 07:51:47
Duration 227.56s
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/useFlyerSelection.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts [queued]
❯ src/utils/unitConverter.test.ts [queued]
Test Files 27 failed | 98 passed (242)
Tests 28 failed | 2532 passed | 290 skipped (2850)
Start at 07:51:47
Duration 228.35s
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/useFlyerSelection.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts 1/13
❯ src/utils/unitConverter.test.ts [queued]
Test Files 27 failed | 98 passed (242)
Tests 28 failed | 2533 passed | 290 skipped (2863)
Start at 07:51:47
Duration 228.61s
✓ src/services/aiAnalysisService.test.ts (13 tests) 98ms
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/useFlyerSelection.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts 13/13
❯ src/utils/unitConverter.test.ts 0/22
Test Files 27 failed | 99 passed (242)
Tests 28 failed | 2545 passed | 290 skipped (2885)
Start at 07:51:47
Duration 229.13s
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/useFlyerSelection.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts 13/13
❯ src/utils/unitConverter.test.ts 1/22
Test Files 27 failed | 99 passed (242)
Tests 28 failed | 2546 passed | 290 skipped (2885)
Start at 07:51:47
Duration 229.23s
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/useFlyerSelection.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/aiAnalysisService.test.ts 13/13
❯ src/utils/unitConverter.test.ts 2/22
Test Files 27 failed | 99 passed (242)
Tests 28 failed | 2547 passed | 290 skipped (2885)
Start at 07:51:47
Duration 229.33s
✓ src/utils/unitConverter.test.ts (22 tests) 174ms
❯ src/features/flyer/FlyerDisplay.test.tsx [queued]
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/useFlyerSelection.test.tsx 0/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
❯ src/utils/unitConverter.test.ts 22/22
Test Files 27 failed | 100 passed (242)
Tests 28 failed | 2567 passed | 290 skipped (2898)
Start at 07:51:47
Duration 229.99s
❯ src/config.test.ts [queued]
❯ src/features/flyer/FlyerDisplay.test.tsx 0/18
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx 0/10
❯ src/hooks/useFlyerSelection.test.tsx 1/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
Test Files 27 failed | 100 passed (242)
Tests 28 failed | 2568 passed | 290 skipped (2926)
Start at 07:51:47
Duration 230.09s
❯ src/config.test.ts [queued]
❯ src/features/flyer/FlyerDisplay.test.tsx 0/18
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx 0/10
❯ src/hooks/useFlyerSelection.test.tsx 1/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
Test Files 27 failed | 100 passed (242)
Tests 28 failed | 2568 passed | 290 skipped (2926)
Start at 07:51:47
Duration 230.71s
✓ src/hooks/useFlyerSelection.test.tsx (13 tests) 288ms
❯ src/config.test.ts [queued]
❯ src/features/flyer/FlyerDisplay.test.tsx 0/18
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx 8/10
❯ src/hooks/useFlyerSelection.test.tsx 13/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
Test Files 27 failed | 101 passed (242)
Tests 28 failed | 2588 passed | 290 skipped (2926)
Start at 07:51:47
Duration 230.81s
❯ src/config.test.ts [queued]
❯ src/features/flyer/FlyerDisplay.test.tsx 2/18
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx 10/10
❯ src/hooks/useFlyerSelection.test.tsx 13/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
Test Files 27 failed | 101 passed (242)
Tests 28 failed | 2592 passed | 290 skipped (2926)
Start at 07:51:47
Duration 231.08s
✓ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx (10 tests) 794ms
❯ src/config.test.ts [queued]
❯ src/features/flyer/FlyerDisplay.test.tsx 3/18
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx 10/10
❯ src/hooks/useFlyerSelection.test.tsx 13/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
Test Files 27 failed | 102 passed (242)
Tests 28 failed | 2593 passed | 290 skipped (2926)
Start at 07:51:47
Duration 231.22s
❯ src/config.test.ts 0/30
❯ src/features/flyer/FlyerDisplay.test.tsx 7/18
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx 10/10
❯ src/hooks/useFlyerSelection.test.tsx 13/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
Test Files 27 failed | 102 passed (242)
Tests 28 failed | 2597 passed | 290 skipped (2956)
Start at 07:51:47
Duration 231.43s
✓ src/config.test.ts (30 tests) 74ms
❯ src/config.test.ts 30/30
❯ src/features/flyer/FlyerDisplay.test.tsx 9/18
❯ src/hooks/mutations/useUpdateShoppingListItemMutation.test.tsx 10/10
❯ src/hooks/useFlyerSelection.test.tsx 13/13
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
Test Files 27 failed | 103 passed (242)
Tests 28 failed | 2629 passed | 290 skipped (2956)
Start at 07:51:47
Duration 231.63s
❯ src/config.test.ts 30/30
❯ src/features/flyer/FlyerDisplay.test.tsx 11/18
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
❯ src/services/analyticsService.server.test.ts [queued]
Test Files 27 failed | 103 passed (242)
Tests 28 failed | 2631 passed | 290 skipped (2956)
Start at 07:51:47
Duration 231.83s
✓ src/features/flyer/FlyerDisplay.test.tsx (18 tests) 1826ms
✓ should render all elements when all props are provided 764ms
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts [queued]
❯ src/services/analyticsService.server.test.ts [queued]
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2638 passed | 290 skipped (2956)
Start at 07:51:47
Duration 232.64s
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 0/10
❯ src/services/analyticsService.server.test.ts [queued]
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2638 passed | 290 skipped (2966)
Start at 07:51:47
Duration 233.48s
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 0/10
❯ src/services/analyticsService.server.test.ts [queued]
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2638 passed | 290 skipped (2966)
Start at 07:51:47
Duration 233.97s
stdout | src/routes/system.routes.test.ts > System Routes (/api/system) > GET /pm2-status > should return 500 if pm2 command produces stderr output
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 10/10
❯ src/services/analyticsService.server.test.ts 1/6
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2649 passed | 290 skipped (2972)
Start at 07:51:47
Duration 234.19s
stderr | src/routes/system.routes.test.ts > System Routes (/api/system) > GET /pm2-status > should return 500 if pm2 command produces stderr output
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: PM2 command produced an error: A non-fatal warning occurred.
at /app/src/routes/system.routes.test.ts:95:28
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 10/10
❯ src/services/analyticsService.server.test.ts 1/6
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2649 passed | 290 skipped (2972)
Start at 07:51:47
Duration 234.19s
stdout | src/routes/system.routes.test.ts > System Routes (/api/system) > GET /pm2-status > should return 500 on a generic exec error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 10/10
❯ src/services/analyticsService.server.test.ts 1/6
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2649 passed | 290 skipped (2972)
Start at 07:51:47
Duration 234.19s
stderr | src/routes/system.routes.test.ts > System Routes (/api/system) > GET /pm2-status > should return 500 on a generic exec error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: System error
at /app/src/routes/system.routes.test.ts:106:28
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 10/10
❯ src/services/analyticsService.server.test.ts 1/6
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2649 passed | 290 skipped (2972)
Start at 07:51:47
Duration 234.19s
stdout | src/routes/system.routes.test.ts > System Routes (/api/system) > POST /geocode > should return 500 if the geocoding service throws an error
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 10/10
❯ src/services/analyticsService.server.test.ts 1/6
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2649 passed | 290 skipped (2972)
Start at 07:51:47
Duration 234.19s
stderr | src/routes/system.routes.test.ts > System Routes (/api/system) > POST /geocode > should return 500 if the geocoding service throws an error
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Geocoding service unavailable
at /app/src/routes/system.routes.test.ts:144:28
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/routes/system.routes.test.ts 10/10
❯ src/services/analyticsService.server.test.ts 1/6
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 104 passed (242)
Tests 28 failed | 2649 passed | 290 skipped (2972)
Start at 07:51:47
Duration 234.19s
✓ src/routes/system.routes.test.ts (10 tests) 362ms
✓ src/services/analyticsService.server.test.ts (6 tests) 71ms
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/hooks/useWatchedItems.test.tsx [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 106 passed (242)
Tests 28 failed | 2654 passed | 290 skipped (2972)
Start at 07:51:47
Duration 234.46s
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useWatchedItems.test.tsx [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 106 passed (242)
Tests 28 failed | 2654 passed | 290 skipped (2972)
Start at 07:51:47
Duration 235.08s
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useWatchedItems.test.tsx [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/gamification.db.test.ts [queued]
Test Files 27 failed | 106 passed (242)
Tests 28 failed | 2654 passed | 290 skipped (2972)
Start at 07:51:47
Duration 236.07s
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useWatchedItems.test.tsx [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/gamification.db.test.ts 0/9
Test Files 27 failed | 106 passed (242)
Tests 28 failed | 2654 passed | 290 skipped (2981)
Start at 07:51:47
Duration 236.25s
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useWatchedItems.test.tsx [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/gamification.db.test.ts 1/9
Test Files 27 failed | 106 passed (242)
Tests 28 failed | 2655 passed | 290 skipped (2981)
Start at 07:51:47
Duration 236.53s
✓ src/services/db/gamification.db.test.ts (9 tests) 59ms
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useWatchedItems.test.tsx [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/gamification.db.test.ts 9/9
Test Files 27 failed | 107 passed (242)
Tests 28 failed | 2663 passed | 290 skipped (2981)
Start at 07:51:47
Duration 237.02s
❯ src/features/charts/PriceChart.test.tsx [queued]
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useDataExtraction.test.ts [queued]
❯ src/hooks/useWatchedItems.test.tsx [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 107 passed (242)
Tests 28 failed | 2663 passed | 290 skipped (2981)
Start at 07:51:47
Duration 238.32s
❯ src/features/charts/PriceChart.test.tsx 0/8
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useDataExtraction.test.ts [queued]
❯ src/hooks/useWatchedItems.test.tsx 0/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 107 passed (242)
Tests 28 failed | 2663 passed | 290 skipped (2998)
Start at 07:51:47
Duration 238.42s
❯ src/features/charts/PriceChart.test.tsx 0/8
❯ src/hooks/useAppInitialization.test.tsx [queued]
❯ src/hooks/useDataExtraction.test.ts [queued]
❯ src/hooks/useWatchedItems.test.tsx 2/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 107 passed (242)
Tests 28 failed | 2665 passed | 290 skipped (2998)
Start at 07:51:47
Duration 238.52s
✓ src/hooks/useWatchedItems.test.tsx (9 tests) 243ms
❯ src/features/charts/PriceChart.test.tsx 0/8
❯ src/hooks/useAppInitialization.test.tsx 1/10
❯ src/hooks/useDataExtraction.test.ts [queued]
❯ src/hooks/useWatchedItems.test.tsx 9/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 108 passed (242)
Tests 28 failed | 2673 passed | 290 skipped (3008)
Start at 07:51:47
Duration 238.97s
✓ src/hooks/useAppInitialization.test.tsx (10 tests) 294ms
❯ src/features/charts/PriceChart.test.tsx 0/8
❯ src/hooks/useAppInitialization.test.tsx 10/10
❯ src/hooks/useDataExtraction.test.ts [queued]
❯ src/hooks/useWatchedItems.test.tsx 9/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 109 passed (242)
Tests 28 failed | 2682 passed | 290 skipped (3008)
Start at 07:51:47
Duration 239.43s
❯ src/features/charts/PriceChart.test.tsx 0/8
❯ src/hooks/useAppInitialization.test.tsx 10/10
❯ src/hooks/useDataExtraction.test.ts [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts 0/10
❯ src/routes/store.routes.test.ts [queued]
Test Files 27 failed | 109 passed (242)
Tests 28 failed | 2682 passed | 290 skipped (3018)
Start at 07:51:47
Duration 239.96s
❯ src/features/charts/PriceChart.test.tsx 1/8
❯ src/hooks/useDataExtraction.test.ts 1/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts 0/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/gamificationService.test.ts [queued]
Test Files 27 failed | 109 passed (242)
Tests 28 failed | 2684 passed | 290 skipped (3027)
Start at 07:51:47
Duration 240.06s
stdout | src/routes/price.routes.test.ts > Price Routes (/api/price-history) > POST / > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/features/charts/PriceChart.test.tsx 1/8
❯ src/hooks/useDataExtraction.test.ts 1/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts 10/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/gamificationService.test.ts [queued]
Test Files 27 failed | 109 passed (242)
Tests 28 failed | 2694 passed | 290 skipped (3027)
Start at 07:51:47
Duration 240.66s
stderr | src/routes/price.routes.test.ts > Price Routes (/api/price-history) > POST / > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Database connection failed
at /app/src/routes/price.routes.test.ts:90:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/features/charts/PriceChart.test.tsx 1/8
❯ src/hooks/useDataExtraction.test.ts 1/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/price.routes.test.ts 10/10
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/gamificationService.test.ts [queued]
Test Files 27 failed | 109 passed (242)
Tests 28 failed | 2694 passed | 290 skipped (3027)
Start at 07:51:47
Duration 240.66s
✓ src/routes/price.routes.test.ts (10 tests) 432ms
✓ src/hooks/useDataExtraction.test.ts (9 tests) 280ms
✓ src/features/charts/PriceChart.test.tsx (8 tests) 2231ms
✓ should render a login prompt when user is not authenticated 1096ms
✓ should render the table with deal items when data is provided 854ms
❯ src/features/charts/PriceChart.test.tsx 8/8
❯ src/hooks/useDataExtraction.test.ts 9/9
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/gamificationService.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts [queued]
Test Files 27 failed | 112 passed (242)
Tests 28 failed | 2709 passed | 290 skipped (3027)
Start at 07:51:47
Duration 241.58s
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts [queued]
❯ src/services/gamificationService.test.ts 1/9
❯ src/tests/integration/flyer.integration.test.ts [queued]
Test Files 27 failed | 112 passed (242)
Tests 28 failed | 2710 passed | 290 skipped (3036)
Start at 07:51:47
Duration 241.70s
✓ src/services/gamificationService.test.ts (9 tests) 52ms
❯ src/pages/HomePage.test.tsx [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts [queued]
Test Files 27 failed | 113 passed (242)
Tests 28 failed | 2718 passed | 290 skipped (3036)
Start at 07:51:47
Duration 242.64s
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts [queued]
Test Files 27 failed | 113 passed (242)
Tests 28 failed | 2718 passed | 290 skipped (3036)
Start at 07:51:47
Duration 243.17s
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts [queued]
❯ src/utils/checksum.test.ts [queued]
Test Files 27 failed | 113 passed (242)
Tests 28 failed | 2718 passed | 290 skipped (3036)
Start at 07:51:47
Duration 244.03s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts [queued]
❯ src/utils/checksum.test.ts [queued]
Test Files 27 failed | 113 passed (242)
Tests 28 failed | 2718 passed | 290 skipped (3036)
Start at 07:51:47
Duration 244.25s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts 0/18
❯ src/tests/integration/flyer.integration.test.ts [queued]
❯ src/utils/checksum.test.ts [queued]
Test Files 27 failed | 113 passed (242)
Tests 28 failed | 2718 passed | 290 skipped (3054)
Start at 07:51:47
Duration 244.87s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx [queued]
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts 0/18
❯ src/tests/integration/flyer.integration.test.ts [queued]
❯ src/utils/checksum.test.ts [queued]
Test Files 27 failed | 113 passed (242)
Tests 28 failed | 2718 passed | 290 skipped (3054)
Start at 07:51:47
Duration 245.08s
✓ src/schemas/flyer.schemas.test.ts (18 tests) 51ms
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx 0/5
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts 18/18
❯ src/tests/integration/flyer.integration.test.ts [queued]
❯ src/utils/checksum.test.ts [queued]
Test Files 27 failed | 114 passed (242)
Tests 28 failed | 2736 passed | 290 skipped (3059)
Start at 07:51:47
Duration 245.57s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx 0/5
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts 18/18
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/checksum.test.ts 1/8
Test Files 27 failed | 114 passed (242)
Tests 28 failed | 2737 passed | 290 skipped (3071)
Start at 07:51:47
Duration 245.93s
✓ src/utils/checksum.test.ts (8 tests) 119ms
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx [queued]
❯ src/pages/HomePage.test.tsx 0/5
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/schemas/flyer.schemas.test.ts 18/18
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/checksum.test.ts 8/8
Test Files 27 failed | 115 passed (242)
Tests 28 failed | 2744 passed | 290 skipped (3071)
Start at 07:51:47
Duration 246.10s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 0/8
❯ src/pages/HomePage.test.tsx 0/5
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/checksum.test.ts 8/8
Test Files 27 failed | 115 passed (242)
Tests 28 failed | 2744 passed | 290 skipped (3079)
Start at 07:51:47
Duration 246.61s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 0/8
❯ src/pages/HomePage.test.tsx 1/5
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/checksum.test.ts 8/8
Test Files 27 failed | 115 passed (242)
Tests 28 failed | 2745 passed | 290 skipped (3079)
Start at 07:51:47
Duration 246.72s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 0/8
❯ src/pages/HomePage.test.tsx 3/5
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/checksum.test.ts 8/8
Test Files 27 failed | 115 passed (242)
Tests 28 failed | 2747 passed | 290 skipped (3079)
Start at 07:51:47
Duration 246.82s
✓ src/pages/HomePage.test.tsx (5 tests) 1308ms
✓ should render the welcome message when no flyer is selected 1097ms
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 2/8
❯ src/pages/HomePage.test.tsx 5/5
❯ src/routes/admin.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 116 passed (242)
Tests 28 failed | 2751 passed | 290 skipped (3079)
Start at 07:51:47
Duration 247.03s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 4/8
❯ src/pages/HomePage.test.tsx 5/5
❯ src/routes/admin.routes.test.ts 0/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 116 passed (242)
Tests 28 failed | 2753 passed | 290 skipped (3083)
Start at 07:51:47
Duration 247.14s
❯ src/components/Leaderboard.test.tsx [queued]
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 7/8
❯ src/pages/HomePage.test.tsx 5/5
❯ src/routes/admin.routes.test.ts 0/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 116 passed (242)
Tests 28 failed | 2756 passed | 290 skipped (3083)
Start at 07:51:47
Duration 247.34s
✓ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx (8 tests) 738ms
❯ src/components/Leaderboard.test.tsx 0/7
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 8/8
❯ src/pages/HomePage.test.tsx 5/5
❯ src/routes/admin.routes.test.ts 0/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 117 passed (242)
Tests 28 failed | 2757 passed | 290 skipped (3090)
Start at 07:51:47
Duration 247.46s
❯ src/components/Leaderboard.test.tsx 0/7
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 8/8
❯ src/pages/HomePage.test.tsx 5/5
❯ src/routes/admin.routes.test.ts 1/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 117 passed (242)
Tests 28 failed | 2758 passed | 290 skipped (3090)
Start at 07:51:47
Duration 247.67s
stdout | src/routes/admin.routes.test.ts > Admin Routes Rate Limiting > POST /system/clear-cache > should return 500 if cache clear fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/Leaderboard.test.tsx 0/7
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 8/8
❯ src/routes/admin.routes.test.ts 2/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 117 passed (242)
Tests 28 failed | 2759 passed | 290 skipped (3090)
Start at 07:51:47
Duration 248.07s
stderr | src/routes/admin.routes.test.ts > Admin Routes Rate Limiting > POST /system/clear-cache > should return 500 if cache clear fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Redis connection failed
at /app/src/routes/admin.routes.test.ts:168:26
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/Leaderboard.test.tsx 0/7
❯ src/hooks/mutations/useAddShoppingListItemMutation.test.tsx 8/8
❯ src/routes/admin.routes.test.ts 2/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 117 passed (242)
Tests 28 failed | 2759 passed | 290 skipped (3090)
Start at 07:51:47
Duration 248.07s
✓ src/routes/admin.routes.test.ts (4 tests) 996ms
✓ should block requests to /trigger/daily-deal-check after exceeding limit 568ms
✓ should block requests to /brands/:id/logo after exceeding limit 358ms
❯ src/components/Leaderboard.test.tsx 1/7
❯ src/routes/admin.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 118 passed (242)
Tests 28 failed | 2762 passed | 290 skipped (3090)
Start at 07:51:47
Duration 248.78s
❯ src/components/Leaderboard.test.tsx 2/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/worker.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 118 passed (242)
Tests 28 failed | 2763 passed | 290 skipped (3090)
Start at 07:51:47
Duration 248.99s
❯ src/components/Leaderboard.test.tsx 3/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/worker.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 118 passed (242)
Tests 28 failed | 2764 passed | 290 skipped (3090)
Start at 07:51:47
Duration 249.84s
✓ src/components/Leaderboard.test.tsx (7 tests) 1954ms
✓ should display a loading message initially 340ms
✓ should display a generic error for unknown error types 856ms
✓ should render the leaderboard with user data on successful fetch 486ms
❯ src/components/Leaderboard.test.tsx 7/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/worker.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2768 passed | 290 skipped (3090)
Start at 07:51:47
Duration 250.05s
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts [queued]
❯ src/services/worker.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2768 passed | 290 skipped (3090)
Start at 07:51:47
Duration 250.64s
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts [queued]
❯ src/services/worker.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts [queued]
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2768 passed | 290 skipped (3090)
Start at 07:51:47
Duration 251.21s
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/services/worker.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts [queued]
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2768 passed | 290 skipped (3090)
Start at 07:51:47
Duration 251.79s
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/services/worker.test.ts 0/7
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts [queued]
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2768 passed | 290 skipped (3097)
Start at 07:51:47
Duration 252.02s
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/services/worker.test.ts 0/7
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts [queued]
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2768 passed | 290 skipped (3097)
Start at 07:51:47
Duration 252.30s
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/services/worker.test.ts 0/7
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts [queued]
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2768 passed | 290 skipped (3097)
Start at 07:51:47
Duration 252.44s
stdout | src/services/worker.test.ts > Worker Entry Point > Error Handling > should log unhandled promise rejections
Handled expected test rejection to prevent test runner error: Promise rejected
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/services/worker.test.ts 1/7
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts [queued]
Test Files 27 failed | 119 passed (242)
Tests 28 failed | 2769 passed | 290 skipped (3097)
Start at 07:51:47
Duration 253.14s
✓ src/services/worker.test.ts (7 tests) 591ms
✓ should log initialization messages on import 525ms
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts 1/8
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/services/worker.test.ts 7/7
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts [queued]
Test Files 27 failed | 120 passed (242)
Tests 28 failed | 2776 passed | 290 skipped (3105)
Start at 07:51:47
Duration 253.26s
✓ src/services/db/conversion.db.test.ts (8 tests) 65ms
stdout | src/utils/imageProcessor.test.ts > generateFlyerIcon > should process the image and return the correct icon filename
[DEBUG] generateFlyerIcon returning: icon-flyer-image-1.webp
stdout | src/utils/imageProcessor.test.ts > processAndSaveImage > should process the image, strip metadata, and return the new filename
[DEBUG] processAndSaveImage returning: original-1768809360882.jpg
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/conversion.db.test.ts 8/8
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/services/worker.test.ts 7/7
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts 1/4
Test Files 27 failed | 121 passed (242)
Tests 28 failed | 2784 passed | 290 skipped (3109)
Start at 07:51:47
Duration 253.57s
✓ src/utils/imageProcessor.test.ts (4 tests) 99ms
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 0/4
❯ src/utils/imageProcessor.test.ts 4/4
Test Files 27 failed | 122 passed (242)
Tests 28 failed | 2787 passed | 290 skipped (3109)
Start at 07:51:47
Duration 254.08s
✓ src/services/flyerPersistenceService.server.test.ts (3 tests) 65ms
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts 3/3
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 123 passed (242)
Tests 28 failed | 2790 passed | 290 skipped (3112)
Start at 07:51:47
Duration 254.99s
❯ src/pages/admin/FlyerReviewPage.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts 3/3
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 123 passed (242)
Tests 28 failed | 2790 passed | 290 skipped (3112)
Start at 07:51:47
Duration 255.29s
❯ src/pages/admin/FlyerReviewPage.test.tsx 0/6
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/flyerPersistenceService.server.test.ts 3/3
❯ src/tests/integration/flyer.integration.test.ts 0/4
Test Files 27 failed | 123 passed (242)
Tests 28 failed | 2790 passed | 290 skipped (3118)
Start at 07:51:47
Duration 255.90s
❯ src/tests/integration/flyer.integration.test.ts (4 tests | 4 skipped) 10329ms
↓ should return a list of flyers
↓ should return items for a specific flyer
↓ should return items for multiple flyer IDs
↓ should return the total count of items for multiple flyer IDs
❯ src/pages/admin/FlyerReviewPage.test.tsx 0/6
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/flyer.integration.test.ts 4/4
Test Files 28 failed | 123 passed (242)
Tests 28 failed | 2790 passed | 294 skipped (3118)
Start at 07:51:47
Duration 256.31s
❯ src/pages/admin/FlyerReviewPage.test.tsx 0/6
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 123 passed (242)
Tests 28 failed | 2790 passed | 294 skipped (3118)
Start at 07:51:47
Duration 257.32s
❯ src/pages/admin/FlyerReviewPage.test.tsx 1/6
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 123 passed (242)
Tests 28 failed | 2791 passed | 294 skipped (3118)
Start at 07:51:47
Duration 257.52s
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/pages/admin/FlyerReviewPage.test.tsx 1/6
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 123 passed (242)
Tests 28 failed | 2791 passed | 294 skipped (3118)
Start at 07:51:47
Duration 257.62s
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/pages/admin/FlyerReviewPage.test.tsx 2/6
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 123 passed (242)
Tests 28 failed | 2792 passed | 294 skipped (3118)
Start at 07:51:47
Duration 257.72s
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/pages/admin/FlyerReviewPage.test.tsx 2/6
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 123 passed (242)
Tests 28 failed | 2792 passed | 294 skipped (3118)
Start at 07:51:47
Duration 258.97s
✓ src/pages/admin/FlyerReviewPage.test.tsx (6 tests) 2523ms
✓ renders loading spinner initially 1206ms
✓ renders empty state when no flyers are returned 401ms
✓ renders a list of flyers when API returns data 595ms
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/logger.client.test.ts [queued]
Test Files 28 failed | 124 passed (242)
Tests 28 failed | 2796 passed | 294 skipped (3118)
Start at 07:51:47
Duration 259.07s
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts [queued]
❯ src/services/logger.client.test.ts [queued]
Test Files 28 failed | 124 passed (242)
Tests 28 failed | 2796 passed | 294 skipped (3118)
Start at 07:51:47
Duration 259.71s
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts [queued]
❯ src/services/logger.client.test.ts [queued]
Test Files 28 failed | 124 passed (242)
Tests 28 failed | 2796 passed | 294 skipped (3118)
Start at 07:51:47
Duration 260.23s
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts [queued]
❯ src/services/logger.client.test.ts [queued]
Test Files 28 failed | 124 passed (242)
Tests 28 failed | 2796 passed | 294 skipped (3118)
Start at 07:51:47
Duration 260.47s
stdout | src/services/logger.client.test.ts
Logger implementation: {
info: [Function: info],
warn: [Function: warn],
error: [Function: error],
debug: [Function: debug]
}
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts [queued]
❯ src/services/logger.client.test.ts 0/12
Test Files 28 failed | 124 passed (242)
Tests 28 failed | 2796 passed | 294 skipped (3130)
Start at 07:51:47
Duration 260.88s
✓ src/services/logger.client.test.ts (12 tests) 56ms
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts [queued]
❯ src/services/logger.client.test.ts 12/12
Test Files 28 failed | 125 passed (242)
Tests 28 failed | 2808 passed | 294 skipped (3130)
Start at 07:51:47
Duration 261.15s
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 1/7
❯ src/services/logger.client.test.ts 12/12
Test Files 28 failed | 125 passed (242)
Tests 28 failed | 2809 passed | 294 skipped (3137)
Start at 07:51:47
Duration 261.46s
✓ src/services/db/address.db.test.ts (7 tests) 64ms
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 1/7
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
❯ src/services/logger.client.test.ts 12/12
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2816 passed | 294 skipped (3144)
Start at 07:51:47
Duration 261.70s
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 2/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2817 passed | 294 skipped (3144)
Start at 07:51:47
Duration 261.80s
stdout | src/routes/personalization.routes.test.ts > Personalization Routes (/api/personalization) > GET /master-items > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 3/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts 1/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2819 passed | 294 skipped (3151)
Start at 07:51:47
Duration 262.02s
stderr | src/routes/personalization.routes.test.ts > Personalization Routes (/api/personalization) > GET /master-items > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/personalization.routes.test.ts:55:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 3/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts 1/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2819 passed | 294 skipped (3151)
Start at 07:51:47
Duration 262.02s
stdout | src/routes/personalization.routes.test.ts > Personalization Routes (/api/personalization) > GET /dietary-restrictions > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 3/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts 1/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2819 passed | 294 skipped (3151)
Start at 07:51:47
Duration 262.02s
stderr | src/routes/personalization.routes.test.ts > Personalization Routes (/api/personalization) > GET /dietary-restrictions > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/personalization.routes.test.ts:81:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 3/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts 1/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2819 passed | 294 skipped (3151)
Start at 07:51:47
Duration 262.02s
stdout | src/routes/personalization.routes.test.ts > Personalization Routes (/api/personalization) > GET /appliances > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 3/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts 1/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2819 passed | 294 skipped (3151)
Start at 07:51:47
Duration 262.02s
stderr | src/routes/personalization.routes.test.ts > Personalization Routes (/api/personalization) > GET /appliances > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/personalization.routes.test.ts:105:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx [queued]
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 3/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts [queued]
❯ src/routes/personalization.routes.test.ts 1/7
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/address.db.test.ts 7/7
Test Files 28 failed | 126 passed (242)
Tests 28 failed | 2819 passed | 294 skipped (3151)
Start at 07:51:47
Duration 262.02s
✓ src/routes/personalization.routes.test.ts (7 tests) 222ms
✓ src/hooks/queries/useFlyerItemsQuery.test.tsx (7 tests) 563ms
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 0/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 0/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 128 passed (242)
Tests 28 failed | 2829 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.53s
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 2/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 1/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 128 passed (242)
Tests 28 failed | 2832 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.64s
stdout | src/routes/admin.stats.routes.test.ts > Admin Stats Routes (/api/admin/stats) > GET /stats > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 4/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 129 passed (242)
Tests 28 failed | 2837 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.84s
stderr | src/routes/admin.stats.routes.test.ts > Admin Stats Routes (/api/admin/stats) > GET /stats > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.stats.routes.test.ts:119:66
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 4/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 129 passed (242)
Tests 28 failed | 2837 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.84s
stdout | src/routes/admin.stats.routes.test.ts > Admin Stats Routes (/api/admin/stats) > GET /stats/daily > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 4/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 129 passed (242)
Tests 28 failed | 2837 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.84s
stderr | src/routes/admin.stats.routes.test.ts > Admin Stats Routes (/api/admin/stats) > GET /stats/daily > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/admin.stats.routes.test.ts:139:73
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 4/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 129 passed (242)
Tests 28 failed | 2837 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.84s
✓ src/routes/admin.stats.routes.test.ts (4 tests) 181ms
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 4/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 129 passed (242)
Tests 28 failed | 2837 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.84s
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 5/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts [queued]
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/personalization.routes.test.ts 7/7
❯ src/routes/store.routes.test.ts [queued]
Test Files 28 failed | 129 passed (242)
Tests 28 failed | 2838 passed | 294 skipped (3162)
Start at 07:51:47
Duration 262.94s
✓ src/hooks/mutations/useAddWatchedItemMutation.test.tsx (7 tests) 597ms
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 7/7
❯ src/hooks/queries/useFlyerItemsQuery.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts 0/8
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/flyer-upload.e2e.test.ts [queued]
Test Files 28 failed | 130 passed (242)
Tests 28 failed | 2840 passed | 294 skipped (3170)
Start at 07:51:47
Duration 263.16s
❯ src/hooks/mutations/useAddWatchedItemMutation.test.tsx 7/7
❯ src/hooks/useDragAndDrop.test.ts 1/8
❯ src/routes/admin.stats.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/flyer-upload.e2e.test.ts [queued]
Test Files 28 failed | 130 passed (242)
Tests 28 failed | 2841 passed | 294 skipped (3170)
Start at 07:51:47
Duration 263.76s
❯ src/hooks/useDragAndDrop.test.ts 2/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queues.server.test.ts [queued]
❯ src/tests/e2e/flyer-upload.e2e.test.ts [queued]
Test Files 28 failed | 130 passed (242)
Tests 28 failed | 2842 passed | 294 skipped (3170)
Start at 07:51:47
Duration 263.86s
✓ src/hooks/useDragAndDrop.test.ts (8 tests) 212ms
❯ src/hooks/useDragAndDrop.test.ts 8/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queues.server.test.ts [queued]
❯ src/tests/e2e/flyer-upload.e2e.test.ts [queued]
Test Files 28 failed | 131 passed (242)
Tests 28 failed | 2848 passed | 294 skipped (3170)
Start at 07:51:47
Duration 264.60s
❯ src/components/Header.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queues.server.test.ts [queued]
❯ src/tests/e2e/flyer-upload.e2e.test.ts [queued]
❯ src/utils/serverUtils.test.ts [queued]
Test Files 28 failed | 131 passed (242)
Tests 28 failed | 2848 passed | 294 skipped (3170)
Start at 07:51:47
Duration 265.43s
❯ src/components/Header.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queues.server.test.ts 0/10
❯ src/tests/e2e/flyer-upload.e2e.test.ts [queued]
❯ src/utils/serverUtils.test.ts [queued]
Test Files 28 failed | 131 passed (242)
Tests 28 failed | 2848 passed | 294 skipped (3180)
Start at 07:51:47
Duration 265.57s
❯ src/components/Header.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queues.server.test.ts 0/10
❯ src/tests/e2e/flyer-upload.e2e.test.ts [queued]
❯ src/utils/serverUtils.test.ts [queued]
Test Files 28 failed | 131 passed (242)
Tests 28 failed | 2848 passed | 294 skipped (3180)
Start at 07:51:47
Duration 266.11s
✓ src/services/queues.server.test.ts (10 tests) 580ms
✓ should create flyerQueue with the correct name and options 510ms
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queues.server.test.ts 10/10
❯ src/tests/e2e/flyer-upload.e2e.test.ts 0/1
❯ src/utils/serverUtils.test.ts [queued]
Test Files 28 failed | 132 passed (242)
Tests 28 failed | 2858 passed | 294 skipped (3181)
Start at 07:51:47
Duration 267.13s
❯ src/tests/e2e/flyer-upload.e2e.test.ts (1 test | 1 failed) 209ms
× should allow a user to upload a flyer and wait for processing to complete 201ms
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/serverUtils.test.ts 0/8
Test Files 29 failed | 132 passed (242)
Tests 29 failed | 2858 passed | 294 skipped (3189)
Start at 07:51:47
Duration 267.26s
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/serverUtils.test.ts 1/8
Test Files 29 failed | 132 passed (242)
Tests 29 failed | 2859 passed | 294 skipped (3189)
Start at 07:51:47
Duration 267.37s
✓ src/utils/serverUtils.test.ts (8 tests) 76ms
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/serverUtils.test.ts 8/8
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3189)
Start at 07:51:47
Duration 268.15s
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3189)
Start at 07:51:47
Duration 269.42s
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts [queued]
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3189)
Start at 07:51:47
Duration 269.79s
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx [queued]
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts [queued]
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3189)
Start at 07:51:47
Duration 270.50s
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts [queued]
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3192)
Start at 07:51:47
Duration 270.69s
❯ src/components/Header.test.tsx [queued]
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts [queued]
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3192)
Start at 07:51:47
Duration 271.46s
❯ src/components/Header.test.tsx 0/12
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts [queued]
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3204)
Start at 07:51:47
Duration 271.59s
❯ src/components/Header.test.tsx 0/12
❯ src/components/PasswordStrengthIndicator.test.tsx [queued]
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts 0/4
Test Files 29 failed | 133 passed (242)
Tests 29 failed | 2866 passed | 294 skipped (3208)
Start at 07:51:47
Duration 272.04s
✓ src/services/notificationService.test.ts (4 tests) 62ms
❯ src/components/Header.test.tsx 0/12
❯ src/components/PasswordStrengthIndicator.test.tsx 0/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 0/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts 4/4
❯ src/services/queueService.test.ts [queued]
Test Files 29 failed | 134 passed (242)
Tests 29 failed | 2870 passed | 294 skipped (3223)
Start at 07:51:47
Duration 272.68s
stdout | src/routes/deals.routes.test.ts > Deals Routes (/api/users/deals) > GET /best-watched-prices > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/Header.test.tsx 3/12
❯ src/components/PasswordStrengthIndicator.test.tsx 11/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts 4/4
❯ src/services/queueService.test.ts [queued]
Test Files 29 failed | 136 passed (242)
Tests 29 failed | 2888 passed | 294 skipped (3223)
Start at 07:51:47
Duration 272.88s
stderr | src/routes/deals.routes.test.ts > Deals Routes (/api/users/deals) > GET /best-watched-prices > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/deals.routes.test.ts:98:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/Header.test.tsx 3/12
❯ src/components/PasswordStrengthIndicator.test.tsx 11/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts 4/4
❯ src/services/queueService.test.ts [queued]
Test Files 29 failed | 136 passed (242)
Tests 29 failed | 2888 passed | 294 skipped (3223)
Start at 07:51:47
Duration 272.88s
✓ src/routes/deals.routes.test.ts (4 tests) 179ms
✓ src/components/PasswordStrengthIndicator.test.tsx (11 tests) 605ms
❯ src/components/Header.test.tsx 3/12
❯ src/components/PasswordStrengthIndicator.test.tsx 11/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/notificationService.test.ts 4/4
❯ src/services/queueService.test.ts [queued]
Test Files 29 failed | 136 passed (242)
Tests 29 failed | 2888 passed | 294 skipped (3223)
Start at 07:51:47
Duration 272.88s
❯ src/components/Header.test.tsx 4/12
❯ src/components/PasswordStrengthIndicator.test.tsx 11/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts [queued]
Test Files 29 failed | 136 passed (242)
Tests 29 failed | 2889 passed | 294 skipped (3223)
Start at 07:51:47
Duration 273.11s
❯ src/components/Header.test.tsx 5/12
❯ src/components/PasswordStrengthIndicator.test.tsx 11/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts [queued]
Test Files 29 failed | 136 passed (242)
Tests 29 failed | 2890 passed | 294 skipped (3223)
Start at 07:51:47
Duration 273.21s
❯ src/components/Header.test.tsx 6/12
❯ src/components/PasswordStrengthIndicator.test.tsx 11/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts 0/4
Test Files 29 failed | 136 passed (242)
Tests 29 failed | 2891 passed | 294 skipped (3227)
Start at 07:51:47
Duration 273.53s
❯ src/components/Header.test.tsx 6/12
❯ src/components/PasswordStrengthIndicator.test.tsx 11/11
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/deals.routes.test.ts 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts 0/4
Test Files 29 failed | 136 passed (242)
Tests 29 failed | 2891 passed | 294 skipped (3227)
Start at 07:51:47
Duration 273.69s
✓ src/services/queueService.test.ts (4 tests) 204ms
❯ src/components/Header.test.tsx 12/12
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx [queued]
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts 4/4
Test Files 29 failed | 137 passed (242)
Tests 29 failed | 2901 passed | 294 skipped (3227)
Start at 07:51:47
Duration 273.79s
✓ src/components/Header.test.tsx (12 tests) 2102ms
✓ should render the application title 752ms
✓ should call onSignOut when Logout button is clicked 312ms
❯ src/components/Header.test.tsx 12/12
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx 0/6
❯ src/hooks/useFlyerUploader.test.tsx 0/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts 4/4
Test Files 29 failed | 138 passed (242)
Tests 29 failed | 2901 passed | 294 skipped (3233)
Start at 07:51:47
Duration 273.99s
✓ src/hooks/useFlyerUploader.test.tsx (3 tests) 3323ms
✓ should handle a successful upload and polling flow 3162ms
❯ src/components/Header.test.tsx 12/12
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx 1/6
❯ src/hooks/useFlyerUploader.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts 4/4
Test Files 29 failed | 139 passed (242)
Tests 29 failed | 2905 passed | 294 skipped (3233)
Start at 07:51:47
Duration 274.30s
❯ src/components/Header.test.tsx 12/12
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx 3/6
❯ src/hooks/useFlyerUploader.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts 4/4
Test Files 29 failed | 139 passed (242)
Tests 29 failed | 2907 passed | 294 skipped (3233)
Start at 07:51:47
Duration 274.50s
❯ src/components/Header.test.tsx 12/12
❯ src/hooks/mutations/useCreateShoppingListMutation.test.tsx 5/6
❯ src/hooks/useFlyerUploader.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/queueService.test.ts 4/4
Test Files 29 failed | 139 passed (242)
Tests 29 failed | 2909 passed | 294 skipped (3233)
Start at 07:51:47
Duration 274.60s
✓ src/hooks/mutations/useCreateShoppingListMutation.test.tsx (6 tests) 567ms
❯ src/routes/store.routes.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 275.66s
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 276.60s
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 278.45s
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 278.66s
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 278.81s
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 280.24s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/audioUtils.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 280.42s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts [queued]
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts [queued]
❯ src/utils/audioUtils.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 282.21s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts [queued]
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts [queued]
❯ src/utils/audioUtils.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3233)
Start at 07:51:47
Duration 283.18s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts 0/6
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts [queued]
❯ src/utils/audioUtils.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2910 passed | 294 skipped (3239)
Start at 07:51:47
Duration 283.69s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts 1/6
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts [queued]
❯ src/utils/audioUtils.test.ts [queued]
Test Files 29 failed | 140 passed (242)
Tests 29 failed | 2911 passed | 294 skipped (3239)
Start at 07:51:47
Duration 284.02s
✓ src/hooks/useDebounce.test.ts (6 tests) 200ms
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts 6/6
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts [queued]
❯ src/utils/audioUtils.test.ts 0/7
Test Files 29 failed | 141 passed (242)
Tests 29 failed | 2916 passed | 294 skipped (3246)
Start at 07:51:47
Duration 284.12s
✓ src/utils/audioUtils.test.ts (7 tests) 41ms
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx 0/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts 6/6
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts 1/5
❯ src/utils/audioUtils.test.ts 7/7
Test Files 29 failed | 142 passed (242)
Tests 29 failed | 2924 passed | 294 skipped (3257)
Start at 07:51:47
Duration 284.23s
✓ src/services/googleGeocodingService.server.test.ts (5 tests) 48ms
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx 1/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx [queued]
❯ src/hooks/useDebounce.test.ts 6/6
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts 5/5
❯ src/utils/audioUtils.test.ts 7/7
Test Files 29 failed | 143 passed (242)
Tests 29 failed | 2929 passed | 294 skipped (3257)
Start at 07:51:47
Duration 284.44s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx 3/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx 0/6
❯ src/hooks/useDebounce.test.ts 6/6
❯ src/pages/admin/components/AddressForm.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts 5/5
❯ src/utils/audioUtils.test.ts 7/7
Test Files 29 failed | 143 passed (242)
Tests 29 failed | 2931 passed | 294 skipped (3263)
Start at 07:51:47
Duration 284.55s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx 4/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx 0/6
❯ src/hooks/useDebounce.test.ts 6/6
❯ src/pages/admin/components/AddressForm.test.tsx 0/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts 5/5
❯ src/utils/audioUtils.test.ts 7/7
Test Files 29 failed | 143 passed (242)
Tests 29 failed | 2932 passed | 294 skipped (3269)
Start at 07:51:47
Duration 284.75s
✓ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx (6 tests) 532ms
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx [queued]
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx 6/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx 1/6
❯ src/pages/admin/components/AddressForm.test.tsx 0/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts 5/5
❯ src/tests/e2e/admin-dashboard.e2e.test.ts [queued]
❯ src/utils/audioUtils.test.ts 7/7
Test Files 29 failed | 144 passed (242)
Tests 29 failed | 2935 passed | 294 skipped (3269)
Start at 07:51:47
Duration 284.85s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx 0/6
❯ src/hooks/mutations/useRemoveShoppingListItemMutation.test.tsx 6/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx 3/6
❯ src/pages/admin/components/AddressForm.test.tsx 0/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/googleGeocodingService.server.test.ts 5/5
❯ src/tests/e2e/admin-dashboard.e2e.test.ts [queued]
Test Files 29 failed | 144 passed (242)
Tests 29 failed | 2937 passed | 294 skipped (3275)
Start at 07:51:47
Duration 284.95s
✓ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx (6 tests) 504ms
✓ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx (6 tests) 490ms
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx 6/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx 6/6
❯ src/pages/admin/components/AddressForm.test.tsx 1/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-dashboard.e2e.test.ts [queued]
Test Files 29 failed | 146 passed (242)
Tests 29 failed | 2947 passed | 294 skipped (3275)
Start at 07:51:47
Duration 286.27s
❯ src/hooks/mutations/useDeleteShoppingListMutation.test.tsx 6/6
❯ src/hooks/mutations/useRemoveWatchedItemMutation.test.tsx 6/6
❯ src/pages/admin/components/AddressForm.test.tsx 1/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-dashboard.e2e.test.ts [queued]
Test Files 29 failed | 146 passed (242)
Tests 29 failed | 2947 passed | 294 skipped (3275)
Start at 07:51:47
Duration 286.47s
❯ src/pages/admin/components/AddressForm.test.tsx 3/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-dashboard.e2e.test.ts [queued]
Test Files 29 failed | 146 passed (242)
Tests 29 failed | 2949 passed | 294 skipped (3275)
Start at 07:51:47
Duration 286.92s
❯ src/pages/admin/components/AddressForm.test.tsx 4/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-dashboard.e2e.test.ts [queued]
Test Files 29 failed | 146 passed (242)
Tests 29 failed | 2950 passed | 294 skipped (3275)
Start at 07:51:47
Duration 287.32s
✓ src/pages/admin/components/AddressForm.test.tsx (6 tests) 2685ms
✓ should render all address fields correctly 1437ms
✓ should call onGeocode when the "Re-Geocode" button is clicked 379ms
✓ should disable the button and show a loading spinner 347ms
❯ src/pages/admin/components/AddressForm.test.tsx 6/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-dashboard.e2e.test.ts 0/1
Test Files 29 failed | 147 passed (242)
Tests 29 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 287.62s
❯ src/pages/admin/components/AddressForm.test.tsx 6/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-dashboard.e2e.test.ts 1/1
Test Files 29 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 287.94s
❯ src/tests/e2e/admin-dashboard.e2e.test.ts (1 test | 1 failed) 361ms
× should allow an admin to log in and access dashboard features 338ms
❯ src/hooks/queries/useFlyersQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-dashboard.e2e.test.ts 1/1
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 288.85s
❯ src/hooks/queries/useFlyersQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts [queued]
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 288.99s
❯ src/hooks/queries/useFlyersQuery.test.tsx [queued]
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts [queued]
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 290.60s
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx [queued]
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts [queued]
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 290.71s
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx [queued]
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts [queued]
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 291.61s
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx [queued]
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts [queued]
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3276)
Start at 07:51:47
Duration 292.58s
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx 0/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts [queued]
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2952 passed | 294 skipped (3282)
Start at 07:51:47
Duration 293.39s
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx 1/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 0/1
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2953 passed | 294 skipped (3283)
Start at 07:51:47
Duration 293.62s
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx 2/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 0/1
Test Files 30 failed | 147 passed (242)
Tests 30 failed | 2954 passed | 294 skipped (3283)
Start at 07:51:47
Duration 293.74s
❯ src/tests/e2e/user-journey.e2e.test.ts (1 test | 1 failed) 338ms
× should complete a full user lifecycle: Register -> Login -> Manage List -> Delete Account 321ms
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx 3/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx [queued]
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx [queued]
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 1/1
Test Files 31 failed | 147 passed (242)
Tests 31 failed | 2955 passed | 294 skipped (3283)
Start at 07:51:47
Duration 293.98s
✓ src/hooks/queries/useFlyersQuery.test.tsx (6 tests) 615ms
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx 6/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx 0/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 0/6
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 1/1
Test Files 31 failed | 148 passed (242)
Tests 31 failed | 2958 passed | 294 skipped (3295)
Start at 07:51:47
Duration 294.09s
❯ src/hooks/queries/useActivityLogQuery.test.tsx [queued]
❯ src/hooks/queries/useFlyersQuery.test.tsx 6/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx 1/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 0/6
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 1/1
Test Files 31 failed | 148 passed (242)
Tests 31 failed | 2959 passed | 294 skipped (3295)
Start at 07:51:47
Duration 294.24s
❯ src/hooks/queries/useActivityLogQuery.test.tsx 0/6
❯ src/hooks/queries/useFlyersQuery.test.tsx 6/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx 2/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 2/6
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 1/1
Test Files 31 failed | 148 passed (242)
Tests 31 failed | 2962 passed | 294 skipped (3301)
Start at 07:51:47
Duration 294.44s
❯ src/hooks/queries/useActivityLogQuery.test.tsx 0/6
❯ src/hooks/queries/useFlyersQuery.test.tsx 6/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx 4/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 4/6
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 1/1
Test Files 31 failed | 148 passed (242)
Tests 31 failed | 2966 passed | 294 skipped (3301)
Start at 07:51:47
Duration 294.54s
✓ src/hooks/queries/useShoppingListsQuery.test.tsx (6 tests) 587ms
✓ src/hooks/queries/useWatchedItemsQuery.test.tsx (6 tests) 576ms
❯ src/hooks/queries/useActivityLogQuery.test.tsx 1/6
❯ src/hooks/queries/useFlyersQuery.test.tsx 6/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx 6/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 6/6
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/user-journey.e2e.test.ts 1/1
Test Files 31 failed | 150 passed (242)
Tests 31 failed | 2971 passed | 294 skipped (3301)
Start at 07:51:47
Duration 294.84s
❯ src/hooks/queries/useActivityLogQuery.test.tsx 6/6
❯ src/hooks/queries/useFlyersQuery.test.tsx 6/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx 6/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 6/6
❯ src/pages/MyDealsPage.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 150 passed (242)
Tests 31 failed | 2976 passed | 294 skipped (3301)
Start at 07:51:47
Duration 294.94s
✓ src/hooks/queries/useActivityLogQuery.test.tsx (6 tests) 619ms
❯ src/hooks/queries/useActivityLogQuery.test.tsx 6/6
❯ src/hooks/queries/useShoppingListsQuery.test.tsx 6/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 6/6
❯ src/pages/MyDealsPage.test.tsx 0/6
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 151 passed (242)
Tests 31 failed | 2976 passed | 294 skipped (3307)
Start at 07:51:47
Duration 295.18s
❯ src/hooks/queries/useActivityLogQuery.test.tsx 6/6
❯ src/hooks/queries/useWatchedItemsQuery.test.tsx 6/6
❯ src/pages/MyDealsPage.test.tsx 1/6
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 151 passed (242)
Tests 31 failed | 2977 passed | 294 skipped (3307)
Start at 07:51:47
Duration 295.59s
❯ src/hooks/queries/useActivityLogQuery.test.tsx 6/6
❯ src/pages/MyDealsPage.test.tsx 2/6
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 151 passed (242)
Tests 31 failed | 2978 passed | 294 skipped (3307)
Start at 07:51:47
Duration 295.80s
❯ src/hooks/queries/useActivityLogQuery.test.tsx 6/6
❯ src/pages/MyDealsPage.test.tsx 3/6
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 151 passed (242)
Tests 31 failed | 2979 passed | 294 skipped (3307)
Start at 07:51:47
Duration 295.90s
✓ src/pages/MyDealsPage.test.tsx (6 tests) 674ms
❯ src/pages/MyDealsPage.test.tsx 6/6
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2982 passed | 294 skipped (3307)
Start at 07:51:47
Duration 296.83s
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2982 passed | 294 skipped (3307)
Start at 07:51:47
Duration 297.85s
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2982 passed | 294 skipped (3307)
Start at 07:51:47
Duration 297.95s
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2982 passed | 294 skipped (3307)
Start at 07:51:47
Duration 299.01s
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/admin.system.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2982 passed | 294 skipped (3307)
Start at 07:51:47
Duration 299.16s
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/admin.system.routes.test.ts 0/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2982 passed | 294 skipped (3309)
Start at 07:51:47
Duration 299.71s
stdout | src/routes/admin.system.routes.test.ts > Admin System Routes (/api/admin/system) > POST /system/clear-geocode-cache > should return 500 if clearing the cache fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/admin.system.routes.test.ts 1/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2983 passed | 294 skipped (3309)
Start at 07:51:47
Duration 301.63s
stderr | src/routes/admin.system.routes.test.ts > Admin System Routes (/api/admin/system) > POST /system/clear-geocode-cache > should return 500 if clearing the cache fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: Redis is down
at /app/src/routes/admin.system.routes.test.ts:117:71
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/admin.system.routes.test.ts 1/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts [queued]
Test Files 31 failed | 152 passed (242)
Tests 31 failed | 2983 passed | 294 skipped (3309)
Start at 07:51:47
Duration 301.63s
✓ src/routes/admin.system.routes.test.ts (2 tests) 238ms
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/admin.system.routes.test.ts 2/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts [queued]
Test Files 31 failed | 153 passed (242)
Tests 31 failed | 2984 passed | 294 skipped (3309)
Start at 07:51:47
Duration 302.29s
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/admin.system.routes.test.ts 2/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts 0/8
Test Files 31 failed | 153 passed (242)
Tests 31 failed | 2984 passed | 294 skipped (3317)
Start at 07:51:47
Duration 302.85s
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/admin.system.routes.test.ts 2/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts 1/8
Test Files 31 failed | 153 passed (242)
Tests 31 failed | 2985 passed | 294 skipped (3317)
Start at 07:51:47
Duration 302.97s
✓ src/services/tokenStorage.test.ts (8 tests) 52ms
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx [queued]
❯ src/middleware/validation.middleware.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts 8/8
Test Files 31 failed | 154 passed (242)
Tests 31 failed | 2992 passed | 294 skipped (3317)
Start at 07:51:47
Duration 303.39s
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx 0/6
❯ src/middleware/validation.middleware.test.ts 0/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts 8/8
Test Files 31 failed | 154 passed (242)
Tests 31 failed | 2992 passed | 294 skipped (3326)
Start at 07:51:47
Duration 303.50s
✓ src/middleware/validation.middleware.test.ts (3 tests) 75ms
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts [queued]
❯ src/hooks/useMasterItems.test.tsx [queued]
❯ src/hooks/useModal.test.tsx 1/6
❯ src/middleware/validation.middleware.test.ts 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/tokenStorage.test.ts 8/8
Test Files 31 failed | 155 passed (242)
Tests 31 failed | 2996 passed | 294 skipped (3326)
Start at 07:51:47
Duration 303.81s
✓ src/hooks/useModal.test.tsx (6 tests) 356ms
❯ src/components/PasswordInput.test.tsx [queued]
❯ src/hooks/useFlyerItems.test.ts 0/5
❯ src/hooks/useMasterItems.test.tsx 0/4
❯ src/hooks/useModal.test.tsx 6/6
❯ src/middleware/validation.middleware.test.ts 3/3
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 156 passed (242)
Tests 31 failed | 3001 passed | 294 skipped (3335)
Start at 07:51:47
Duration 304.02s
❯ src/components/PasswordInput.test.tsx 0/9
❯ src/hooks/useFlyerItems.test.ts 0/5
❯ src/hooks/useMasterItems.test.tsx 1/4
❯ src/hooks/useModal.test.tsx 6/6
❯ src/middleware/validation.middleware.test.ts 3/3
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 156 passed (242)
Tests 31 failed | 3002 passed | 294 skipped (3344)
Start at 07:51:47
Duration 304.22s
✓ src/hooks/useMasterItems.test.tsx (4 tests) 236ms
❯ src/components/PasswordInput.test.tsx 0/9
❯ src/hooks/useFlyerItems.test.ts 1/5
❯ src/hooks/useMasterItems.test.tsx 4/4
❯ src/hooks/useModal.test.tsx 6/6
❯ src/middleware/validation.middleware.test.ts 3/3
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 157 passed (242)
Tests 31 failed | 3006 passed | 294 skipped (3344)
Start at 07:51:47
Duration 304.33s
✓ src/hooks/useFlyerItems.test.ts (5 tests) 233ms
❯ src/components/PasswordInput.test.tsx 0/9
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 158 passed (242)
Tests 31 failed | 3010 passed | 294 skipped (3344)
Start at 07:51:47
Duration 305.38s
❯ src/components/PasswordInput.test.tsx 1/9
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 158 passed (242)
Tests 31 failed | 3011 passed | 294 skipped (3344)
Start at 07:51:47
Duration 306.21s
❯ src/components/PasswordInput.test.tsx 2/9
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 158 passed (242)
Tests 31 failed | 3012 passed | 294 skipped (3344)
Start at 07:51:47
Duration 306.42s
❯ src/components/PasswordInput.test.tsx 3/9
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 158 passed (242)
Tests 31 failed | 3013 passed | 294 skipped (3344)
Start at 07:51:47
Duration 306.52s
❯ src/components/PasswordInput.test.tsx 5/9
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 158 passed (242)
Tests 31 failed | 3015 passed | 294 skipped (3344)
Start at 07:51:47
Duration 306.62s
❯ src/components/PasswordInput.test.tsx 7/9
❯ src/routes/store.routes.test.ts [queued]
Test Files 31 failed | 158 passed (242)
Tests 31 failed | 3017 passed | 294 skipped (3344)
Start at 07:51:47
Duration 306.73s
✓ src/components/PasswordInput.test.tsx (9 tests) 2688ms
✓ should render as a password input by default 421ms
✓ should toggle input type between password and text when the eye icon is clicked 1763ms
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts [queued]
Test Files 31 failed | 159 passed (242)
Tests 31 failed | 3019 passed | 294 skipped (3344)
Start at 07:51:47
Duration 307.90s
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts [queued]
Test Files 31 failed | 159 passed (242)
Tests 31 failed | 3019 passed | 294 skipped (3344)
Start at 07:51:47
Duration 309.19s
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts [queued]
❯ src/utils/processingTimer.test.ts [queued]
Test Files 31 failed | 159 passed (242)
Tests 31 failed | 3019 passed | 294 skipped (3344)
Start at 07:51:47
Duration 309.29s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx [queued]
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts [queued]
❯ src/services/db/price.db.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts [queued]
❯ src/utils/processingTimer.test.ts [queued]
Test Files 31 failed | 159 passed (242)
Tests 31 failed | 3019 passed | 294 skipped (3344)
Start at 07:51:47
Duration 310.33s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx [queued]
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts [queued]
❯ src/services/db/price.db.test.ts [queued]
❯ src/services/nominatimGeocodingService.server.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts [queued]
❯ src/utils/processingTimer.test.ts [queued]
Test Files 31 failed | 159 passed (242)
Tests 31 failed | 3019 passed | 294 skipped (3344)
Start at 07:51:47
Duration 310.99s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx [queued]
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts [queued]
❯ src/services/db/price.db.test.ts [queued]
❯ src/services/nominatimGeocodingService.server.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts [queued]
❯ src/utils/processingTimer.test.ts [queued]
Test Files 31 failed | 159 passed (242)
Tests 31 failed | 3019 passed | 294 skipped (3344)
Start at 07:51:47
Duration 311.28s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx [queued]
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts [queued]
❯ src/services/db/price.db.test.ts 0/6
❯ src/services/nominatimGeocodingService.server.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts [queued]
❯ src/utils/processingTimer.test.ts [queued]
Test Files 31 failed | 159 passed (242)
Tests 31 failed | 3019 passed | 294 skipped (3350)
Start at 07:51:47
Duration 312.57s
❯ src/tests/integration/shopping-list.integration.test.ts (2 tests | 2 failed) 23ms
× should create and retrieve a shopping list for a user 15ms
× should not retrieve shopping lists belonging to another user 2ms
✓ src/services/db/price.db.test.ts (6 tests) 44ms
❯ src/hooks/queries/useMasterItemsQuery.test.tsx [queued]
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts 0/1
❯ src/services/db/price.db.test.ts 6/6
❯ src/services/nominatimGeocodingService.server.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts 2/2
❯ src/utils/processingTimer.test.ts [queued]
Test Files 32 failed | 160 passed (242)
Tests 33 failed | 3025 passed | 294 skipped (3353)
Start at 07:51:47
Duration 312.78s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx [queued]
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts 1/1
❯ src/services/db/price.db.test.ts 6/6
❯ src/services/nominatimGeocodingService.server.test.ts [queued]
❯ src/tests/integration/shopping-list.integration.test.ts 2/2
❯ src/utils/processingTimer.test.ts [queued]
Test Files 32 failed | 160 passed (242)
Tests 33 failed | 3026 passed | 294 skipped (3353)
Start at 07:51:47
Duration 312.93s
✓ src/services/db/index.db.test.ts (1 test) 16ms
❯ src/hooks/queries/useMasterItemsQuery.test.tsx [queued]
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts 1/1
❯ src/services/db/price.db.test.ts 6/6
❯ src/services/nominatimGeocodingService.server.test.ts 1/4
❯ src/tests/integration/shopping-list.integration.test.ts 2/2
❯ src/utils/processingTimer.test.ts 0/9
Test Files 32 failed | 161 passed (242)
Tests 33 failed | 3027 passed | 294 skipped (3366)
Start at 07:51:47
Duration 313.03s
✓ src/services/nominatimGeocodingService.server.test.ts (4 tests) 49ms
✓ src/utils/processingTimer.test.ts (9 tests) 112ms
❯ src/hooks/queries/useMasterItemsQuery.test.tsx 0/5
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts 1/1
❯ src/services/db/price.db.test.ts 6/6
❯ src/services/nominatimGeocodingService.server.test.ts 4/4
❯ src/tests/integration/shopping-list.integration.test.ts 2/2
❯ src/utils/processingTimer.test.ts 9/9
Test Files 32 failed | 163 passed (242)
Tests 33 failed | 3039 passed | 294 skipped (3371)
Start at 07:51:47
Duration 313.47s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx 0/5
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx 0/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts 1/1
❯ src/services/nominatimGeocodingService.server.test.ts 4/4
❯ src/utils/processingTimer.test.ts 9/9
Test Files 32 failed | 163 passed (242)
Tests 33 failed | 3039 passed | 294 skipped (3376)
Start at 07:51:47
Duration 313.67s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx 2/5
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx 0/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/index.db.test.ts 1/1
❯ src/services/nominatimGeocodingService.server.test.ts 4/4
❯ src/utils/processingTimer.test.ts 9/9
Test Files 32 failed | 163 passed (242)
Tests 33 failed | 3041 passed | 294 skipped (3376)
Start at 07:51:47
Duration 313.88s
❯ src/hooks/queries/useMasterItemsQuery.test.tsx 4/5
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx 0/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/nominatimGeocodingService.server.test.ts 4/4
❯ src/utils/processingTimer.test.ts 9/9
Test Files 32 failed | 163 passed (242)
Tests 33 failed | 3043 passed | 294 skipped (3376)
Start at 07:51:47
Duration 313.99s
✓ src/hooks/queries/useMasterItemsQuery.test.tsx (5 tests) 494ms
❯ src/hooks/queries/useMasterItemsQuery.test.tsx 5/5
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx 4/5
❯ src/routes/store.routes.test.ts [queued]
Test Files 32 failed | 164 passed (242)
Tests 33 failed | 3048 passed | 294 skipped (3376)
Start at 07:51:47
Duration 314.19s
✓ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx (5 tests) 517ms
❯ src/hooks/queries/useMasterItemsQuery.test.tsx 5/5
❯ src/hooks/queries/useSuggestedCorrectionsQuery.test.tsx 5/5
❯ src/routes/store.routes.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3376)
Start at 07:51:47
Duration 314.91s
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3376)
Start at 07:51:47
Duration 315.30s
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3376)
Start at 07:51:47
Duration 317.38s
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts [queued]
❯ src/utils/authUtils.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3376)
Start at 07:51:47
Duration 318.53s
❯ src/hooks/queries/useCategoriesQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts [queued]
❯ src/utils/authUtils.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3376)
Start at 07:51:47
Duration 319.34s
❯ src/hooks/queries/useCategoriesQuery.test.tsx [queued]
❯ src/routes/stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts [queued]
❯ src/utils/authUtils.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3376)
Start at 07:51:47
Duration 319.44s
❯ src/components/ConfirmationModal.test.tsx [queued]
❯ src/hooks/queries/useCategoriesQuery.test.tsx [queued]
❯ src/routes/stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts [queued]
❯ src/utils/authUtils.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3376)
Start at 07:51:47
Duration 320.38s
❯ src/components/ConfirmationModal.test.tsx [queued]
❯ src/hooks/queries/useCategoriesQuery.test.tsx [queued]
❯ src/routes/stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/authUtils.test.ts [queued]
❯ src/utils/fileUtils.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3381)
Start at 07:51:47
Duration 321.71s
❯ src/components/ConfirmationModal.test.tsx [queued]
❯ src/hooks/queries/useCategoriesQuery.test.tsx [queued]
❯ src/routes/stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/authUtils.test.ts 0/5
❯ src/utils/fileUtils.test.ts [queued]
Test Files 32 failed | 165 passed (242)
Tests 33 failed | 3049 passed | 294 skipped (3386)
Start at 07:51:47
Duration 322.03s
✓ src/utils/authUtils.test.ts (5 tests) 21ms
❯ src/components/ConfirmationModal.test.tsx [queued]
❯ src/hooks/queries/useCategoriesQuery.test.tsx [queued]
❯ src/routes/stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts 0/4
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/authUtils.test.ts 5/5
❯ src/utils/fileUtils.test.ts 0/7
Test Files 32 failed | 166 passed (242)
Tests 33 failed | 3054 passed | 294 skipped (3397)
Start at 07:51:47
Duration 322.13s
✓ src/utils/fileUtils.test.ts (7 tests) 61ms
✓ src/services/systemService.test.ts (4 tests) 79ms
❯ src/components/ConfirmationModal.test.tsx [queued]
❯ src/hooks/queries/useCategoriesQuery.test.tsx 0/5
❯ src/routes/stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts 4/4
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/authUtils.test.ts 5/5
❯ src/utils/fileUtils.test.ts 7/7
Test Files 32 failed | 168 passed (242)
Tests 33 failed | 3065 passed | 294 skipped (3402)
Start at 07:51:47
Duration 322.53s
❯ src/components/ConfirmationModal.test.tsx [queued]
❯ src/hooks/queries/useCategoriesQuery.test.tsx 0/5
❯ src/routes/stats.routes.test.ts [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts 4/4
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/authUtils.test.ts 5/5
❯ src/utils/fileUtils.test.ts 7/7
Test Files 32 failed | 168 passed (242)
Tests 33 failed | 3065 passed | 294 skipped (3402)
Start at 07:51:47
Duration 322.83s
❯ src/components/ConfirmationModal.test.tsx 0/8
❯ src/hooks/queries/useCategoriesQuery.test.tsx 3/5
❯ src/routes/stats.routes.test.ts 0/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts 4/4
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/authUtils.test.ts 5/5
❯ src/utils/fileUtils.test.ts 7/7
Test Files 32 failed | 168 passed (242)
Tests 33 failed | 3068 passed | 294 skipped (3415)
Start at 07:51:47
Duration 322.93s
✓ src/hooks/queries/useCategoriesQuery.test.tsx (5 tests) 451ms
❯ src/components/ConfirmationModal.test.tsx 0/8
❯ src/hooks/queries/useCategoriesQuery.test.tsx 5/5
❯ src/routes/stats.routes.test.ts 1/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts 4/4
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/authUtils.test.ts 5/5
❯ src/utils/fileUtils.test.ts 7/7
Test Files 32 failed | 169 passed (242)
Tests 33 failed | 3071 passed | 294 skipped (3415)
Start at 07:51:47
Duration 323.03s
stdout | src/routes/stats.routes.test.ts > Stats Routes (/api/stats) > GET /most-frequent-sales > should return 500 if the database call fails
[DEBUG] tests-setup-unit.ts: crypto.randomBytes mock returning "mocked_random_id" for encoding "hex"
❯ src/components/ConfirmationModal.test.tsx 0/8
❯ src/hooks/queries/useCategoriesQuery.test.tsx 5/5
❯ src/routes/stats.routes.test.ts 2/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts 4/4
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/fileUtils.test.ts 7/7
Test Files 32 failed | 169 passed (242)
Tests 33 failed | 3072 passed | 294 skipped (3415)
Start at 07:51:47
Duration 323.13s
stderr | src/routes/stats.routes.test.ts > Stats Routes (/api/stats) > GET /most-frequent-sales > should return 500 if the database call fails
--- [TEST] UNHANDLED ERROR (ID: mocked_random_id) --- Error: DB Error
at /app/src/routes/stats.routes.test.ts:51:23
at file:///app/node_modules/@vitest/runner/dist/index.js:145:11
at file:///app/node_modules/@vitest/runner/dist/index.js:915:26
at file:///app/node_modules/@vitest/runner/dist/index.js:1243:20
at new Promise (<anonymous>)
at runWithTimeout (file:///app/node_modules/@vitest/runner/dist/index.js:1209:10)
at file:///app/node_modules/@vitest/runner/dist/index.js:1653:37
at Traces.$ (file:///app/node_modules/vitest/dist/chunks/traces.U4xDYhzZ.js:115:27)
at trace (file:///app/node_modules/vitest/dist/chunks/test.B8ej_ZHS.js:239:21)
at runTest (file:///app/node_modules/@vitest/runner/dist/index.js:1653:12)
❯ src/components/ConfirmationModal.test.tsx 0/8
❯ src/hooks/queries/useCategoriesQuery.test.tsx 5/5
❯ src/routes/stats.routes.test.ts 2/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/systemService.test.ts 4/4
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/fileUtils.test.ts 7/7
Test Files 32 failed | 169 passed (242)
Tests 33 failed | 3072 passed | 294 skipped (3415)
Start at 07:51:47
Duration 323.13s
✓ src/routes/stats.routes.test.ts (5 tests) 221ms
❯ src/components/ConfirmationModal.test.tsx 0/8
❯ src/hooks/queries/useCategoriesQuery.test.tsx 5/5
❯ src/routes/stats.routes.test.ts 5/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3075 passed | 294 skipped (3415)
Start at 07:51:47
Duration 323.74s
❯ src/components/ConfirmationModal.test.tsx 1/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3076 passed | 294 skipped (3415)
Start at 07:51:47
Duration 324.66s
❯ src/components/ConfirmationModal.test.tsx 2/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3077 passed | 294 skipped (3415)
Start at 07:51:47
Duration 325.27s
❯ src/components/ConfirmationModal.test.tsx 3/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3078 passed | 294 skipped (3415)
Start at 07:51:47
Duration 325.57s
❯ src/components/ConfirmationModal.test.tsx 4/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3079 passed | 294 skipped (3415)
Start at 07:51:47
Duration 325.67s
❯ src/components/ConfirmationModal.test.tsx 5/8
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3080 passed | 294 skipped (3415)
Start at 07:51:47
Duration 325.88s
❯ src/components/ConfirmationModal.test.tsx 6/8
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3081 passed | 294 skipped (3415)
Start at 07:51:47
Duration 326.09s
❯ src/components/ConfirmationModal.test.tsx 6/8
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/eventBus.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 170 passed (242)
Tests 33 failed | 3081 passed | 294 skipped (3415)
Start at 07:51:47
Duration 326.31s
✓ src/components/ConfirmationModal.test.tsx (8 tests) 3585ms
✓ should render correctly when isOpen is true 1724ms
✓ should call onConfirm when the confirm button is clicked 568ms
✓ should call onClose when the cancel button is clicked 329ms
✓ should render custom button text and classes 448ms
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx [queued]
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/eventBus.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
Test Files 32 failed | 171 passed (242)
Tests 33 failed | 3083 passed | 294 skipped (3415)
Start at 07:51:47
Duration 327.38s
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx [queued]
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/eventBus.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/priceParser.test.ts [queued]
Test Files 32 failed | 171 passed (242)
Tests 33 failed | 3083 passed | 294 skipped (3415)
Start at 07:51:47
Duration 327.64s
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx [queued]
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/eventBus.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/priceParser.test.ts [queued]
Test Files 32 failed | 171 passed (242)
Tests 33 failed | 3083 passed | 294 skipped (3415)
Start at 07:51:47
Duration 328.59s
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx [queued]
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/eventBus.test.ts 0/8
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/priceParser.test.ts [queued]
Test Files 32 failed | 171 passed (242)
Tests 33 failed | 3083 passed | 294 skipped (3423)
Start at 07:51:47
Duration 329.29s
✓ src/services/eventBus.test.ts (8 tests) 59ms
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx [queued]
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/eventBus.test.ts 8/8
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/priceParser.test.ts [queued]
Test Files 32 failed | 172 passed (242)
Tests 33 failed | 3091 passed | 294 skipped (3423)
Start at 07:51:47
Duration 329.77s
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx [queued]
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx 0/4
❯ src/pages/admin/AdminPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/priceParser.test.ts [queued]
Test Files 32 failed | 172 passed (242)
Tests 33 failed | 3091 passed | 294 skipped (3427)
Start at 07:51:47
Duration 330.42s
✓ src/utils/priceParser.test.ts (11 tests) 33ms
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx 0/4
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx 0/4
❯ src/pages/admin/AdminPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/priceParser.test.ts 11/11
Test Files 32 failed | 173 passed (242)
Tests 33 failed | 3102 passed | 294 skipped (3442)
Start at 07:51:47
Duration 330.53s
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx 0/4
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx 1/4
❯ src/pages/admin/AdminPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 0/5
❯ src/utils/priceParser.test.ts 11/11
Test Files 32 failed | 173 passed (242)
Tests 33 failed | 3103 passed | 294 skipped (3442)
Start at 07:51:47
Duration 330.76s
❯ src/tests/integration/server.integration.test.ts (5 tests | 5 skipped) 10023ms
↓ should import the server app without crashing
↓ should respond with 200 OK and "pong" for GET /api/health/ping
↓ should respond with 200 OK for GET /api/health/db-schema
↓ should respond with 200 OK for GET /api/health/storage
↓ should respond with 200 OK for GET /api/health/redis
✓ src/hooks/queries/useApplicationStatsQuery.test.tsx (4 tests) 382ms
❯ src/components/AppGuard.test.tsx [queued]
❯ src/features/flyer/BulkImportSummary.test.tsx 0/4
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx 4/4
❯ src/pages/admin/AdminPage.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/server.integration.test.ts 5/5
Test Files 33 failed | 174 passed (242)
Tests 33 failed | 3106 passed | 299 skipped (3442)
Start at 07:51:47
Duration 331.51s
❯ src/components/AppGuard.test.tsx 0/4
❯ src/features/flyer/BulkImportSummary.test.tsx 0/4
❯ src/hooks/queries/useApplicationStatsQuery.test.tsx 4/4
❯ src/pages/admin/AdminPage.test.tsx 0/4
❯ src/routes/store.routes.test.ts [queued]
Test Files 33 failed | 174 passed (242)
Tests 33 failed | 3106 passed | 299 skipped (3450)
Start at 07:51:47
Duration 331.90s
❯ src/components/AppGuard.test.tsx 1/4
❯ src/features/flyer/BulkImportSummary.test.tsx 0/4
❯ src/pages/admin/AdminPage.test.tsx 0/4
❯ src/routes/store.routes.test.ts [queued]
Test Files 33 failed | 174 passed (242)
Tests 33 failed | 3107 passed | 299 skipped (3450)
Start at 07:51:47
Duration 332.00s
✓ src/components/AppGuard.test.tsx (4 tests) 347ms
❯ src/components/AppGuard.test.tsx 4/4
❯ src/features/flyer/BulkImportSummary.test.tsx 1/4
❯ src/pages/admin/AdminPage.test.tsx 0/4
❯ src/routes/store.routes.test.ts [queued]
Test Files 33 failed | 175 passed (242)
Tests 33 failed | 3111 passed | 299 skipped (3450)
Start at 07:51:47
Duration 332.20s
❯ src/components/AppGuard.test.tsx 4/4
❯ src/features/flyer/BulkImportSummary.test.tsx 2/4
❯ src/pages/admin/AdminPage.test.tsx 0/4
❯ src/routes/store.routes.test.ts [queued]
Test Files 33 failed | 175 passed (242)
Tests 33 failed | 3112 passed | 299 skipped (3450)
Start at 07:51:47
Duration 332.40s
✓ src/features/flyer/BulkImportSummary.test.tsx (4 tests) 1930ms
✓ should render all sections when data is provided for each 1381ms
✓ should not render sections with no data 334ms
❯ src/features/flyer/BulkImportSummary.test.tsx 4/4
❯ src/pages/admin/AdminPage.test.tsx 0/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts [queued]
Test Files 33 failed | 176 passed (242)
Tests 33 failed | 3114 passed | 299 skipped (3450)
Start at 07:51:47
Duration 332.51s
❯ src/features/flyer/BulkImportSummary.test.tsx 4/4
❯ src/pages/admin/AdminPage.test.tsx 1/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts [queued]
Test Files 33 failed | 176 passed (242)
Tests 33 failed | 3115 passed | 299 skipped (3450)
Start at 07:51:47
Duration 333.25s
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/pages/admin/AdminPage.test.tsx 1/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts [queued]
Test Files 33 failed | 176 passed (242)
Tests 33 failed | 3115 passed | 299 skipped (3450)
Start at 07:51:47
Duration 333.56s
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/pages/admin/AdminPage.test.tsx 1/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts [queued]
Test Files 33 failed | 176 passed (242)
Tests 33 failed | 3115 passed | 299 skipped (3450)
Start at 07:51:47
Duration 334.22s
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx [queued]
❯ src/pages/admin/AdminPage.test.tsx 2/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts [queued]
Test Files 33 failed | 176 passed (242)
Tests 33 failed | 3116 passed | 299 skipped (3450)
Start at 07:51:47
Duration 334.33s
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx [queued]
❯ src/pages/admin/AdminPage.test.tsx 3/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts [queued]
Test Files 33 failed | 176 passed (242)
Tests 33 failed | 3117 passed | 299 skipped (3450)
Start at 07:51:47
Duration 335.12s
✓ src/pages/admin/AdminPage.test.tsx (4 tests) 2465ms
✓ should render the main heading and description 966ms
✓ should render navigation links to other admin sections 1169ms
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx [queued]
❯ src/pages/admin/AdminPage.test.tsx 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts [queued]
Test Files 33 failed | 177 passed (242)
Tests 33 failed | 3118 passed | 299 skipped (3450)
Start at 07:51:47
Duration 335.25s
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts 0/3
❯ src/utils/rateLimit.test.ts [queued]
Test Files 33 failed | 177 passed (242)
Tests 33 failed | 3118 passed | 299 skipped (3453)
Start at 07:51:47
Duration 335.37s
✓ src/services/db/deals.db.test.ts (3 tests) 50ms
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts 3/3
❯ src/utils/rateLimit.test.ts [queued]
Test Files 33 failed | 178 passed (242)
Tests 33 failed | 3121 passed | 299 skipped (3453)
Start at 07:51:47
Duration 336.07s
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/db/deals.db.test.ts 3/3
❯ src/utils/rateLimit.test.ts [queued]
Test Files 33 failed | 178 passed (242)
Tests 33 failed | 3121 passed | 299 skipped (3453)
Start at 07:51:47
Duration 336.39s
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/rateLimit.test.ts [queued]
Test Files 33 failed | 178 passed (242)
Tests 33 failed | 3121 passed | 299 skipped (3453)
Start at 07:51:47
Duration 337.38s
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx 0/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/rateLimit.test.ts 1/7
Test Files 33 failed | 178 passed (242)
Tests 33 failed | 3122 passed | 299 skipped (3464)
Start at 07:51:47
Duration 337.48s
✓ src/utils/rateLimit.test.ts (7 tests) 39ms
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx [queued]
❯ src/config/queryClient.test.tsx 3/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/rateLimit.test.ts 7/7
Test Files 33 failed | 179 passed (242)
Tests 33 failed | 3131 passed | 299 skipped (3464)
Start at 07:51:47
Duration 337.68s
✓ src/config/queryClient.test.tsx (4 tests) 251ms
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx [queued]
❯ src/components/MapView.test.tsx 0/3
❯ src/config/queryClient.test.tsx 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/rateLimit.test.ts 7/7
Test Files 33 failed | 180 passed (242)
Tests 33 failed | 3132 passed | 299 skipped (3467)
Start at 07:51:47
Duration 337.98s
❯ src/components/AchievementsList.test.tsx [queued]
❯ src/components/FlyerCountDisplay.test.tsx 0/3
❯ src/components/MapView.test.tsx 0/3
❯ src/config/queryClient.test.tsx 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/rateLimit.test.ts 7/7
Test Files 33 failed | 180 passed (242)
Tests 33 failed | 3132 passed | 299 skipped (3470)
Start at 07:51:47
Duration 338.18s
❯ src/components/AchievementsList.test.tsx 0/2
❯ src/components/FlyerCountDisplay.test.tsx 0/3
❯ src/components/MapView.test.tsx 0/3
❯ src/config/queryClient.test.tsx 4/4
❯ src/routes/store.routes.test.ts [queued]
❯ src/utils/rateLimit.test.ts 7/7
Test Files 33 failed | 180 passed (242)
Tests 33 failed | 3132 passed | 299 skipped (3472)
Start at 07:51:47
Duration 338.28s
❯ src/components/AchievementsList.test.tsx 0/2
❯ src/components/FlyerCountDisplay.test.tsx 0/3
❯ src/components/MapView.test.tsx 2/3
❯ src/config/queryClient.test.tsx 4/4
❯ src/routes/store.routes.test.ts [queued]
Test Files 33 failed | 180 passed (242)
Tests 33 failed | 3134 passed | 299 skipped (3472)
Start at 07:51:47
Duration 338.60s
✓ src/components/MapView.test.tsx (3 tests) 550ms
❯ src/components/AchievementsList.test.tsx 0/2
❯ src/components/FlyerCountDisplay.test.tsx 0/3
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts [queued]
Test Files 33 failed | 181 passed (242)
Tests 33 failed | 3135 passed | 299 skipped (3472)
Start at 07:51:47
Duration 339.97s
✓ src/components/FlyerCountDisplay.test.tsx (3 tests) 1174ms
✓ should render an error message when an error is present 810ms
✓ src/components/AchievementsList.test.tsx (2 tests) 1504ms
✓ should render the list of achievements with correct details 1449ms
❯ src/components/AchievementsList.test.tsx 2/2
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts [queued]
Test Files 33 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 299 skipped (3472)
Start at 07:51:47
Duration 340.08s
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts [queued]
Test Files 33 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 299 skipped (3472)
Start at 07:51:47
Duration 340.80s
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts [queued]
Test Files 33 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 299 skipped (3472)
Start at 07:51:47
Duration 341.22s
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/middleware/fileUpload.middleware.test.ts [queued]
❯ src/providers/AppProviders.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts [queued]
Test Files 33 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 299 skipped (3472)
Start at 07:51:47
Duration 341.86s
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/middleware/fileUpload.middleware.test.ts [queued]
❯ src/providers/AppProviders.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts [queued]
Test Files 33 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 299 skipped (3472)
Start at 07:51:47
Duration 342.19s
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/middleware/fileUpload.middleware.test.ts [queued]
❯ src/providers/AppProviders.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts 0/6
❯ src/tests/integration/deals.integration.test.ts [queued]
Test Files 33 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 299 skipped (3478)
Start at 07:51:47
Duration 342.43s
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/middleware/fileUpload.middleware.test.ts [queued]
❯ src/providers/AppProviders.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts 0/6
❯ src/tests/integration/db.integration.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts [queued]
Test Files 33 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 299 skipped (3478)
Start at 07:51:47
Duration 342.54s
❯ src/tests/e2e/admin-authorization.e2e.test.ts (6 tests | 6 skipped) 168ms
↓ should return 403 Forbidden for a regular user trying to access 'GET' '/admin/stats'
↓ should return 403 Forbidden for a regular user trying to access 'GET' '/admin/users'
↓ should return 403 Forbidden for a regular user trying to access 'GET' '/admin/corrections'
↓ should return 403 Forbidden for a regular user trying to access 'POST' '/admin/corrections/1/approve'
↓ should return 403 Forbidden for a regular user trying to access 'POST' '/admin/trigger/daily-deal-check'
↓ should return 403 Forbidden for a regular user trying to access 'GET' '/admin/queues/status'
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx [queued]
❯ src/middleware/fileUpload.middleware.test.ts [queued]
❯ src/providers/AppProviders.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts 6/6
❯ src/tests/integration/db.integration.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 34 failed | 183 passed (242)
Tests 33 failed | 3140 passed | 305 skipped (3482)
Start at 07:51:47
Duration 343.17s
✓ src/middleware/fileUpload.middleware.test.ts (3 tests) 32ms
❯ src/components/Dashboard.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx 0/6
❯ src/middleware/fileUpload.middleware.test.ts 3/3
❯ src/providers/AppProviders.test.tsx 0/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts 6/6
❯ src/tests/integration/db.integration.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 34 failed | 184 passed (242)
Tests 33 failed | 3143 passed | 305 skipped (3493)
Start at 07:51:47
Duration 343.27s
✓ src/providers/AppProviders.test.tsx (2 tests) 165ms
❯ src/components/Dashboard.test.tsx 0/5
❯ src/components/WhatsNewModal.test.tsx 0/6
❯ src/middleware/fileUpload.middleware.test.ts 3/3
❯ src/providers/AppProviders.test.tsx 2/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/e2e/admin-authorization.e2e.test.ts 6/6
❯ src/tests/integration/db.integration.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 34 failed | 185 passed (242)
Tests 33 failed | 3145 passed | 305 skipped (3498)
Start at 07:51:47
Duration 343.47s
❯ src/components/Dashboard.test.tsx 0/5
❯ src/components/WhatsNewModal.test.tsx 0/6
❯ src/middleware/fileUpload.middleware.test.ts 3/3
❯ src/providers/AppProviders.test.tsx 2/2
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/db.integration.test.ts 0/2
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 34 failed | 185 passed (242)
Tests 33 failed | 3145 passed | 305 skipped (3500)
Start at 07:51:47
Duration 344.18s
❯ src/tests/integration/db.integration.test.ts (2 tests | 2 failed) 35ms
× should create a new user and have a corresponding profile 24ms
× should be able to find the created user by email 3ms
stdout | src/components/Dashboard.test.tsx > Dashboard Component > renders the dashboard title
TEST: Verifying dashboard title render
❯ src/components/Dashboard.test.tsx 0/5
❯ src/components/WhatsNewModal.test.tsx 1/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/db.integration.test.ts 2/2
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 35 failed | 185 passed (242)
Tests 35 failed | 3146 passed | 305 skipped (3500)
Start at 07:51:47
Duration 344.48s
stdout | src/components/Dashboard.test.tsx > Dashboard Component > renders the RecipeSuggester widget
TEST: Verifying RecipeSuggester presence
stdout | src/components/Dashboard.test.tsx > Dashboard Component > renders the FlyerCountDisplay widget within the "Your Flyers" section
TEST: Verifying FlyerCountDisplay presence and section title
❯ src/components/Dashboard.test.tsx 1/5
❯ src/components/WhatsNewModal.test.tsx 1/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/db.integration.test.ts 2/2
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 35 failed | 185 passed (242)
Tests 35 failed | 3147 passed | 305 skipped (3500)
Start at 07:51:47
Duration 344.78s
stdout | src/components/Dashboard.test.tsx > Dashboard Component > renders the Leaderboard widget in the sidebar area
TEST: Verifying Leaderboard presence
stdout | src/components/Dashboard.test.tsx > Dashboard Component > renders with the correct grid layout classes
TEST: Verifying layout classes
❯ src/components/Dashboard.test.tsx 3/5
❯ src/components/WhatsNewModal.test.tsx 2/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/db.integration.test.ts 2/2
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 35 failed | 185 passed (242)
Tests 35 failed | 3150 passed | 305 skipped (3500)
Start at 07:51:47
Duration 344.88s
✓ src/components/Dashboard.test.tsx (5 tests) 1454ms
✓ renders the dashboard title 968ms
✓ renders the FlyerCountDisplay widget within the "Your Flyers" section 317ms
❯ src/components/Dashboard.test.tsx 5/5
❯ src/components/WhatsNewModal.test.tsx 3/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/db.integration.test.ts 2/2
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 35 failed | 186 passed (242)
Tests 35 failed | 3153 passed | 305 skipped (3500)
Start at 07:51:47
Duration 345.09s
❯ src/components/Dashboard.test.tsx 5/5
❯ src/components/WhatsNewModal.test.tsx 3/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 35 failed | 186 passed (242)
Tests 35 failed | 3153 passed | 305 skipped (3500)
Start at 07:51:47
Duration 345.29s
✓ src/components/WhatsNewModal.test.tsx (6 tests) 2162ms
✓ should render correctly when isOpen is true 1191ms
✓ should call onClose when the "Got it!" button is clicked 366ms
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx 6/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 345.69s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/WhatsNewModal.test.tsx 6/6
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 345.95s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/timeout.test.ts [queued]
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 346.70s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts [queued]
❯ src/utils/timeout.test.ts [queued]
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 346.91s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts [queued]
❯ src/utils/timeout.test.ts [queued]
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 348.16s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts [queued]
❯ src/utils/timeout.test.ts [queued]
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 348.83s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts [queued]
❯ src/utils/timeout.test.ts [queued]
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 348.96s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts [queued]
❯ src/utils/timeout.test.ts [queued]
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3500)
Start at 07:51:47
Duration 349.78s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts [queued]
❯ src/utils/timeout.test.ts 0/3
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3156 passed | 305 skipped (3503)
Start at 07:51:47
Duration 349.99s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts [queued]
❯ src/utils/timeout.test.ts 1/3
Test Files 35 failed | 187 passed (242)
Tests 35 failed | 3157 passed | 305 skipped (3503)
Start at 07:51:47
Duration 350.20s
✓ src/utils/timeout.test.ts (3 tests) 44ms
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts 0/7
❯ src/utils/timeout.test.ts 3/3
Test Files 35 failed | 188 passed (242)
Tests 35 failed | 3159 passed | 305 skipped (3510)
Start at 07:51:47
Duration 350.43s
❯ src/components/AdminRoute.test.tsx [queued]
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts 1/7
❯ src/utils/timeout.test.ts 3/3
Test Files 35 failed | 188 passed (242)
Tests 35 failed | 3160 passed | 305 skipped (3510)
Start at 07:51:47
Duration 350.58s
✓ src/utils/objectUtils.test.ts (7 tests) 36ms
❯ src/components/AdminRoute.test.tsx 0/3
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/utils/objectUtils.test.ts 7/7
❯ src/utils/timeout.test.ts 3/3
Test Files 35 failed | 189 passed (242)
Tests 35 failed | 3166 passed | 305 skipped (3513)
Start at 07:51:47
Duration 350.79s
❯ src/components/AdminRoute.test.tsx 0/3
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/tests/integration/system.integration.test.ts [queued]
❯ src/utils/objectUtils.test.ts 7/7
Test Files 35 failed | 189 passed (242)
Tests 35 failed | 3166 passed | 305 skipped (3513)
Start at 07:51:47
Duration 350.96s
❯ src/components/AdminRoute.test.tsx 1/3
❯ src/components/AnonymousUserBanner.test.tsx [queued]
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/tests/integration/system.integration.test.ts [queued]
❯ src/utils/objectUtils.test.ts 7/7
Test Files 35 failed | 189 passed (242)
Tests 35 failed | 3167 passed | 305 skipped (3513)
Start at 07:51:47
Duration 351.50s
✓ src/components/AdminRoute.test.tsx (3 tests) 327ms
❯ src/components/AdminRoute.test.tsx 3/3
❯ src/components/AnonymousUserBanner.test.tsx 0/2
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx 1/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/tests/integration/system.integration.test.ts [queued]
❯ src/utils/objectUtils.test.ts 7/7
Test Files 35 failed | 190 passed (242)
Tests 35 failed | 3170 passed | 305 skipped (3518)
Start at 07:51:47
Duration 351.60s
✓ src/providers/ApiProvider.test.tsx (3 tests) 136ms
❯ src/components/AdminRoute.test.tsx 3/3
❯ src/components/AnonymousUserBanner.test.tsx 0/2
❯ src/components/DarkModeToggle.test.tsx [queued]
❯ src/providers/ApiProvider.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/tests/integration/system.integration.test.ts [queued]
Test Files 35 failed | 191 passed (242)
Tests 35 failed | 3172 passed | 305 skipped (3518)
Start at 07:51:47
Duration 351.75s
❯ src/components/AdminRoute.test.tsx 3/3
❯ src/components/AnonymousUserBanner.test.tsx 0/2
❯ src/components/DarkModeToggle.test.tsx 0/3
❯ src/providers/ApiProvider.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/tests/integration/system.integration.test.ts [queued]
Test Files 35 failed | 191 passed (242)
Tests 35 failed | 3172 passed | 305 skipped (3521)
Start at 07:51:47
Duration 351.95s
❯ src/components/AnonymousUserBanner.test.tsx 0/2
❯ src/components/DarkModeToggle.test.tsx 0/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 35 failed | 191 passed (242)
Tests 35 failed | 3172 passed | 305 skipped (3522)
Start at 07:51:47
Duration 352.69s
❯ src/components/AnonymousUserBanner.test.tsx 0/2
❯ src/components/DarkModeToggle.test.tsx 0/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 0/4
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 35 failed | 191 passed (242)
Tests 35 failed | 3172 passed | 305 skipped (3522)
Start at 07:51:47
Duration 352.87s
✓ src/components/AnonymousUserBanner.test.tsx (2 tests) 1314ms
✓ should render the banner with the correct text content and accessibility role 975ms
✓ should call onOpenProfile when the "sign up or log in" button is clicked 328ms
❯ src/components/AnonymousUserBanner.test.tsx 2/2
❯ src/components/DarkModeToggle.test.tsx 0/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 1/4
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 35 failed | 192 passed (242)
Tests 35 failed | 3174 passed | 306 skipped (3522)
Start at 07:51:47
Duration 353.30s
❯ src/tests/integration/deals.integration.test.ts (4 tests | 4 skipped) 10013ms
↓ should require authentication
↓ should return empty array for authenticated user with no watched items
↓ should reject invalid JWT token
↓ should reject missing Bearer prefix
✓ src/components/DarkModeToggle.test.tsx (3 tests) 1324ms
✓ should render in light mode state 919ms
✓ should render in dark mode state 310ms
❯ src/components/DarkModeToggle.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 4/4
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/stringUtils.test.ts [queued]
Test Files 36 failed | 193 passed (242)
Tests 35 failed | 3177 passed | 309 skipped (3522)
Start at 07:51:47
Duration 353.51s
❯ src/components/DarkModeToggle.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/deals.integration.test.ts 4/4
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/stringUtils.test.ts [queued]
Test Files 36 failed | 193 passed (242)
Tests 35 failed | 3177 passed | 309 skipped (3522)
Start at 07:51:47
Duration 354.23s
❯ src/components/UnitSystemToggle.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/stringUtils.test.ts [queued]
Test Files 36 failed | 193 passed (242)
Tests 35 failed | 3177 passed | 309 skipped (3522)
Start at 07:51:47
Duration 354.94s
❯ src/components/UnitSystemToggle.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/brandService.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/stringUtils.test.ts [queued]
Test Files 36 failed | 193 passed (242)
Tests 35 failed | 3177 passed | 309 skipped (3522)
Start at 07:51:47
Duration 355.17s
❯ src/components/UnitSystemToggle.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/brandService.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/stringUtils.test.ts 0/9
Test Files 36 failed | 193 passed (242)
Tests 35 failed | 3177 passed | 309 skipped (3531)
Start at 07:51:47
Duration 356.02s
✓ src/utils/stringUtils.test.ts (9 tests) 39ms
❯ src/components/UnitSystemToggle.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/brandService.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/stringUtils.test.ts 9/9
Test Files 36 failed | 194 passed (242)
Tests 35 failed | 3186 passed | 309 skipped (3531)
Start at 07:51:47
Duration 356.33s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx [queued]
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/brandService.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 36 failed | 194 passed (242)
Tests 35 failed | 3186 passed | 309 skipped (3531)
Start at 07:51:47
Duration 357.01s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx [queued]
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/brandService.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 36 failed | 194 passed (242)
Tests 35 failed | 3186 passed | 309 skipped (3531)
Start at 07:51:47
Duration 358.04s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx [queued]
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/brandService.test.ts 0/2
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 36 failed | 194 passed (242)
Tests 35 failed | 3186 passed | 309 skipped (3533)
Start at 07:51:47
Duration 358.16s
✓ src/services/brandService.test.ts (2 tests) 46ms
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx 0/3
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/services/brandService.test.ts 2/2
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 36 failed | 195 passed (242)
Tests 35 failed | 3188 passed | 309 skipped (3536)
Start at 07:51:47
Duration 358.76s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx 0/3
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts [queued]
Test Files 36 failed | 195 passed (242)
Tests 35 failed | 3188 passed | 309 skipped (3536)
Start at 07:51:47
Duration 358.86s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx 0/3
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts [queued]
Test Files 36 failed | 195 passed (242)
Tests 35 failed | 3188 passed | 309 skipped (3536)
Start at 07:51:47
Duration 358.96s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx 0/3
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts [queued]
Test Files 36 failed | 195 passed (242)
Tests 35 failed | 3188 passed | 309 skipped (3536)
Start at 07:51:47
Duration 359.96s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx 2/3
❯ src/components/UserMenuSkeleton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts [queued]
Test Files 36 failed | 195 passed (242)
Tests 35 failed | 3190 passed | 309 skipped (3536)
Start at 07:51:47
Duration 360.38s
✓ src/components/UnitSystemToggle.test.tsx (3 tests) 1609ms
✓ should render correctly for imperial system 864ms
✓ should render correctly for metric system 424ms
✓ should call onToggle when the toggle is clicked 311ms
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx 3/3
❯ src/components/UserMenuSkeleton.test.tsx 0/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts [queued]
Test Files 36 failed | 196 passed (242)
Tests 35 failed | 3191 passed | 309 skipped (3541)
Start at 07:51:47
Duration 360.58s
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx [queued]
❯ src/components/UnitSystemToggle.test.tsx 3/3
❯ src/components/UserMenuSkeleton.test.tsx 0/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts 0/7
Test Files 36 failed | 196 passed (242)
Tests 35 failed | 3191 passed | 309 skipped (3548)
Start at 07:51:47
Duration 360.78s
✓ src/utils/formatUtils.test.ts (7 tests) 72ms
❯ src/components/ErrorDisplay.test.tsx [queued]
❯ src/components/Footer.test.tsx 0/1
❯ src/components/UnitSystemToggle.test.tsx 3/3
❯ src/components/UserMenuSkeleton.test.tsx 0/5
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts 7/7
Test Files 36 failed | 197 passed (242)
Tests 35 failed | 3198 passed | 309 skipped (3549)
Start at 07:51:47
Duration 360.88s
✓ src/components/UserMenuSkeleton.test.tsx (5 tests) 335ms
❯ src/components/ErrorDisplay.test.tsx 0/3
❯ src/components/Footer.test.tsx 0/1
❯ src/components/UnitSystemToggle.test.tsx 3/3
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
❯ src/utils/formatUtils.test.ts 7/7
Test Files 36 failed | 198 passed (242)
Tests 35 failed | 3203 passed | 309 skipped (3552)
Start at 07:51:47
Duration 360.98s
✓ src/components/Footer.test.tsx (1 test) 166ms
❯ src/components/ErrorDisplay.test.tsx 0/3
❯ src/components/StatCard.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 36 failed | 199 passed (242)
Tests 35 failed | 3204 passed | 309 skipped (3552)
Start at 07:51:47
Duration 361.49s
❯ src/components/ErrorDisplay.test.tsx 0/3
❯ src/components/StatCard.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 36 failed | 199 passed (242)
Tests 35 failed | 3204 passed | 309 skipped (3552)
Start at 07:51:47
Duration 362.12s
✓ src/components/ErrorDisplay.test.tsx (3 tests) 795ms
✓ should render the error message when provided 651ms
❯ src/components/StatCard.test.tsx [queued]
❯ src/features/flyer/SampleDataButton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 0/1
Test Files 36 failed | 200 passed (242)
Tests 35 failed | 3207 passed | 309 skipped (3552)
Start at 07:51:47
Duration 362.97s
stdout | src/tests/integration/system.integration.test.ts > System API Routes Integration Tests
┌─────────┐
│ (index) │
├─────────┤
└─────────┘
❯ src/components/StatCard.test.tsx [queued]
❯ src/features/flyer/SampleDataButton.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
❯ src/tests/integration/system.integration.test.ts 1/1
Test Files 36 failed | 200 passed (242)
Tests 35 failed | 3207 passed | 310 skipped (3552)
Start at 07:51:47
Duration 363.51s
❯ src/tests/integration/system.integration.test.ts (1 test | 1 skipped) 10744ms
↓ should return a status for PM2
❯ src/components/LoadingSpinner.test.tsx [queued]
❯ src/components/StatCard.test.tsx 0/2
❯ src/features/flyer/SampleDataButton.test.tsx [queued]
❯ src/pages/admin/components/StatCard.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 37 failed | 200 passed (242)
Tests 35 failed | 3207 passed | 310 skipped (3554)
Start at 07:51:47
Duration 364.26s
✓ src/components/StatCard.test.tsx (2 tests) 179ms
❯ src/components/LoadingSpinner.test.tsx [queued]
❯ src/features/flyer/SampleDataButton.test.tsx 0/2
❯ src/pages/admin/components/StatCard.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 37 failed | 201 passed (242)
Tests 35 failed | 3209 passed | 310 skipped (3556)
Start at 07:51:47
Duration 364.46s
❯ src/components/LoadingSpinner.test.tsx [queued]
❯ src/features/flyer/SampleDataButton.test.tsx 1/2
❯ src/pages/admin/components/StatCard.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 37 failed | 201 passed (242)
Tests 35 failed | 3210 passed | 310 skipped (3556)
Start at 07:51:47
Duration 365.09s
✓ src/features/flyer/SampleDataButton.test.tsx (2 tests) 618ms
✓ should render the button with the correct text 455ms
❯ src/components/LoadingSpinner.test.tsx 0/2
❯ src/pages/admin/components/StatCard.test.tsx [queued]
❯ src/routes/store.routes.test.ts [queued]
Test Files 37 failed | 202 passed (242)
Tests 35 failed | 3211 passed | 310 skipped (3558)
Start at 07:51:47
Duration 365.19s
❯ src/components/LoadingSpinner.test.tsx 1/2
❯ src/pages/admin/components/StatCard.test.tsx 0/2
❯ src/routes/store.routes.test.ts [queued]
Test Files 37 failed | 202 passed (242)
Tests 35 failed | 3212 passed | 310 skipped (3560)
Start at 07:51:47
Duration 365.29s
✓ src/components/LoadingSpinner.test.tsx (2 tests) 114ms
✓ src/pages/admin/components/StatCard.test.tsx (2 tests) 127ms
⎯⎯⎯⎯⎯⎯ Failed Suites 25 ⎯⎯⎯⎯⎯⎯
FAIL src/routes/store.routes.test.ts [ src/routes/store.routes.test.ts ]
TypeError: () => ({
getAllStores: __vite_ssr_import_0__.vi.fn(),
getStoreById: __vite_ssr_import_0__.vi.fn(),
...<omitted>...}) is not a constructor
❯ src/routes/store.routes.ts:18:19
16|
17| // Initialize repositories
18| const storeRepo = new StoreRepository();
| ^
19| const storeLocationRepo = new StoreLocationRepository();
20| const addressRepo = new AddressRepository();
❯ src/routes/store.routes.test.ts:45:1
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/63]⎯
FAIL src/tests/e2e/admin-authorization.e2e.test.ts > Admin Route Authorization
TypeError: Failed to parse URL from /api/auth/register
❯ createAndLoginUser src/tests/utils/testHelpers.ts:76:5
74| } else {
75| // Use apiClient for E2E tests (hits the external URL via fetch)
76| await apiClient.registerUser(email, password, fullName);
| ^
77|
78| if (options.role === 'admin') {
❯ src/tests/e2e/admin-authorization.e2e.test.ts:17:29
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ createAndLoginUser src/tests/utils/testHelpers.ts:76:21
❯ src/tests/e2e/admin-authorization.e2e.test.ts:17:35
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/63]⎯
FAIL src/tests/e2e/auth.e2e.test.ts > Authentication E2E Flow
TypeError: Failed to parse URL from /api/auth/register
❯ createAndLoginUser src/tests/utils/testHelpers.ts:76:5
74| } else {
75| // Use apiClient for E2E tests (hits the external URL via fetch)
76| await apiClient.registerUser(email, password, fullName);
| ^
77|
78| if (options.role === 'admin') {
❯ src/tests/e2e/auth.e2e.test.ts:21:31
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ createAndLoginUser src/tests/utils/testHelpers.ts:76:21
❯ src/tests/e2e/auth.e2e.test.ts:21:37
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/63]⎯
FAIL src/tests/integration/admin.integration.test.ts > Admin API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/admin.integration.test.ts:25:3
23| const createdFlyerIds: number[] = [];
24|
25| beforeAll(async () => {
| ^
26| vi.stubEnv('FRONTEND_URL', 'https://example.com');
27| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/63]⎯
FAIL src/tests/integration/ai.integration.test.ts > AI API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/ai.integration.test.ts:30:3
28| let testUserId: string;
29|
30| beforeAll(async () => {
| ^
31| vi.stubEnv('FRONTEND_URL', 'https://example.com');
32| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/63]⎯
FAIL src/tests/integration/auth.integration.test.ts > Authentication API Integration
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/auth.integration.test.ts:24:3
22| const createdUserIds: string[] = [];
23|
24| beforeAll(async () => {
| ^
25| vi.stubEnv('FRONTEND_URL', 'https://example.com');
26| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/63]⎯
FAIL src/tests/integration/budget.integration.test.ts > Budget API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/budget.integration.test.ts:21:3
19| const createdBudgetIds: number[] = [];
20|
21| beforeAll(async () => {
| ^
22| vi.stubEnv('FRONTEND_URL', 'https://example.com');
23| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/63]⎯
FAIL src/tests/integration/data-integrity.integration.test.ts > Data Integrity Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/data-integrity.integration.test.ts:20:3
18| let adminUser: UserProfile;
19|
20| beforeAll(async () => {
| ^
21| vi.stubEnv('FRONTEND_URL', 'https://example.com');
22| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/63]⎯
FAIL src/tests/integration/data-integrity.integration.test.ts > Data Integrity Integration Tests
TypeError: Cannot read properties of undefined (reading 'user')
❯ src/tests/integration/data-integrity.integration.test.ts:39:85
37| vi.unstubAllEnvs();
38| // Clean up admin user
39| await getPool().query('DELETE FROM public.users WHERE user_id = $1…
| ^
40| });
41|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/63]⎯
FAIL src/tests/integration/deals.integration.test.ts > Deals API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/deals.integration.test.ts:19:3
17| const createdUserIds: string[] = [];
18|
19| beforeAll(async () => {
| ^
20| vi.stubEnv('FRONTEND_URL', 'https://example.com');
21| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/63]⎯
FAIL src/tests/integration/edge-cases.integration.test.ts > Edge Cases Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/edge-cases.integration.test.ts:24:3
22| const createdShoppingListIds: number[] = [];
23|
24| beforeAll(async () => {
| ^
25| vi.stubEnv('FRONTEND_URL', 'https://example.com');
26| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/63]⎯
FAIL src/tests/integration/flyer-processing.integration.test.ts > Flyer Processing Background Job Integration Test
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/flyer-processing.integration.test.ts:130:3
128| const originalFrontendUrl = process.env.FRONTEND_URL;
129|
130| beforeAll(async () => {
| ^
131| // FIX: Stub FRONTEND_URL to ensure valid absolute URLs (http://..…
132| // for the database, satisfying the 'url_check' constraint.
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/63]⎯
FAIL src/tests/integration/flyer-processing.integration.test.ts > Flyer Processing Background Job Integration Test
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/flyer-processing.integration.test.ts:209:3
207| });
208|
209| afterAll(async () => {
| ^
210| // Restore original value
211| process.env.FRONTEND_URL = originalFrontendUrl;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/63]⎯
FAIL src/tests/integration/flyer.integration.test.ts > Public Flyer API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/flyer.integration.test.ts:27:3
25|
26| // Fetch flyers once before all tests in this suite to use in subseq…
27| beforeAll(async () => {
| ^
28| vi.stubEnv('FRONTEND_URL', 'https://example.com');
29| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/63]⎯
FAIL src/tests/integration/gamification.integration.test.ts > Gamification Flow Integration Test
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/gamification.integration.test.ts:45:3
43| let workersModule: typeof import('../../services/workers.server');
44|
45| beforeAll(async () => {
| ^
46| // Stub environment variables for URL generation in the background…
47| // This needs to be in beforeAll to ensure it's set before any cod…
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/63]⎯
FAIL src/tests/integration/inventory.integration.test.ts > Inventory/Expiry Integration Tests (/api/inventory)
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/inventory.integration.test.ts:30:3
28| const getUniqueUnit = () => `test-unit-${Date.now()}-${unitCounter++…
29|
30| beforeAll(async () => {
| ^
31| vi.stubEnv('FRONTEND_URL', 'https://example.com');
32| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/63]⎯
FAIL src/tests/integration/inventory.integration.test.ts > Inventory/Expiry Integration Tests (/api/inventory)
TypeError: Cannot read properties of undefined (reading 'user')
❯ src/tests/integration/inventory.integration.test.ts:80:16
78| // Clean up user alert settings (correct table: expiry_alerts)
79| await pool.query('DELETE FROM public.expiry_alerts WHERE user_id =…
80| testUser.user.user_id,
| ^
81| ]);
82|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/63]⎯
FAIL src/tests/integration/notification.integration.test.ts > Notification API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/notification.integration.test.ts:19:3
17| const createdUserIds: string[] = [];
18|
19| beforeAll(async () => {
| ^
20| vi.stubEnv('FRONTEND_URL', 'https://example.com');
21| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/63]⎯
FAIL src/tests/integration/price.integration.test.ts > Price History API Integration Test (/api/price-history)
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/price.integration.test.ts:30:3
28| const createdStoreLocations: CreatedStoreLocation[] = [];
29|
30| beforeAll(async () => {
| ^
31| vi.stubEnv('FRONTEND_URL', 'https://example.com');
32| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/63]⎯
FAIL src/tests/integration/public.routes.integration.test.ts > Public API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/public.routes.integration.test.ts:38:3
36| const createdStoreLocations: CreatedStoreLocation[] = [];
37|
38| beforeAll(async () => {
| ^
39| vi.stubEnv('FRONTEND_URL', 'https://example.com');
40| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/63]⎯
FAIL src/tests/integration/reactions.integration.test.ts > Reactions API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/reactions.integration.test.ts:22:3
20| const createdReactionIds: number[] = [];
21|
22| beforeAll(async () => {
| ^
23| vi.stubEnv('FRONTEND_URL', 'https://example.com');
24| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/63]⎯
FAIL src/tests/integration/receipt.integration.test.ts > Receipt Processing Integration Tests (/api/receipts)
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/receipt.integration.test.ts:71:3
69| const createdStoreLocations: CreatedStoreLocation[] = [];
70|
71| beforeAll(async () => {
| ^
72| vi.stubEnv('FRONTEND_URL', 'https://example.com');
73| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/63]⎯
FAIL src/tests/integration/recipe.integration.test.ts > Recipe API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/recipe.integration.test.ts:23:3
21| const createdRecipeIds: number[] = [];
22|
23| beforeAll(async () => {
| ^
24| vi.stubEnv('FRONTEND_URL', 'https://example.com');
25| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/63]⎯
FAIL src/tests/integration/server.integration.test.ts > Server Initialization Smoke Test
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/server.integration.test.ts:12:3
10| let app: any;
11|
12| beforeAll(async () => {
| ^
13| vi.stubEnv('FRONTEND_URL', 'https://example.com');
14| app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[24/63]⎯
FAIL src/tests/integration/system.integration.test.ts > System API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/system.integration.test.ts:12:3
10| let app: any;
11|
12| beforeAll(async () => {
| ^
13| vi.stubEnv('FRONTEND_URL', 'https://example.com');
14| app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[25/63]⎯
FAIL src/tests/integration/upc.integration.test.ts > UPC Scanning Integration Tests (/api/upc)
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/upc.integration.test.ts:27:3
25| const createdProductIds: number[] = [];
26|
27| beforeAll(async () => {
| ^
28| vi.stubEnv('FRONTEND_URL', 'https://example.com');
29| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[26/63]⎯
FAIL src/tests/integration/user.integration.test.ts > User API Routes Integration Tests
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/user.integration.test.ts:24:3
22| // Before any tests run, create a new user and log them in.
23| // The token will be used for all subsequent API calls in this test …
24| beforeAll(async () => {
| ^
25| vi.stubEnv('FRONTEND_URL', 'https://example.com');
26| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[27/63]⎯
FAIL src/tests/integration/user.routes.integration.test.ts > User Routes Integration Tests (/api/users)
Error: Hook timed out in 10000ms.
If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout".
❯ src/tests/integration/user.routes.integration.test.ts:19:3
17|
18| // Authenticate once before all tests in this suite to get a JWT.
19| beforeAll(async () => {
| ^
20| vi.stubEnv('FRONTEND_URL', 'https://example.com');
21| const app = (await import('../../../server')).default;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[28/63]⎯
⎯⎯⎯⎯⎯⎯ Failed Tests 35 ⎯⎯⎯⎯⎯⎯⎯
FAIL src/tests/e2e/admin-dashboard.e2e.test.ts > E2E Admin Dashboard Flow > should allow an admin to log in and access dashboard features
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/admin-dashboard.e2e.test.ts:29:30
27| it('should allow an admin to log in and access dashboard features', …
28| // 1. Register a new user (initially a regular user)
29| const registerResponse = await apiClient.registerUser(
| ^
30| adminEmail,
31| adminPassword,
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/admin-dashboard.e2e.test.ts:29:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[29/63]⎯
FAIL src/tests/e2e/budget-journey.e2e.test.ts > E2E Budget Management Journey > should complete budget journey: Register -> Create Budget -> Track Spending -> Update -> Delete
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/budget-journey.e2e.test.ts:86:30
84| it('should complete budget journey: Register -> Create Budget -> Tra…
85| // Step 1: Register a new user
86| const registerResponse = await apiClient.registerUser(
| ^
87| userEmail,
88| userPassword,
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/budget-journey.e2e.test.ts:86:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[30/63]⎯
FAIL src/tests/e2e/deals-journey.e2e.test.ts > E2E Deals and Price Tracking Journey > should complete deals journey: Register -> Watch Items -> View Prices -> Check Deals
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/deals-journey.e2e.test.ts:96:30
94| it('should complete deals journey: Register -> Watch Items -> View P…
95| // Step 1: Register a new user
96| const registerResponse = await apiClient.registerUser(
| ^
97| userEmail,
98| userPassword,
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/deals-journey.e2e.test.ts:96:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[31/63]⎯
FAIL src/tests/e2e/flyer-upload.e2e.test.ts > E2E Flyer Upload and Processing Workflow > should allow a user to upload a flyer and wait for processing to complete
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/flyer-upload.e2e.test.ts:36:30
34| it('should allow a user to upload a flyer and wait for processing to…
35| // 1. Register a new user
36| const registerResponse = await apiClient.registerUser(
| ^
37| userEmail,
38| userPassword,
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/flyer-upload.e2e.test.ts:36:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[32/63]⎯
FAIL src/tests/e2e/inventory-journey.e2e.test.ts > E2E Inventory/Expiry Management Journey > should complete inventory journey: Register -> Add Items -> Track Expiry -> Consume -> Configure Alerts
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/inventory-journey.e2e.test.ts:79:30
77| it('should complete inventory journey: Register -> Add Items -> Trac…
78| // Step 1: Register a new user
79| const registerResponse = await apiClient.registerUser(
| ^
80| userEmail,
81| userPassword,
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/inventory-journey.e2e.test.ts:79:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[33/63]⎯
FAIL src/tests/e2e/receipt-journey.e2e.test.ts > E2E Receipt Processing Journey > should complete receipt journey: Register -> Upload -> View -> Manage Items -> Add to Inventory
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/receipt-journey.e2e.test.ts:95:30
93| it('should complete receipt journey: Register -> Upload -> View -> M…
94| // Step 1: Register a new user
95| const registerResponse = await apiClient.registerUser(
| ^
96| userEmail,
97| userPassword,
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/receipt-journey.e2e.test.ts:95:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[34/63]⎯
FAIL src/tests/e2e/upc-journey.e2e.test.ts > E2E UPC Scanning Journey > should complete full UPC scanning journey: Register -> Scan -> Lookup -> History -> Stats
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/upc-journey.e2e.test.ts:74:30
72| it('should complete full UPC scanning journey: Register -> Scan -> L…
73| // Step 1: Register a new user
74| const registerResponse = await apiClient.registerUser(userEmail, u…
| ^
75| expect(registerResponse.status).toBe(201);
76|
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/upc-journey.e2e.test.ts:74:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[35/63]⎯
FAIL src/tests/e2e/user-journey.e2e.test.ts > E2E User Journey > should complete a full user lifecycle: Register -> Login -> Manage List -> Delete Account
TypeError: Failed to parse URL from /api/auth/register
❯ src/tests/e2e/user-journey.e2e.test.ts:31:30
29| it('should complete a full user lifecycle: Register -> Login -> Mana…
30| // 1. Register a new user
31| const registerResponse = await apiClient.registerUser(userEmail, u…
| ^
32|
33| expect(registerResponse.status).toBe(201);
Caused by: TypeError: Invalid URL
❯ publicPost src/services/apiClient.ts:186:10
❯ Module.registerUser src/services/apiClient.ts:829:10
❯ src/tests/e2e/user-journey.e2e.test.ts:31:46
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { code: 'ERR_INVALID_URL', input: '/api/auth/register' }
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[36/63]⎯
FAIL src/services/db/flyer.db.test.ts > Flyer DB Service > getFlyerById > should return a flyer if found
AssertionError: expected "vi.fn()" to be called with arguments: [ …(2) ]
Received:
1st vi.fn() call:
[
- "SELECT * FROM public.flyers WHERE flyer_id = $1",
+ "
+ SELECT
+ f.*,
+ json_build_object(
+ 'store_id', s.store_id,
+ 'name', s.name,
+ 'logo_url', s.logo_url,
+ 'locations', COALESCE(
+ (SELECT json_agg(
+ json_build_object(
+ 'address_line_1', a.address_line_1,
+ 'city', a.city,
+ 'province_state', a.province_state,
+ 'postal_code', a.postal_code
+ )
+ )
+ FROM public.store_locations sl
+ JOIN public.addresses a ON sl.address_id = a.address_id
+ WHERE sl.store_id = s.store_id),
+ '[]'::json
+ )
+ ) as store
+ FROM public.flyers f
+ LEFT JOIN public.stores s ON f.store_id = s.store_id
+ WHERE f.flyer_id = $1
+ ",
[
123,
],
]
Number of calls: 1
❯ src/services/db/flyer.db.test.ts:644:38
642|
643| expect(result).toEqual(mockFlyer);
644| expect(mockPoolInstance.query).toHaveBeenCalledWith(
| ^
645| 'SELECT * FROM public.flyers WHERE flyer_id = $1',
646| [123],
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[37/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > createStore > should create a store with just a name
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:41:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[38/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > createStore > should create a store with name and logo URL
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:56:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[39/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > createStore > should create a store with created_by user ID
TypeError: Cannot read properties of undefined (reading 'user_id')
❯ src/services/db/store.db.test.ts:77:41
75| ['test@example.com', 'hash', 'Test User'],
76| );
77| const userId = userResult.rows[0].user_id;
| ^
78|
79| const storeId = await repo.createStore('User Store', logger, nul…
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[40/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > createStore > should reject duplicate store names
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:92:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[41/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > getStoreById > should retrieve a store by ID
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:101:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[42/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > getAllStores > should retrieve all stores
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:120:19
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[43/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > updateStore > should update store name
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:140:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[44/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > updateStore > should update store logo URL
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:150:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[45/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > updateStore > should update both name and logo
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:164:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[46/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > deleteStore > should delete a store
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:185:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[47/63]⎯
FAIL src/services/db/store.db.test.ts > StoreRepository > searchStoresByName > should find stores by partial name match
FAIL src/services/db/store.db.test.ts > StoreRepository > searchStoresByName > should be case-insensitive
FAIL src/services/db/store.db.test.ts > StoreRepository > searchStoresByName > should return empty array for no matches
FAIL src/services/db/store.db.test.ts > StoreRepository > searchStoresByName > should limit results to 10 by default
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/store.db.test.ts:206:19
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[48/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > createStoreLocation > should link a store to an address
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:75:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[49/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > createStoreLocation > should prevent duplicate store-address pairs
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:109:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[50/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > getLocationsByStoreId > should retrieve all locations for a store
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:134:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[51/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > getLocationsByStoreId > should return empty array for store with no locations
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:180:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[52/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > getStoreWithLocations > should retrieve store with all its locations
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:191:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[53/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > getStoreWithLocations > should work for stores with no locations
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:218:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[54/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > deleteStoreLocation > should delete a store location link
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:229:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[55/63]⎯
FAIL src/services/db/storeLocation.db.test.ts > StoreLocationRepository > updateStoreLocation > should update a store location to point to a different address
DatabaseError: Failed to create store.
❯ handleDbError src/services/db/errors.db.ts:198:9
196| // Use the consistent DatabaseError from the processing errors modul…
197| const errorMessage = options.defaultMessage || `Failed to perform op…
198| throw new ProcessingDatabaseError(errorMessage);
| ^
199| }
200|
❯ StoreRepository.createStore src/services/db/store.db.ts:40:7
❯ src/services/db/storeLocation.db.test.ts:269:23
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[56/63]⎯
FAIL src/tests/integration/db.integration.test.ts > Database Service Integration Tests > should create a new user and have a corresponding profile
FAIL src/tests/integration/db.integration.test.ts > Database Service Integration Tests > should be able to find the created user by email
TypeError: __vite_ssr_import_1__.userRepo.createUser is not a function
❯ src/tests/integration/db.integration.test.ts:23:34
21|
22| // Act: Call the createUser function
23| testUser = await db.userRepo.createUser(
| ^
24| testUserEmail,
25| passwordHash,
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[57/63]⎯
FAIL src/tests/integration/shopping-list.integration.test.ts > Shopping List DB Service Tests > should create and retrieve a shopping list for a user
TypeError: __vite_ssr_import_1__.userRepo.createUser is not a function
❯ src/tests/integration/shopping-list.integration.test.ts:15:43
13| const email = `list-user-${Date.now()}@example.com`;
14| const passwordHash = await bcrypt.hash('password123', 10);
15| const userprofile = await db.userRepo.createUser(
| ^
16| email,
17| passwordHash,
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[58/63]⎯
FAIL src/tests/integration/shopping-list.integration.test.ts > Shopping List DB Service Tests > should not retrieve shopping lists belonging to another user
TypeError: __vite_ssr_import_1__.userRepo.createUser is not a function
❯ src/tests/integration/shopping-list.integration.test.ts:53:43
51| const email = `privacy-user-${Date.now()}@example.com`;
52| const passwordHash = await bcrypt.hash('password123', 10);
53| const userprofile = await db.userRepo.createUser(
| ^
54| email,
55| passwordHash,
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[59/63]⎯
Test Files 38 failed | 204 passed (242)
Tests 35 failed | 3215 passed | 310 skipped (3560)
Start at 07:51:47
Duration 365.44s (transform 298.87s, setup 509.98s, import 589.63s, tests 508.17s, environment 604.34s)
npm notice
npm notice New major version of npm available! 10.8.2 -> 11.7.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.7.0
npm notice To update run: npm install -g npm@11.7.0
npm notice