Playwright Configuration File Explained – Complete Beginner Guide with playwright.config.ts Examples (2026 Guide)

Introduction: Why the Playwright Configuration File Is Important

Every Playwright automation project has one central file that controls how your tests run—the Playwright Configuration File.

Instead of configuring browsers, timeouts, reports, retries, screenshots, videos, and parallel execution inside every test, Playwright lets you manage everything from one place using playwright.config.ts.

Whether you’re running tests locally or in a CI/CD pipeline, a well-configured Playwright project becomes:

  • Easier to maintain
  • Faster to execute
  • More scalable
  • Better suited for enterprise automation

If you’re preparing for automation interviews or building a Playwright framework, understanding the Playwright configuration file explained is essential.

In this guide, you’ll learn:

  • What the Playwright configuration file is
  • How playwright.config.ts works
  • Important configuration options
  • Browser configuration
  • Reports, screenshots, traces, and videos
  • Environment variables
  • Enterprise configuration examples
  • Best practices
  • Interview questions

Let’s begin.


What Is the Playwright Configuration File?

The Playwright Configuration File is the central configuration file that controls how Playwright executes tests.

By default, it is named:

playwright.config.ts

This file defines:

  • Test location
  • Browser configuration
  • Execution settings
  • Retry strategy
  • Report generation
  • Screenshots
  • Videos
  • Traces
  • Base URL
  • Parallel execution

Simple Definition

The Playwright configuration file is a centralized file that manages test execution settings for an entire Playwright project.


Understanding playwright.config.ts

Every Playwright project usually contains:

playwright-project/

├── tests/

├── pages/

├── fixtures/

├── utils/

├── playwright.config.ts

└── package.json

The Test Runner reads playwright.config.ts before executing any tests.

Workflow:

Playwright Test Runner

Read playwright.config.ts

Load Configuration

Launch Browser

Execute Tests

Generate Reports


Important Configuration Options Explained

Below are the most commonly used configuration options.


1. testDir

Specifies where test files are stored.

Example:

testDir: ‘./tests’


2. timeout

Sets the maximum execution time for a test.

Example:

timeout: 30000

This means each test has 30 seconds to complete.


3. expect

Configures assertion timeouts.

Example:

expect: {

    timeout: 5000

}

Assertions automatically wait up to five seconds.


4. fullyParallel

Runs tests in parallel.

Example:

fullyParallel: true

Useful for reducing execution time.


5. retries

Automatically retries failed tests.

Example:

retries: 2

Recommended for CI/CD pipelines.


6. workers

Controls how many worker processes execute tests.

Example:

workers: 4

More workers generally improve execution speed, depending on available hardware.


7. use

The use section defines default browser settings.

Example:

use: {

    headless: true

}

This section commonly contains:

  • Browser options
  • Screenshots
  • Videos
  • Traces
  • Base URL

8. projects

Projects enable cross-browser testing.

Example:

projects: [

]

Each project represents a browser or device configuration.


9. reporter

Controls report generation.

Example:

reporter: ‘html’

Supported reporters include:

  • HTML
  • List
  • Line
  • Dot
  • JSON
  • JUnit XML

10. webServer

Starts your application automatically before running tests.

Example:

webServer: {

 command: ‘npm start’,

 url: ‘http://localhost:3000’

}

Very useful for local development and CI.


11. globalSetup

Runs once before all tests.

Example uses:

  • Login
  • Test data creation
  • Database preparation

12. globalTeardown

Runs once after all tests.

Example uses:

  • Database cleanup
  • File deletion
  • Resource release

Complete Runnable playwright.config.ts Example

import { defineConfig, devices } from ‘@playwright/test’;

export default defineConfig({

  testDir: ‘./tests’,

  timeout: 30000,

  expect: {

    timeout: 5000

  },

  fullyParallel: true,

  retries: 2,

  workers: 4,

  reporter: ‘html’,

  use: {

    baseURL: ‘https://example.com’,

    headless: true,

    screenshot: ‘only-on-failure’,

    video: ‘retain-on-failure’,

    trace: ‘retain-on-failure’

  },

  projects: [

    {

      name: ‘Chromium’,

      use: {

        …devices[‘Desktop Chrome’]

      }

    },

    {

      name: ‘Firefox’,

      use: {

        …devices[‘Desktop Firefox’]

      }

    },

    {

      name: ‘WebKit’,

      use: {

        …devices[‘Desktop Safari’]

      }

    }

  ]

});

This configuration is suitable for many real-world Playwright projects.


Configuration Workflow Diagram

playwright.config.ts

        │

        ▼

Playwright Test Runner

        │

        ▼

Browser Configuration

        │

        ▼

Execute Tests

        │

        ▼

Generate Reports

        │

        ▼

Screenshots / Videos / Traces

The configuration file acts as the central controller for your entire Playwright framework.

Configuring Browsers and Projects

One of the biggest advantages of Playwright is its built-in support for cross-browser testing. Instead of maintaining separate test suites for Chrome, Firefox, and Safari, you can configure multiple browsers directly in the projects section of playwright.config.ts.

Configuring Chromium

projects: [

  {

    name: ‘Chromium’,

    use: {

      …devices[‘Desktop Chrome’]

    }

  }

]

This project runs all tests using the Chromium browser engine.


Configuring Firefox

projects: [

  {

    name: ‘Firefox’,

    use: {

      …devices[‘Desktop Firefox’]

    }

  }

]

Firefox testing helps identify browser-specific issues.


Configuring WebKit (Safari)

projects: [

  {

    name: ‘WebKit’,

    use: {

      …devices[‘Desktop Safari’]

    }

  }

]

WebKit allows you to test Safari-compatible rendering on supported platforms.


Mobile Device Testing

Playwright includes predefined device configurations.

Example:

import { defineConfig, devices } from ‘@playwright/test’;

export default defineConfig({

  projects: [

    {

      name: ‘Pixel 7’,

      use: {

        …devices[‘Pixel 7’]

      }

    }

  ]

});

This enables mobile browser testing without additional setup.


Configuring Screenshots, Videos, Traces, and Reports

Playwright provides built-in support for debugging artifacts.

Screenshots

Capture screenshots only when tests fail.

use: {

    screenshot: ‘only-on-failure’

}

Options include:

  • ‘off’
  • ‘on’
  • ‘only-on-failure’

Videos

Record videos for failed tests.

use: {

    video: ‘retain-on-failure’

}

Options include:

  • ‘off’
  • ‘on’
  • ‘retain-on-failure’

Traces

Enable Playwright Trace Viewer.

use: {

    trace: ‘retain-on-failure’

}

Other options:

  • ‘on’
  • ‘on-first-retry’
  • ‘retain-on-failure’
  • ‘off’

HTML Reports

Generate an HTML report after test execution.

reporter: ‘html’

Open the report:

npx playwright show-report


Environment Variables and Base URL Configuration

Enterprise projects usually have multiple environments:

  • Development
  • QA
  • UAT
  • Production

Instead of changing URLs manually, use environment variables.

.env

BASE_URL=https://qa.example.com

playwright.config.ts

use: {

    baseURL: process.env.BASE_URL

}

Test Example

import { test, expect } from ‘@playwright/test’;

test(‘Home Page’, async ({ page }) => {

    await page.goto(‘/’);

    await expect(page).toHaveTitle(/Home/);

});

Using baseURL keeps test scripts environment-independent.


Enterprise Multi-Environment Configuration

Many organizations maintain separate configurations for different environments.

Development

QA

UAT

Production

A common approach is to load different .env files or CI/CD variables based on the deployment environment. This allows the same test suite to run across multiple environments without code changes.


CI/CD Configuration Tips

Playwright integrates well with Jenkins, GitHub Actions, Azure DevOps, GitLab CI, and other CI/CD platforms.

Recommended CI/CD settings:

retries: process.env.CI ? 2 : 0,

workers: process.env.CI ? 2 : undefined

Benefits:

  • Automatic retries in CI
  • Controlled parallel execution
  • Faster feedback
  • Consistent pipeline behavior

Best Practices for Playwright Configuration

1. Keep Configuration Centralized

Store common settings in playwright.config.ts instead of repeating them in tests.


2. Use baseURL

Avoid hardcoding URLs in test files. Configure baseURL once and use relative paths.


3. Enable HTML Reports

HTML reports make it easier to review test execution results.


4. Configure Traces for Failures

Use:

trace: ‘retain-on-failure’

This provides detailed debugging information while minimizing storage usage.


5. Configure Retries for CI

Retries help reduce failures caused by temporary infrastructure or network issues.


6. Test Multiple Browsers

Configure Chromium, Firefox, and WebKit projects to ensure cross-browser compatibility.


7. Keep Timeouts Realistic

Very short timeouts can cause unnecessary failures, while very long timeouts may hide performance issues.


Common Mistakes to Avoid

Mistake 1: Hardcoding URLs

Prefer baseURL over absolute URLs throughout your tests.


Mistake 2: Disabling Parallel Execution Without Reason

Playwright is designed for efficient parallel execution. Disable it only when required by your application’s constraints.


Mistake 3: Recording Videos for Every Test

Recording all videos increases storage usage. Prefer retain-on-failure.


Mistake 4: Ignoring Trace Viewer

Traces are one of the most valuable debugging tools in Playwright. Configure them for failed tests.


Mistake 5: Not Using Projects

Running tests against only one browser can leave browser-specific issues undiscovered.


Troubleshooting Guide

Tests Run Too Slowly

  • Reduce unnecessary waits.
  • Review worker count.
  • Enable parallel execution where appropriate.

HTML Report Not Generated

Ensure the reporter is configured:

reporter: ‘html’


Wrong Environment Used

Verify that BASE_URL is set correctly and available to the test process.


Browser Not Launching

Confirm that the required browsers are installed:

npx playwright install


Playwright Configuration Interview Questions

1. What is playwright.config.ts?

Answer:
It is the central configuration file that controls Playwright test execution.


2. What is testDir?

Answer:
It specifies the directory containing test files.


3. What is use?

Answer:
The use section defines default browser and execution settings, such as headless, baseURL, screenshots, videos, and traces.


4. What are Playwright projects?

Answer:
Projects define browser or device configurations, enabling cross-browser and cross-device testing.


5. What is fullyParallel?

Answer:
It allows tests to run in parallel when appropriate.


6. Why use retries?

Answer:
Retries can reduce failures caused by temporary issues, especially in CI/CD environments.


7. What is globalSetup?

Answer:
It runs once before all tests and is commonly used for tasks like authentication or preparing test data.


8. What is globalTeardown?

Answer:
It runs after all tests complete and is used for cleanup activities.


9. Why use baseURL?

Answer:
It avoids hardcoding URLs and makes switching between environments easier.


10. What is the purpose of the HTML reporter?

Answer:
It generates a detailed report containing test results, durations, failures, and attachments.


Frequently Asked Questions (FAQs)

What is the Playwright configuration file?

The Playwright configuration file (playwright.config.ts) is the central place for configuring test execution, browsers, reports, retries, and other framework settings.


Can I configure multiple browsers?

Yes. Use the projects section to run tests across Chromium, Firefox, WebKit, and mobile device profiles.


What is baseURL used for?

baseURL allows tests to use relative navigation paths and simplifies switching between environments.


Can Playwright generate HTML reports?

Yes. Configure reporter: ‘html’ and open the report with npx playwright show-report.


Should I enable traces?

For most projects, enabling traces with retain-on-failure provides useful debugging information without generating unnecessary files.


Is playwright.config.ts mandatory?

Playwright can run simple tests without a configuration file, but almost every real-world project uses one to manage execution settings consistently.

Leave a Comment

Your email address will not be published. Required fields are marked *