# 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 and reducing the credit net amount - Location: src/manager/tests/e2e/invoice/invoice-issue-credit-note.spec.ts:28:7 # Error details ``` Error: expect(locator).toHaveText(expected) failed Locator: 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('totals-summary-section').getByTestId('total-excl-vat-value') Expected: "€24.00" Received: "€700.00" Timeout: 30000ms Call log: - Expect "toHaveText" with timeout 30000ms - 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('totals-summary-section').getByTestId('total-excl-vat-value') 64 × locator resolved to
€700.00
- unexpected value "€700.00" ``` ```yaml - text: €700.00 ``` # Test source ```ts 1 | import { escapeRegExp } from '@/shared/utils/regex-utils'; 2 | import { expect, Locator } from '@playwright/test'; 3 | 4 | export async function expectMultiLocatorToHaveText(locator: Locator, text: string[] | undefined): Promise { 5 | if (!text) { 6 | await expectLocatorToBeEmpty(locator); 7 | return; 8 | } 9 | 10 | const expectedValue = RegExp(text.map(escapeRegExp).join('|')); 11 | 12 | for (const element of await locator.all()) { 13 | await expectSingleLocatorToHaveText(element, expectedValue); 14 | } 15 | } 16 | 17 | export async function expectSingleLocatorToHaveText( 18 | locator: Locator, 19 | text: string | RegExp | undefined 20 | ): Promise { 21 | text > 22 | ? await expect(locator).toHaveText(text, { ignoreCase: true, useInnerText: true }) | ^ Error: expect(locator).toHaveText(expected) failed 23 | : await expectLocatorToBeEmpty(locator); 24 | } 25 | 26 | export async function expectLocatorToBeEmpty(locator: Locator): Promise { 27 | await expect(locator).toHaveText(/^(\s*-?\s*)$/); 28 | } 29 | ```