# 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/portal/tests/e2e/booking/booking-create.spec.ts >> shows the correct basket for a private customer with a weekly plan, no insurance, a multiple-months discount and a move-in date 5 days in the future
- Location: src/portal/tests/e2e/booking/booking-create.spec.ts:123:7
# Error details
```
Error: expect(locator).toBeHidden() failed
Locator: getByTestId('basket-content-modal').getByTestId('summary-recurring-payment').getByTestId('summary-aside').getByTestId('old-price')
Expected: hidden
Received: visible
Timeout: 30000ms
Call log:
- Expect "toBeHidden" with timeout 30000ms
- waiting for getByTestId('basket-content-modal').getByTestId('summary-recurring-payment').getByTestId('summary-aside').getByTestId('old-price')
64 × locator resolved to €2,964.00
- unexpected value "visible"
```
```yaml
- text: €2,964.00
```
# Test source
```ts
22 | isMobile: boolean,
23 | customerType: CustomerType,
24 | moveInDate: Date,
25 | location: Location,
26 | unitType: BookingCreateUnitType,
27 | insurance?: BookingCreateInsurance,
28 | discount?: BookingCreateDiscount
29 | ): Promise {
30 | const unitTypePriceExclVat = unitType.billing.price * unitType.billing.amount;
31 | const unitTypePriceDiscounted =
32 | discount &&
33 | (discount.type === 'fixed'
34 | ? unitTypePriceExclVat - discount.value
35 | : decreaseByPercentage(unitTypePriceExclVat, discount.value));
36 | const unitTypeTaxRate = customerType === 'private' ? unitType.taxes.b2c.rate : unitType.taxes.b2b.rate;
37 | const unitTypePriceInclVat = increaseByPercentage(unitTypePriceExclVat, unitTypeTaxRate);
38 | const unitTypePriceInclVatDiscounted =
39 | unitTypePriceDiscounted && increaseByPercentage(unitTypePriceDiscounted, unitTypeTaxRate);
40 | const insurancePriceExclVat = insurance && insurance.billing.price * insurance.billing.amount;
41 | const insuranceTaxRate =
42 | insurance && (customerType === 'private' ? insurance.taxes.b2c.rate : insurance.taxes.b2b.rate);
43 | const insurancePriceInclVat =
44 | insurancePriceExclVat && increaseByPercentage(insurancePriceExclVat, insuranceTaxRate ?? 0);
45 | const totalPrice = unitTypePriceInclVat + (insurancePriceInclVat ?? 0);
46 | const totalPriceDiscounted =
47 | unitTypePriceInclVatDiscounted && unitTypePriceInclVatDiscounted + (insurancePriceInclVat ?? 0);
48 | const recurringPaymentPrice = totalPrice;
49 | let recurringPaymentPriceDiscounted: number | undefined = undefined;
50 |
51 | if (discount) {
52 | if (discount.duration.option === 'multiple_months' && discount.duration.amount) {
53 | const billingEndDate = dayjs(moveInDate).add(
54 | unitType.billing.amount,
55 | unitType.billing.type === 'weekly' ? 'weeks' : 'months'
56 | );
57 | const discountEndDate = dayjs(moveInDate).add(discount.duration.amount, 'months');
58 |
59 | if (discountEndDate.isAfter(billingEndDate)) {
60 | recurringPaymentPriceDiscounted = totalPriceDiscounted;
61 | }
62 | } else if (discount.duration.option === 'forever') {
63 | recurringPaymentPriceDiscounted = totalPriceDiscounted;
64 | }
65 | }
66 |
67 | if (isMobile) {
68 | await expect(basketContent.location).toBeHidden();
69 | } else {
70 | await expect(basketContent.location).toBeVisible();
71 | await expect(basketContent.locationName).toHaveText(location.name);
72 | await expect(basketContent.locationAddress).toHaveText(
73 | formatAddressWithoutCountry(location.street, location.postalCode, location.city)
74 | );
75 | }
76 |
77 | await expect(basketContent.moveInDateValue).toHaveText(formatDateLegacy(moveInDate));
78 | await expect(basketContent.unitTypeName).toHaveText(unitType.name);
79 | await expect(basketContent.unitTypePriceInclVat).toHaveText(formatCurrency(unitTypePriceInclVat, location.currency));
80 |
81 | if (insurancePriceInclVat) {
82 | await expect(basketContent.insuranceName).toHaveText(insurance.name);
83 | await expect(basketContent.insurancePriceInclVat).toHaveText(
84 | formatCurrency(insurancePriceInclVat, location.currency)
85 | );
86 | } else {
87 | await expect(basketContent.insuranceName).toBeHidden();
88 | await expect(basketContent.insurancePriceInclVat).toBeHidden();
89 | }
90 |
91 | if (discount) {
92 | await expect(basketContent.discountCodeForm.discountTerms).toHaveText(
93 | formatDiscount(
94 | discount.duration,
95 | discount.type === 'percentage'
96 | ? formatPercentage(discount.value)
97 | : formatCurrency(discount.value, location.currency)
98 | )
99 | );
100 | } else {
101 | await expect(basketContent.discountCodeForm.discountTerms).toBeHidden();
102 | }
103 |
104 | if (totalPriceDiscounted) {
105 | await expect(basketContent.firstInvoiceOldPriceInclVat).toHaveText(formatCurrency(totalPrice, location.currency));
106 | await expect(basketContent.firstInvoiceNewPriceInclVat).toHaveText(
107 | formatCurrency(totalPriceDiscounted, location.currency)
108 | );
109 | } else {
110 | await expect(basketContent.firstInvoiceOldPriceInclVat).toBeHidden();
111 | await expect(basketContent.firstInvoiceNewPriceInclVat).toHaveText(formatCurrency(totalPrice, location.currency));
112 | }
113 |
114 | if (recurringPaymentPriceDiscounted) {
115 | await expect(basketContent.recurringPaymentOldPriceInclVat).toHaveText(
116 | formatCurrency(recurringPaymentPrice, location.currency)
117 | );
118 | await expect(basketContent.recurringPaymentNewPriceInclVat).toHaveText(
119 | formatCurrency(recurringPaymentPriceDiscounted, location.currency)
120 | );
121 | } else {
> 122 | await expect(basketContent.recurringPaymentOldPriceInclVat).toBeHidden();
| ^ Error: expect(locator).toBeHidden() failed
123 | await expect(basketContent.recurringPaymentNewPriceInclVat).toHaveText(
124 | formatCurrency(recurringPaymentPrice, location.currency)
125 | );
126 | }
127 | }
128 |
```