dooberrywotsit
dooberrywotsit

Reputation: 123

cypress iframe function works on chrome but not firefox

I'm trying to run a test that involves iframes with firefox. The test works with chrome but not with firefox. It seems that when I get the iframe and subsequently try to find the body the body is returned as undefined.

Timed out retrying: Expected to find element: undefined, but never found it.

cy.get('iframe').then(($iframe) => {
     const $body = $iframe.contents().find('body');
     cy.wrap($body)
        ^

The html looks the same for firefox as it does for chrome. Does anyone know what the underlying issue is for that?

Upvotes: 1

Views: 1445

Answers (1)

jdhildeb
jdhildeb

Reputation: 3821

The most likely cause is the same origin policy.

In a nutshell, if the page loaded inside the iframe comes from a different domain than the parent page, then your javascript will not be allowed to access the DOM within the iframe.

The reason it is working for you on Chrome is likely because you have used this setting in your cypress.json config file to disable the same origin policy in Chrome:

   "chromeWebSecurity": false

As of this writing (Nov 2020), Firefox sadly does not have an equivalent way to disable the same origin policy for testing purposes. The bug report is here.

Upvotes: 5

Related Questions