# 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-create.spec.ts >> creates a send-invoice booking
- Location: src/manager/tests/e2e/booking/booking-create.spec.ts:82:7
# Error details
```
Error: expect(locator).toHaveText(expected) failed
Locator: locator('.v-dialog:has([data-test-id="booking-create-dialog"]):has(.v-overlay__content:not(.dialog-bottom-transition-enter-active))').locator('fieldset:has(legend:has-text("Products"))').getByTestId('totals-summary-section').getByTestId('total-excl-vat-value')
Expected: "€50.00"
Received: "€185.00"
Timeout: 30000ms
Call log:
- Expect "toHaveText" with timeout 30000ms
- waiting for locator('.v-dialog:has([data-test-id="booking-create-dialog"]):has(.v-overlay__content:not(.dialog-bottom-transition-enter-active))').locator('fieldset:has(legend:has-text("Products"))').getByTestId('totals-summary-section').getByTestId('total-excl-vat-value')
34 × locator resolved to
€185.00
- unexpected value "€185.00"
```
# Page snapshot
```yaml
- generic [ref=e1]:
- generic [ref=e6]:
- navigation [ref=e7]:
- generic [ref=e9]:
- link [ref=e10] [cursor=pointer]:
- /url: /
- generic [ref=e11]:
- generic [ref=e12]: KINNOVIS
- generic [ref=e13]: Manager
- button [ref=e15] [cursor=pointer]:
- img [ref=e16]
- list [ref=e19]:
- generic [ref=e22]: Dashboard
- link "Tasks" [ref=e23] [cursor=pointer]:
- /url: /tasks
- img [ref=e26]
- generic [ref=e29]: Tasks
- link "Facility maps" [ref=e30] [cursor=pointer]:
- /url: /facility-map
- generic [ref=e32]:
- generic [ref=e34]: Facility maps
- link "Analytics" [ref=e35] [cursor=pointer]:
- /url: /dashboard
- generic [ref=e37]:
- generic [ref=e39]: Analytics
- generic [ref=e41]: Sales
- link "Bookings" [ref=e42] [cursor=pointer]:
- /url: /bookings
- generic [ref=e44]:
- generic [ref=e46]: Bookings
- link "Customers" [ref=e47] [cursor=pointer]:
- /url: /customers
- generic [ref=e49]:
- generic [ref=e51]: Customers
- link "Invoices" [ref=e52] [cursor=pointer]:
- /url: /invoices
- generic [ref=e54]:
- generic [ref=e56]: Invoices
- link "Credit notes" [ref=e57] [cursor=pointer]:
- /url: /credit-notes
- img [ref=e60]
- generic [ref=e63]: Credit notes
- link "Units" [ref=e64] [cursor=pointer]:
- /url: /units
- generic [ref=e66]:
- generic [ref=e68]: Units
- generic [ref=e70]: Site management
- link "Locations" [ref=e71] [cursor=pointer]:
- /url: /locations
- generic [ref=e73]:
- generic [ref=e75]: Locations
- link "Unit types" [ref=e76] [cursor=pointer]:
- /url: /unit-types
- generic [ref=e78]:
- generic [ref=e80]: Unit types
- link "Protection Plans" [ref=e81] [cursor=pointer]:
- /url: /insurances
- generic [ref=e83]:
- generic [ref=e85]: Protection Plans
- link "Deposits" [ref=e86] [cursor=pointer]:
- /url: /deposits
- generic [ref=e88]:
- generic [ref=e90]: Deposits
- link "Products" [ref=e91] [cursor=pointer]:
- /url: /products
- generic [ref=e93]:
- generic [ref=e95]: Products
- link "Discounts" [ref=e96] [cursor=pointer]:
- /url: /discounts
- generic [ref=e98]:
- generic [ref=e100]: Discounts
- generic [ref=e101]:
- option "Emails" [ref=e102] [cursor=pointer]:
- generic [ref=e104]:
- generic [ref=e106]: Emails
- generic [ref=e110]:
- text:
- generic [ref=e112]: Admin
- link "Integrations" [ref=e113] [cursor=pointer]:
- /url: /connected-apps
- generic [ref=e115]:
- generic [ref=e117]: Integrations
- link "User & Roles" [ref=e118] [cursor=pointer]:
- /url: /users
- generic [ref=e120]:
- generic [ref=e122]: User & Roles
- generic [ref=e123]:
- option "Booking Portal" [ref=e124] [cursor=pointer]:
- generic [ref=e126]:
- generic [ref=e128]: Booking Portal
- generic [ref=e132]:
- text:
- generic [ref=e133]:
- option "JaneAI" [ref=e134] [cursor=pointer]:
- generic [ref=e136]:
- generic [ref=e138]: JaneAI
- generic [ref=e142]:
- text:
- generic [ref=e144]: Feedback
- link "Voting Portal" [ref=e145] [cursor=pointer]:
- /url: /voting-portal
- generic [ref=e147]:
- generic [ref=e149]: Voting Portal
- generic [ref=e152]:
- button "AS Andreas Stadler andreas.stadler@storeroom.at" [ref=e155] [cursor=pointer]:
- generic [ref=e158]: AS
- generic [ref=e159]:
- generic [ref=e160]: Andreas Stadler
- generic "andreas.stadler@storeroom.at" [ref=e161]
- generic [ref=e162]:
- generic:
- text:
- text:
- button [ref=e163] [cursor=pointer]:
- generic [ref=e165]:
- main [ref=e166]:
- generic [ref=e168]:
- generic [ref=e170]:
- generic [ref=e172]: Bookings
- generic [ref=e174]:
- link "Create booking" [ref=e175] [cursor=pointer]:
- /url: /bookings/create
- generic [ref=e176]:
- generic [ref=e177]:
- text: Create booking
- button [ref=e178] [cursor=pointer]:
- generic [ref=e182]:
- generic [ref=e184]:
- generic [ref=e186]:
- button "Filters Reset filters" [ref=e187] [cursor=pointer]:
- generic [ref=e188]:
- heading "Filters" [level=3] [ref=e191]
- generic [ref=e193]:
- button "Reset filters" [ref=e195]:
- generic [ref=e196]:
- generic [ref=e197]:
- text: Reset filters
- generic [ref=e201]:
- generic [ref=e207]:
- generic [ref=e212]:
- generic [ref=e214]:
- generic [ref=e215]:
- generic: Search
- textbox "Search" [ref=e216]
- text:
- combobox [ref=e220]:
- generic [ref=e221]:
- generic: Location
- combobox "Location" [ref=e223]
- button [ref=e225] [cursor=pointer]:
- combobox [ref=e229]:
- generic [ref=e230]:
- generic: Status
- combobox "Status" [ref=e232]
- button [ref=e234] [cursor=pointer]:
- combobox [ref=e238]:
- generic [ref=e239]:
- generic: ID verification status
- combobox "ID verification status" [ref=e241]
- button [ref=e243] [cursor=pointer]:
- combobox [ref=e247]:
- generic [ref=e248]:
- generic: Access status
- combobox "Access status" [ref=e250]
- button [ref=e252] [cursor=pointer]:
- combobox [ref=e256]:
- generic [ref=e257]:
- generic: Unit type
- combobox "Unit type" [ref=e259]
- button [ref=e261] [cursor=pointer]:
- generic [ref=e266]:
- generic [ref=e268]:
- generic [ref=e269]:
- generic: Created at
- textbox "Created at" [ref=e270]:
- generic:
- text:
- generic [ref=e272]:
- generic [ref=e274]:
- generic [ref=e276]:
- button "Select all" [ref=e284] [cursor=pointer]:
- generic [ref=e286]:
- generic [ref=e287]: Select all
- generic [ref=e288]:
- button "Price adjustment" [disabled] [ref=e292]:
- img [ref=e294]
- generic [ref=e300]: Price adjustment
- button "Remove price adjustment" [disabled] [ref=e304]:
- generic [ref=e306]:
- generic [ref=e307]: Remove price adjustment
- generic [ref=e310]:
- button [ref=e311] [cursor=pointer]:
- img [ref=e314]
- generic:
- table [ref=e317]:
- rowgroup [ref=e318]:
- row "Booking number Location Status Customer Unit type Unit Booking plan Next invoice Created at Move-in Move-out" [ref=e319]:
- columnheader [ref=e320]:
- generic [ref=e321]:
- checkbox [ref=e322]
- generic [ref=e324] [cursor=pointer]:
- columnheader "Booking number" [ref=e325]:
- button "Booking number" [ref=e326] [cursor=pointer]:
- generic [ref=e328]: Booking number
- generic [ref=e331]:
- columnheader "Location" [ref=e332]:
- button "Location" [ref=e333] [cursor=pointer]:
- generic [ref=e335]: Location
- generic [ref=e338]:
- columnheader "Status" [ref=e339]:
- button "Status" [ref=e340] [cursor=pointer]:
- generic [ref=e342]: Status
- generic [ref=e345]:
- columnheader "Customer" [ref=e346]:
- button "Customer" [ref=e347] [cursor=pointer]:
- generic [ref=e349]: Customer
- generic [ref=e352]:
- columnheader "Unit type" [ref=e353]:
- generic [ref=e356]: Unit type
- columnheader "Unit" [ref=e357]:
- button "Unit" [ref=e358] [cursor=pointer]:
- generic [ref=e360]: Unit
- generic [ref=e363]:
- columnheader "Booking plan" [ref=e364]:
- button "Booking plan" [ref=e365] [cursor=pointer]:
- generic [ref=e367]: Booking plan
- generic [ref=e370]:
- columnheader "Next invoice" [ref=e371]:
- button "Next invoice" [ref=e372] [cursor=pointer]:
- generic [ref=e374]: Next invoice
- generic [ref=e377]:
- columnheader "Created at" [ref=e378]:
- button "Created at" [ref=e379] [cursor=pointer]:
- generic [ref=e381]: Created at
- generic [ref=e384]:
- columnheader "Move-in" [ref=e385]:
- button "Move-in" [ref=e386] [cursor=pointer]:
- generic [ref=e388]: Move-in
- generic [ref=e391]:
- columnheader "Move-out" [ref=e392]:
- button "Move-out" [ref=e393] [cursor=pointer]:
- generic [ref=e395]: Move-out
- generic [ref=e398]:
- row [ref=e399]:
- columnheader [ref=e400]
- rowgroup [ref=e401]:
- row "1037-4431-85 Vienna South Active Brett Tromp Tasty Box z7RPR4 Unit KEv2nC Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e402]:
- cell [ref=e403]:
- generic [ref=e404]:
- checkbox [ref=e405]
- generic [ref=e407] [cursor=pointer]:
- cell "1037-4431-85" [ref=e408]:
- link "1037-4431-85" [ref=e409] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e410]: 1037-4431-85
- cell "Vienna South" [ref=e411]:
- link "Vienna South" [ref=e412] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e413]: Vienna South
- cell "Active" [ref=e414]:
- link "Active" [ref=e415] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e419]: Active
- cell "Brett Tromp" [ref=e420]:
- link "Brett Tromp" [ref=e421] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e424]: Brett Tromp
- cell "Tasty Box z7RPR4" [ref=e425]:
- link "Tasty Box z7RPR4" [ref=e426] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e428]: Tasty Box z7RPR4
- cell "Unit KEv2nC" [ref=e429]:
- link "Unit KEv2nC" [ref=e430] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e432]: Unit KEv2nC
- cell "Basic (1 week)" [ref=e433]:
- link "Basic (1 week)" [ref=e434] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e435]: Basic (1 week)
- cell "1 Sep 2026" [ref=e436]:
- link "1 Sep 2026" [ref=e437] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e438]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e439]:
- link "25 Aug 2026" [ref=e440] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e441]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e442]:
- link "25 Aug 2026" [ref=e443] [cursor=pointer]:
- /url: /bookings/1037443185
- generic [ref=e444]: 25 Aug 2026
- cell [ref=e445]:
- link [ref=e446] [cursor=pointer]:
- /url: /bookings/1037443185
- row "2426-1859-9 Vienna South Active Dave Jones Bespoke Box 7nxGtM Unit qUNuXL Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e447]:
- cell [ref=e448]:
- generic [ref=e449]:
- checkbox [ref=e450]
- generic [ref=e452] [cursor=pointer]:
- cell "2426-1859-9" [ref=e453]:
- link "2426-1859-9" [ref=e454] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e455]: 2426-1859-9
- cell "Vienna South" [ref=e456]:
- link "Vienna South" [ref=e457] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e458]: Vienna South
- cell "Active" [ref=e459]:
- link "Active" [ref=e460] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e464]: Active
- cell "Dave Jones" [ref=e465]:
- link "Dave Jones" [ref=e466] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e469]: Dave Jones
- cell "Bespoke Box 7nxGtM" [ref=e470]:
- link "Bespoke Box 7nxGtM" [ref=e471] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e473]: Bespoke Box 7nxGtM
- cell "Unit qUNuXL" [ref=e474]:
- link "Unit qUNuXL" [ref=e475] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e477]: Unit qUNuXL
- cell "Basic (1 week)" [ref=e478]:
- link "Basic (1 week)" [ref=e479] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e480]: Basic (1 week)
- cell "1 Sep 2026" [ref=e481]:
- link "1 Sep 2026" [ref=e482] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e483]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e484]:
- link "25 Aug 2026" [ref=e485] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e486]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e487]:
- link "25 Aug 2026" [ref=e488] [cursor=pointer]:
- /url: /bookings/242618599
- generic [ref=e489]: 25 Aug 2026
- cell [ref=e490]:
- link [ref=e491] [cursor=pointer]:
- /url: /bookings/242618599
- row "1056-5718-63 Vienna South Active Karen Lind Generic Box ygVXwz Unit jfdwx1 Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e492]:
- cell [ref=e493]:
- generic [ref=e494]:
- checkbox [ref=e495]
- generic [ref=e497] [cursor=pointer]:
- cell "1056-5718-63" [ref=e498]:
- link "1056-5718-63" [ref=e499] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e500]: 1056-5718-63
- cell "Vienna South" [ref=e501]:
- link "Vienna South" [ref=e502] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e503]: Vienna South
- cell "Active" [ref=e504]:
- link "Active" [ref=e505] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e509]: Active
- cell "Karen Lind" [ref=e510]:
- link "Karen Lind" [ref=e511] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e514]: Karen Lind
- cell "Generic Box ygVXwz" [ref=e515]:
- link "Generic Box ygVXwz" [ref=e516] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e518]: Generic Box ygVXwz
- cell "Unit jfdwx1" [ref=e519]:
- link "Unit jfdwx1" [ref=e520] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e522]: Unit jfdwx1
- cell "Basic (1 week)" [ref=e523]:
- link "Basic (1 week)" [ref=e524] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e525]: Basic (1 week)
- cell "1 Sep 2026" [ref=e526]:
- link "1 Sep 2026" [ref=e527] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e528]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e529]:
- link "25 Aug 2026" [ref=e530] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e531]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e532]:
- link "25 Aug 2026" [ref=e533] [cursor=pointer]:
- /url: /bookings/1056571863
- generic [ref=e534]: 25 Aug 2026
- cell [ref=e535]:
- link [ref=e536] [cursor=pointer]:
- /url: /bookings/1056571863
- row "3055-5813-4 Vienna South Active Tremayne Cartwright-Hayes Small Box jm7nL3 Unit LorYZ2 Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e537]:
- cell [ref=e538]:
- generic [ref=e539]:
- checkbox [ref=e540]
- generic [ref=e542] [cursor=pointer]:
- cell "3055-5813-4" [ref=e543]:
- link "3055-5813-4" [ref=e544] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e545]: 3055-5813-4
- cell "Vienna South" [ref=e546]:
- link "Vienna South" [ref=e547] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e548]: Vienna South
- cell "Active" [ref=e549]:
- link "Active" [ref=e550] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e554]: Active
- cell "Tremayne Cartwright-Hayes" [ref=e555]:
- link "Tremayne Cartwright-Hayes" [ref=e556] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e559]: Tremayne Cartwright-Hayes
- cell "Small Box jm7nL3" [ref=e560]:
- link "Small Box jm7nL3" [ref=e561] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e563]: Small Box jm7nL3
- cell "Unit LorYZ2" [ref=e564]:
- link "Unit LorYZ2" [ref=e565] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e567]: Unit LorYZ2
- cell "Basic (1 week)" [ref=e568]:
- link "Basic (1 week)" [ref=e569] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e570]: Basic (1 week)
- cell "1 Sep 2026" [ref=e571]:
- link "1 Sep 2026" [ref=e572] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e573]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e574]:
- link "25 Aug 2026" [ref=e575] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e576]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e577]:
- link "25 Aug 2026" [ref=e578] [cursor=pointer]:
- /url: /bookings/305558134
- generic [ref=e579]: 25 Aug 2026
- cell [ref=e580]:
- link [ref=e581] [cursor=pointer]:
- /url: /bookings/305558134
- row "1640-0637-14 Vienna South Active Celia Crist Frozen Box e9QPGl Unit MK85k1 Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e582]:
- cell [ref=e583]:
- generic [ref=e584]:
- checkbox [ref=e585]
- generic [ref=e587] [cursor=pointer]:
- cell "1640-0637-14" [ref=e588]:
- link "1640-0637-14" [ref=e589] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e590]: 1640-0637-14
- cell "Vienna South" [ref=e591]:
- link "Vienna South" [ref=e592] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e593]: Vienna South
- cell "Active" [ref=e594]:
- link "Active" [ref=e595] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e599]: Active
- cell "Celia Crist" [ref=e600]:
- link "Celia Crist" [ref=e601] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e604]: Celia Crist
- cell "Frozen Box e9QPGl" [ref=e605]:
- link "Frozen Box e9QPGl" [ref=e606] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e608]: Frozen Box e9QPGl
- cell "Unit MK85k1" [ref=e609]:
- link "Unit MK85k1" [ref=e610] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e612]: Unit MK85k1
- cell "Basic (1 week)" [ref=e613]:
- link "Basic (1 week)" [ref=e614] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e615]: Basic (1 week)
- cell "1 Sep 2026" [ref=e616]:
- link "1 Sep 2026" [ref=e617] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e618]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e619]:
- link "25 Aug 2026" [ref=e620] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e621]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e622]:
- link "25 Aug 2026" [ref=e623] [cursor=pointer]:
- /url: /bookings/1640063714
- generic [ref=e624]: 25 Aug 2026
- cell [ref=e625]:
- link [ref=e626] [cursor=pointer]:
- /url: /bookings/1640063714
- row "2476-1646-4 Vienna South Active Eddie Klein Sleek Box YxEhfC Unit ewtpWC Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e627]:
- cell [ref=e628]:
- generic [ref=e629]:
- checkbox [ref=e630]
- generic [ref=e632] [cursor=pointer]:
- cell "2476-1646-4" [ref=e633]:
- link "2476-1646-4" [ref=e634] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e635]: 2476-1646-4
- cell "Vienna South" [ref=e636]:
- link "Vienna South" [ref=e637] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e638]: Vienna South
- cell "Active" [ref=e639]:
- link "Active" [ref=e640] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e644]: Active
- cell "Eddie Klein" [ref=e645]:
- link "Eddie Klein" [ref=e646] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e649]: Eddie Klein
- cell "Sleek Box YxEhfC" [ref=e650]:
- link "Sleek Box YxEhfC" [ref=e651] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e653]: Sleek Box YxEhfC
- cell "Unit ewtpWC" [ref=e654]:
- link "Unit ewtpWC" [ref=e655] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e657]: Unit ewtpWC
- cell "Basic (1 week)" [ref=e658]:
- link "Basic (1 week)" [ref=e659] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e660]: Basic (1 week)
- cell "1 Sep 2026" [ref=e661]:
- link "1 Sep 2026" [ref=e662] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e663]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e664]:
- link "25 Aug 2026" [ref=e665] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e666]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e667]:
- link "25 Aug 2026" [ref=e668] [cursor=pointer]:
- /url: /bookings/247616464
- generic [ref=e669]: 25 Aug 2026
- cell [ref=e670]:
- link [ref=e671] [cursor=pointer]:
- /url: /bookings/247616464
- row "2078-6883-32 Vienna South Active Brendan Cormier Elegant Box eBQ6DE Unit EcfUpj Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e672]:
- cell [ref=e673]:
- generic [ref=e674]:
- checkbox [ref=e675]
- generic [ref=e677] [cursor=pointer]:
- cell "2078-6883-32" [ref=e678]:
- link "2078-6883-32" [ref=e679] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e680]: 2078-6883-32
- cell "Vienna South" [ref=e681]:
- link "Vienna South" [ref=e682] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e683]: Vienna South
- cell "Active" [ref=e684]:
- link "Active" [ref=e685] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e689]: Active
- cell "Brendan Cormier" [ref=e690]:
- link "Brendan Cormier" [ref=e691] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e694]: Brendan Cormier
- cell "Elegant Box eBQ6DE" [ref=e695]:
- link "Elegant Box eBQ6DE" [ref=e696] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e698]: Elegant Box eBQ6DE
- cell "Unit EcfUpj" [ref=e699]:
- link "Unit EcfUpj" [ref=e700] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e702]: Unit EcfUpj
- cell "Basic (1 week)" [ref=e703]:
- link "Basic (1 week)" [ref=e704] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e705]: Basic (1 week)
- cell "1 Sep 2026" [ref=e706]:
- link "1 Sep 2026" [ref=e707] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e708]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e709]:
- link "25 Aug 2026" [ref=e710] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e711]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e712]:
- link "25 Aug 2026" [ref=e713] [cursor=pointer]:
- /url: /bookings/2078688332
- generic [ref=e714]: 25 Aug 2026
- cell [ref=e715]:
- link [ref=e716] [cursor=pointer]:
- /url: /bookings/2078688332
- row "1015-8870-97 Vienna South Active Andre Stiedemann Rustic Box eH7n3S Unit LV8rZB Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e717]:
- cell [ref=e718]:
- generic [ref=e719]:
- checkbox [ref=e720]
- generic [ref=e722] [cursor=pointer]:
- cell "1015-8870-97" [ref=e723]:
- link "1015-8870-97" [ref=e724] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e725]: 1015-8870-97
- cell "Vienna South" [ref=e726]:
- link "Vienna South" [ref=e727] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e728]: Vienna South
- cell "Active" [ref=e729]:
- link "Active" [ref=e730] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e734]: Active
- cell "Andre Stiedemann" [ref=e735]:
- link "Andre Stiedemann" [ref=e736] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e739]: Andre Stiedemann
- cell "Rustic Box eH7n3S" [ref=e740]:
- link "Rustic Box eH7n3S" [ref=e741] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e743]: Rustic Box eH7n3S
- cell "Unit LV8rZB" [ref=e744]:
- link "Unit LV8rZB" [ref=e745] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e747]: Unit LV8rZB
- cell "Basic (1 week)" [ref=e748]:
- link "Basic (1 week)" [ref=e749] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e750]: Basic (1 week)
- cell "1 Sep 2026" [ref=e751]:
- link "1 Sep 2026" [ref=e752] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e753]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e754]:
- link "25 Aug 2026" [ref=e755] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e756]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e757]:
- link "25 Aug 2026" [ref=e758] [cursor=pointer]:
- /url: /bookings/1015887097
- generic [ref=e759]: 25 Aug 2026
- cell [ref=e760]:
- link [ref=e761] [cursor=pointer]:
- /url: /bookings/1015887097
- row "4514-8702-2 Vienna South Active Maegan Ernser Modern Box yxp7nN Unit Xi6Z4f Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e762]:
- cell [ref=e763]:
- generic [ref=e764]:
- checkbox [ref=e765]
- generic [ref=e767] [cursor=pointer]:
- cell "4514-8702-2" [ref=e768]:
- link "4514-8702-2" [ref=e769] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e770]: 4514-8702-2
- cell "Vienna South" [ref=e771]:
- link "Vienna South" [ref=e772] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e773]: Vienna South
- cell "Active" [ref=e774]:
- link "Active" [ref=e775] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e779]: Active
- cell "Maegan Ernser" [ref=e780]:
- link "Maegan Ernser" [ref=e781] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e784]: Maegan Ernser
- cell "Modern Box yxp7nN" [ref=e785]:
- link "Modern Box yxp7nN" [ref=e786] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e788]: Modern Box yxp7nN
- cell "Unit Xi6Z4f" [ref=e789]:
- link "Unit Xi6Z4f" [ref=e790] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e792]: Unit Xi6Z4f
- cell "Basic (1 week)" [ref=e793]:
- link "Basic (1 week)" [ref=e794] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e795]: Basic (1 week)
- cell "1 Sep 2026" [ref=e796]:
- link "1 Sep 2026" [ref=e797] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e798]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e799]:
- link "25 Aug 2026" [ref=e800] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e801]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e802]:
- link "25 Aug 2026" [ref=e803] [cursor=pointer]:
- /url: /bookings/451487022
- generic [ref=e804]: 25 Aug 2026
- cell [ref=e805]:
- link [ref=e806] [cursor=pointer]:
- /url: /bookings/451487022
- row "1003-7551-02 Vienna South Active Alonzo McLaughlin-Pouros Practical Box MTfxkc Unit pR2F5F Basic (1 week) 1 Sep 2026 25 Aug 2026 25 Aug 2026" [ref=e807]:
- cell [ref=e808]:
- generic [ref=e809]:
- checkbox [ref=e810]
- generic [ref=e812] [cursor=pointer]:
- cell "1003-7551-02" [ref=e813]:
- link "1003-7551-02" [ref=e814] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e815]: 1003-7551-02
- cell "Vienna South" [ref=e816]:
- link "Vienna South" [ref=e817] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e818]: Vienna South
- cell "Active" [ref=e819]:
- link "Active" [ref=e820] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e824]: Active
- cell "Alonzo McLaughlin-Pouros" [ref=e825]:
- link "Alonzo McLaughlin-Pouros" [ref=e826] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e829]: Alonzo McLaughlin-Pouros
- cell "Practical Box MTfxkc" [ref=e830]:
- link "Practical Box MTfxkc" [ref=e831] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e833]: Practical Box MTfxkc
- cell "Unit pR2F5F" [ref=e834]:
- link "Unit pR2F5F" [ref=e835] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e837]: Unit pR2F5F
- cell "Basic (1 week)" [ref=e838]:
- link "Basic (1 week)" [ref=e839] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e840]: Basic (1 week)
- cell "1 Sep 2026" [ref=e841]:
- link "1 Sep 2026" [ref=e842] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e843]: 1 Sep 2026
- cell "25 Aug 2026" [ref=e844]:
- link "25 Aug 2026" [ref=e845] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e846]: 25 Aug 2026
- cell "25 Aug 2026" [ref=e847]:
- link "25 Aug 2026" [ref=e848] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e849]: 25 Aug 2026
- cell [ref=e850]:
- link [ref=e851] [cursor=pointer]:
- /url: /bookings/1003755102
- generic [ref=e854]:
- generic [ref=e855]:
- generic [ref=e856]: "Items per page:"
- combobox [ref=e859]:
- generic [ref=e861] [cursor=pointer]:
- generic [ref=e863]: "10"
- combobox "Items per page:": "10"
- generic [ref=e865]:
- generic [ref=e866]: 1-10 of 90
- generic [ref=e867]:
- button [disabled]:
- generic:
- generic:
- button [disabled]:
- generic:
- generic:
- button [ref=e868] [cursor=pointer]:
- generic [ref=e870]:
- button [ref=e871] [cursor=pointer]:
- generic [ref=e873]:
- generic:
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- tooltip
- dialog:
- generic [ref=e876]:
- generic [ref=e877]:
- generic [ref=e879]:
- generic [ref=e880]:
- button [ref=e881] [cursor=pointer]:
- generic [ref=e883]:
- heading "Create booking" [level=2] [ref=e885]
- button "Save" [ref=e887] [cursor=pointer]:
- generic [ref=e888]: Save
- separator [ref=e889]
- generic [ref=e891]:
- group "General" [ref=e892]:
- heading "General" [level=3] [ref=e894]:
- generic [ref=e896]: General
- generic [ref=e897]:
- generic [ref=e900]:
- combobox [ref=e902]:
- generic [ref=e904]:
- generic [ref=e906]: Emilia Mayert (antonia25@gmail.com)
- combobox "Customer *" [ref=e907]
- button [ref=e909] [cursor=pointer]:
- generic:
- generic: Customer *
- alert [ref=e910]
- generic [ref=e913]:
- combobox [ref=e915]:
- generic [ref=e917]:
- generic [ref=e919]: Vienna South
- combobox "Location *" [ref=e920]
- button [ref=e922] [cursor=pointer]:
- generic:
- generic: Location *
- alert [ref=e923]
- generic [ref=e926]:
- generic [ref=e928]:
- generic [ref=e930]:
- textbox "Move-in date *" [ref=e933]:
- /placeholder: dd/mm/yyyy
- text: 25/08/2026
- generic:
- generic: Move-in date *
- alert [ref=e934]
- generic [ref=e937]:
- generic [ref=e940]:
- generic: Note
- textbox "Note" [ref=e941]
- alert [ref=e942]
- group "Products" [ref=e944]:
- heading "Products" [level=3] [ref=e946]:
- generic [ref=e948]: Products
- table [ref=e951]:
- rowgroup [ref=e952]:
- row "Recurring Booking Period Quantity Price VAT Amount" [ref=e953]:
- columnheader "Recurring" [ref=e954]:
- text: Recurring
- generic [ref=e955]:
- columnheader "Booking Period" [ref=e956]
- columnheader "Quantity" [ref=e957]
- columnheader "Price" [ref=e958]
- columnheader "VAT" [ref=e959]
- columnheader "Amount" [ref=e960]
- rowgroup [ref=e961]:
- row "€50.00 17% €50.00" [ref=e962]:
- cell [ref=e963]:
- generic [ref=e964]:
- combobox [ref=e966]:
- generic [ref=e968]:
- generic [ref=e970]: Refined Box jAb1cY
- combobox "Unit type *" [ref=e971]
- button [ref=e973] [cursor=pointer]:
- generic:
- generic: Unit type *
- alert [ref=e974]
- generic [ref=e976]:
- combobox [ref=e978]:
- generic [ref=e980]:
- generic [ref=e982]: Unit 2tN3al
- combobox "Unit *" [ref=e983]
- button [ref=e985] [cursor=pointer]:
- generic:
- generic: Unit *
- alert [ref=e986]
- cell [ref=e988]:
- generic [ref=e989]:
- combobox [ref=e991]:
- generic [ref=e993]:
- generic [ref=e995]: Basic (1 week)
- combobox "Booking plan *" [ref=e996]
- button [ref=e998] [cursor=pointer]:
- generic:
- generic: Booking plan *
- alert [ref=e999]
- cell [ref=e1001]
- cell "€50.00" [ref=e1002]:
- generic [ref=e1003]: €50.00
- cell "17%" [ref=e1004]:
- generic [ref=e1005]: 17%
- cell "€50.00" [ref=e1006]:
- generic [ref=e1007]: €50.00
- table [ref=e1010]:
- rowgroup [ref=e1011]:
- row [ref=e1012]:
- cell [ref=e1013]:
- generic [ref=e1014]:
- combobox [ref=e1016]:
- generic [ref=e1017]:
- generic: Protection plan
- combobox "Protection plan" [ref=e1019]
- text:
- button [ref=e1021] [cursor=pointer]:
- alert [ref=e1022]
- cell [ref=e1024]
- cell [ref=e1025]
- cell [ref=e1026]
- cell [ref=e1027]
- cell [ref=e1028]
- generic [ref=e1029]:
- generic:
- table
- button "Add recurring product" [ref=e1032] [cursor=pointer]
- generic [ref=e1033]:
- table [ref=e1035]:
- rowgroup [ref=e1036]:
- row "One time Quantity Price VAT Amount" [ref=e1037]:
- columnheader "One time" [ref=e1038]
- columnheader [ref=e1039]
- columnheader "Quantity" [ref=e1040]
- columnheader "Price" [ref=e1041]
- columnheader "VAT" [ref=e1042]
- columnheader "Amount" [ref=e1043]
- rowgroup [ref=e1044]:
- row "1 €54.00 20% €54.00" [ref=e1045]:
- cell [ref=e1046]:
- generic [ref=e1047]:
- combobox [ref=e1049]:
- generic [ref=e1051]:
- generic [ref=e1053]: Luxurious Product bIJA25
- combobox "One-time product" [ref=e1054]
- button "Clear One-time product" [ref=e1056] [cursor=pointer]:
- button [ref=e1058] [cursor=pointer]:
- generic:
- generic: One-time product
- alert [ref=e1059]:
- generic [ref=e1061]: Mandatory
- cell [ref=e1062]
- cell "1" [ref=e1063]:
- generic [ref=e1064]:
- spinbutton [ref=e1068]: "1"
- alert [ref=e1069]
- cell "€54.00" [ref=e1071]:
- generic [ref=e1072]: €54.00
- cell "20%" [ref=e1073]:
- generic [ref=e1074]: 20%
- cell "€54.00" [ref=e1075]:
- generic [ref=e1076]:
- generic [ref=e1077]: €54.00
- button [ref=e1078] [cursor=pointer]:
- generic [ref=e1080]:
- rowgroup [ref=e1081]:
- row "1 €81.00 20% €81.00" [ref=e1082]:
- cell [ref=e1083]:
- generic [ref=e1084]:
- combobox [ref=e1086]:
- generic [ref=e1088]:
- generic [ref=e1090]: Sleek Product AJZQou
- combobox "One-time product" [ref=e1091]
- button "Clear One-time product" [ref=e1093] [cursor=pointer]:
- button [ref=e1095] [cursor=pointer]:
- generic:
- generic: One-time product
- alert [ref=e1096]:
- generic [ref=e1098]: Mandatory
- cell [ref=e1099]
- cell "1" [ref=e1100]:
- generic [ref=e1101]:
- spinbutton [ref=e1105]: "1"
- alert [ref=e1106]
- cell "€81.00" [ref=e1108]:
- generic [ref=e1109]: €81.00
- cell "20%" [ref=e1110]:
- generic [ref=e1111]: 20%
- cell "€81.00" [ref=e1112]:
- generic [ref=e1113]:
- generic [ref=e1114]: €81.00
- button [ref=e1115] [cursor=pointer]:
- generic [ref=e1117]:
- button "Add one-time product" [ref=e1120] [cursor=pointer]
- table [ref=e1123]:
- rowgroup [ref=e1124]:
- row "Deposit Quantity Price VAT Amount" [ref=e1125]:
- columnheader "Deposit" [ref=e1126]
- columnheader [ref=e1127]
- columnheader "Quantity" [ref=e1128]
- columnheader "Price" [ref=e1129]
- columnheader "VAT" [ref=e1130]
- columnheader "Amount" [ref=e1131]
- rowgroup [ref=e1132]:
- row [ref=e1133]:
- cell [ref=e1134]:
- generic [ref=e1135]:
- combobox [ref=e1137]:
- generic [ref=e1138]:
- generic: Deposit
- combobox "Deposit" [ref=e1140]
- text:
- button [ref=e1142] [cursor=pointer]:
- alert [ref=e1143]
- cell [ref=e1145]
- cell [ref=e1146]
- cell [ref=e1147]
- cell [ref=e1148]
- cell [ref=e1149]
- generic [ref=e1150]:
- table [ref=e1152]:
- rowgroup [ref=e1153]:
- row "Discount Terms Price Amount" [ref=e1154]:
- columnheader "Discount" [ref=e1155]
- columnheader "Terms" [ref=e1156]
- columnheader [ref=e1157]
- columnheader "Price" [ref=e1158]
- columnheader [ref=e1159]
- columnheader "Amount" [ref=e1160]
- button "Add discount" [disabled] [ref=e1163]
- generic [ref=e1169]:
- generic [ref=e1170]:
- generic [ref=e1171]: Total excl.VAT
- generic [ref=e1172]: €185.00
- generic [ref=e1173]:
- generic [ref=e1174]: VAT
- generic [ref=e1175]: €35.50
- generic [ref=e1176]:
- generic [ref=e1177]: Total incl.VAT
- generic [ref=e1178]: €220.50
- group "Payment" [ref=e1179]:
- heading "Payment" [level=3] [ref=e1181]:
- generic [ref=e1183]: Payment
- generic [ref=e1186]:
- generic [ref=e1188]:
- generic [ref=e1190]:
- radio "Customer will be charged automatically (after 1st invoice) CARD ONLY" [ref=e1191]
- generic [ref=e1194] [cursor=pointer]:
- text: Customer will be charged automatically (after 1st invoice)
- generic [ref=e1196]: CARD ONLY
- generic [ref=e1198]:
- generic [ref=e1200]:
- radio "Automatically charge with existing payment method" [ref=e1201]
- generic [ref=e1202] [cursor=pointer]: Automatically charge with existing payment method
- generic [ref=e1205]:
- generic [ref=e1206]:
- generic [ref=e1207]:
- radio "Customer pays each invoice manually via payment-link" [checked] [ref=e1208]
- generic [ref=e1209] [cursor=pointer]:
- text: Customer pays each invoice manually via payment-link
- generic [ref=e1212]:
- generic [ref=e1215]:
- generic [ref=e1217]:
- generic [ref=e1219]:
- generic [ref=e1220]:
- spinbutton "Invoice due in *" [ref=e1221]: "2"
- generic [ref=e1223]: day(s)
- generic:
- generic: Invoice due in *
- alert [ref=e1224]
- generic [ref=e1227]:
- combobox [ref=e1229]:
- generic [ref=e1231]:
- generic [ref=e1233]:
- generic [ref=e1235]:
- img [ref=e1236]
- text: Card
- button [ref=e1238] [cursor=pointer]:
- generic [ref=e1239]:
- generic [ref=e1241]:
- generic [ref=e1243]:
- img [ref=e1244]
- text: SEPA via Stripe
- button [ref=e1246] [cursor=pointer]:
- generic [ref=e1247]:
- combobox "Payment methods *" [active] [ref=e1248]
- button [ref=e1250] [cursor=pointer]:
- generic:
- generic: Payment methods *
- alert [ref=e1251]
- alert [ref=e1253]
- tooltip
- tooltip
- tooltip
- tooltip
- 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 { expect, Locator } from '@playwright/test';
2 |
3 | export async function expectMultiLocatorToHaveText(locator: Locator, text: string[] | undefined): Promise {
4 | if (!text) {
5 | await expectLocatorToBeEmpty(locator);
6 | return;
7 | }
8 |
9 | const expectedValue = RegExp(text.map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'));
10 |
11 | for (const element of await locator.all()) {
12 | await expectSingleLocatorToHaveText(element, expectedValue);
13 | }
14 | }
15 |
16 | export async function expectSingleLocatorToHaveText(
17 | locator: Locator,
18 | text: string | RegExp | undefined
19 | ): Promise {
20 | text
> 21 | ? await expect(locator).toHaveText(text, { ignoreCase: true, useInnerText: true })
| ^ Error: expect(locator).toHaveText(expected) failed
22 | : await expectLocatorToBeEmpty(locator);
23 | }
24 |
25 | export async function expectLocatorToBeEmpty(locator: Locator): Promise {
26 | await expect(locator).toHaveText(/^(\s*-?\s*)$/);
27 | }
28 |
```