# 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-price-change.spec.ts >> increases the unit price by amount on a multi-week plan - Location: src/manager/tests/e2e/booking/booking-price-change.spec.ts:20:7 # Error details ``` Error: expect(locator).toHaveText(expected) failed Locator: getByTestId('app-page').getByTestId('app-page-content').locator('[data-test-id=app-details-card]:has([data-test-id=title]:has-text("Billing"))').getByTestId('booking-price-change-section').getByTestId('booking-price-change-applied-from') Expected: "applied from 23 Sep 2026" Received: "APPLIED FROM 26 AUG 2026" Timeout: 30000ms Call log: - Expect "toHaveText" with timeout 30000ms - waiting for getByTestId('app-page').getByTestId('app-page-content').locator('[data-test-id=app-details-card]:has([data-test-id=title]:has-text("Billing"))').getByTestId('booking-price-change-section').getByTestId('booking-price-change-applied-from') 64 × locator resolved to applied from 26 Aug 2026 - unexpected value "APPLIED FROM 26 AUG 2026" ``` ```yaml - text: applied from 26 Aug 2026 ``` # 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 | ```