feat(webkit): support pageerror event (#362)
This commit is contained in:
parent
a09235a6e3
commit
0d9638fe20
|
|
@ -213,7 +213,7 @@ export class WKPage implements PageDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
async _onConsoleMessage(event: Protocol.Console.messageAddedPayload) {
|
async _onConsoleMessage(event: Protocol.Console.messageAddedPayload) {
|
||||||
const { type, level, text, parameters, url, line: lineNumber, column: columnNumber } = event.message;
|
const { type, level, text, parameters, url, line: lineNumber, column: columnNumber, source } = event.message;
|
||||||
if (level === 'debug' && parameters && parameters[0].value === BINDING_CALL_MESSAGE) {
|
if (level === 'debug' && parameters && parameters[0].value === BINDING_CALL_MESSAGE) {
|
||||||
const parsedObjectId = JSON.parse(parameters[1].objectId);
|
const parsedObjectId = JSON.parse(parameters[1].objectId);
|
||||||
const context = this._contextIdToContext.get(parsedObjectId.injectedScriptId);
|
const context = this._contextIdToContext.get(parsedObjectId.injectedScriptId);
|
||||||
|
|
@ -226,6 +226,13 @@ export class WKPage implements PageDelegate {
|
||||||
(context._delegate as WKExecutionContext)._jsonStringifyObjectId = parameters[1].objectId;
|
(context._delegate as WKExecutionContext)._jsonStringifyObjectId = parameters[1].objectId;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (level === 'error' && source === 'javascript') {
|
||||||
|
const error = new Error(text);
|
||||||
|
error.stack = '';
|
||||||
|
this._page.emit(Events.Page.PageError, error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let derivedType: string = type;
|
let derivedType: string = type;
|
||||||
if (type === 'log')
|
if (type === 'log')
|
||||||
derivedType = level;
|
derivedType = level;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<script>
|
<script>
|
||||||
|
console.error('Not a JS error');
|
||||||
a();
|
a();
|
||||||
|
|
||||||
function a() {
|
function a() {
|
||||||
|
|
|
||||||
|
|
@ -439,25 +439,6 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p
|
||||||
expect(response.statusText()).toBe('Unprocessable Entity');
|
expect(response.statusText()).toBe('Unprocessable Entity');
|
||||||
expect(await page.evaluate(() => document.body.textContent)).toBe('Yo, page!');
|
expect(await page.evaluate(() => document.body.textContent)).toBe('Yo, page!');
|
||||||
});
|
});
|
||||||
it.skip(WEBKIT)('should redirect', async({page, server}) => {
|
|
||||||
await page.setRequestInterception(true);
|
|
||||||
page.on('request', request => {
|
|
||||||
if (!request.url().includes('rrredirect')) {
|
|
||||||
request.continue();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
request.fulfill({
|
|
||||||
status: 302,
|
|
||||||
headers: {
|
|
||||||
location: server.EMPTY_PAGE,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
const response = await page.goto(server.PREFIX + '/rrredirect');
|
|
||||||
expect(response.request().redirectChain().length).toBe(1);
|
|
||||||
expect(response.request().redirectChain()[0].url()).toBe(server.PREFIX + '/rrredirect');
|
|
||||||
expect(response.url()).toBe(server.EMPTY_PAGE);
|
|
||||||
});
|
|
||||||
it('should allow mocking binary responses', async({page, server}) => {
|
it('should allow mocking binary responses', async({page, server}) => {
|
||||||
await page.setRequestInterception(true);
|
await page.setRequestInterception(true);
|
||||||
page.on('request', request => {
|
page.on('request', request => {
|
||||||
|
|
|
||||||
|
|
@ -509,7 +509,7 @@ module.exports.describe = function({testRunner, expect, headless, playwright, FF
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Page.Events.PageError', function() {
|
describe('Page.Events.PageError', function() {
|
||||||
it.skip(WEBKIT)('should fire', async({page, server}) => {
|
it('should fire', async({page, server}) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
page.once('pageerror', e => error = e);
|
page.once('pageerror', e => error = e);
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue