# 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/insurance/insurance-create.spec.ts >> creates an insurance with a short description - Location: src/manager/tests/e2e/insurance/insurance-create.spec.ts:15:7 # Error details ``` Test timeout of 75000ms exceeded. ``` ``` Error: locator.click: Test timeout of 75000ms exceeded. Call log: - waiting for locator('.v-dialog:has([data-test-id="insurance-create-dialog"]):has(.v-overlay__content:not(.dialog-bottom-transition-enter-active))').locator('fieldset:has(legend:has-text("Booking portal"))').getByTestId('language-aware-input').getByRole('button', { name: 'English', exact: true }) ``` # 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]: - generic [ref=e14]: Manager - button [ref=e15] [cursor=pointer]: - img [ref=e16] - list [ref=e19]: - generic [ref=e21]: Dashboard - link "Tasks" [ref=e22] [cursor=pointer]: - /url: /tasks - img [ref=e25] - generic [ref=e28]: Tasks - link "Facility maps" [ref=e29] [cursor=pointer]: - /url: /facility-map - generic [ref=e31]: 󰧾 - generic [ref=e33]: Facility maps - link "Analytics" [ref=e34] [cursor=pointer]: - /url: /dashboard - generic [ref=e36]: 󱖶 - generic [ref=e38]: Analytics - generic [ref=e40]: Sales - link "Bookings" [ref=e41] [cursor=pointer]: - /url: /bookings - generic [ref=e43]: 󰇡 - generic [ref=e45]: Bookings - link "Customers" [ref=e46] [cursor=pointer]: - /url: /customers - generic [ref=e48]: 󰀏 - generic [ref=e50]: Customers - link "Invoices" [ref=e51] [cursor=pointer]: - /url: /invoices - generic [ref=e53]: 󰷉 - generic [ref=e55]: Invoices - link "Credit notes" [ref=e56] [cursor=pointer]: - /url: /credit-notes - img [ref=e59] - generic [ref=e62]: Credit notes - link "Units" [ref=e63] [cursor=pointer]: - /url: /units - generic [ref=e65]: 󰍀 - generic [ref=e67]: Units - generic [ref=e69]: Site management - link "Locations" [ref=e70] [cursor=pointer]: - /url: /locations - generic [ref=e72]: 󰟙 - generic [ref=e74]: Locations - link "Unit types" [ref=e75] [cursor=pointer]: - /url: /unit-types - generic [ref=e77]: 󰆧 - generic [ref=e79]: Unit types - link "Protection Plans" [ref=e80] [cursor=pointer]: - /url: /insurances - generic [ref=e82]: 󰳌 - generic [ref=e84]: Protection Plans - link "Deposits" [ref=e85] [cursor=pointer]: - /url: /deposits - generic [ref=e87]: 󱙆 - generic [ref=e89]: Deposits - link "Products" [ref=e90] [cursor=pointer]: - /url: /products - generic [ref=e92]: 󰄑 - generic [ref=e94]: Products - link "Discounts" [ref=e95] [cursor=pointer]: - /url: /discounts - generic [ref=e97]: 󰓼 - generic [ref=e99]: Discounts - generic [ref=e100]: - option "Emails" [ref=e101] [cursor=pointer]: - generic [ref=e103]: 󰻨 - generic [ref=e105]: Emails - generic [ref=e109]: 󰅀 - text: 󱡰 󰁥 - generic [ref=e111]: Admin - link "Integrations" [ref=e112] [cursor=pointer]: - /url: /connected-apps - generic [ref=e114]: 󱘖 - generic [ref=e116]: Integrations - link "User & Roles" [ref=e117] [cursor=pointer]: - /url: /users - generic [ref=e119]: 󰭘 - generic [ref=e121]: User & Roles - generic [ref=e122]: - option "Booking Portal" [ref=e123] [cursor=pointer]: - generic [ref=e125]: 󱃁 - generic [ref=e127]: Booking Portal - generic [ref=e131]: 󰅀 - text: 󰖟 󰟙 - generic [ref=e132]: - option "JaneAI" [ref=e133] [cursor=pointer]: - generic [ref=e135]: 󱙺 - generic [ref=e137]: JaneAI - generic [ref=e141]: 󰅀 - text: 󱜹 - generic [ref=e143]: Feedback - link "Voting Portal" [ref=e144] [cursor=pointer]: - /url: /voting-portal - generic [ref=e146]: 󰔔 - generic [ref=e148]: Voting Portal - generic [ref=e150]: - button "AS Andreas Stadler andreas.stadler@storeroom.at" [ref=e153] [cursor=pointer]: - generic [ref=e156]: AS - generic [ref=e157]: - generic [ref=e158]: Andreas Stadler - generic "andreas.stadler@storeroom.at" [ref=e159] - generic [ref=e160]: 󰇙 - generic: - text: 󰗊 󰅀 - text: 󰷖 󰍃 - button [ref=e161] [cursor=pointer]: - generic [ref=e163]: 󰋽 - main [ref=e164]: - generic [ref=e166]: - generic [ref=e168]: - generic [ref=e170]: Protection Plan - link "Create Protection Plan" [ref=e172] [cursor=pointer]: - /url: /insurances/create - generic [ref=e174]: 󰐕 - generic [ref=e175]: Create Protection Plan - generic [ref=e177]: - generic [ref=e179]: - button "Filters Reset filters" [ref=e180] [cursor=pointer]: - generic [ref=e181]: - heading "Filters" [level=3] [ref=e184] - generic [ref=e186]: - button "Reset filters" [ref=e188]: - generic [ref=e189]: - generic [ref=e190]: 󰑐 - text: Reset filters - generic [ref=e194]: 󰅀 - generic [ref=e200]: - generic [ref=e205]: - generic [ref=e207]: 󰍉 - generic [ref=e208]: - generic: Search - textbox "Search" [ref=e209] - text: 󰅙 - combobox [ref=e213]: - generic [ref=e214]: - generic: Location - combobox "Location" [ref=e216] - button [ref=e218] [cursor=pointer]: 󰍝 - generic [ref=e220]: - generic [ref=e222]: - generic [ref=e224]: - button "Select all" [ref=e232] [cursor=pointer]: - generic [ref=e234]: 󰄬 - generic [ref=e235]: Select all - button "Edit price" [disabled] [ref=e240]: - img [ref=e242] - generic [ref=e248]: Edit price - table [ref=e250]: - rowgroup [ref=e251]: - row "ID Name Location" [ref=e252]: - columnheader [ref=e253]: - generic [ref=e254]: - checkbox [ref=e255] - generic [ref=e257] [cursor=pointer]: 󰄱 - columnheader "ID" [ref=e258]: - button "ID" [ref=e259] [cursor=pointer]: - generic [ref=e261]: ID - generic [ref=e264]: 󰁝 - columnheader "Name" [ref=e265]: - button "Name" [ref=e266] [cursor=pointer]: - generic [ref=e268]: Name - generic [ref=e271]: 󰁝 - columnheader "Location" [ref=e272]: - button "Location" [ref=e273] [cursor=pointer]: - generic [ref=e275]: Location - generic [ref=e278]: 󰁝 - row [ref=e279]: - columnheader [ref=e280] - rowgroup [ref=e281]: - row "9511-2445-7 Oriental Insurance jGywxm Vienna South" [ref=e282]: - cell [ref=e283]: - generic [ref=e284]: - checkbox [ref=e285] - generic [ref=e287] [cursor=pointer]: 󰄱 - cell "9511-2445-7" [ref=e288]: - link "9511-2445-7" [ref=e289] [cursor=pointer]: - /url: /insurances/951124457 - generic [ref=e290]: 9511-2445-7 - cell "Oriental Insurance jGywxm" [ref=e291]: - link "Oriental Insurance jGywxm" [ref=e292] [cursor=pointer]: - /url: /insurances/951124457 - generic [ref=e294]: Oriental Insurance jGywxm - cell "Vienna South" [ref=e295]: - link "Vienna South" [ref=e296] [cursor=pointer]: - /url: /insurances/951124457 - generic [ref=e297]: Vienna South - row "9224-2229-3 Luxurious Insurance nHR7VO Vienna South" [ref=e298]: - cell [ref=e299]: - generic [ref=e300]: - checkbox [ref=e301] - generic [ref=e303] [cursor=pointer]: 󰄱 - cell "9224-2229-3" [ref=e304]: - link "9224-2229-3" [ref=e305] [cursor=pointer]: - /url: /insurances/922422293 - generic [ref=e306]: 9224-2229-3 - cell "Luxurious Insurance nHR7VO" [ref=e307]: - link "Luxurious Insurance nHR7VO" [ref=e308] [cursor=pointer]: - /url: /insurances/922422293 - generic [ref=e310]: Luxurious Insurance nHR7VO - cell "Vienna South" [ref=e311]: - link "Vienna South" [ref=e312] [cursor=pointer]: - /url: /insurances/922422293 - generic [ref=e313]: Vienna South - row "3720-7984-5 Refined Insurance lVj79c Vienna South" [ref=e314]: - cell [ref=e315]: - generic [ref=e316]: - checkbox [ref=e317] - generic [ref=e319] [cursor=pointer]: 󰄱 - cell "3720-7984-5" [ref=e320]: - link "3720-7984-5" [ref=e321] [cursor=pointer]: - /url: /insurances/372079845 - generic [ref=e322]: 3720-7984-5 - cell "Refined Insurance lVj79c" [ref=e323]: - link "Refined Insurance lVj79c" [ref=e324] [cursor=pointer]: - /url: /insurances/372079845 - generic [ref=e326]: Refined Insurance lVj79c - cell "Vienna South" [ref=e327]: - link "Vienna South" [ref=e328] [cursor=pointer]: - /url: /insurances/372079845 - generic [ref=e329]: Vienna South - row "4131-7095-0 Incredible Insurance bIXaAV Vienna South" [ref=e330]: - cell [ref=e331]: - generic [ref=e332]: - checkbox [ref=e333] - generic [ref=e335] [cursor=pointer]: 󰄱 - cell "4131-7095-0" [ref=e336]: - link "4131-7095-0" [ref=e337] [cursor=pointer]: - /url: /insurances/413170950 - generic [ref=e338]: 4131-7095-0 - cell "Incredible Insurance bIXaAV" [ref=e339]: - link "Incredible Insurance bIXaAV" [ref=e340] [cursor=pointer]: - /url: /insurances/413170950 - generic [ref=e342]: Incredible Insurance bIXaAV - cell "Vienna South" [ref=e343]: - link "Vienna South" [ref=e344] [cursor=pointer]: - /url: /insurances/413170950 - generic [ref=e345]: Vienna South - generic [ref=e348]: - generic [ref=e349]: - generic [ref=e350]: "Items per page:" - combobox [ref=e353]: - generic [ref=e355] [cursor=pointer]: - generic [ref=e357]: "10" - combobox "Items per page:": "10" - generic [ref=e359]: 󰍝 - generic [ref=e360]: 1-4 of 4 - generic [ref=e361]: - button [disabled]: - generic: - generic: 󰘀 - button [disabled]: - generic: - generic: 󰅁 - button [disabled]: - generic: - generic: 󰅂 - button [disabled]: - generic: - 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 - dialog: - generic [ref=e364]: - generic [ref=e365]: - generic [ref=e367]: - generic [ref=e368]: - button [ref=e369] [cursor=pointer]: - generic [ref=e371]: 󰅖 - heading "Create Protection Plan" [level=2] [ref=e373] - button "Save" [ref=e375] [cursor=pointer]: - generic [ref=e376]: Save - separator [ref=e377] - generic [ref=e379]: - group "General" [ref=e380]: - heading "General" [level=3] [ref=e382]: - generic [ref=e384]: General - generic [ref=e385]: - generic [ref=e387]: - generic [ref=e389]: - textbox "Name *" [ref=e391]: Bespoke Insurance 824KjT - generic: - generic: Name * - alert [ref=e392] - generic [ref=e395]: - combobox [ref=e397]: - generic [ref=e399]: - generic [ref=e401]: Vienna South - combobox "Location *" [ref=e402] - button [ref=e404] [cursor=pointer]: 󰍝 - generic: - generic: Location * - alert [ref=e405] - group "Taxes" [ref=e407]: - heading "Taxes" [level=3] [ref=e409]: - generic [ref=e411]: Taxes - generic [ref=e412]: - generic [ref=e414]: - combobox [ref=e416]: - generic [ref=e418]: - generic [ref=e420]: 20% - combobox "B2C *" [ref=e421] - button [ref=e423] [cursor=pointer]: 󰍝 - generic: - generic: B2C * - alert [ref=e424] - generic [ref=e427]: - combobox [ref=e429]: - generic [ref=e431]: - generic [ref=e433]: 20% - combobox "B2B *" [active] [ref=e434]: 20% - button [ref=e436] [cursor=pointer]: 󰍝 - generic: - generic: B2B * - alert [ref=e437] - group "Booking portal" [ref=e439]: - heading "Booking portal" [level=3] [ref=e441]: - generic [ref=e443]: Booking portal - generic [ref=e450]: - generic [ref=e451]: - tablist [ref=e452]: - generic: - generic: 󰅁 - generic [ref=e454]: - tab "English" [selected] [ref=e455] [cursor=pointer]: - generic [ref=e456]: English - tab "Swedish" [ref=e457] [cursor=pointer]: - generic [ref=e458]: Swedish - tab "Slovenian" [ref=e459] [cursor=pointer]: - generic [ref=e460]: Slovenian - tab "Russian" [ref=e461] [cursor=pointer]: - generic [ref=e462]: Russian - tab "Portugese" [ref=e463] [cursor=pointer]: - generic [ref=e464]: Portugese - tab "Polish" [ref=e465] [cursor=pointer]: - generic [ref=e466]: Polish - tab "Norwegian" [ref=e467] [cursor=pointer]: - generic [ref=e468]: Norwegian - tab "Dutch" [ref=e469] [cursor=pointer]: - generic [ref=e470]: Dutch - tab "Latvian" [ref=e471] [cursor=pointer]: - generic [ref=e472]: Latvian - tab "French" [ref=e473] [cursor=pointer]: - generic [ref=e474]: French - tab "Finnish" [ref=e475] [cursor=pointer]: - generic [ref=e476]: Finnish - tab "Spanish" [ref=e477] [cursor=pointer]: - generic [ref=e478]: Spanish - tab "Greek" [ref=e479] [cursor=pointer]: - generic [ref=e480]: Greek - tab "German" [ref=e481] [cursor=pointer]: - generic [ref=e482]: German - tab "Czech" [ref=e483] [cursor=pointer]: - generic [ref=e484]: Czech - tab "Catalan" [ref=e485] [cursor=pointer]: - generic [ref=e486]: Catalan - generic [ref=e488] [cursor=pointer]: 󰅂 - separator [ref=e489] - generic [ref=e491]: - generic [ref=e494]: - generic: Short description - textbox "Short description" [ref=e495] - alert [ref=e496] - group "Booking Plan" [ref=e498]: - heading "Booking Plan" [level=3] [ref=e500]: - generic [ref=e502]: Booking Plan - generic [ref=e503]: - generic [ref=e507]: - table [ref=e511]: - rowgroup [ref=e512]: - row "Billing period Discount Price / period (excl. VAT) Period price (excl. VAT) Status" [ref=e513]: - columnheader "Billing period" [ref=e514]: - button "Billing period" [ref=e515] [cursor=pointer]: - generic [ref=e517]: Billing period - generic [ref=e520]: 󰁝 - columnheader "Discount" [ref=e521]: - button "Discount" [ref=e522] [cursor=pointer]: - generic [ref=e524]: Discount - generic [ref=e527]: 󰁝 - columnheader "Price / period (excl. VAT)" [ref=e528]: - button "Price / period (excl. VAT)" [ref=e529] [cursor=pointer]: - generic [ref=e531]: Price / period (excl. VAT) - generic [ref=e534]: 󰁝 - columnheader "Period price (excl. VAT)" [ref=e535]: - button "Period price (excl. VAT)" [ref=e536] [cursor=pointer]: - generic [ref=e538]: Period price (excl. VAT) - generic [ref=e541]: 󰁝 - columnheader "Status" [ref=e542]: - generic [ref=e545]: Status - columnheader [ref=e546]: - button [ref=e547] [cursor=pointer]: - generic [ref=e550]: 󰁝 - row [ref=e551]: - columnheader [ref=e552] - rowgroup [ref=e553]: - row "No data yet" [ref=e554]: - cell "No data yet" [ref=e555]: - generic [ref=e556]: No data yet - generic [ref=e559]: - generic [ref=e560]: - generic [ref=e561]: "Items per page:" - combobox [ref=e564]: - generic [ref=e566] [cursor=pointer]: - generic [ref=e568]: "10" - combobox "Items per page:": "10" - generic [ref=e570]: 󰍝 - generic [ref=e571]: 0-0 of 0 - generic [ref=e572]: - button [disabled]: - generic: - generic: 󰘀 - button [disabled]: - generic: - generic: 󰅁 - button [disabled]: - generic: - generic: 󰅂 - button [disabled]: - generic: - generic: 󰘁 - alert [ref=e573] - button "Add booking plan" [ref=e575] [cursor=pointer]: - generic [ref=e577]: 󰐕 - generic [ref=e578]: Add booking plan - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip - tooltip ``` # Test source ```ts 1 | import { TextAreaField } from '@/manager/shared/components/TextAreaField'; 2 | import { languages } from '@/shared/data/seed-languages'; 3 | import { BaseComponent } from '@/shared/base/BaseComponent'; 4 | import { getInputHostByLabel } from '@/manager/shared/utils/locator-utils'; 5 | import { LanguageKey, LanguageRecordPartial } from '@/shared/types/language-types'; 6 | import { Locator } from '@playwright/test'; 7 | 8 | export class LanguageAwareInput extends BaseComponent { 9 | private readonly main = this.host.getByTestId('language-aware-input'); 10 | private readonly textAreaField = new TextAreaField(getInputHostByLabel(this.main, 'Short description')); 11 | 12 | async fill(values: LanguageRecordPartial): Promise { 13 | for (const [key, value] of Object.entries(values) as [LanguageKey, string | undefined][]) { 14 | if (value === undefined) { 15 | continue; 16 | } 17 | > 18 | await this.getLanguageButton(key).click(); | ^ Error: locator.click: Test timeout of 75000ms exceeded. 19 | await this.textAreaField.fill(value); 20 | } 21 | } 22 | 23 | private getLanguageButton(key: LanguageKey): Locator { 24 | return this.main.getByRole('button', { name: languages[key].name, exact: true }); 25 | } 26 | } 27 | ```