# 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 booking with insurance and a discount - 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: "€100.00" Received: "€716.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
€716.00
- unexpected value "€716.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 Icie Bergstrom Incredible Box JGlocK Unit DbEsb3 Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Icie Bergstrom" [ref=e420]: - link "Icie Bergstrom" [ref=e421] [cursor=pointer]: - /url: /bookings/1037443185 - generic [ref=e424]: Icie Bergstrom - cell "Incredible Box JGlocK" [ref=e425]: - link "Incredible Box JGlocK" [ref=e426] [cursor=pointer]: - /url: /bookings/1037443185 - generic [ref=e428]: Incredible Box JGlocK - cell "Unit DbEsb3" [ref=e429]: - link "Unit DbEsb3" [ref=e430] [cursor=pointer]: - /url: /bookings/1037443185 - generic [ref=e432]: Unit DbEsb3 - cell "Basic (1 week)" [ref=e433]: - link "Basic (1 week)" [ref=e434] [cursor=pointer]: - /url: /bookings/1037443185 - generic [ref=e435]: Basic (1 week) - cell "27 Aug 2026" [ref=e436]: - link "27 Aug 2026" [ref=e437] [cursor=pointer]: - /url: /bookings/1037443185 - generic [ref=e438]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e439]: - link "20 Aug 2026" [ref=e440] [cursor=pointer]: - /url: /bookings/1037443185 - generic [ref=e441]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e442]: - link "20 Aug 2026" [ref=e443] [cursor=pointer]: - /url: /bookings/1037443185 - generic [ref=e444]: 20 Aug 2026 - cell [ref=e445]: - link [ref=e446] [cursor=pointer]: - /url: /bookings/1037443185 - row "2426-1859-9 Vienna South Active Lana Lebsack Tasty Box W6VQIE Unit 6AU71g Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Lana Lebsack" [ref=e465]: - link "Lana Lebsack" [ref=e466] [cursor=pointer]: - /url: /bookings/242618599 - generic [ref=e469]: Lana Lebsack - cell "Tasty Box W6VQIE" [ref=e470]: - link "Tasty Box W6VQIE" [ref=e471] [cursor=pointer]: - /url: /bookings/242618599 - generic [ref=e473]: Tasty Box W6VQIE - cell "Unit 6AU71g" [ref=e474]: - link "Unit 6AU71g" [ref=e475] [cursor=pointer]: - /url: /bookings/242618599 - generic [ref=e477]: Unit 6AU71g - cell "Basic (1 week)" [ref=e478]: - link "Basic (1 week)" [ref=e479] [cursor=pointer]: - /url: /bookings/242618599 - generic [ref=e480]: Basic (1 week) - cell "27 Aug 2026" [ref=e481]: - link "27 Aug 2026" [ref=e482] [cursor=pointer]: - /url: /bookings/242618599 - generic [ref=e483]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e484]: - link "20 Aug 2026" [ref=e485] [cursor=pointer]: - /url: /bookings/242618599 - generic [ref=e486]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e487]: - link "20 Aug 2026" [ref=e488] [cursor=pointer]: - /url: /bookings/242618599 - generic [ref=e489]: 20 Aug 2026 - cell [ref=e490]: - link [ref=e491] [cursor=pointer]: - /url: /bookings/242618599 - row "1056-5718-63 Vienna South Active Mariana Wunsch Oriental Box 4oJH5w Unit B6JJsb Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Mariana Wunsch" [ref=e510]: - link "Mariana Wunsch" [ref=e511] [cursor=pointer]: - /url: /bookings/1056571863 - generic [ref=e514]: Mariana Wunsch - cell "Oriental Box 4oJH5w" [ref=e515]: - link "Oriental Box 4oJH5w" [ref=e516] [cursor=pointer]: - /url: /bookings/1056571863 - generic [ref=e518]: Oriental Box 4oJH5w - cell "Unit B6JJsb" [ref=e519]: - link "Unit B6JJsb" [ref=e520] [cursor=pointer]: - /url: /bookings/1056571863 - generic [ref=e522]: Unit B6JJsb - cell "Basic (1 week)" [ref=e523]: - link "Basic (1 week)" [ref=e524] [cursor=pointer]: - /url: /bookings/1056571863 - generic [ref=e525]: Basic (1 week) - cell "27 Aug 2026" [ref=e526]: - link "27 Aug 2026" [ref=e527] [cursor=pointer]: - /url: /bookings/1056571863 - generic [ref=e528]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e529]: - link "20 Aug 2026" [ref=e530] [cursor=pointer]: - /url: /bookings/1056571863 - generic [ref=e531]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e532]: - link "20 Aug 2026" [ref=e533] [cursor=pointer]: - /url: /bookings/1056571863 - generic [ref=e534]: 20 Aug 2026 - cell [ref=e535]: - link [ref=e536] [cursor=pointer]: - /url: /bookings/1056571863 - row "3055-5813-4 Vienna South Active Pablo Windler Refined Box mjcbkm Unit t7HVu6 Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Pablo Windler" [ref=e555]: - link "Pablo Windler" [ref=e556] [cursor=pointer]: - /url: /bookings/305558134 - generic [ref=e559]: Pablo Windler - cell "Refined Box mjcbkm" [ref=e560]: - link "Refined Box mjcbkm" [ref=e561] [cursor=pointer]: - /url: /bookings/305558134 - generic [ref=e563]: Refined Box mjcbkm - cell "Unit t7HVu6" [ref=e564]: - link "Unit t7HVu6" [ref=e565] [cursor=pointer]: - /url: /bookings/305558134 - generic [ref=e567]: Unit t7HVu6 - cell "Basic (1 week)" [ref=e568]: - link "Basic (1 week)" [ref=e569] [cursor=pointer]: - /url: /bookings/305558134 - generic [ref=e570]: Basic (1 week) - cell "27 Aug 2026" [ref=e571]: - link "27 Aug 2026" [ref=e572] [cursor=pointer]: - /url: /bookings/305558134 - generic [ref=e573]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e574]: - link "20 Aug 2026" [ref=e575] [cursor=pointer]: - /url: /bookings/305558134 - generic [ref=e576]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e577]: - link "20 Aug 2026" [ref=e578] [cursor=pointer]: - /url: /bookings/305558134 - generic [ref=e579]: 20 Aug 2026 - cell [ref=e580]: - link [ref=e581] [cursor=pointer]: - /url: /bookings/305558134 - row "1640-0637-14 Vienna South Active Tyreek Crooks Tasty Box g3t289 Unit jV7QOG Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Tyreek Crooks" [ref=e600]: - link "Tyreek Crooks" [ref=e601] [cursor=pointer]: - /url: /bookings/1640063714 - generic [ref=e604]: Tyreek Crooks - cell "Tasty Box g3t289" [ref=e605]: - link "Tasty Box g3t289" [ref=e606] [cursor=pointer]: - /url: /bookings/1640063714 - generic [ref=e608]: Tasty Box g3t289 - cell "Unit jV7QOG" [ref=e609]: - link "Unit jV7QOG" [ref=e610] [cursor=pointer]: - /url: /bookings/1640063714 - generic [ref=e612]: Unit jV7QOG - cell "Basic (1 week)" [ref=e613]: - link "Basic (1 week)" [ref=e614] [cursor=pointer]: - /url: /bookings/1640063714 - generic [ref=e615]: Basic (1 week) - cell "27 Aug 2026" [ref=e616]: - link "27 Aug 2026" [ref=e617] [cursor=pointer]: - /url: /bookings/1640063714 - generic [ref=e618]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e619]: - link "20 Aug 2026" [ref=e620] [cursor=pointer]: - /url: /bookings/1640063714 - generic [ref=e621]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e622]: - link "20 Aug 2026" [ref=e623] [cursor=pointer]: - /url: /bookings/1640063714 - generic [ref=e624]: 20 Aug 2026 - cell [ref=e625]: - link [ref=e626] [cursor=pointer]: - /url: /bookings/1640063714 - row "2476-1646-4 Vienna South Active Amparo Russel Frozen Box 5eBIKQ Unit YZ2eid Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Amparo Russel" [ref=e645]: - link "Amparo Russel" [ref=e646] [cursor=pointer]: - /url: /bookings/247616464 - generic [ref=e649]: Amparo Russel - cell "Frozen Box 5eBIKQ" [ref=e650]: - link "Frozen Box 5eBIKQ" [ref=e651] [cursor=pointer]: - /url: /bookings/247616464 - generic [ref=e653]: Frozen Box 5eBIKQ - cell "Unit YZ2eid" [ref=e654]: - link "Unit YZ2eid" [ref=e655] [cursor=pointer]: - /url: /bookings/247616464 - generic [ref=e657]: Unit YZ2eid - cell "Basic (1 week)" [ref=e658]: - link "Basic (1 week)" [ref=e659] [cursor=pointer]: - /url: /bookings/247616464 - generic [ref=e660]: Basic (1 week) - cell "27 Aug 2026" [ref=e661]: - link "27 Aug 2026" [ref=e662] [cursor=pointer]: - /url: /bookings/247616464 - generic [ref=e663]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e664]: - link "20 Aug 2026" [ref=e665] [cursor=pointer]: - /url: /bookings/247616464 - generic [ref=e666]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e667]: - link "20 Aug 2026" [ref=e668] [cursor=pointer]: - /url: /bookings/247616464 - generic [ref=e669]: 20 Aug 2026 - cell [ref=e670]: - link [ref=e671] [cursor=pointer]: - /url: /bookings/247616464 - row "2078-6883-32 Vienna South Active Alessia Schimmel Small Box Zwcj6M Unit a8a0bk Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Alessia Schimmel" [ref=e690]: - link "Alessia Schimmel" [ref=e691] [cursor=pointer]: - /url: /bookings/2078688332 - generic [ref=e694]: Alessia Schimmel - cell "Small Box Zwcj6M" [ref=e695]: - link "Small Box Zwcj6M" [ref=e696] [cursor=pointer]: - /url: /bookings/2078688332 - generic [ref=e698]: Small Box Zwcj6M - cell "Unit a8a0bk" [ref=e699]: - link "Unit a8a0bk" [ref=e700] [cursor=pointer]: - /url: /bookings/2078688332 - generic [ref=e702]: Unit a8a0bk - cell "Basic (1 week)" [ref=e703]: - link "Basic (1 week)" [ref=e704] [cursor=pointer]: - /url: /bookings/2078688332 - generic [ref=e705]: Basic (1 week) - cell "27 Aug 2026" [ref=e706]: - link "27 Aug 2026" [ref=e707] [cursor=pointer]: - /url: /bookings/2078688332 - generic [ref=e708]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e709]: - link "20 Aug 2026" [ref=e710] [cursor=pointer]: - /url: /bookings/2078688332 - generic [ref=e711]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e712]: - link "20 Aug 2026" [ref=e713] [cursor=pointer]: - /url: /bookings/2078688332 - generic [ref=e714]: 20 Aug 2026 - cell [ref=e715]: - link [ref=e716] [cursor=pointer]: - /url: /bookings/2078688332 - row "1015-8870-97 Vienna South Active Caroline Stamm Licensed Box 4iOUAM Unit sSwM2W Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Caroline Stamm" [ref=e735]: - link "Caroline Stamm" [ref=e736] [cursor=pointer]: - /url: /bookings/1015887097 - generic [ref=e739]: Caroline Stamm - cell "Licensed Box 4iOUAM" [ref=e740]: - link "Licensed Box 4iOUAM" [ref=e741] [cursor=pointer]: - /url: /bookings/1015887097 - generic [ref=e743]: Licensed Box 4iOUAM - cell "Unit sSwM2W" [ref=e744]: - link "Unit sSwM2W" [ref=e745] [cursor=pointer]: - /url: /bookings/1015887097 - generic [ref=e747]: Unit sSwM2W - cell "Basic (1 week)" [ref=e748]: - link "Basic (1 week)" [ref=e749] [cursor=pointer]: - /url: /bookings/1015887097 - generic [ref=e750]: Basic (1 week) - cell "27 Aug 2026" [ref=e751]: - link "27 Aug 2026" [ref=e752] [cursor=pointer]: - /url: /bookings/1015887097 - generic [ref=e753]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e754]: - link "20 Aug 2026" [ref=e755] [cursor=pointer]: - /url: /bookings/1015887097 - generic [ref=e756]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e757]: - link "20 Aug 2026" [ref=e758] [cursor=pointer]: - /url: /bookings/1015887097 - generic [ref=e759]: 20 Aug 2026 - cell [ref=e760]: - link [ref=e761] [cursor=pointer]: - /url: /bookings/1015887097 - row "4514-8702-2 Vienna South Active Minnie Hermann Fantastic Box HE7PEW Unit NhCblo Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Minnie Hermann" [ref=e780]: - link "Minnie Hermann" [ref=e781] [cursor=pointer]: - /url: /bookings/451487022 - generic [ref=e784]: Minnie Hermann - cell "Fantastic Box HE7PEW" [ref=e785]: - link "Fantastic Box HE7PEW" [ref=e786] [cursor=pointer]: - /url: /bookings/451487022 - generic [ref=e788]: Fantastic Box HE7PEW - cell "Unit NhCblo" [ref=e789]: - link "Unit NhCblo" [ref=e790] [cursor=pointer]: - /url: /bookings/451487022 - generic [ref=e792]: Unit NhCblo - cell "Basic (1 week)" [ref=e793]: - link "Basic (1 week)" [ref=e794] [cursor=pointer]: - /url: /bookings/451487022 - generic [ref=e795]: Basic (1 week) - cell "27 Aug 2026" [ref=e796]: - link "27 Aug 2026" [ref=e797] [cursor=pointer]: - /url: /bookings/451487022 - generic [ref=e798]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e799]: - link "20 Aug 2026" [ref=e800] [cursor=pointer]: - /url: /bookings/451487022 - generic [ref=e801]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e802]: - link "20 Aug 2026" [ref=e803] [cursor=pointer]: - /url: /bookings/451487022 - generic [ref=e804]: 20 Aug 2026 - cell [ref=e805]: - link [ref=e806] [cursor=pointer]: - /url: /bookings/451487022 - row "1003-7551-02 Vienna South Active Rodrigo O'Reilly Gorgeous Box qoeRip Unit vQ9nVO Basic (1 week) 27 Aug 2026 20 Aug 2026 20 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 "Rodrigo O'Reilly" [ref=e825]: - link "Rodrigo O'Reilly" [ref=e826] [cursor=pointer]: - /url: /bookings/1003755102 - generic [ref=e829]: Rodrigo O'Reilly - cell "Gorgeous Box qoeRip" [ref=e830]: - link "Gorgeous Box qoeRip" [ref=e831] [cursor=pointer]: - /url: /bookings/1003755102 - generic [ref=e833]: Gorgeous Box qoeRip - cell "Unit vQ9nVO" [ref=e834]: - link "Unit vQ9nVO" [ref=e835] [cursor=pointer]: - /url: /bookings/1003755102 - generic [ref=e837]: Unit vQ9nVO - cell "Basic (1 week)" [ref=e838]: - link "Basic (1 week)" [ref=e839] [cursor=pointer]: - /url: /bookings/1003755102 - generic [ref=e840]: Basic (1 week) - cell "27 Aug 2026" [ref=e841]: - link "27 Aug 2026" [ref=e842] [cursor=pointer]: - /url: /bookings/1003755102 - generic [ref=e843]: 27 Aug 2026 - cell "20 Aug 2026" [ref=e844]: - link "20 Aug 2026" [ref=e845] [cursor=pointer]: - /url: /bookings/1003755102 - generic [ref=e846]: 20 Aug 2026 - cell "20 Aug 2026" [ref=e847]: - link "20 Aug 2026" [ref=e848] [cursor=pointer]: - /url: /bookings/1003755102 - generic [ref=e849]: 20 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]: Dana Kshlerin (neil_pagac@yahoo.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: 20/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]: Bespoke Box Ac6sbw - 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 i3vgU4 - 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 "1 week €50.00 20% €50.00" [ref=e1012]: - cell [ref=e1013]: - generic [ref=e1014]: - combobox [ref=e1016]: - generic [ref=e1018]: - generic [ref=e1020]: Luxurious Insurance CMbOVn - combobox "Protection plan" [ref=e1021] - button "Clear Protection plan" [ref=e1023] [cursor=pointer]: 󰅙 - button [ref=e1025] [cursor=pointer]: 󰍝 - generic: - generic: Protection plan - alert [ref=e1026] - cell "1 week" [ref=e1028]: - generic [ref=e1029]: 1 week - cell [ref=e1030] - cell "€50.00" [ref=e1031]: - generic [ref=e1032]: €50.00 - cell "20%" [ref=e1033]: - generic [ref=e1034]: 20% - cell "€50.00" [ref=e1035]: - generic [ref=e1036]: €50.00 - generic [ref=e1037]: - generic: - table - button "Add recurring product" [ref=e1040] [cursor=pointer] - generic [ref=e1041]: - table [ref=e1043]: - rowgroup [ref=e1044]: - row "One time Quantity Price VAT Amount" [ref=e1045]: - columnheader "One time" [ref=e1046] - columnheader [ref=e1047] - columnheader "Quantity" [ref=e1048] - columnheader "Price" [ref=e1049] - columnheader "VAT" [ref=e1050] - columnheader "Amount" [ref=e1051] - rowgroup [ref=e1052]: - row "1 €176.00 20% €176.00" [ref=e1053]: - cell [ref=e1054]: - generic [ref=e1055]: - combobox [ref=e1057]: - generic [ref=e1059]: - generic [ref=e1061]: Incredible Product BsZ1ms - combobox "One-time product" [ref=e1062] - button "Clear One-time product" [ref=e1064] [cursor=pointer]: 󰅙 - button [ref=e1066] [cursor=pointer]: 󰍝 - generic: - generic: One-time product - alert [ref=e1067]: - generic [ref=e1069]: Mandatory - cell [ref=e1070] - cell "1" [ref=e1071]: - generic [ref=e1072]: - spinbutton [ref=e1076]: "1" - alert [ref=e1077] - cell "€176.00" [ref=e1079]: - generic [ref=e1080]: €176.00 - cell "20%" [ref=e1081]: - generic [ref=e1082]: 20% - cell "€176.00" [ref=e1083]: - generic [ref=e1084]: - generic [ref=e1085]: €176.00 - button [ref=e1086] [cursor=pointer]: - generic [ref=e1088]: 󰩺 - rowgroup [ref=e1089]: - row "1 €440.00 20% €440.00" [ref=e1090]: - cell [ref=e1091]: - generic [ref=e1092]: - combobox [ref=e1094]: - generic [ref=e1096]: - generic [ref=e1098]: Luxurious Product qZZxu4 - combobox "One-time product" [ref=e1099] - button "Clear One-time product" [ref=e1101] [cursor=pointer]: 󰅙 - button [ref=e1103] [cursor=pointer]: 󰍝 - generic: - generic: One-time product - alert [ref=e1104]: - generic [ref=e1106]: Mandatory - cell [ref=e1107] - cell "1" [ref=e1108]: - generic [ref=e1109]: - spinbutton [ref=e1113]: "1" - alert [ref=e1114] - cell "€440.00" [ref=e1116]: - generic [ref=e1117]: €440.00 - cell "20%" [ref=e1118]: - generic [ref=e1119]: 20% - cell "€440.00" [ref=e1120]: - generic [ref=e1121]: - generic [ref=e1122]: €440.00 - button [ref=e1123] [cursor=pointer]: - generic [ref=e1125]: 󰩺 - button "Add one-time product" [ref=e1128] [cursor=pointer] - table [ref=e1131]: - rowgroup [ref=e1132]: - row "Deposit Quantity Price VAT Amount" [ref=e1133]: - columnheader "Deposit" [ref=e1134] - columnheader [ref=e1135] - columnheader "Quantity" [ref=e1136] - columnheader "Price" [ref=e1137] - columnheader "VAT" [ref=e1138] - columnheader "Amount" [ref=e1139] - rowgroup [ref=e1140]: - row [ref=e1141]: - cell [ref=e1142]: - generic [ref=e1143]: - combobox [ref=e1145]: - generic [ref=e1146]: - generic: Deposit - combobox "Deposit" [ref=e1148] - text: 󰅙 - button [ref=e1150] [cursor=pointer]: 󰍝 - alert [ref=e1151] - cell [ref=e1153] - cell [ref=e1154] - cell [ref=e1155] - cell [ref=e1156] - cell [ref=e1157] - table [ref=e1160]: - rowgroup [ref=e1161]: - row "Discount Terms Price Amount" [ref=e1162]: - columnheader "Discount" [ref=e1163] - columnheader "Terms" [ref=e1164] - columnheader [ref=e1165] - columnheader "Price" [ref=e1166] - columnheader [ref=e1167] - columnheader "Amount" [ref=e1168] - rowgroup [ref=e1169]: - row "€10.00 off once -€10.00 -€10.00" [ref=e1170]: - cell [ref=e1171]: - generic [ref=e1172]: - combobox [ref=e1174]: - generic [ref=e1176]: - generic [ref=e1178]: Incredible Sale N5Ukdl - combobox "Discount" [ref=e1179] - button "Clear Discount" [ref=e1181] [cursor=pointer]: 󰅙 - button [ref=e1183] [cursor=pointer]: 󰍝 - generic: - generic: Discount - alert [ref=e1184] - cell "€10.00 off once" [ref=e1186]: - generic [ref=e1187]: €10.00 off once - cell [ref=e1188] - cell "-€10.00" [ref=e1189]: - generic [ref=e1190]: "-€10.00" - cell [ref=e1191] - cell "-€10.00" [ref=e1192]: - generic [ref=e1193]: "-€10.00" - generic [ref=e1199]: - generic [ref=e1200]: - generic [ref=e1201]: Total excl.VAT - generic [ref=e1202]: €716.00 - generic [ref=e1203]: - generic [ref=e1204]: Discount - generic [ref=e1205]: "-€10.00" - generic [ref=e1206]: - generic [ref=e1207]: VAT - generic [ref=e1208]: €140.00 - generic [ref=e1209]: - generic [ref=e1210]: Total incl.VAT - generic [ref=e1211]: €846.00 - group "Payment" [ref=e1212]: - heading "Payment" [level=3] [ref=e1214]: - generic [ref=e1216]: Payment - generic [ref=e1219]: - generic [ref=e1221]: - generic [ref=e1223]: - radio "Customer will be charged automatically (after 1st invoice) CARD ONLY" [checked] [active] [ref=e1224] - generic [ref=e1227] [cursor=pointer]: - text: Customer will be charged automatically (after 1st invoice) - generic [ref=e1229]: CARD ONLY - generic [ref=e1231]: 󰋽 - generic [ref=e1233]: - radio "Automatically charge with existing payment method" [ref=e1234] - generic [ref=e1235] [cursor=pointer]: Automatically charge with existing payment method - generic [ref=e1238]: 󰋽 - generic [ref=e1240]: - radio "Customer pays each invoice manually via payment-link" [ref=e1241] - generic [ref=e1242] [cursor=pointer]: - text: Customer pays each invoice manually via payment-link - generic [ref=e1245]: 󰋽 - alert [ref=e1246] - 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 | ```