Skip to content

Commit

Permalink
feat(log): log only user api calls with DEBUG=pw:api (#1029)
Browse files Browse the repository at this point in the history
  • Loading branch information
pavelfeldman committed Feb 25, 2020
1 parent d97ea70 commit ebcaade
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
2 changes: 1 addition & 1 deletion index.js
Expand Up @@ -25,7 +25,7 @@ const { WebKit } = require('./lib/server/webkit');

for (const className in api) {
if (typeof api[className] === 'function')
helper.installApiHooks(className, api[className]);
helper.installApiHooks(className[0].toLowerCase() + className.substring(1), api[className]);
}

module.exports = {
Expand Down
33 changes: 27 additions & 6 deletions src/helper.ts
Expand Up @@ -51,16 +51,28 @@ class Helper {
if (!isAsync && !log.enabled)
continue;
Reflect.set(classType.prototype, methodName, function(this: any, ...args: any[]) {
const syncStack: any = {};
Error.captureStackTrace(syncStack);
if (log.enabled) {
if (args.length)
log(`${className}.${methodName} %o`, args);
else
log(`${className}.${methodName}`);
const frames = syncStack.stack.substring('Error\n'.length)
.split('\n')
.map((f: string) => f.replace(/\s+at\s/, '').trim());
const userCall = frames.length <= 1 || !frames[1].includes('playwright/lib');
if (userCall) {
const match = /([^/\\]+)(:\d+:\d+)[)]?$/.exec(frames[1]);
let location = '';
if (match) {
const fileName = helper.trimMiddle(match[1], 20 - match[2].length);
location = `\u001b[33m[${fileName}${match[2]}]\u001b[39m `;
}
if (args.length)
log(`${location}${className}.${methodName} %o`, args);
else
log(`${location}${className}.${methodName}`);
}
}
if (!isAsync)
return method.call(this, ...args);
const syncStack: any = {};
Error.captureStackTrace(syncStack);
return method.call(this, ...args).catch((e: any) => {
const stack = syncStack.stack.substring(syncStack.stack.indexOf('\n') + 1);
const clientStack = stack.substring(stack.indexOf('\n'));
Expand Down Expand Up @@ -229,6 +241,15 @@ class Helper {
urlString = 'http://' + urlString;
return urlString;
}

static trimMiddle(string: string, maxLength: number) {
if (string.length <= maxLength)
return string;

const leftHalf = maxLength >> 1;
const rightHalf = maxLength - leftHalf - 1;
return string.substr(0, leftHalf) + '\u2026' + string.substr(this.length - rightHalf, rightHalf);
}
}

export function assert(value: any, message?: string): asserts value {
Expand Down

0 comments on commit ebcaade

Please sign in to comment.