</>

Technology

Playwright

Difficulty

Beginner

Interview Question

What is headless mode in Playwright and how do you enable or disable it?

Answer

Headless Mode in Playwright

Headless mode means the browser runs without a visible window/GUI — all browser operations happen in memory. This is the default in Playwright and ideal for CI/CD environments.

Default Behavior

Bash
# Playwright runs headless by default
npx playwright test

# To see the browser UI:
npx playwright test --headed

Configuration in playwright.config.ts

TypeScript
import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    headless: false,  // Show browser window
    // headless: true, // Hide browser (default)
  },
});

Per-Launch Override in Tests

TypeScript
import { chromium } from '@playwright/test';

const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://example.com');

Slow Motion (for debugging)

Combine headless:false with slowMo to watch each action:

TypeScript
export default defineConfig({
  use: {
    headless: false,
    slowMo: 500, // 500ms delay between each action
  },
});

Or via CLI:

Bash
npx playwright test --headed --slow-mo=500

When to Use Each Mode

ModeWhen to Use
Headless (default)CI/CD pipelines, fast local runs
HeadedDebugging, recording traces, demo
Headless + slowMoDebugging without visual window clutter

Headed vs Headless Performance

  • Headless is ~10-20% faster due to no rendering overhead
  • Headless cannot access some browser features (e.g., certain video codecs)
  • Some anti-bot systems detect headless browsers — for those use headed or stealth mode

Environment Variable Override

Bash
# Force headed via env var
HEADED=1 npx playwright test

# In playwright.config.ts
use: {
  headless: !process.env.HEADED,
}

Follow AutomateQA

Related Topics