
[1m[46m RUN [49m[22m [36mv4.1.2 [39m[90mF:/Coding/MeshiTrack/packages/web[39m

 [31mΓ¥»[39m src/app/(dashboard)/products/__tests__/ImportDialog.test.tsx [2m([22m[2m11 tests[22m[2m | [22m[31m1 failed[39m[2m)[22m[33m 844[2mms[22m[39m
     [32mΓ£ô[39m renders nothing when closed[32m 31[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders Import Products title when open [33m 324[2mms[22m[39m
     [32mΓ£ô[39m shows file chooser button[32m 48[2mms[22m[39m
[31m     [31m├ù[31m shows error when upload clicked without file[39m[32m 94[2mms[22m[39m
     [32mΓ£ô[39m shows file name after selection[32m 52[2mms[22m[39m
     [32mΓ£ô[39m uploads file and shows success result[32m 77[2mms[22m[39m
     [32mΓ£ô[39m shows errors in result[32m 53[2mms[22m[39m
     [32mΓ£ô[39m shows error on import failure[32m 36[2mms[22m[39m
     [32mΓ£ô[39m shows fallback error on non-Error rejection[32m 45[2mms[22m[39m
     [32mΓ£ô[39m closes dialog via Cancel button[32m 18[2mms[22m[39m
     [32mΓ£ô[39m closes dialog via Close button after result[32m 59[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[33m 321[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/organizer/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 241[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/library/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 260[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/activity/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 261[2mms[22m[39m
 [32mΓ£ô[39m src/components/__tests__/ThemeProvider.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[33m 326[2mms[22m[39m
 [32mΓ£ô[39m src/app/__tests__/page.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[33m 528[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders Sign In link to /login [33m 435[2mms[22m[39m
 [32mΓ£ô[39m src/components/__tests__/TopBar.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[33m 1133[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders title and subtitle [33m 799[2mms[22m[39m
 [32mΓ£ô[39m src/components/__tests__/Sidebar.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[33m 1249[2mms[22m[39m
 [32mΓ£ô[39m src/components/__tests__/ui.test.tsx [2m([22m[2m11 tests[22m[2m)[22m[33m 1049[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m uses custom size [33m 483[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/schedule/__tests__/page.test.tsx [2m([22m[2m14 tests[22m[2m)[22m[33m 1292[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/recipes/new/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[33m 825[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders editor when household exists [33m 490[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/recipes/[id]/edit/__tests__/page.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[33m 772[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders editor when recipe loads [33m 388[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/dashboard/__tests__/page.test.tsx [2m([22m[2m13 tests[22m[2m)[22m[33m 1915[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders heading [33m 357[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/recipes/[id]/__tests__/page.test.tsx [2m([22m[2m11 tests[22m[2m)[22m[33m 1605[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders recipe details [33m 372[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/recipes/__tests__/page.test.tsx [2m([22m[2m22 tests[22m[2m)[22m[33m 2277[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders recipe list when household exists [33m 307[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/pantry/__tests__/page.test.tsx [2m([22m[2m15 tests[22m[2m)[22m[33m 2377[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows loading skeleton when session is loading [33m 417[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders pantry items when household exists [33m 324[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/recipes/__tests__/RecipeEditor.test.tsx [2m([22m[2m9 tests[22m[2m)[22m[33m 2849[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders create form by default [33m 727[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m submits create form [33m 367[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows error when create fails [33m 365[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/products/__tests__/page.test.tsx [2m([22m[2m11 tests[22m[2m)[22m[33m 3157[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders products when household exists [33m 437[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m filters by search input with debounce [33m 500[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m filters by category dropdown [33m 578[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m deletes product on confirm [33m 387[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows error when delete fails [33m 356[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/__tests__/ActivityTab.test.tsx [2m([22m[2m18 tests[22m[2m)[22m[33m 3222[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders Spending Summary and Cabinet Activity sections [33m 454[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows clear filters button when filter applied and clears them [33m 757[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m loads more events when Load more is clicked [33m 307[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/__tests__/OrganizerTab.test.tsx [2m([22m[2m20 tests[22m[2m)[22m[33m 3588[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows fill organizer and fill history sections [33m 303[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows preview result and executes fill [33m 828[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicine-prices/__tests__/page.test.tsx [2m([22m[2m15 tests[22m[2m)[22m[33m 4527[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m loads price history when medicine selected [33m 890[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows validation error in form when required fields missing [33m 570[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m records a price successfully [33m 381[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows Load more button in price history [33m 357[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m dismisses price history error [33m 333[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m changes medicine search, notes and insurance price fields in form [33m 341[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles Record Price form [33m 408[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/purchases/__tests__/page.test.tsx [2m([22m[2m26 tests[22m[2m)[22m[33m 5626[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles the create form [33m 610[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows validation error when no store selected [33m 447[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows validation error when no items [33m 335[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m creates a purchase successfully [33m 483[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m cancels the create form [33m 383[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m adds and removes purchase items [33m 669[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m selects a medicine and product in the form [33m 349[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/settings/__tests__/page.test.tsx [2m([22m[2m20 tests[22m[2m)[22m[33m 7860[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows loading skeleton when loading [33m 317[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows account section always [33m 846[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m creates a household on form submit [33m 542[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows error when create fails [33m 324[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m allows editing the household name [33m 883[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows error when name update fails [33m 780[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows fallback error when non-Error thrown on create household [33m 492[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows fallback error when non-Error thrown on join household [33m 510[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows fallback error when non-Error thrown on name update [33m 764[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows validation error when saving empty name [33m 391[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/__tests__/LibraryTab.test.tsx [2m([22m[2m14 tests[22m[2m)[22m[33m 4938[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows loading skeleton initially [33m 355[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m dismisses error on Dismiss click [33m 677[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles Add Medicine form [33m 304[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m creates medicine and refreshes list [33m 1182[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m cancels CreateMedicineForm with internal Cancel button [33m 437[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows fallback error when non-Error is thrown on create medicine [33m 785[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/stores/__tests__/page.test.tsx [2m([22m[2m22 tests[22m[2m)[22m[33m 5992[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows Add Store form when button clicked [33m 802[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m cancels the create store form [33m 481[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m cancels the edit store form [33m 663[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles a preset tag and adds a custom tag [33m 1172[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/regimens/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 245[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/__tests__/layout.test.tsx [2m([22m[2m1 test[22m[2m)[22m[32m 148[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/cabinet/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 256[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/__tests__/RegimensTab.test.tsx [2m([22m[2m32 tests[22m[2m)[22m[33m 7208[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m dismisses error [33m 703[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles new regimen form [33m 416[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m saves edited regimen [33m 326[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows validation error when submitting regimen form with no medications [33m 358[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m cancels edit form and hides it [33m 639[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m adds a medication in the regimen form [33m 338[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m changes medicine, dosage, and unit in medication row [33m 432[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows fallback error when non-Error thrown on create regimen [33m 358[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/refills/__tests__/page.test.tsx [2m([22m[2m26 tests[22m[2m)[22m[33m 7168[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows New List button and toggles form [33m 753[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m creates a new refill list [33m 327[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows refill list and can select it [33m 415[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m updates a refill list status [33m 489[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m adds checked items to cabinet [33m 485[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m cancels create list form [33m 543[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m closes the refill list detail panel [33m 328[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m dismisses panel-level error [33m 420[2mms[22m[39m
 [32mΓ£ô[39m src/lib/__tests__/useApi.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 106[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/api-client.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 51[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/products.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 33[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/__tests__/loading.test.tsx [2m([22m[2m1 test[22m[2m)[22m[32m 83[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/__tests__/CabinetTab.test.tsx [2m([22m[2m29 tests[22m[2m)[22m[33m 7516[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m shows empty state when no items [33m 415[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m dismisses error on Dismiss click [33m 574[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles Add to Cabinet form [33m 309[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m adjusts item quantity [33m 344[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m expands medicine in summary view [33m 311[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m submits AddToCabinetForm successfully [33m 410[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m submits AddToCabinetForm with expiration date and notes [33m 426[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m changes quantity and unit in AddToCabinetForm [33m 365[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m switches from detail view back to summary view [33m 428[2mms[22m[39m
 [32mΓ£ô[39m src/app/(dashboard)/medicines/[id]/__tests__/page.test.tsx [2m([22m[2m34 tests[22m[2m)[22m[33m 7648[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles Add Product form [33m 1012[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m toggles edit medicine form [33m 482[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m saves medicine edit [33m 483[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m changes fields in the product edit inline form [33m 365[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m changes manufacturer, concentration and notes fields in product form [33m 405[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m changes all fields in edit medicine form [33m 308[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m dismisses error in detail page [33m 377[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/medicines.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 20[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/cabinet-events.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 17[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/cabinet.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 21[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/stores.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 15[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/pantry.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 26[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/purchases.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 23[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/regimens.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 16[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/refills.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 20[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/recipes.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 22[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/organizer.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 19[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/medicine-prices.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32mΓ£ô[39m src/services/__tests__/households.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [31mΓ¥»[39m src/app/(dashboard)/products/__tests__/ProductModal.test.tsx [2m([22m[2m18 tests[22m[2m | [22m[31m4 failed[39m[2m)[22m[33m 9210[2mms[22m[39m
     [32mΓ£ô[39m renders nothing when closed[32m 51[2mms[22m[39m
     [33m[2mΓ£ô[22m[39m renders Add Product title by default [33m 597[2mms[22m[39m
     [32mΓ£ô[39m renders custom title when provided[32m 129[2mms[22m[39m
     [32mΓ£ô[39m renders Edit Product title when initial is provided[32m 206[2mms[22m[39m
     [32mΓ£ô[39m pre-fills form fields from initial[32m 211[2mms[22m[39m
     [32mΓ£ô[39m shows error when name is empty and form submitted[32m 293[2mms[22m[39m
     [32mΓ£ô[39m shows error when serving size is empty[32m 277[2mms[22m[39m
     [32mΓ£ô[39m shows error when nutrition fields are missing[32m 252[2mms[22m[39m
[31m     [31m├ù[31m calls onSave with correct data on valid submit[39m[33m 2329[2mms[22m[39m
[31m     [31m├ù[31m closes modal after successful save[39m[33m 1589[2mms[22m[39m
[31m     [31m├ù[31m shows error when onSave rejects[39m[33m 1519[2mms[22m[39m
[31m     [31m├ù[31m shows fallback error when onSave throws non-Error[39m[33m 1337[2mms[22m[39m
     [32mΓ£ô[39m closes when Cancel is clicked[32m 43[2mms[22m[39m
     [32mΓ£ô[39m closes when backdrop is clicked[32m 42[2mms[22m[39m
     [32mΓ£ô[39m Lookup button is disabled when barcode is empty[32m 41[2mms[22m[39m
     [32mΓ£ô[39m barcode lookup fills form on success[32m 103[2mms[22m[39m
     [32mΓ£ô[39m barcode lookup shows not found[32m 90[2mms[22m[39m
     [32mΓ£ô[39m barcode lookup shows error on failure[32m 95[2mms[22m[39m

[2m Test Files [22m [1m[31m2 failed[39m[22m[2m | [22m[1m[32m48 passed[39m[22m[90m (50)[39m
[2m      Tests [22m [1m[31m5 failed[39m[22m[2m | [22m[1m[32m571 passed[39m[22m[90m (576)[39m
[2m   Start at [22m 19:43:06
[2m   Duration [22m 21.16s[2m (transform 21.52s, setup 60.20s, import 45.55s, tests 98.93s, environment 336.64s)[22m

