# 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: src/manager/tests/e2e/booking/booking-edit.spec.ts >> should reschedule the cancellation of an active booking from a custom date to immediately
- Location: src/manager/tests/e2e/booking/booking-edit.spec.ts:33:7

# Error details

```
Test timeout of 60000ms exceeded.
```

```
Error: locator.waitFor: Test timeout of 60000ms exceeded.
Call log:
  - waiting for locator('.vue-notification-wrapper').filter({ hasText: 'Reschedule successful' }) to be visible

```

# Page snapshot

```yaml
- generic [active] [ref=e1]:
  - generic [ref=e6]:
    - banner [ref=e7]:
      - generic [ref=e8]:
        - button [ref=e9] [cursor=pointer]:
          - generic [ref=e11]: 󰍜
        - link [ref=e12] [cursor=pointer]:
          - /url: /
        - button "AS" [ref=e14] [cursor=pointer]:
          - generic [ref=e18]: AS
          - generic:
            - text: 󰗊 󰅀
            - text: 󰷖 󰍃
    - navigation [ref=e19]:
      - list [ref=e21]:
        - generic [ref=e23]: Dashboard
        - link "Tasks" [ref=e24] [cursor=pointer]:
          - /url: /tasks
          - img [ref=e27]
          - generic [ref=e30]: Tasks
        - link "Facility maps" [ref=e31] [cursor=pointer]:
          - /url: /facility-map
          - generic [ref=e33]: 󰧾
          - generic [ref=e35]: Facility maps
        - link "Analytics" [ref=e36] [cursor=pointer]:
          - /url: /dashboard
          - generic [ref=e38]: 󱖶
          - generic [ref=e40]: Analytics
        - generic [ref=e42]: Sales
        - link "Bookings" [ref=e43] [cursor=pointer]:
          - /url: /bookings
          - generic [ref=e45]: 󰇡
          - generic [ref=e47]: Bookings
        - link "Customers" [ref=e48] [cursor=pointer]:
          - /url: /customers
          - generic [ref=e50]: 󰀏
          - generic [ref=e52]: Customers
        - link "Invoices" [ref=e53] [cursor=pointer]:
          - /url: /invoices
          - generic [ref=e55]: 󰷉
          - generic [ref=e57]: Invoices
        - link "Credit notes" [ref=e58] [cursor=pointer]:
          - /url: /credit-notes
          - img [ref=e61]
          - generic [ref=e64]: Credit notes
        - link "Units" [ref=e65] [cursor=pointer]:
          - /url: /units
          - generic [ref=e67]: 󰍀
          - generic [ref=e69]: Units
        - generic [ref=e71]: Site Management
        - link "Locations" [ref=e72] [cursor=pointer]:
          - /url: /locations
          - generic [ref=e74]: 󰟙
          - generic [ref=e76]: Locations
        - link "Unit types" [ref=e77] [cursor=pointer]:
          - /url: /unit-types
          - generic [ref=e79]: 󰆧
          - generic [ref=e81]: Unit types
        - link "Protection Plans" [ref=e82] [cursor=pointer]:
          - /url: /insurances
          - generic [ref=e84]: 󰳌
          - generic [ref=e86]: Protection Plans
        - link "Deposits" [ref=e87] [cursor=pointer]:
          - /url: /deposits
          - generic [ref=e89]: 󱙆
          - generic [ref=e91]: Deposits
        - link "Products" [ref=e92] [cursor=pointer]:
          - /url: /products
          - generic [ref=e94]: 󰄑
          - generic [ref=e96]: Products
        - link "Discounts" [ref=e97] [cursor=pointer]:
          - /url: /discounts
          - generic [ref=e99]: 󰓼
          - generic [ref=e101]: Discounts
        - generic [ref=e102]:
          - option "Emails" [ref=e103] [cursor=pointer]:
            - generic [ref=e105]: 󰻨
            - generic [ref=e107]: Emails
            - generic [ref=e109]: 󰅀
          - text: 󱡰 󰁥
        - generic [ref=e111]: Admin
        - link "Integrations" [ref=e112] [cursor=pointer]:
          - /url: /connected-apps
          - generic [ref=e114]: 󱘖
          - generic [ref=e116]: Integrations
        - link "User & Roles" [ref=e117] [cursor=pointer]:
          - /url: /users
          - generic [ref=e119]: 󰭘
          - generic [ref=e121]: User & Roles
        - generic [ref=e122]:
          - option "Booking Portal" [ref=e123] [cursor=pointer]:
            - generic [ref=e125]: 󱃁
            - generic [ref=e127]: Booking Portal
            - generic [ref=e129]: 󰅀
          - text: 󰖟 󰟙
        - generic [ref=e130]:
          - option "JaneAI" [ref=e131] [cursor=pointer]:
            - generic [ref=e133]: 󱙺
            - generic [ref=e135]: JaneAI
            - generic [ref=e137]: 󰅀
          - text: 󱜹
        - generic [ref=e139]: Feedback
        - link "Voting Portal" [ref=e140] [cursor=pointer]:
          - /url: /voting-portal
          - generic [ref=e142]: 󰔔
          - generic [ref=e144]: Voting Portal
    - main [ref=e145]:
      - generic [ref=e146]:
        - generic [ref=e149]:
          - link [ref=e151] [cursor=pointer]:
            - /url: /bookings
            - generic [ref=e153]: 󰁍
          - generic [ref=e156]:
            - generic [ref=e157]: Bookings
            - generic [ref=e158]:
              - heading "Booking 1747-8686-73" [level=1] [ref=e159]:
                - generic [ref=e160]: Booking 1747-8686-73
              - generic [ref=e164]: Cancelled
        - generic [ref=e167]:
          - generic [ref=e168]:
            - generic [ref=e170]:
              - heading "General" [level=3] [ref=e174]
              - table [ref=e177]:
                - rowgroup [ref=e178]:
                  - row "Customer Jonni Snowi" [ref=e179]:
                    - rowheader "Customer" [ref=e180]
                    - cell "Jonni Snowi" [ref=e181]:
                      - link "Jonni Snowi" [ref=e184] [cursor=pointer]:
                        - /url: /customers/3000300030
                        - generic [ref=e186]: Jonni Snowi
                  - row "Location Vienna South" [ref=e187]:
                    - rowheader "Location" [ref=e188]
                    - cell "Vienna South" [ref=e189]:
                      - link "Vienna South" [ref=e192] [cursor=pointer]:
                        - /url: /locations/561465857
                        - generic [ref=e194]: Vienna South
                  - row "Created at 9 Apr 2026" [ref=e195]:
                    - rowheader "Created at" [ref=e196]
                    - cell "9 Apr 2026" [ref=e197]:
                      - generic [ref=e199]: 9 Apr 2026
                  - row "Move-in 9 Apr 2026" [ref=e200]:
                    - rowheader "Move-in" [ref=e201]
                    - cell "9 Apr 2026" [ref=e202]:
                      - generic [ref=e204]: 9 Apr 2026
                  - row "Move-out 9 Apr 2026" [ref=e205]:
                    - rowheader "Move-out" [ref=e206]
                    - cell "9 Apr 2026" [ref=e207]:
                      - generic [ref=e209]: 9 Apr 2026
                  - row "Cancelled at 9 Apr 2026, 10:20" [ref=e210]:
                    - rowheader "Cancelled at" [ref=e211]
                    - cell "9 Apr 2026, 10:20" [ref=e212]:
                      - generic [ref=e214]: 9 Apr 2026, 10:20
                  - row "Deposit excl. VAT -" [ref=e215]:
                    - rowheader "Deposit excl. VAT" [ref=e216]
                    - cell "-" [ref=e217]:
                      - generic [ref=e219]: "-"
                  - row "Discount Cyber Monday 15% For 3 Months" [ref=e220]:
                    - rowheader "Discount" [ref=e221]
                    - cell "Cyber Monday 15% For 3 Months" [ref=e222]:
                      - generic [ref=e224]: Cyber Monday 15% For 3 Months
                  - row "Contract -" [ref=e225]:
                    - rowheader "Contract" [ref=e226]
                    - cell "-" [ref=e227]:
                      - generic [ref=e229]: "-"
            - generic [ref=e230]:
              - generic [ref=e231]:
                - heading "Billing" [level=3] [ref=e235]
                - table [ref=e238]:
                  - rowgroup [ref=e239]:
                    - row "Booking Plan Short term (26 weeks)" [ref=e240]:
                      - rowheader "Booking Plan" [ref=e241]
                      - cell "Short term (26 weeks)" [ref=e242]:
                        - generic [ref=e244]: Short term (26 weeks)
                    - row "Current period 9 Apr - 8 Oct 2026" [ref=e245]:
                      - rowheader "Current period" [ref=e246]
                      - cell "9 Apr - 8 Oct 2026" [ref=e247]:
                        - generic [ref=e249]: 9 Apr - 8 Oct 2026
                    - row "Amount excl. VAT €4,862.00" [ref=e250]:
                      - rowheader "Amount excl. VAT" [ref=e251]
                      - cell "€4,862.00" [ref=e252]:
                        - generic [ref=e254]: €4,862.00
                    - row "Price adjustment -" [ref=e255]:
                      - rowheader "Price adjustment" [ref=e256]
                      - cell "-" [ref=e257]:
                        - generic [ref=e259]: "-"
                    - row "Next invoice -" [ref=e260]:
                      - rowheader "Next invoice" [ref=e261]
                      - cell "-" [ref=e262]:
                        - generic [ref=e264]: "-"
                    - row "Payment method -" [ref=e265]:
                      - rowheader "Payment method" [ref=e266]
                      - cell "-" [ref=e267]:
                        - generic [ref=e269]: "-"
                    - row "Payment option Automatic payment through Stripe" [ref=e270]:
                      - rowheader "Payment option" [ref=e271]
                      - cell "Automatic payment through Stripe" [ref=e272]:
                        - generic [ref=e274]: Automatic payment through Stripe
              - generic [ref=e275]:
                - generic [ref=e277]:
                  - heading "Notes" [level=3] [ref=e279]
                  - link [ref=e281] [cursor=pointer]:
                    - /url: /bookings/1747868673/edit/notes
                    - generic [ref=e283]: 󰲶
                - table [ref=e286]:
                  - rowgroup [ref=e287]:
                    - row "Note -" [ref=e288]:
                      - rowheader "Note" [ref=e289]
                      - cell "-" [ref=e290]:
                        - generic [ref=e292]: "-"
          - generic [ref=e295]:
            - heading "Items" [level=3] [ref=e299]
            - generic [ref=e302]:
              - generic [ref=e303]:
                - generic [ref=e304]:
                  - link "VS 7 sqm Unit" [ref=e305] [cursor=pointer]:
                    - /url: /unit-types/483424269
                    - generic [ref=e307]: VS 7 sqm Unit
                  - text: /
                  - 'link "Unit 60 #370" [ref=e308] [cursor=pointer]':
                    - /url: /units/397110095
                    - generic [ref=e310]: "Unit 60 #370"
                - generic [ref=e311]: €4,420.00
              - generic [ref=e312]:
                - link "VS - Insurance weekly - 20" [ref=e313] [cursor=pointer]:
                  - /url: /insurances/1715162904
                  - generic [ref=e315]: VS - Insurance weekly - 20
                - generic [ref=e316]: €442.00
              - generic [ref=e317]:
                - generic [ref=e318]:
                  - strong [ref=e319]: Total excl. VAT
                  - strong [ref=e320]: €4,862.00
                - generic [ref=e321]:
                  - generic [ref=e322]: VAT
                  - generic [ref=e323]: €972.40
                - generic [ref=e324]:
                  - generic [ref=e325]: Total incl. VAT
                  - generic [ref=e326]: €5,834.40
          - generic [ref=e329]:
            - heading "Invoices" [level=3] [ref=e333]
            - generic [ref=e338]:
              - generic [ref=e340]:
                - generic [ref=e342]:
                  - button "Select all" [ref=e350] [cursor=pointer]:
                    - generic [ref=e352]: 󰄬
                    - generic [ref=e353]: Select all
                  - generic [ref=e354]:
                    - button "Mark as paid" [disabled] [ref=e357]:
                      - generic [ref=e359]: 󰗡
                      - generic [ref=e360]: Mark as paid
                    - button "SEPA XML actions" [disabled] [ref=e363]:
                      - generic [ref=e365]: 󱨉
                      - generic [ref=e366]: SEPA XML actions
                      - generic: 󰗡 󰅚 󰗖
                    - generic [ref=e369]:
                      - button [ref=e370] [cursor=pointer]:
                        - generic [ref=e372]: 󱒇
                      - generic: 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲
                - table [ref=e374]:
                  - rowgroup [ref=e375]:
                    - row "Number Status Payment option Due date Unit Total (incl. VAT) Amount due Issue date Actions" [ref=e376]:
                      - columnheader [ref=e377]:
                        - generic [ref=e378]:
                          - checkbox [ref=e379]
                          - generic [ref=e381] [cursor=pointer]: 󰄱
                      - columnheader "Number" [ref=e382]:
                        - button "Number" [ref=e383] [cursor=pointer]:
                          - generic [ref=e385]: Number
                          - generic [ref=e388]: 󰁝
                      - columnheader "Status" [ref=e389]:
                        - button "Status" [ref=e390] [cursor=pointer]:
                          - generic [ref=e392]: Status
                          - generic [ref=e395]: 󰁝
                      - columnheader "Payment option" [ref=e396]:
                        - button "Payment option" [ref=e397] [cursor=pointer]:
                          - generic [ref=e399]: Payment option
                          - generic [ref=e402]: 󰁝
                      - columnheader "Due date" [ref=e403]:
                        - button "Due date" [ref=e404] [cursor=pointer]:
                          - generic [ref=e406]: Due date
                          - generic [ref=e409]: 󰁝
                      - columnheader "Unit" [ref=e410]:
                        - button "Unit" [ref=e411] [cursor=pointer]:
                          - generic [ref=e413]: Unit
                          - generic [ref=e416]: 󰁝
                      - columnheader "Total (incl. VAT)" [ref=e417]:
                        - button "Total (incl. VAT)" [ref=e418] [cursor=pointer]:
                          - generic [ref=e419]:
                            - generic [ref=e420]: Total (incl. VAT)
                            - generic [ref=e422]: 󰋽
                          - generic [ref=e425]: 󰁝
                      - columnheader "Amount due" [ref=e426]:
                        - button "Amount due" [ref=e427] [cursor=pointer]:
                          - generic [ref=e429]: Amount due
                          - generic [ref=e432]: 󰁝
                      - columnheader "Issue date" [ref=e433]:
                        - button "Issue date" [ref=e434] [cursor=pointer]:
                          - generic [ref=e436]: Issue date
                          - generic [ref=e439]: 󰁝
                      - columnheader "Actions" [ref=e440]:
                        - generic [ref=e443]: Actions
                    - row [ref=e444]:
                      - columnheader [ref=e445]
                  - rowgroup [ref=e446]:
                    - 'row "INV-1920154 Open Manual 11 Apr 2026 Unit 60 #370 €5,038.80 €5,038.80 9 Apr 2026" [ref=e447]':
                      - cell [ref=e448]:
                        - generic [ref=e449]:
                          - checkbox [ref=e450]
                          - generic [ref=e452] [cursor=pointer]: 󰄱
                      - cell "INV-1920154" [ref=e453]:
                        - link [ref=e454] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e455]: INV-1920154
                      - cell "Open" [ref=e456]:
                        - link [ref=e457] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e461]: Open
                      - cell "Manual" [ref=e462]:
                        - link [ref=e463] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e464]: Manual
                      - cell "11 Apr 2026" [ref=e465]:
                        - link [ref=e466] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e467]: 11 Apr 2026
                      - 'cell "Unit 60 #370" [ref=e468]':
                        - link [ref=e469] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e470]: "Unit 60 #370"
                      - cell "€5,038.80" [ref=e471]:
                        - link [ref=e472] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e473]: €5,038.80
                      - cell "€5,038.80" [ref=e474]:
                        - link [ref=e475] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e476]: €5,038.80
                      - cell "9 Apr 2026" [ref=e477]:
                        - link [ref=e478] [cursor=pointer]:
                          - /url: /invoices/259086392
                        - generic [ref=e479]: 9 Apr 2026
                      - cell [ref=e480]:
                        - button [ref=e483] [cursor=pointer]:
                          - generic [ref=e485]: 󰇘
              - generic [ref=e488]:
                - generic [ref=e489]:
                  - generic [ref=e490]: "Items per page:"
                  - combobox [ref=e493] [cursor=pointer]:
                    - generic [ref=e495]:
                      - generic [ref=e497]: "10"
                      - combobox "Items per page:": "10"
                    - generic [ref=e499]: 󰍝
                - generic [ref=e500]: 1-1 of 1
                - generic [ref=e501]:
                  - button [disabled]:
                    - generic:
                      - generic: 󰘀
                  - button [disabled]:
                    - generic:
                      - generic: 󰅁
                  - button [disabled]:
                    - generic:
                      - generic: 󰅂
                  - button [disabled]:
                    - generic:
                      - generic: 󰘁
          - generic [ref=e504]:
            - heading "Payments" [level=3] [ref=e508]
            - generic [ref=e513]:
              - table [ref=e517]:
                - rowgroup [ref=e518]:
                  - row "Total Status Invoice no. Date Payment method" [ref=e519]:
                    - columnheader "Total" [ref=e520]:
                      - button "Total" [ref=e521] [cursor=pointer]:
                        - generic [ref=e523]: Total
                        - generic [ref=e526]: 󰁝
                    - columnheader "Status" [ref=e527]:
                      - button "Status" [ref=e528] [cursor=pointer]:
                        - generic [ref=e530]: Status
                        - generic [ref=e533]: 󰁝
                    - columnheader "Invoice no." [ref=e534]:
                      - button "Invoice no." [ref=e535] [cursor=pointer]:
                        - generic [ref=e537]: Invoice no.
                        - generic [ref=e540]: 󰁝
                    - columnheader "Date" [ref=e541]:
                      - button "Date" [ref=e542] [cursor=pointer]:
                        - generic [ref=e544]: Date
                        - generic [ref=e547]: 󰁝
                    - columnheader "Payment method" [ref=e548]:
                      - button "Payment method" [ref=e549] [cursor=pointer]:
                        - generic [ref=e551]: Payment method
                        - generic [ref=e554]: 󰁝
                  - row [ref=e555]:
                    - columnheader [ref=e556]
                - rowgroup [ref=e557]:
                  - row "€5,038.80 Not paid yet INV-1920154 9 Apr 2026" [ref=e558]:
                    - cell "€5,038.80" [ref=e559]:
                      - generic [ref=e560]: €5,038.80
                    - cell "Not paid yet" [ref=e561]:
                      - generic [ref=e565]: Not paid yet
                    - cell "INV-1920154" [ref=e566]:
                      - generic [ref=e567]: INV-1920154
                    - cell "9 Apr 2026" [ref=e568]:
                      - generic [ref=e569]: 9 Apr 2026
                    - cell [ref=e570]
              - generic [ref=e573]:
                - generic [ref=e574]:
                  - generic [ref=e575]: "Items per page:"
                  - combobox [ref=e578] [cursor=pointer]:
                    - generic [ref=e580]:
                      - generic [ref=e582]: "10"
                      - combobox "Items per page:": "10"
                    - generic [ref=e584]: 󰍝
                - generic [ref=e585]: 1-1 of 1
                - generic [ref=e586]:
                  - button [disabled]:
                    - generic:
                      - generic: 󰘀
                  - button [disabled]:
                    - generic:
                      - generic: 󰅁
                  - button [disabled]:
                    - generic:
                      - generic: 󰅂
                  - button [disabled]:
                    - generic:
                      - generic: 󰘁
    - contentinfo [ref=e587]:
      - generic [ref=e588]:
        - generic [ref=e589]:
          - text: Kinnovis GmbH
          - generic [ref=e590]: 󰗦
          - text: "2026"
        - generic [ref=e591]: v2026.04.08
  - generic:
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
```

# Test source

```ts
  1  | import { BaseDialog } from '@/manager/shared/base/BaseDialog';
  2  | import { BookingCancelRadioGroup } from '@/manager/modules/booking/components/BookingCancelRadioGroup';
  3  | import { IBookingCancelData } from '@/manager/modules/booking/types/booking-types';
  4  | import { getSnackbarHost } from '@/manager/shared/utils/host-utils';
  5  | import { Locator, Page } from '@playwright/test';
  6  | 
  7  | export class BookingCancelDialog extends BaseDialog {
  8  |   readonly radioGroup = new BookingCancelRadioGroup(this.main);
  9  | 
  10 |   constructor(
  11 |     host: Page,
  12 |     readonly reschedule = false
  13 |   ) {
  14 |     super(host, 'booking-cancel-dialog');
  15 |   }
  16 | 
  17 |   async cancel(data: IBookingCancelData): Promise<void> {
  18 |     await this.fill(data);
  19 |     await this.submit();
  20 |   }
  21 | 
  22 |   fill(data: IBookingCancelData): Promise<void> {
  23 |     return this.radioGroup.fill(data);
  24 |   }
  25 | 
  26 |   async submit(): Promise<void> {
> 27 |     await Promise.all([this.getSnackbar().waitFor(), this.submitButton.click()]);
     |                                           ^ Error: locator.waitFor: Test timeout of 60000ms exceeded.
  28 |   }
  29 | 
  30 |   getSnackbar(): Locator {
  31 |     return getSnackbarHost(this.host, this.reschedule ? 'Reschedule successful' : 'Booking cancelled successfully');
  32 |   }
  33 | }
  34 | 
```