web: Work around webdriverio frame-switching bug with selectors

This commit is contained in:
Daniel Jacobs 2024-08-22 15:42:30 -04:00 committed by TÖRÖK Attila
parent ab49f34b15
commit 737c8e1605
4 changed files with 168 additions and 32 deletions

View File

@ -13,11 +13,28 @@ describe("Flash inside frame with injected ruffle", () => {
it("polyfills inside a frame", async () => {
await injectRuffleAndWait(browser);
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",
@ -39,11 +56,28 @@ describe("Flash inside frame with injected ruffle", () => {
// And finally, check
await browser.switchToFrame(null);
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",

View File

@ -12,11 +12,28 @@ describe("Flash inside frame with provided ruffle", () => {
it("polyfills inside a frame", async () => {
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",
@ -38,11 +55,28 @@ describe("Flash inside frame with provided ruffle", () => {
// And finally, check
await browser.switchToFrame(null);
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",

View File

@ -13,11 +13,28 @@ describe("Flash inside iframe with injected ruffle", () => {
it("polyfills inside an iframe", async () => {
await injectRuffleAndWait(browser);
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",
@ -38,11 +55,28 @@ describe("Flash inside iframe with injected ruffle", () => {
// And finally, check
await browser.switchToFrame(null);
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",

View File

@ -12,11 +12,28 @@ describe("Flash inside iframe with provided ruffle", () => {
it("polyfills inside an iframe", async () => {
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",
@ -37,11 +54,28 @@ describe("Flash inside iframe with provided ruffle", () => {
// And finally, check
await browser.switchToFrame(null);
await browser.switchToFrame(await browser.$("#test-frame"));
await browser.$("ruffle-object").waitForExist();
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed, use browser.$("ruffle-object")
await browser
.$(
() =>
(
document.querySelector(
"#test-frame",
) as HTMLIFrameElement
).contentDocument?.body.querySelector(
"ruffle-object",
) as HTMLElement,
)
.waitForExist();
const actual = await browser
.$("#test-container")
.getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
// TODO: After https://github.com/webdriverio/webdriverio/issues/13218 is fixed
// use browser.$("#test-container").getHTML({ includeSelectorTag: false, pierceShadowRoot: false });
const actual = await browser.execute(() => {
const el = (
document.querySelector("#test-frame") as HTMLIFrameElement
).contentDocument?.body.querySelector("#test-container");
return el?.innerHTML;
});
const expected = fs.readFileSync(
`${import.meta.dirname}/expected.html`,
"utf8",