# 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-issue-credit-note.spec.ts >> issues a partial credit note for an open invoice with multiple items by unselecting items - Location: src/manager/tests/e2e/invoice/invoice-issue-credit-note.spec.ts:29:7 # Error details ``` Error: locator.setChecked: Clicking the checkbox did not change its state Call log: - waiting for locator('.v-dialog:has([data-test-id="invoice-issue-credit-note-dialog"]):has(.v-overlay__content:not(.dialog-bottom-transition-enter-active))').locator('fieldset:has(legend:has-text("Items to credit"))').getByTestId('credit-note-line-item').filter({ hasText: 'Elegant Product MYYqDs' }).getByTestId('column-description').locator('input[type=checkbox]:not(.disabled)') - locator resolved to - attempting click action - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - performing click action - click action done - waiting for scheduled navigations to finish - navigations have finished ``` # Page snapshot ```yaml - generic [ref=f1e1]: - generic [ref=f1e6]: - navigation [ref=f1e7]: - generic [ref=f1e9]: - link [ref=f1e10] [cursor=pointer]: - /url: / - generic [ref=f1e11]: - generic [ref=f1e12]: KINNOVIS - generic [ref=f1e13]: Manager - button [ref=f1e15] [cursor=pointer] - list [ref=f1e19]: - generic [ref=f1e21]: Dashboard - link "Tasks" [ref=f1e23] [cursor=pointer]: - /url: /tasks - link "Facility maps" [ref=f1e30] [cursor=pointer]: - /url: /facility-map - generic [ref=f1e31]: 󰧾 - link "Analytics" [ref=f1e35] [cursor=pointer]: - /url: /dashboard - generic [ref=f1e36]: 󱖶 - generic [ref=f1e40]: Sales - link "Bookings" [ref=f1e42] [cursor=pointer]: - /url: /bookings - generic [ref=f1e43]: 󰇡 - link "Customers" [ref=f1e47] [cursor=pointer]: - /url: /customers - generic [ref=f1e48]: 󰀏 - link "Invoices" [ref=f1e52] [cursor=pointer]: - /url: /invoices - generic [ref=f1e53]: 󰷉 - link "Credit notes" [ref=f1e57] [cursor=pointer]: - /url: /credit-notes - link "Units" [ref=f1e64] [cursor=pointer]: - /url: /units - generic [ref=f1e65]: 󰍀 - generic [ref=f1e69]: Site management - link "Locations" [ref=f1e71] [cursor=pointer]: - /url: /locations - generic [ref=f1e72]: 󰟙 - link "Unit types" [ref=f1e76] [cursor=pointer]: - /url: /unit-types - generic [ref=f1e77]: 󰆧 - link "Protection Plans" [ref=f1e81] [cursor=pointer]: - /url: /insurances - generic [ref=f1e82]: 󰳌 - link "Deposits" [ref=f1e86] [cursor=pointer]: - /url: /deposits - generic [ref=f1e87]: 󱙆 - link "Products" [ref=f1e91] [cursor=pointer]: - /url: /products - generic [ref=f1e92]: 󰄑 - link "Discounts" [ref=f1e96] [cursor=pointer]: - /url: /discounts - generic [ref=f1e97]: 󰓼 - generic [ref=f1e101]: - option "Emails" [ref=f1e102] [cursor=pointer]: - generic [ref=f1e103]: 󰻨 - generic [ref=f1e107]: 󰅀 - text: 󱡰 󰁥 - link "Document templates" [ref=f1e111] [cursor=pointer]: - /url: /document-templates - generic [ref=f1e112]: 󰷉 - generic [ref=f1e116]: Admin - link "Integrations" [ref=f1e118] [cursor=pointer]: - /url: /connected-apps - generic [ref=f1e119]: 󱘖 - link "User & Roles" [ref=f1e123] [cursor=pointer]: - /url: /users - generic [ref=f1e124]: 󰭘 - generic [ref=f1e128]: - option "Booking Portal" [ref=f1e129] [cursor=pointer]: - generic [ref=f1e130]: 󱃁 - generic [ref=f1e134]: 󰅀 - text: 󰖟 󰟙 - generic [ref=f1e138]: - option "JaneAI" [ref=f1e139] [cursor=pointer]: - generic [ref=f1e140]: 󱙺 - generic [ref=f1e144]: 󰅀 - text: 󱜹 - generic [ref=f1e148]: Feedback - link "Voting Portal" [ref=f1e150] [cursor=pointer]: - /url: /voting-portal - generic [ref=f1e151]: 󰔔 - generic [ref=f1e157]: - button "AS Andreas Stadler andreas.stadler@storeroom.at" [ref=f1e160] [cursor=pointer]: - generic [ref=f1e161]: AS - generic [ref=f1e164]: - generic [ref=f1e165]: Andreas Stadler - generic "andreas.stadler@storeroom.at" [ref=f1e166] - generic [ref=f1e167]: 󰇙 - generic: 󰗊 󰅀 󰷖 󰍃 - button [ref=f1e168] [cursor=pointer]: - generic [ref=f1e169]: 󰋽 - main [ref=f1e171]: - generic [ref=f1e173]: - generic [ref=f1e175]: - generic [ref=f1e176]: - link "Invoices" [ref=f1e177] [cursor=pointer]: - /url: /invoices - generic [ref=f1e179]: 󰅂 - generic [ref=f1e180]: INV-2103883 - generic [ref=f1e181]: Open - button [ref=f1e187] [cursor=pointer]: - generic [ref=f1e188]: - text: Actions - generic [ref=f1e189]: 󱨉 - generic: 󰇚 󱴆 󱳱 󱤒 󰆛 󰗡 󱈎 - generic [ref=f1e191]: - generic [ref=f1e193]: - heading "General" [level=3] [ref=f1e197] - table [ref=f1e200]: - rowgroup [ref=f1e201]: - row [ref=f1e202]: - rowheader "Location" [ref=f1e203] - cell "Vienna South" [ref=f1e204] - row [ref=f1e207]: - rowheader "Issue date" [ref=f1e208] - cell "18 Aug 2026" [ref=f1e209] - row [ref=f1e212]: - rowheader "Due date" [ref=f1e213] - cell "20 Aug 2026" [ref=f1e214] - row [ref=f1e217]: - rowheader "Total" [ref=f1e218] - cell "€840.00" [ref=f1e219] - row [ref=f1e222]: - rowheader "Amount due" [ref=f1e223] - cell "€840.00" [ref=f1e224] - row [ref=f1e227]: - rowheader "Period" [ref=f1e228] - cell "-" [ref=f1e229] - row [ref=f1e232]: - rowheader "Payment option" [ref=f1e233] - cell "Manual" [ref=f1e234] - row [ref=f1e237]: - rowheader "Payment link" [ref=f1e238] - cell "https://invoice.stripe.com/i/acct_1MeJfDB0vsavZFES/test_YWNjdF8xTWVKZkRCMHZzYXZaRkVTLF9WNW1QUnBkOWROVUdHRzJsVEY5cEllVUszbWRWZ3ZvLDE3NzU1MzU1Nw0200lpZqzMxC?s=ap" [ref=f1e239]: - generic [ref=f1e240]: - generic [ref=f1e241]: https://invoice.stripe.com/i/acct_1MeJfDB0vsavZFES/test_YWNjdF8xTWVKZkRCMHZzYXZaRkVTLF9WNW1QUnBkOWROVUdHRzJsVEY5cEllVUszbWRWZ3ZvLDE3NzU1MzU1Nw0200lpZqzMxC?s=ap - button [ref=f1e245] [cursor=pointer]: - generic [ref=f1e246]: 󰏌 - generic [ref=f1e249]: - heading "Customer details" [level=3] [ref=f1e253] - table [ref=f1e256]: - rowgroup [ref=f1e257]: - row [ref=f1e258]: - rowheader "Name" [ref=f1e259] - cell [ref=f1e260]: - link "Leona Sporer" [ref=f1e263] [cursor=pointer]: - /url: /customers/1590050088 - row [ref=f1e266]: - rowheader "Customer type" [ref=f1e267] - cell "Private" [ref=f1e268] - row [ref=f1e271]: - rowheader "Email" [ref=f1e272] - cell [ref=f1e273]: - link "claudie_kassulke54@hotmail.com" [ref=f1e276] [cursor=pointer]: - /url: mailto:claudie_kassulke54@hotmail.com - row [ref=f1e277]: - rowheader "Phone number" [ref=f1e278] - cell "+43 2514 044369" [ref=f1e279] - row [ref=f1e282]: - rowheader "Billing address" [ref=f1e283] - cell "Haley Mall 33537-9201 North Kiel Austria" [ref=f1e284] - generic [ref=f1e288]: - heading "Payments" [level=3] [ref=f1e292] - generic [ref=f1e296]: - table [ref=f1e300]: - rowgroup [ref=f1e301]: - row [ref=f1e302]: - columnheader [ref=f1e303]: - button "Total" [ref=f1e304] [cursor=pointer]: - generic [ref=f1e307]: 󰁝 - columnheader [ref=f1e310]: - button "Status" [ref=f1e311] [cursor=pointer]: - generic [ref=f1e314]: 󰁝 - columnheader [ref=f1e317]: - button "Invoice no." [ref=f1e318] [cursor=pointer]: - generic [ref=f1e321]: 󰁝 - columnheader [ref=f1e324]: - button "Date" [ref=f1e325] [cursor=pointer]: - generic [ref=f1e328]: 󰁝 - columnheader [ref=f1e331]: - button "Payment method" [ref=f1e332] [cursor=pointer]: - generic [ref=f1e335]: 󰁝 - row [ref=f1e338]: - columnheader [ref=f1e339] - rowgroup [ref=f1e340]: - row [ref=f1e341]: - cell "€840.00" [ref=f1e342] - cell "Not paid yet" [ref=f1e344] - cell "INV-2103883" [ref=f1e349] - cell "18 Aug 2026" [ref=f1e351] - cell [ref=f1e353] - generic [ref=f1e356]: - generic [ref=f1e357]: - generic [ref=f1e358]: "Items per page:" - combobox [ref=f1e361]: - generic [ref=f1e363] [cursor=pointer]: - generic [ref=f1e364]: "10" - combobox "Items per page:": "10" - generic [ref=f1e366]: 󰍝 - generic [ref=f1e368]: 1-1 of 1 - generic [ref=f1e369]: - button [disabled]: - generic: 󰘀 - button [disabled]: - generic: 󰅁 - button [disabled]: - generic: 󰅂 - button [disabled]: - generic: 󰘁 - generic [ref=f1e372]: - heading "Late Fees" [level=3] [ref=f1e377] - generic [ref=f1e381]: - table [ref=f1e385]: - rowgroup [ref=f1e386]: - row [ref=f1e387]: - columnheader "Invoice no." [ref=f1e388] - columnheader "Invoice note" [ref=f1e392] - columnheader "Created by" [ref=f1e396] - columnheader "Total" [ref=f1e400] - columnheader "Status" [ref=f1e404] - columnheader "Issue date" [ref=f1e408] - columnheader "Due date" [ref=f1e412] - row [ref=f1e416]: - columnheader [ref=f1e417] - rowgroup [ref=f1e418]: - row [ref=f1e419]: - cell "No data yet" [ref=f1e420] - generic [ref=f1e424]: - generic [ref=f1e425]: - generic [ref=f1e426]: "Items per page:" - combobox [ref=f1e429]: - generic [ref=f1e431] [cursor=pointer]: - generic [ref=f1e432]: "10" - combobox "Items per page:": "10" - generic [ref=f1e434]: 󰍝 - generic [ref=f1e436]: 0-0 of 0 - generic [ref=f1e437]: - button [disabled]: - generic: 󰘀 - button [disabled]: - generic: 󰅁 - button [disabled]: - generic: 󰅂 - button [disabled]: - generic: 󰘁 - 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=f1e440]: - generic [ref=f1e441]: - generic [ref=f1e443]: - generic [ref=f1e444]: - button [ref=f1e445] [cursor=pointer]: - generic [ref=f1e446]: 󰅖 - heading "Issue Credit Note" [level=2] [ref=f1e449] - button "Save" [ref=f1e451] [cursor=pointer] - separator [ref=f1e453] - generic [ref=f1e455]: - group [ref=f1e456]: - heading "Invoice INV-2103883 Open" [level=3] [ref=f1e458]: - generic [ref=f1e460]: - text: Invoice INV-2103883 - generic [ref=f1e461]: Open - generic [ref=f1e465]: - generic [ref=f1e467]: - textbox "Reason *" [ref=f1e469]: Example reason! - generic: Reason * - alert [ref=f1e470] - group [ref=f1e472]: - heading "Items to credit" [level=3] [ref=f1e474] - generic [ref=f1e477]: - generic [ref=f1e478]: - table [ref=f1e480]: - rowgroup [ref=f1e481]: - row [ref=f1e482]: - columnheader "Description" [ref=f1e483] - columnheader "Credit QTY" [ref=f1e484] - columnheader "Price" [ref=f1e485] - columnheader "VAT" [ref=f1e486] - columnheader "Net credit amount" [ref=f1e487] - rowgroup [ref=f1e488]: - row [ref=f1e489]: - cell "Electronic Product 4myHO1 Electronic Product 4myHO1" [ref=f1e490]: - generic [ref=f1e493]: - generic [ref=f1e495]: - generic [ref=f1e496]: 󰄲 - checkbox "Electronic Product 4myHO1" [checked] [ref=f1e497] [cursor=pointer] - generic [ref=f1e498] [cursor=pointer]: Electronic Product 4myHO1 - cell [ref=f1e499]: - generic [ref=f1e500]: - combobox [ref=f1e502]: - generic [ref=f1e504]: - generic [ref=f1e505]: "1" - combobox [ref=f1e507] - button [ref=f1e509] [cursor=pointer]: 󰍝 - alert [ref=f1e510] - cell "€100.00" [ref=f1e512] - cell "20%" [ref=f1e513] - cell "100 €" [ref=f1e514]: - generic [ref=f1e515]: - generic [ref=f1e518]: - spinbutton [ref=f1e519]: "100" - generic [ref=f1e520]: € - alert [ref=f1e522] - row [ref=f1e524]: - cell "Elegant Product MYYqDs Elegant Product MYYqDs" [ref=f1e525]: - generic [ref=f1e528]: - generic [ref=f1e530]: - generic [ref=f1e531]: 󰄲 - checkbox "Elegant Product MYYqDs" [checked] [active] [ref=f1e532] [cursor=pointer] - generic [ref=f1e533] [cursor=pointer]: Elegant Product MYYqDs - cell [ref=f1e534]: - generic [ref=f1e535]: - combobox [ref=f1e537]: - generic [ref=f1e539]: - generic [ref=f1e540]: "3" - combobox [ref=f1e542] - button [ref=f1e544] [cursor=pointer]: 󰍝 - alert [ref=f1e545] - cell "€200.00" [ref=f1e547] - cell "20%" [ref=f1e548] - cell "600 €" [ref=f1e549]: - generic [ref=f1e550]: - generic [ref=f1e553]: - spinbutton [ref=f1e554]: "600" - generic [ref=f1e555]: € - alert [ref=f1e557] - alert [ref=f1e559] - generic [ref=f1e563]: - generic [ref=f1e564]: - generic [ref=f1e565]: Total excl.VAT - generic [ref=f1e566]: €700.00 - generic [ref=f1e567]: - generic [ref=f1e568]: VAT - generic [ref=f1e569]: €140.00 - generic [ref=f1e570]: - generic [ref=f1e571]: Total incl.VAT - generic [ref=f1e572]: €840.00 - generic [ref=f1e574]: - generic [ref=f1e575]: 󰋽 - generic [ref=f1e577]: The customer will receive an email with the credit note + an adjusted invoice attached. The invoice will be adjusted with the credited amount. The payment link will be updated for the correct amount as well. - tooltip ``` # Test source ```ts 1 | import { BaseComponent } from '@/shared/base/BaseComponent'; 2 | 3 | export class Checkbox extends BaseComponent { 4 | private readonly input = this.host.locator('input[type=checkbox]:not(.disabled)'); 5 | 6 | set(state: boolean): Promise { > 7 | return this.input.setChecked(state); | ^ Error: locator.setChecked: Clicking the checkbox did not change its state 8 | } 9 | } 10 | ```