[1m[46m RUN [49m[22m [36mv4.1.2 [39m[90mF:/Coding/MeshiTrack/packages/web[39m node.exe : [90mstderr[2m | src/app/(dashboard)/shopping-lists/__tests__/page.test.tsx[2m > [22m[2mShoppingListsPage[2m > [22m[2mloads and displays shopping lists At line:1 char:1 + & "C:\nodejs/node.exe" "C:\nodejs/node_modules/npm/bin/npx-cli.js" vi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: ([90mstderr[2m... shopping lists:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError [22m[39mEach child in a list should have a unique "key" prop. Check the render method of `ShoppingListsPage`. See https://react.dev/link/warning-keys for more information. [32m✓[39m src/components/__tests__/ThemeProvider.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[32m 102[2mms[22m[39m [32m✓[39m src/app/__tests__/page.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 198[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 136[2mms[22m[39m [32m✓[39m src/app/(dashboard)/products/__tests__/ImportDialog.test.tsx [2m([22m[2m11 tests[22m[2m)[22m[33m 353[2mms[22m[39m [32m✓[39m src/components/__tests__/ui.test.tsx [2m([22m[2m11 tests[22m[2m)[22m[32m 284[2mms[22m[39m [90mstderr[2m | src/app/(dashboard)/dashboard/__tests__/page.test.tsx[2m > [22m[2mDashboardPage[2m > [22m[2mshows "good shape" message when no critical alerts [22m[39mEach child in a list should have a unique "key" prop. Check the render method of `DashboardPage`. See https://react.dev/link/warning-keys for more information. [32m✓[39m src/components/__tests__/TopBar.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[33m 331[2mms[22m[39m [32m✓[39m src/components/__tests__/Sidebar.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[33m 340[2mms[22m[39m [32m✓[39m src/app/(dashboard)/dashboard/__tests__/page.test.tsx [2m([22m[2m13 tests[22m[2m)[22m[33m 401[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/schedule/__tests__/page.test.tsx [2m([22m[2m14 tests[22m[2m)[22m[33m 388[2mms[22m[39m [32m✓[39m src/app/(dashboard)/shopping-lists/__tests__/page.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[33m 685[2mms[22m[39m [33m[2m✓[22m[39m toggles create list modal and submits [33m 332[2mms[22m[39m [90mstderr[2m | src/app/(dashboard)/refills/__tests__/page.test.tsx[2m > [22m[2mRefillsPage[2m > [22m[2mrenders Refills heading when householdId exists [22m[39mAn update to AlertsPanel inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to AlertsPanel inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to RefillListsPanel inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to RefillListsPanel inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act [90mstderr[2m | src/app/(dashboard)/medicine-prices/__tests__/page.test.tsx[2m > [22m[2mMedicinePricesPage[2m > [22m[2mrenders Medicine Prices heading when householdId exists [22m[39mAn update to MedicinePricesContent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to MedicinePricesContent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act [32m✓[39m src/app/(dashboard)/recipes/new/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 216[2mms[22m[39m [32m✓[39m src/app/(dashboard)/recipes/[id]/edit/__tests__/page.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[32m 285[2mms[22m[39m [32m✓[39m src/app/(dashboard)/recipes/[id]/__tests__/page.test.tsx [2m([22m[2m11 tests[22m[2m)[22m[33m 556[2mms[22m[39m [32m✓[39m src/app/(dashboard)/recipes/__tests__/page.test.tsx [2m([22m[2m22 tests[22m[2m)[22m[33m 801[2mms[22m[39m [32m✓[39m src/app/(dashboard)/pantry/__tests__/page.test.tsx [2m([22m[2m15 tests[22m[2m)[22m[33m 809[2mms[22m[39m [90mstderr[2m | src/app/(dashboard)/medicines/__tests__/ActivityTab.test.tsx[2m > [22m[2mActivityTab[2m > [22m[2mloads more events when Load more is clicked [22m[39mEncountered two children with the same key, `ev-1`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. [32m✓[39m src/app/(dashboard)/recipes/__tests__/RecipeEditor.test.tsx [2m([22m[2m9 tests[22m[2m)[22m[33m 891[2mms[22m[39m [90mstderr[2m | src/app/(dashboard)/medicine-prices/__tests__/page.test.tsx[2m > [22m[2mMedicinePricesPage[2m > [22m[2mshows Load more button in price history [22m[39mEncountered two children with the same key, `pr-1`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. [31m❯[39m src/app/(dashboard)/shopping-lists/prices/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m | [22m[31m3 failed[39m[2m)[22m[33m 2108[2mms[22m[39m [31m [31m×[31m renders loading initially[39m[32m 62[2mms[22m[39m [31m [31m×[31m loads and displays analytics[39m[33m 1022[2mms[22m[39m [31m [31m×[31m handles fetch errors gracefully[39m[33m 1020[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/__tests__/ActivityTab.test.tsx [2m([22m[2m18 tests[22m[2m)[22m[33m 940[2mms[22m[39m [32m✓[39m src/app/(dashboard)/stores/__tests__/page.test.tsx [2m([22m[2m22 tests[22m[2m)[22m[33m 2353[2mms[22m[39m [33m[2m✓[22m[39m toggles a preset tag and adds a custom tag [33m 491[2mms[22m[39m [32m✓[39m src/app/(dashboard)/purchases/__tests__/page.test.tsx [2m([22m[2m26 tests[22m[2m)[22m[33m 2386[2mms[22m[39m [33m[2m✓[22m[39m adds and removes purchase items [33m 304[2mms[22m[39m [32m✓[39m src/app/(dashboard)/products/__tests__/page.test.tsx [2m([22m[2m11 tests[22m[2m)[22m[33m 1243[2mms[22m[39m [33m[2m✓[22m[39m filters by search input with debounce [33m 442[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/__tests__/OrganizerTab.test.tsx [2m([22m[2m20 tests[22m[2m)[22m[33m 1354[2mms[22m[39m [90mstderr[2m | src/app/(dashboard)/medicines/__tests__/LibraryTab.test.tsx[2m > [22m[2mLibraryTab[2m > [22m[2mfilters medicines by search, category, and form [22m[39mAn update to LibraryTab inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to LibraryTab inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to LibraryTab inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to LibraryTab inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to LibraryTab inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act [32m✓[39m src/app/(dashboard)/medicine-prices/__tests__/page.test.tsx [2m([22m[2m15 tests[22m[2m)[22m[33m 1433[2mms[22m[39m [90mstderr[2m | src/app/(dashboard)/medicines/__tests__/CabinetTab.test.tsx[2m > [22m[2mCabinetTab[2m > [22m[2mchanges quantity and unit in AddToCabinetForm [22m[39mAn update to AddToCabinetForm inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act [32m✓[39m src/app/(dashboard)/products/__tests__/ProductModal.test.tsx [2m([22m[2m18 tests[22m[2m)[22m[33m 1767[2mms[22m[39m [33m[2m✓[22m[39m calls onSave with correct data on valid submit [33m 342[2mms[22m[39m [31m❯[39m src/app/(dashboard)/shopping-lists/[id]/__tests__/page.test.tsx [2m([22m[2m5 tests[22m[2m | [22m[31m4 failed[39m[2m)[22m[33m 4156[2mms[22m[39m [32m✓[39m renders loading initially[32m 59[2mms[22m[39m [31m [31m×[31m loads and displays the list[39m[33m 1012[2mms[22m[39m [31m [31m×[31m toggles an item check[39m[33m 1047[2mms[22m[39m [31m [31m×[31m adds a new item to the list[39m[33m 1010[2mms[22m[39m [31m [31m×[31m completes the trip and syncs to pantry[39m[33m 1023[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/__tests__/LibraryTab.test.tsx [2m([22m[2m14 tests[22m[2m)[22m[33m 2143[2mms[22m[39m [33m[2m✓[22m[39m creates medicine and refreshes list [33m 495[2mms[22m[39m [33m[2m✓[22m[39m shows fallback error when non-Error is thrown on create medicine [33m 448[2mms[22m[39m [32m✓[39m src/app/(dashboard)/settings/__tests__/page.test.tsx [2m([22m[2m20 tests[22m[2m)[22m[33m 3791[2mms[22m[39m [33m[2m✓[22m[39m creates a household on form submit [33m 303[2mms[22m[39m [33m[2m✓[22m[39m allows editing the household name [33m 505[2mms[22m[39m [33m[2m✓[22m[39m shows error when name update fails [33m 460[2mms[22m[39m [33m[2m✓[22m[39m shows fallback error when non-Error thrown on name update [33m 324[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/__tests__/RegimensTab.test.tsx [2m([22m[2m32 tests[22m[2m)[22m[33m 3041[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/__tests__/CabinetTab.test.tsx [2m([22m[2m29 tests[22m[2m)[22m[33m 3127[2mms[22m[39m [32m✓[39m src/app/(dashboard)/refills/__tests__/page.test.tsx [2m([22m[2m26 tests[22m[2m)[22m[33m 3150[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/[id]/__tests__/page.test.tsx [2m([22m[2m34 tests[22m[2m)[22m[33m 3835[2mms[22m[39m [33m[2m✓[22m[39m toggles Add Product form [33m 367[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/organizer/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 103[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/activity/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 104[2mms[22m[39m [32m✓[39m src/lib/__tests__/useApi.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 41[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/library/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 97[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/regimens/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 92[2mms[22m[39m [32m✓[39m src/app/(dashboard)/medicines/cabinet/__tests__/page.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 102[2mms[22m[39m [90mstdout[2m | src/lib/useShoppingListSync.test.ts[2m > [22m[2museShoppingListSync[2m > [22m[2mhandles incoming item_updated messages correctly [22m[39m🛒 Connected to shopping list real-time sync: list1 [32m✓[39m src/app/(dashboard)/__tests__/loading.test.tsx [2m([22m[2m1 test[22m[2m)[22m[32m 37[2mms[22m[39m [90mstdout[2m | src/lib/useShoppingListSync.test.ts[2m > [22m[2museShoppingListSync[2m > [22m[2mbroadcasts toggle item messages when connected [22m[39m🛒 Connected to shopping list real-time sync: list1 [90mstdout[2m | src/lib/useShoppingListSync.test.ts[2m > [22m[2museShoppingListSync[2m > [22m[2mhandles disconnect and reconnect backoff [22m[39m🛒 Connected to shopping list real-time sync: list1 🔌 Sync severed: test 🔄 Attempting sync handshake reconnect (1/5)... [32m✓[39m src/lib/useShoppingListSync.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 44[2mms[22m[39m [32m✓[39m src/app/(dashboard)/__tests__/layout.test.tsx [2m([22m[2m1 test[22m[2m)[22m[32m 40[2mms[22m[39m [32m✓[39m src/services/__tests__/api-client.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 20[2mms[22m[39m [32m✓[39m src/services/__tests__/products.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 19[2mms[22m[39m [32m✓[39m src/services/__tests__/organizer.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/meal-plans.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/__tests__/medicines.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 16[2mms[22m[39m [32m✓[39m src/services/__tests__/regimens.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/__tests__/pantry.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/__tests__/stores.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/__tests__/cabinet-events.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 14[2mms[22m[39m [32m✓[39m src/services/__tests__/cabinet.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/__tests__/purchases.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 14[2mms[22m[39m [32m✓[39m src/services/__tests__/refills.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 13[2mms[22m[39m [32m✓[39m src/services/shopping-lists.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 8[2mms[22m[39m [32m✓[39m src/services/nutrition-targets.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m [32m✓[39m src/services/prices.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m [32m✓[39m src/services/__tests__/medicine-prices.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/__tests__/recipes.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 12[2mms[22m[39m [32m✓[39m src/services/__tests__/households.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 7[2mms[22m[39m [31m⎯⎯⎯⎯⎯⎯⎯[39m[1m[41m Failed Tests 7 [49m[22m[31m⎯⎯⎯⎯⎯⎯⎯[39m [41m[1m FAIL [22m[49m src/app/(dashboard)/shopping-lists/prices/__tests__/page.test.tsx[2m > [22mShoppingListPricesPage[2m > [22mrenders loading initially [31m[1mTestingLibraryElementError[22m: Unable to find an element with the text: Price Intelligence. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style [36m
[31m [36m