# 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/invoice/invoice-create.spec.ts >> creates a bacs auto-charged invoice - Location: src/manager/tests/e2e/invoice/invoice-create.spec.ts:29:7 # Error details ``` Test timeout of 120000ms exceeded. ``` ``` Error: locator.waitFor: Test timeout of 120000ms exceeded. Call log: - waiting for locator('.v-dialog:has([data-test-id="invoice-create-dialog"]):has(.v-overlay__content:not(.dialog-bottom-transition-enter-active))').locator('fieldset:has(legend:has-text("Payment"))').locator('.ui-radio-group').getByTestId('automatic-payment-option').getByTestId('segmented-card').filter({ hasText: 'Bacs Direct Debit •••• 2345' }) to be visible ``` # 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] - list [ref=e19]: - generic [ref=e21]: Dashboard - link "Tasks" [ref=e23] [cursor=pointer]: - /url: /tasks - link "Facility maps" [ref=e30] [cursor=pointer]: - /url: /facility-map - generic [ref=e31]: 󰧾 - link "Analytics" [ref=e35] [cursor=pointer]: - /url: /dashboard - generic [ref=e36]: 󱖶 - generic [ref=e40]: Sales - link "Bookings" [ref=e42] [cursor=pointer]: - /url: /bookings - generic [ref=e43]: 󰇡 - link "Customers" [ref=e47] [cursor=pointer]: - /url: /customers - generic [ref=e48]: 󰀏 - link "Invoices" [ref=e52] [cursor=pointer]: - /url: /invoices - generic [ref=e53]: 󰷉 - link "Credit notes" [ref=e57] [cursor=pointer]: - /url: /credit-notes - link "Units" [ref=e64] [cursor=pointer]: - /url: /units - generic [ref=e65]: 󰍀 - generic [ref=e69]: Site management - link "Locations" [ref=e71] [cursor=pointer]: - /url: /locations - generic [ref=e72]: 󰟙 - link "Unit types" [ref=e76] [cursor=pointer]: - /url: /unit-types - generic [ref=e77]: 󰆧 - link "Protection Plans" [ref=e81] [cursor=pointer]: - /url: /insurances - generic [ref=e82]: 󰳌 - link "Deposits" [ref=e86] [cursor=pointer]: - /url: /deposits - generic [ref=e87]: 󱙆 - link "Products" [ref=e91] [cursor=pointer]: - /url: /products - generic [ref=e92]: 󰄑 - link "Discounts" [ref=e96] [cursor=pointer]: - /url: /discounts - generic [ref=e97]: 󰓼 - generic [ref=e101]: - option "Emails" [ref=e102] [cursor=pointer]: - generic [ref=e103]: 󰻨 - generic [ref=e107]: 󰅀 - text: 󱡰 󰁥 - link "Document templates" [ref=e111] [cursor=pointer]: - /url: /document-templates - generic [ref=e112]: 󰷉 - generic [ref=e116]: Admin - link "Integrations" [ref=e118] [cursor=pointer]: - /url: /connected-apps - generic [ref=e119]: 󱘖 - link "User & Roles" [ref=e123] [cursor=pointer]: - /url: /users - generic [ref=e124]: 󰭘 - generic [ref=e128]: - option "Booking Portal" [ref=e129] [cursor=pointer]: - generic [ref=e130]: 󱃁 - generic [ref=e134]: 󰅀 - text: 󰖟 󰟙 - generic [ref=e138]: - option "JaneAI" [ref=e139] [cursor=pointer]: - generic [ref=e140]: 󱙺 - generic [ref=e144]: 󰅀 - text: 󱜹 - generic [ref=e148]: Feedback - link "Voting Portal" [ref=e150] [cursor=pointer]: - /url: /voting-portal - generic [ref=e151]: 󰔔 - generic [ref=e157]: - button "AS Andreas Stadler andreas.stadler@storeroom.at" [ref=e160] [cursor=pointer]: - generic [ref=e161]: AS - generic [ref=e164]: - generic [ref=e165]: Andreas Stadler - generic "andreas.stadler@storeroom.at" [ref=e166] - generic [ref=e167]: 󰇙 - generic: 󰗊 󰅀 󰷖 󰍃 - button [ref=e168] [cursor=pointer]: - generic [ref=e169]: 󰋽 - main [ref=e171]: - generic [ref=e173]: - generic [ref=e175]: - generic [ref=e176]: Invoices - generic [ref=e179]: - link [ref=e180] [cursor=pointer]: - /url: /invoices/create - generic [ref=e181]: - generic [ref=e182]: 󰐕 - text: Create Invoice - button [ref=e183] [cursor=pointer]: - generic [ref=e184]: 󰍝 - generic [ref=e189]: - generic [ref=e191]: - button [ref=e192] [cursor=pointer]: - generic [ref=e193]: - heading "Filters" [level=3] [ref=e196] - generic [ref=e198]: - button [ref=e200]: - generic [ref=e201]: - generic [ref=e202]: 󰑐 - text: Reset filters - generic [ref=e204]: 󰅀 - generic [ref=e212]: - generic [ref=e217]: - generic [ref=e218]: 󰍉 - generic [ref=e220]: - generic: Search - textbox "Search" [ref=e221] - text: 󰅙 - combobox [ref=e225]: - generic [ref=e226]: - generic: Location - combobox "Location" [ref=e228] - button [ref=e230] [cursor=pointer]: 󰍝 - combobox [ref=e234]: - generic [ref=e235]: - generic: Status - combobox "Status" [ref=e237] - button [ref=e239] [cursor=pointer]: 󰍝 - combobox [ref=e243]: - generic [ref=e244]: - generic: Payment option - combobox "Payment option" [ref=e246] - button [ref=e248] [cursor=pointer]: 󰍝 - combobox [ref=e252]: - generic [ref=e253]: - generic: Type - combobox "Type" [ref=e255] - button [ref=e257] [cursor=pointer]: 󰍝 - generic [ref=e262]: - generic [ref=e263]: 󰸗 - generic [ref=e265]: - generic: Created at - textbox "Created at" [ref=e266]: - generic: 󰅁 󰍝 󰅂 󰅁 󰍝 󰅂 - text: 󰅙 - generic [ref=e268]: - generic [ref=e270]: - generic [ref=e272]: - button "Select all" [ref=e280] [cursor=pointer]: - generic [ref=e281]: 󰄬 - generic [ref=e284]: - button "Mark as paid" [disabled] [ref=e287]: - generic [ref=e288]: 󰗡 - button "SEPA XML actions" [disabled] [ref=e293]: - generic [ref=e294]: 󱨉 - generic: 󰗡 󰅚 󰗖 - generic [ref=e299]: - button [ref=e300] [cursor=pointer] - generic: 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 󰄲 - table [ref=e306]: - rowgroup [ref=e307]: - row [ref=e308]: - columnheader [ref=e309]: - generic [ref=e310]: - checkbox [ref=e311] - generic [ref=e312] [cursor=pointer]: 󰄱 - columnheader [ref=e314]: - button "Number" [ref=e315] [cursor=pointer]: - generic [ref=e318]: 󰁝 - columnheader [ref=e321]: - button "Location" [ref=e322] [cursor=pointer]: - generic [ref=e325]: 󰁝 - columnheader [ref=e328]: - button "Status" [ref=e329] [cursor=pointer]: - generic [ref=e332]: 󰁝 - columnheader [ref=e335]: - button "Payment option" [ref=e336] [cursor=pointer]: - generic [ref=e339]: 󰁝 - columnheader [ref=e342]: - button "Due date" [ref=e343] [cursor=pointer]: - generic [ref=e346]: 󰁝 - columnheader [ref=e349]: - button "Customer" [ref=e350] [cursor=pointer]: - generic [ref=e353]: 󰁝 - columnheader [ref=e356]: - button "Unit" [ref=e357] [cursor=pointer]: - generic [ref=e360]: 󰁝 - columnheader "Discount" [ref=e363] - columnheader [ref=e367]: - button "Total (incl. VAT)" [ref=e368] [cursor=pointer]: - generic [ref=e369]: - generic [ref=e370]: Total (incl. VAT) - generic [ref=e371]: 󰋽 - generic [ref=e373]: 󰁝 - columnheader [ref=e376]: - button "Amount due" [ref=e377] [cursor=pointer]: - generic [ref=e380]: 󰁝 - columnheader [ref=e383]: - button "Issue date" [ref=e384] [cursor=pointer]: - generic [ref=e387]: 󰁝 - columnheader "Actions" [ref=e390] - row [ref=e394]: - columnheader [ref=e395] - rowgroup [ref=e396]: - row [ref=e397]: - cell [ref=e398]: - generic [ref=e399]: - checkbox [ref=e400] - generic [ref=e401] [cursor=pointer]: 󰄱 - cell [ref=e403]: - link "INV-2103493" [ref=e404] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e406]: - link "Vienna South" [ref=e407] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e409]: - link "Open" [ref=e410] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e415]: - link "Manual" [ref=e416] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e418]: - link "19 Aug 2026" [ref=e419] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e421]: - link "Margie Schmitt" [ref=e422] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e425]: - link [ref=e426] [cursor=pointer]: - /url: /invoices/71593151 - cell "-" [ref=e427] - cell [ref=e429]: - link "€840.00" [ref=e430] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e432]: - link "€840.00" [ref=e433] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e435]: - link "17 Aug 2026" [ref=e436] [cursor=pointer]: - /url: /invoices/71593151 - cell [ref=e438]: - button [ref=e441] [cursor=pointer]: - generic [ref=e442]: 󰇘 - generic: 󰇚 󰯝 - row [ref=e444]: - cell [ref=e445]: - generic [ref=e446]: - checkbox [ref=e447] - generic [ref=e448] [cursor=pointer]: 󰄱 - cell [ref=e450]: - link "INV-2103492" [ref=e451] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e453]: - link "Vienna South" [ref=e454] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e456]: - link "Open" [ref=e457] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e462]: - link "Manual" [ref=e463] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e465]: - link "19 Aug 2026" [ref=e466] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e468]: - link "Gerald Mertz" [ref=e469] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e472]: - link [ref=e473] [cursor=pointer]: - /url: /invoices/1411800365 - cell "-" [ref=e474] - cell [ref=e476]: - link "€770.40" [ref=e477] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e479]: - link "€770.40" [ref=e480] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e482]: - link "17 Aug 2026" [ref=e483] [cursor=pointer]: - /url: /invoices/1411800365 - cell [ref=e485]: - button [ref=e488] [cursor=pointer]: - generic [ref=e489]: 󰇘 - generic: 󰇚 󰯝 - row [ref=e491]: - cell [ref=e492]: - generic [ref=e493]: - checkbox [ref=e494] - generic [ref=e495] [cursor=pointer]: 󰄱 - cell [ref=e497]: - link "INV-2103491" [ref=e498] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e500]: - link "Vienna South" [ref=e501] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e503]: - link "Open Credit note issued" [ref=e504] [cursor=pointer]: - /url: /invoices/737299867 - generic [ref=e506]: - generic [ref=e507]: Open - generic [ref=e509]: Credit note issued - cell [ref=e511]: - link "Manual" [ref=e512] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e514]: - link "19 Aug 2026" [ref=e515] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e517]: - link "Evelyn Bogisich" [ref=e518] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e521]: - link [ref=e522] [cursor=pointer]: - /url: /invoices/737299867 - cell "-" [ref=e523] - cell [ref=e525]: - link "€720.00" [ref=e526] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e528]: - link "€480.00" [ref=e529] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e531]: - link "17 Aug 2026" [ref=e532] [cursor=pointer]: - /url: /invoices/737299867 - cell [ref=e534]: - button [ref=e537] [cursor=pointer]: - generic [ref=e538]: 󰇘 - generic: 󰇚 󰯝 - row [ref=e540]: - cell [ref=e541]: - generic [ref=e542]: - checkbox [ref=e543] - generic [ref=e544] [cursor=pointer]: 󰄱 - cell [ref=e546]: - link "INV-2103490" [ref=e547] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e549]: - link "Vienna South" [ref=e550] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e552]: - link "Paid" [ref=e553] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e558]: - link "Manual" [ref=e559] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e561]: - link "19 Aug 2026" [ref=e562] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e564]: - link "Peyton Spencer" [ref=e565] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e568]: - link [ref=e569] [cursor=pointer]: - /url: /invoices/1287864011 - cell "-" [ref=e570] - cell [ref=e572]: - link "€450.00" [ref=e573] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e575]: - link "€0.00" [ref=e576] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e578]: - link "17 Aug 2026" [ref=e579] [cursor=pointer]: - /url: /invoices/1287864011 - cell [ref=e581]: - button [ref=e584] [cursor=pointer]: - generic [ref=e585]: 󰇘 - generic: 󰇚 - row [ref=e587]: - cell [ref=e588]: - generic [ref=e589]: - checkbox [ref=e590] - generic [ref=e591] [cursor=pointer]: 󰄱 - cell [ref=e593]: - link "INV-2103489" [ref=e594] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e596]: - link "Vienna South" [ref=e597] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e599]: - link "Paid" [ref=e600] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e605]: - link "Auto charge" [ref=e606] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e608]: - link "19 Aug 2026" [ref=e609] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e611]: - link "Mann, Roberts and Cruickshank" [ref=e612] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e615]: - link [ref=e616] [cursor=pointer]: - /url: /invoices/285421349 - cell "-" [ref=e617] - cell [ref=e619]: - link "€1,753.20" [ref=e620] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e622]: - link "€0.00" [ref=e623] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e625]: - link "17 Aug 2026" [ref=e626] [cursor=pointer]: - /url: /invoices/285421349 - cell [ref=e628]: - button [ref=e631] [cursor=pointer]: - generic [ref=e632]: 󰇘 - generic: 󰇚 - row [ref=e634]: - cell [ref=e635]: - generic [ref=e636]: - checkbox [ref=e637] - generic [ref=e638] [cursor=pointer]: 󰄱 - cell [ref=e640]: - link "INV-2103488" [ref=e641] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e643]: - link "Vienna South" [ref=e644] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e646]: - link "Open" [ref=e647] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e652]: - link "Manual" [ref=e653] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e655]: - link "19 Aug 2026" [ref=e656] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e658]: - link "Gideon Farrell" [ref=e659] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e662]: - link [ref=e663] [cursor=pointer]: - /url: /invoices/1617436567 - cell "-" [ref=e664] - cell [ref=e666]: - link "€1,306.80" [ref=e667] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e669]: - link "€1,306.80" [ref=e670] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e672]: - link "17 Aug 2026" [ref=e673] [cursor=pointer]: - /url: /invoices/1617436567 - cell [ref=e675]: - button [ref=e678] [cursor=pointer]: - generic [ref=e679]: 󰇘 - generic: 󰇚 󰯝 - row [ref=e681]: - cell [ref=e682]: - generic [ref=e683]: - checkbox [ref=e684] - generic [ref=e685] [cursor=pointer]: 󰄱 - cell [ref=e687]: - link "INV-2103487" [ref=e688] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e690]: - link "Vienna South" [ref=e691] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e693]: - link "Open Credit note issued" [ref=e694] [cursor=pointer]: - /url: /invoices/3936455 - generic [ref=e696]: - generic [ref=e697]: Open - generic [ref=e699]: Credit note issued - cell [ref=e701]: - link "Manual" [ref=e702] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e704]: - link "19 Aug 2026" [ref=e705] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e707]: - link "Pattie Altenwerth" [ref=e708] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e711]: - link [ref=e712] [cursor=pointer]: - /url: /invoices/3936455 - cell "-" [ref=e713] - cell [ref=e715]: - link "€720.00" [ref=e716] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e718]: - link "€708.00" [ref=e719] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e721]: - link "17 Aug 2026" [ref=e722] [cursor=pointer]: - /url: /invoices/3936455 - cell [ref=e724]: - button [ref=e727] [cursor=pointer]: - generic [ref=e728]: 󰇘 - generic: 󰇚 󰯝 - row [ref=e730]: - cell [ref=e731]: - generic [ref=e732]: - checkbox [ref=e733] - generic [ref=e734] [cursor=pointer]: 󰄱 - cell [ref=e736]: - link "INV-2103486" [ref=e737] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e739]: - link "Vienna South" [ref=e740] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e742]: - link "Open" [ref=e743] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e748]: - link "Manual" [ref=e749] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e751]: - link "19 Aug 2026" [ref=e752] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e754]: - link "Cynthia Carroll" [ref=e755] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e758]: - link [ref=e759] [cursor=pointer]: - /url: /invoices/1359544633 - cell "-" [ref=e760] - cell [ref=e762]: - link "€540.00" [ref=e763] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e765]: - link "€540.00" [ref=e766] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e768]: - link "17 Aug 2026" [ref=e769] [cursor=pointer]: - /url: /invoices/1359544633 - cell [ref=e771]: - button [ref=e774] [cursor=pointer]: - generic [ref=e775]: 󰇘 - generic: 󰇚 󰯝 - row [ref=e777]: - cell [ref=e778]: - generic [ref=e779]: - checkbox [ref=e780] - generic [ref=e781] [cursor=pointer]: 󰄱 - cell [ref=e783]: - link "INV-2103485" [ref=e784] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e786]: - link "Vienna South" [ref=e787] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e789]: - link "Paid" [ref=e790] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e795]: - link "Manual" [ref=e796] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e798]: - link "19 Aug 2026" [ref=e799] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e801]: - link "Fred Connelly" [ref=e802] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e805]: - link [ref=e806] [cursor=pointer]: - /url: /invoices/1175351722 - cell "-" [ref=e807] - cell [ref=e809]: - link "€370.80" [ref=e810] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e812]: - link "€0.00" [ref=e813] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e815]: - link "17 Aug 2026" [ref=e816] [cursor=pointer]: - /url: /invoices/1175351722 - cell [ref=e818]: - button [ref=e821] [cursor=pointer]: - generic [ref=e822]: 󰇘 - generic: 󰇚 - row [ref=e824]: - cell [ref=e825]: - generic [ref=e826]: - checkbox [ref=e827] - generic [ref=e828] [cursor=pointer]: 󰄱 - cell [ref=e830]: - link "INV-2103484" [ref=e831] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e833]: - link "Vienna South" [ref=e834] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e836]: - link "Open" [ref=e837] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e842]: - link "Manual" [ref=e843] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e845]: - link "19 Aug 2026" [ref=e846] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e848]: - link "Homer Steuber" [ref=e849] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e852]: - link [ref=e853] [cursor=pointer]: - /url: /invoices/2092524228 - cell "-" [ref=e854] - cell [ref=e856]: - link "€504.00" [ref=e857] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e859]: - link "€504.00" [ref=e860] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e862]: - link "17 Aug 2026" [ref=e863] [cursor=pointer]: - /url: /invoices/2092524228 - cell [ref=e865]: - button [ref=e868] [cursor=pointer]: - generic [ref=e869]: 󰇘 - generic: 󰇚 󰯝 - generic [ref=e873]: - generic [ref=e874]: - generic [ref=e875]: "Items per page:" - combobox [ref=e878]: - generic [ref=e880] [cursor=pointer]: - generic [ref=e881]: "10" - combobox "Items per page:": "10" - generic [ref=e883]: 󰍝 - generic [ref=e885]: 1-10 of 120 - generic [ref=e886]: - button [disabled]: - generic: 󰘀 - button [disabled]: - generic: 󰅁 - button [ref=e887] [cursor=pointer]: - generic [ref=e888]: 󰅂 - button [ref=e890] [cursor=pointer]: - generic [ref=e891]: 󰘁 - 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 - tooltip - tooltip - tooltip - tooltip - tooltip - dialog: - generic [ref=e895]: - generic [ref=e896]: - generic [ref=e898]: - generic [ref=e899]: - button [ref=e900] [cursor=pointer]: - generic [ref=e901]: 󰅖 - heading "Create Invoice" [level=2] [ref=e904] - button "Save" [ref=e906] [cursor=pointer] - separator [ref=e908] - generic [ref=e910]: - group [ref=e911]: - heading "General" [level=3] [ref=e913] - generic [ref=e916]: - generic [ref=e919]: - combobox [ref=e921]: - generic [ref=e923]: - generic [ref=e924]: Josiane Cummings (abe49@gmail.com) - combobox "Customer *" [ref=e926] - button [ref=e928] [cursor=pointer]: 󰍝 - generic: Customer * - alert [ref=e929] - generic [ref=e932]: - combobox [ref=e934]: - generic [ref=e936]: - generic [ref=e937]: Selfstorage UK - combobox "Location *" [ref=e939] - button [ref=e941] [cursor=pointer]: 󰍝 - generic: Location * - alert [ref=e942] - generic [ref=e945]: - generic [ref=e948]: - generic: Memo - textbox "Memo" [ref=e949] - generic [ref=e950]: 󰋽 - alert [ref=e953] - generic [ref=e956]: - generic [ref=e959]: - generic: Footer - textbox "Footer" [ref=e960] - generic [ref=e961]: 󰋽 - alert [ref=e964] - group [ref=e967]: - heading "One-time products" [level=3] [ref=e969] - generic [ref=e972]: - table [ref=e975]: - rowgroup [ref=e976]: - row [ref=e977]: - columnheader [ref=e978] - columnheader "Qty" [ref=e979] - columnheader "Price" [ref=e980] - columnheader "VAT" [ref=e981] - columnheader "Amount" [ref=e982] - columnheader [ref=e983] - rowgroup [ref=e984]: - row [ref=e985]: - cell [ref=e986]: - generic [ref=e987]: - combobox [ref=e989]: - generic [ref=e991]: - generic [ref=e992]: Handmade Product xeDXul - combobox "One-time products *" [ref=e994] - button "Clear One-time products *" [ref=e996] [cursor=pointer]: 󰅙 - button [ref=e998] [cursor=pointer]: 󰍝 - generic: One-time products * - alert [ref=e999] - cell [ref=e1001]: - generic [ref=e1003]: - spinbutton [ref=e1007]: "3" - alert [ref=e1008] - cell "€175.00" [ref=e1010] - cell "20%" [ref=e1011] - cell "€525.00" [ref=e1012] - cell [ref=e1013] - alert [ref=e1015] - button "Add one-time product" [ref=e1019] [cursor=pointer] - generic [ref=e1025]: - generic [ref=e1026]: - generic [ref=e1027]: Total excl.VAT - generic [ref=e1028]: €525.00 - generic [ref=e1029]: - generic [ref=e1030]: VAT - generic [ref=e1031]: €105.00 - generic [ref=e1032]: - generic [ref=e1033]: Total incl.VAT - generic [ref=e1034]: €630.00 - alert [ref=e1036] - group [ref=e1038]: - heading "Payment" [level=3] [ref=e1040] - generic [ref=e1046]: - generic [ref=e1048]: - generic [ref=e1049]: - generic [ref=e1050]: - radio "Charge with existing payment method" [checked] [ref=e1051] - generic [ref=e1052] [cursor=pointer]: Charge with existing payment method - generic [ref=e1055]: 󰋽 - button "Add payment method" [ref=e1061] [cursor=pointer] - generic [ref=e1064]: - radio "Email invoice + payment link to customer" [ref=e1065] - generic [ref=e1066] [cursor=pointer]: Email invoice + payment link to customer - generic [ref=e1068]: 󰋽 - alert [ref=e1070] - 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 - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - dialog: - generic [ref=e1076]: - button [ref=e1078] [cursor=pointer]: - generic [ref=e1079]: 󰅖 - iframe [active] [ref=e1082]: - generic [ref=f2e7]: - generic [ref=f2e8]: Test Mode - generic [ref=f2e11]: - main [ref=f2e12]: - generic [ref=f2e16]: - generic [ref=f2e24]: - generic [ref=f2e25]: Email - generic [ref=f2e26]: abe49@gmail.com - list [ref=f2e30]: - listitem [ref=f2e35]: - generic [ref=f2e36]: - generic [ref=f2e37]: Bacs Direct Debit - generic [ref=f2e57]: - generic [ref=f2e58]: - heading "Confirm your Direct Debit details" [level=3] [ref=f2e59] - button "Modify" [ref=f2e60] [cursor=pointer] - generic [ref=f2e63]: - generic [ref=f2e64]: - term [ref=f2e66]: - generic [ref=f2e67]: Email - definition [ref=f2e69]: - generic [ref=f2e70]: abe49@gmail.com - generic [ref=f2e71]: - term [ref=f2e73]: - generic [ref=f2e74]: Name on account - definition [ref=f2e76]: - generic [ref=f2e77]: Ghostface - generic [ref=f2e78]: - term [ref=f2e80]: - generic [ref=f2e81]: Sort code - definition [ref=f2e83]: - generic [ref=f2e84]: 10-88-00 - generic [ref=f2e85]: - term [ref=f2e87]: - generic [ref=f2e88]: Account number - definition [ref=f2e90]: - generic [ref=f2e91]: "00012345" - generic [ref=f2e92]: - paragraph [ref=f2e93]: An email will be sent to abe49@gmail.com within three business days to confirm the setup of this debit instruction. - paragraph [ref=f2e94]: Additionally, you will receive two days advance notice via email of any amount to be debited under this instruction. Payments will show as 'Stripe' on your bank statement. - generic [ref=f2e96]: - generic [ref=f2e99]: - checkbox "I hereby declare that I am acting on behalf of my customer \"Josiane Cummings\" who is the account holder and the only person required to authorise debits from this account. By saving the payment information of \"Josiane Cummings\", \"Josiane Cummings\" allows Storeroom to charge \"Josiane Cummings\" for future payments in accordance with their terms." [checked] [ref=f2e101] [cursor=pointer] - paragraph [ref=f2e105] [cursor=pointer]: I hereby declare that I am acting on behalf of my customer "Josiane Cummings" who is the account holder and the only person required to authorise debits from this account. By saving the payment information of "Josiane Cummings", "Josiane Cummings" allows Storeroom to charge "Josiane Cummings" for future payments in accordance with their terms. - button "Confirm" [ref=f2e108] [cursor=pointer]: - generic: - generic [ref=f2e110]: Confirm - generic [ref=f2e111]: Processing - generic [ref=f2e128]: - paragraph [ref=f2e130]: - text: Your payments are protected by the - link "Direct Debit Guarantee" [ref=f2e131] [cursor=pointer]: - /url: https://stripe.com/legal/bacs-direct-debit-guarantee - text: . - paragraph [ref=f2e139]: - text: Stripe, 9th Floor, 107 CheapsideLondon EC2V 6DN - link "support@stripe.com" [ref=f2e140] [cursor=pointer]: - /url: mailto:support@stripe.com - contentinfo [ref=f2e142]: - link [ref=f2e144] [cursor=pointer]: - /url: https://stripe.com - generic [ref=f2e145]: - text: Powered by - img "Stripe" [ref=f2e147] - link "Terms" [ref=f2e150] [cursor=pointer]: - /url: https://stripe.com/legal/end-users - link "Privacy" [ref=f2e151] [cursor=pointer]: - /url: https://stripe.com/privacy - tooltip ``` # Test source ```ts 1 | import { PaymentMethodAddDialog } from '@/manager/modules/ui/payment-method/views/PaymentMethodAddDialog'; 2 | import { getSegmentedCardHost } from '@/manager/shared/utils/locator-utils'; 3 | import { BaseComponent } from '@/shared/base/BaseComponent'; 4 | import { PaymentMethod } from '@/shared/modules/payment-method/payment-method-types'; 5 | 6 | export class PaymentMethodAddForm extends BaseComponent { 7 | readonly loading = this.host.getByTestId('payment-methods-dropdown-loading'); 8 | readonly addButton = this.host.getByTestId('add-payment-method-button'); 9 | 10 | async select(method: PaymentMethod): Promise { 11 | const segmentedCard = getSegmentedCardHost(this.host, this.formatSegmentedCardLabel(method)); 12 | 13 | await this.loading.waitFor({ state: 'hidden' }); 14 | 15 | if (await segmentedCard.isHidden()) { 16 | await this.add(method); 17 | } else { 18 | await segmentedCard.click(); 19 | } 20 | } 21 | 22 | async add(method: PaymentMethod): Promise { 23 | const segmentedCard = getSegmentedCardHost(this.host, this.formatSegmentedCardLabel(method)); 24 | 25 | await this.loading.waitFor({ state: 'hidden' }); 26 | 27 | const dialog = await this.openAddDialog(); > 28 | await Promise.all([segmentedCard.waitFor(), dialog.add(method)]); | ^ Error: locator.waitFor: Test timeout of 120000ms exceeded. 29 | } 30 | 31 | private async openAddDialog(): Promise { 32 | await this.addButton.click(); 33 | return new PaymentMethodAddDialog(this.host.page()); 34 | } 35 | 36 | private formatSegmentedCardLabel(method: PaymentMethod): string { 37 | let label: string; 38 | let number: string; 39 | 40 | switch (method.kind) { 41 | case 'sepa': 42 | label = 'IBAN'; 43 | number = method.iban; 44 | break; 45 | case 'card': 46 | label = 'Card'; 47 | number = method.number.toString(); 48 | break; 49 | case 'bacs': 50 | label = 'Bacs Direct Debit'; 51 | number = method.number; 52 | break; 53 | } 54 | 55 | return `${label} •••• ${number.substring(number.length - 4)}`; 56 | } 57 | } 58 | ```