# Instructions

- Following Playwright test failed.
- Explain why, be concise, respect Playwright best practices.
- Provide a snippet of code with the fix, if possible.

# Test info

- Name: journal.spec.ts >> user can cook recipe and see stock deducted correctly
- Location: tests/journal.spec.ts:40:5

# Error details

```
Test timeout of 30000ms exceeded.
```

```
Error: page.waitForTimeout: Test timeout of 30000ms exceeded.
```

# Page snapshot

```yaml
- generic [ref=e4]:
  - generic [ref=e6]:
    - generic [ref=e8]:
      - generic [ref=e9]:
        - img [ref=e10]
        - generic [ref=e12]: 9 мая
      - generic [ref=e14]:
        - generic:
          - generic [ref=e17]:
            - generic [ref=e20]:
              - generic [ref=e21]: пн
              - generic [ref=e22]: "27"
            - generic [ref=e25]:
              - generic [ref=e26]: вт
              - generic [ref=e27]: "28"
            - generic [ref=e30]:
              - generic [ref=e31]: ср
              - generic [ref=e32]: "29"
            - generic [ref=e35]:
              - generic [ref=e36]: чт
              - generic [ref=e37]: "30"
            - generic [ref=e40]:
              - generic [ref=e41]: пт
              - generic [ref=e42]: "1"
            - generic [ref=e45]:
              - generic [ref=e46]: сб
              - generic [ref=e47]: "2"
            - generic [ref=e50]:
              - generic [ref=e51]: вс
              - generic [ref=e52]: "3"
          - generic [ref=e54]:
            - generic [ref=e57]:
              - generic [ref=e58]: пн
              - generic [ref=e59]: "4"
            - generic [ref=e62]:
              - generic [ref=e63]: вт
              - generic [ref=e64]: "5"
            - generic [ref=e67]:
              - generic [ref=e68]: ср
              - generic [ref=e69]: "6"
            - generic [ref=e72]:
              - generic [ref=e73]: чт
              - generic [ref=e74]: "7"
            - generic [ref=e77]:
              - generic [ref=e78]: пт
              - generic [ref=e79]: "8"
            - generic [ref=e80]:
              - generic [ref=e82]:
                - generic [ref=e83]: сб
                - generic [ref=e84]: "9"
              - img [ref=e86]
            - generic [ref=e90]:
              - generic [ref=e91]: вс
              - generic [ref=e92]: "10"
          - generic [ref=e94]:
            - generic [ref=e97]:
              - generic [ref=e98]: пн
              - generic [ref=e99]: "11"
            - generic [ref=e102]:
              - generic [ref=e103]: вт
              - generic [ref=e104]: "12"
            - generic [ref=e107]:
              - generic [ref=e108]: ср
              - generic [ref=e109]: "13"
            - generic [ref=e112]:
              - generic [ref=e113]: чт
              - generic [ref=e114]: "14"
            - generic [ref=e117]:
              - generic [ref=e118]: пт
              - generic [ref=e119]: "15"
            - generic [ref=e122]:
              - generic [ref=e123]: сб
              - generic [ref=e124]: "16"
            - generic [ref=e127]:
              - generic [ref=e128]: вс
              - generic [ref=e129]: "17"
    - generic [ref=e132]:
      - generic [ref=e134]:
        - region "Завтрак" [ref=e135]:
          - generic [ref=e137]: Завтрак
          - generic [ref=e139]:
            - generic [ref=e140]: Что готовили?
            - button "Отметить блюдо" [ref=e141]:
              - generic [ref=e142]:
                - img [ref=e143]
                - generic [ref=e145]: Отметить блюдо
        - region "Обед" [ref=e146]:
          - generic [ref=e148]: Обед
          - generic [ref=e150]:
            - generic [ref=e151]: Что готовили?
            - button "Отметить блюдо" [ref=e152]:
              - generic [ref=e153]:
                - img [ref=e154]
                - generic [ref=e156]: Отметить блюдо
        - region "Ужин" [ref=e157]:
          - generic [ref=e159]: Ужин
          - generic [ref=e161]:
            - generic [ref=e162]: Что готовили?
            - button "Отметить блюдо" [ref=e163]:
              - generic [ref=e164]:
                - img [ref=e165]
                - generic [ref=e167]: Отметить блюдо
        - region "Прочее" [ref=e168]:
          - generic [ref=e170]: Прочее
          - generic [ref=e172]:
            - generic [ref=e173]: Что готовили?
            - button "Отметить блюдо" [ref=e174]:
              - generic [ref=e175]:
                - img [ref=e176]
                - generic [ref=e178]: Отметить блюдо
      - generic [ref=e180]:
        - region "Завтрак" [ref=e181]:
          - generic [ref=e183]: Завтрак
          - generic [ref=e185]:
            - generic [ref=e186]: Что планируете?
            - button "Добавить блюдо" [ref=e187]:
              - generic [ref=e188]:
                - img [ref=e189]
                - generic [ref=e191]: Добавить блюдо
        - region "Обед" [ref=e192]:
          - generic [ref=e194]: Обед
          - generic [ref=e196]:
            - generic [ref=e197]: Что планируете?
            - button "Добавить блюдо" [ref=e198]:
              - generic [ref=e199]:
                - img [ref=e200]
                - generic [ref=e202]: Добавить блюдо
        - region "Ужин" [ref=e203]:
          - generic [ref=e204]:
            - generic [ref=e205]: Ужин
            - button "Добавить блюдо" [ref=e206]:
              - img [ref=e208]
          - region "Тестовое блюдо для проверки запасов" [ref=e211]:
            - button "Тестовое блюдо для проверки запасов" [ref=e212] [cursor=pointer]:
              - generic "Тестовое блюдо для проверки запасов" [ref=e213]:
                - generic [ref=e214]:
                  - generic [ref=e215]:
                    - img [ref=e218]
                    - img [ref=e222]
                  - generic [ref=e224]:
                    - generic [ref=e225]: Тестовое блюдо для проверки запасов
                    - generic [ref=e226]: 2 порции
        - region "Прочее" [ref=e227]:
          - generic [ref=e229]: Прочее
          - generic [ref=e231]:
            - generic [ref=e232]: Что планируете?
            - button "Добавить блюдо" [ref=e233]:
              - generic [ref=e234]:
                - img [ref=e235]
                - generic [ref=e237]: Добавить блюдо
      - generic [ref=e239]:
        - region "Завтрак" [ref=e240]:
          - generic [ref=e242]: Завтрак
          - generic [ref=e244]:
            - generic [ref=e245]: Что планируете?
            - button "Добавить блюдо" [ref=e246]:
              - generic [ref=e247]:
                - img [ref=e248]
                - generic [ref=e250]: Добавить блюдо
        - region "Обед" [ref=e251]:
          - generic [ref=e253]: Обед
          - generic [ref=e255]:
            - generic [ref=e256]: Что планируете?
            - button "Добавить блюдо" [ref=e257]:
              - generic [ref=e258]:
                - img [ref=e259]
                - generic [ref=e261]: Добавить блюдо
        - region "Ужин" [ref=e262]:
          - generic [ref=e264]: Ужин
          - generic [ref=e266]:
            - generic [ref=e267]: Что планируете?
            - button "Добавить блюдо" [ref=e268]:
              - generic [ref=e269]:
                - img [ref=e270]
                - generic [ref=e272]: Добавить блюдо
        - region "Прочее" [ref=e273]:
          - generic [ref=e275]: Прочее
          - generic [ref=e277]:
            - generic [ref=e278]: Что планируете?
            - button "Добавить блюдо" [ref=e279]:
              - generic [ref=e280]:
                - img [ref=e281]
                - generic [ref=e283]: Добавить блюдо
  - navigation [ref=e284]:
    - button "Рецепты" [ref=e285] [cursor=pointer]:
      - img [ref=e286]
    - button "Журнал" [ref=e288] [cursor=pointer]:
      - img [ref=e289]
    - button "Есть дома" [ref=e291] [cursor=pointer]:
      - img [ref=e292]
    - button "Покупки" [ref=e294] [cursor=pointer]:
      - img [ref=e295]
    - button "Профиль" [ref=e297] [cursor=pointer]:
      - img [ref=e298]
```

# Test source

```ts
  1  | import { Page, expect } from "@playwright/test";
  2  | 
  3  | /**
  4  |  * Navigate to the leftovers section (Есть дома)
  5  |  *
  6  |  * Note: This uses position-based navigation instead of accessible name because
  7  |  * immediately after certain operations (like dismissing alerts), the navigation
  8  |  * buttons may not be reliably clickable by name. Position-based navigation with
  9  |  * force click and animation delay ensures consistent behavior.
  10 |  */
  11 | export default async function goToLeftovers(page: Page): Promise<void> {
  12 |   // Click the leftovers navigation button (3rd button in the nav)
  13 |   // The buttons are: Рецепты, Журнал, Есть дома, Покупки, Профиль
  14 |   const navigation = page.getByRole("navigation");
  15 |   const navButtons = navigation.getByRole("button");
  16 |   const leftoverButton = navButtons.nth(2); // 0-indexed, so 2 is the 3rd button (Есть дома)
  17 | 
  18 |   // Dismiss any alerts that might be blocking the navigation
  19 |   const alert = page.getByRole("alert");
  20 |   const alertVisible = await alert.isVisible().catch(() => false);
  21 |   if (alertVisible) {
  22 |     const closeButton = alert.getByRole("button", { name: "Close" });
  23 |     await closeButton.click().catch(() => {});
> 24 |     await page.waitForTimeout(300);
     |                ^ Error: page.waitForTimeout: Test timeout of 30000ms exceeded.
  25 |   }
  26 | 
  27 |   // Wait for button to be visible and clickable
  28 |   await leftoverButton.waitFor({ state: "visible", timeout: 10000 });
  29 |   await page.waitForTimeout(300); // Allow animations to settle
  30 |   await leftoverButton.click({ force: true });
  31 | 
  32 |   // Wait for navigation to leftovers page
  33 |   await page.waitForURL("**/leftovers**", { timeout: 10000 });
  34 | 
  35 |   // Optionally verify the page heading is visible
  36 |   try {
  37 |     await expect(page.getByText("Есть дома")).toBeVisible({ timeout: 5000 });
  38 |   } catch (error) {
  39 |     // If the heading isn't visible, that's ok - we successfully navigated to the leftovers page
  40 |     console.log("Leftovers heading not visible, but navigation successful");
  41 |   }
  42 | }
  43 | 
```