fix(helpers): support thrown strings and numbers in getExceptionMessage (#2715)
Of course, strings aren't proper errors, but scripts sometimes do that, and Puppeteer loses such error messages.
This commit is contained in:
parent
93e128931f
commit
9498b1057b
@ -61,7 +61,7 @@ class Helper {
|
|||||||
*/
|
*/
|
||||||
static getExceptionMessage(exceptionDetails) {
|
static getExceptionMessage(exceptionDetails) {
|
||||||
if (exceptionDetails.exception)
|
if (exceptionDetails.exception)
|
||||||
return exceptionDetails.exception.description;
|
return exceptionDetails.exception.description || exceptionDetails.exception.value;
|
||||||
let message = exceptionDetails.text;
|
let message = exceptionDetails.text;
|
||||||
if (exceptionDetails.stackTrace) {
|
if (exceptionDetails.stackTrace) {
|
||||||
for (const callframe of exceptionDetails.stackTrace.callFrames) {
|
for (const callframe of exceptionDetails.stackTrace.callFrames) {
|
||||||
|
@ -115,6 +115,18 @@ module.exports.addTests = function({testRunner, expect, puppeteer, DeviceDescrip
|
|||||||
expect(error).toBeTruthy();
|
expect(error).toBeTruthy();
|
||||||
expect(error.message).toContain('not is not defined');
|
expect(error.message).toContain('not is not defined');
|
||||||
});
|
});
|
||||||
|
it('should support thrown strings as error messages', async({page, server}) => {
|
||||||
|
let error = null;
|
||||||
|
await page.evaluate(() => { throw 'qwerty'; }).catch(e => error = e);
|
||||||
|
expect(error).toBeTruthy();
|
||||||
|
expect(error.message).toContain('qwerty');
|
||||||
|
});
|
||||||
|
it('should support thrown numbers as error messages', async({page, server}) => {
|
||||||
|
let error = null;
|
||||||
|
await page.evaluate(() => { throw 100500; }).catch(e => error = e);
|
||||||
|
expect(error).toBeTruthy();
|
||||||
|
expect(error.message).toContain('100500');
|
||||||
|
});
|
||||||
it('should return complex objects', async({page, server}) => {
|
it('should return complex objects', async({page, server}) => {
|
||||||
const object = {foo: 'bar!'};
|
const object = {foo: 'bar!'};
|
||||||
const result = await page.evaluate(a => a, object);
|
const result = await page.evaluate(a => a, object);
|
||||||
|
Loading…
Reference in New Issue
Block a user