How do I configure Playwright to run specific setup files for each project in a monorepo?


Sure, you can easily manage the execution of specific setup.ts files for each project in your Playwright monorepo. This is done by leveraging the project dependencies feature in Playwright.

In your playwright.config.ts file, you can define multiple projects with the defineConfig() function. Each project represents a different test suite or scenario. You can specify the name of each project, along with other properties such as testMatch, which defines the pattern for matching test files.

To link projects, use the dependencies property within a specific project definition. This property allows you to specify an array of projects that need to run before the tests in another project can be executed.

Here's an example:

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

export default defineConfig({
  projects: [
      name: 'setup',
      testMatch: /global.setup\.ts/,
      name: 'chromium',
      use: {
        // ...devices['Desktop Chrome']
      dependencies: ['setup'],
      name: 'firefox',
      use: {
        // ...devices['Desktop Firefox']
      dependencies: ['setup'],

In this configuration, when running tests for either the 'chromium' or 'firefox' projects, Playwright will automatically execute any setup actions defined in the 'setup' project before running their respective tests.

By organizing your codebase and configuring these dependencies correctly, only relevant setup files will be executed for each project. This ensures that the necessary setup actions are performed before running the tests.


Thank you!
Was this helpful?
Still have questions?

If you still have questions, please ask a question and I will try to answer it.

Related Discord Threads

Related Questions

AboutQuestionsDiscord ForumBrowser ExtensionTagsQA Jobs

Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email luc@ray.run.