Open karolwajs opened 2 days ago
@karolwajs Thank you for the issue! It seems like there is a difference in how new and old headless handle these iframes. However, it's unlikely we can fix the issue without a repro. Anything that shows the problem, even if not consistently, would be a great help.
If you click 'book now', the iframe will be opened (page.frameLocator('.gldbm-panel__dbmIframe')) with the booking engine, every interaction with a calendar (when it's displayed), clicking on dates for example won't be executed properly on v1.49.0 version
@karolwajs Unfortunately, clicking "Booking now" does not open any iframe for me. But even then, guessing the actions that do not work is not something that I'd like to do. Could you please record a short script on that page that does work without channel: 'chromium'
and does not work with the channel specified?
'Book now', not 'Booking now'. Every action taken on the opened calendar is not working with channel 'chromium' Example script:
import date from 'date-and-time';
import { type FrameLocator, type Locator, type Page } from '@playwright/test';
test(
'iFrame Test',
async ({ page }) => {
const startDate = new Date();
const formattedStartDate = date.format(startDate, 'dddd, MMMM D, YYYY');
await page.goto('https://gxpservicesstagestorage.z6.web.core.windows.net');
await page.getByText('Book Now').click();
await page.frameLocator('.gldbm-panel__dbmIframe').locator('#gldbm_startdate').click();
await page.frameLocator('.gldbm-panel__dbmIframe').getByLabel(`Choose ${formattedStartDate} as your check-in date. It’s available.`).click();
});
The last click won't be executed. (code will be executed, but the click won't happen). It will work with .dispatchEvent('click')
Version
1.49.0
Steps to reproduce
After upgrade to the newest chromium headless version my tests started to fail when i'm trying to access/make actions on some iframe elements, which isn't the case on the lower versions. I switched one of the click methods to dispatchEvent('click') and i see that this way it's working. I can't provide any specific example reproduction steps besides of mui date picker: https://mui.com/x/react-date-pickers/date-picker/, which is constantly failing in my case.
It's happening for very different locators, so i cannot provide any specific locator methods or actions, which will trigger this behaviour. I would be grateful for help, because that's the thing which is working for us on previous playwright and browser versions, it started to happen when we tried to switch to the newest one.
Channel: 'chromium'
Expected behavior
I expect iframes to work like in previous versions
Actual behavior
Error: Timed out 20000ms waiting for expect(locator).toBeVisible()
Additional context
No response
Environment