Skip to content

VirtualConsolePrinter

David Ortner edited this page Jan 21, 2025 · 11 revisions

The properties Window.console and BrowserPage.console are set to an instance of VirtualConsole by default.

VirtualConsole will not output anything to the default console for the environment. It will instead send all messages to the VirtualConsolePrinter stream.

VirtualConsolePrinter can be used to read the log messages from VirtualConsole.

Signature

class VirtualConsolePrinter

Methods

Method Return type Description
print() void Writes a log entry to the stream.
clear() void Clears the stream.
addEventListener() void Adds an event listener.
removeEventListener() void Removes an event listener.
dispatchEvent() void Dispatches an event.
read() IVirtualConsoleLogEntry[] Reads log entries from stream. This will clear the stream.
readAsString() string Reads the stream, where each log entry is stringified. This will clear the stream.

Examples

Example 1

import { Window } from "happy-dom";

const window = new Window();

window.console.log("Test", { test: true });

const log = window.happyDOM.virtualConsolePrinter.readAsString();

// Will output 'Test {"test": true}' to the NodeJS console
global.console.log(log);

Example 2

import { Browser } from "happy-dom";

const browser = new Browser();
const page = browser.newPage();

page.mainFrame.window.console.log("Test", { test: true });

const log = page.virtualConsolePrinter.readAsString();

// Will output 'Test {"test": true}' to the NodeJS console
global.console.log(log);

Example 3

import { Browser, VirtualConsoleLogLevelEnum } from "happy-dom";

const browser = new Browser();
const page = browser.newPage();
const error = new Error('Test error');

page.mainFrame.window.console.log('Test 1', { test: 'test' });
page.mainFrame.window.console.info('Test 2', { test: 'test' });
page.mainFrame.window.console.warn('Test 3', { test: 'test' });
page.mainFrame.window.console.error('Test 4', { test: 'test' }, error);
page.mainFrame.window.console.debug('Test 5', { test: 'test' });
page.mainFrame.window.console.assert(false, 'Test 6', { test: 'test' });
page.mainFrame.window.console.group('Test 7');
page.mainFrame.window.console.log('Test 8', { test: 'test' });
page.mainFrame.window.console.groupCollapsed('Test 9');
page.mainFrame.window.console.log('Test 10', { test: 'test' });
page.mainFrame.window.console.groupEnd();
page.mainFrame.window.console.group('Test 11');
page.mainFrame.window.console.log('Test 12', { test: 'test' });
page.mainFrame.window.console.error('Test 13', error);
page.mainFrame.window.console.groupEnd();
page.mainFrame.window.console.log('Test 14', { test: 'test' });
page.mainFrame.window.console.groupEnd();
page.mainFrame.window.console.count('Test 15');
page.mainFrame.window.console.count('Test 15');
page.mainFrame.window.console.countReset('Test 15');

const log = page.virtualConsolePrinter.readAsString(
   VirtualConsoleLogLevelEnum.log
);

/**
Will output:
   Test 1 {"test":"test"}
   Test 2 {"test":"test"}
   Test 3 {"test":"test"}
   Test 4 {"test":"test"} Error: Test error
      at /some/where.js:1:1
   Test 5 {"test":"test"}
   Assertion failed: Test 6 {"test":"test"}
   ▼ Test 7
   Test 8 {"test":"test"}
   ▶ Test 9
   ▼ Test 11
      Test 12 {"test":"test"}
      Test 13 Error: Test error
         at /some/where.js:1:1
   Test 14 {"test":"test"}
   Test 15: 1
   Test 15: 2
   Test 15: 0
**/
global.console.log(log);
Clone this wiki locally