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:
Georgii Dolzhykov 2018-06-14 20:23:13 +03:00 committed by Andrey Lushnikov
parent 93e128931f
commit 9498b1057b
2 changed files with 13 additions and 1 deletions

View File

@ -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) {

View File

@ -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);