page-with
Version:
A library for usage example-driven in-browser testing of your own libraries.
29 lines (28 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.spyOnConsole = void 0;
const createLogger_1 = require("../internal/createLogger");
const log = (0, createLogger_1.createLogger)('consoleSpy');
function removeConsoleStyles(message) {
return message.replace(/\(*(%s|%c|color:\S+)\)*\s*/g, '').trim();
}
function spyOnConsole(page) {
const messages = new Map();
messages.set('raw', new Map());
log('created a page console spy!');
page.on('console', (message) => {
var _a, _b;
const messageType = message.type();
const text = message.text();
const textWithoutStyles = removeConsoleStyles(message.text());
log('[%s] %s', messageType, text);
// Preserve raw console messages.
const prevRawMessages = ((_a = messages.get('raw')) === null || _a === void 0 ? void 0 : _a.get(messageType)) || [];
(_b = messages.get('raw')) === null || _b === void 0 ? void 0 : _b.set(messageType, prevRawMessages.concat(text));
// Store formatted console messages (without style positionals).
const prevMessages = messages.get(messageType) || [];
messages.set(messageType, prevMessages.concat(textWithoutStyles));
});
return messages;
}
exports.spyOnConsole = spyOnConsole;