Why isn't the Playwright logger working as expected in my tests?

I’m working on a test automation project using Playwright on Windows 10 with Node.js v14. I want to log internal events (requests, responses, console messages, errors) during test execution.

However, when I try to implement logging, either no logs appear or the output is unclear. The documentation does not clearly explain how to implement logging properly inside test scripts.

How can I correctly implement and view logs in Playwright?

Playwright does not provide a traditional “logger method” like backend frameworks. Instead, logging is typically done using event listeners on browser, context, or page.

Example:

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const context = await browser.newContext();
  const page = await context.newPage();

  // Log network requests
  context.on('request', request => {
    console.log(`Request: ${request.method()} ${request.url()}`);
  });

  await page.goto('https://example.com');
  await browser.close();
})();

Important points:

Attach listeners before page.goto()

Use context.on() for network-level logging

Use page.on() for page-specific logging

If you attach listeners after navigation, you may miss early events.

If you’re expecting browser console logs or JavaScript errors, you must explicitly listen for them.

page.on('console', msg => {
  console.log(`Browser console: ${msg.text()}`);
});

page.on('pageerror', error => {
  console.log(`Page error: ${error.message}`);
});

Common mistake: Developers expect browser console logs to automatically appear in Node.js , they do not unless explicitly captured.

Make sure:

Listeners are registered before navigation

You are not accidentally running in a silent CI environment

Console output isn’t suppressed by your test runner