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