Skip to content

Commit 603b9f5

Browse files
authored
fix: make contentFrame cross-frame handles test pass (#761)
1 parent eb56804 commit 603b9f5

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/dom.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ export class ElementHandle<T extends Node = Node> extends js.JSHandle<T> {
154154
}
155155

156156
async contentFrame(): Promise<frames.Frame | null> {
157-
const isFrameElement = await this._evaluateInUtility(node => node && (node instanceof HTMLIFrameElement || node instanceof HTMLFrameElement));
157+
const isFrameElement = await this._evaluateInUtility(node => node && (node.nodeName === 'IFRAME' || node.nodeName === 'FRAME'));
158158
if (!isFrameElement)
159159
return null;
160160
return this._page._delegate.getContentFrame(this);

test/evaluation.spec.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,5 +381,14 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT})
381381
const error = await page.evaluate(body => body.innerHTML, bodyHandle).catch(e => e);
382382
expect(error.message).toContain('Unable to adopt element handle from a different document');
383383
});
384+
it.skip(FFOX)('should return non-empty Node.constructor.name in utility context', async({page,server}) => {
385+
await page.goto(server.EMPTY_PAGE);
386+
await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE);
387+
const frame = page.frames()[1];
388+
const context = await frame._utilityContext();
389+
const elementHandle = await context.evaluateHandle(() => window.top.document.querySelector('#frame1'));
390+
const constructorName = await context.evaluate(node => node.constructor.name, elementHandle);
391+
expect(constructorName).toBe('HTMLIFrameElement');
392+
});
384393
});
385394
};

0 commit comments

Comments
 (0)