diff --git a/package.json b/package.json index ff605fa523..ad7ba04d3b 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "playwright": { "chromium_revision": "724623", "firefox_revision": "1008", - "webkit_revision": "1046" + "webkit_revision": "1052" }, "scripts": { "unit": "node test/test.js", diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index f34e79e775..3d2e80c753 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -383,7 +383,15 @@ export class WKPage implements PageDelegate { } async getOwnerFrame(handle: dom.ElementHandle): Promise { - return handle._context.frame; + const remoteObject = toRemoteObject(handle); + if (!remoteObject.objectId) + return null; + const nodeInfo = await this._session.send('DOM.describeNode', { + objectId: remoteObject.objectId + }); + if (!nodeInfo.ownerFrameId) + return null; + return this._page._frameManager.frame(nodeInfo.ownerFrameId); } isElementHandle(remoteObject: any): boolean { diff --git a/test/elementhandle.spec.js b/test/elementhandle.spec.js index 5a93cd1583..a0fb3b2f6c 100644 --- a/test/elementhandle.spec.js +++ b/test/elementhandle.spec.js @@ -134,7 +134,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROME, WEBKIT}) { const elementHandle = await frame.evaluateHandle(() => document.querySelector('#frame1')); expect(await elementHandle.ownerFrame()).toBe(frame); }); - it.skip(FFOX || WEBKIT)('should work for cross-frame evaluations', async({page,server}) => { + it.skip(FFOX)('should work for cross-frame evaluations', async({page,server}) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE); const frame = page.mainFrame();