Skip to content

Add Fedora (and broader distro) support to playwright-cli browser installation #309

@SidShetye

Description

@SidShetye

Summary

playwright-cli install-browser currently hard-fails on Fedora and other non-Debian-based distributions. This restriction feels unnecessarily narrow given that most of the logic appears to be packaging/OS-detection rather than deep platform incompatibility.

Context

There has already been prior discussion around expanding OS support:
microsoft/playwright#29559

However, the ecosystem has evolved since then, this isn't just about UI testing for web apps, it's about AI agents driving workflows. Don't expect AI developers to alter their operating system just for a tool.

Why this matters now

  • Fedora is moving faster than Debian/Ubuntu
    In a fast-paced AI/dev tooling environment, Fedora (and similar distros) ship newer kernels, libraries, and toolchains significantly earlier than Ubuntu/Debian. Many developers building modern infra are increasingly choosing Fedora-based environments (including container bases).

  • Playwright is increasingly critical infra
    With Playwright being used in CI, scraping, testing, and AI workflows, limiting support to Ubuntu/Debian creates friction for teams standardizing on newer stacks.

  • The current failure mode is hard-coded, not technical
    The installer explicitly blocks non-Debian distros instead of attempting compatibility.

Observed behavior (real output)

╰─❯ playwright-cli install-browser
browserType.launchPersistentContext: Chromium distribution 'chrome' is not found at /opt/google/chrome/chrome
Run "npx playwright install chrome"

╰─❯ npx playwright install chrome
╔═══════════════════════════════════════════════════════════════════════════════╗
║ WARNING: It looks like you are running 'npx playwright install' without first ║
║ installing your project's dependencies.                                       ║
║                                                                               ║
║ To avoid unexpected behavior, please install your dependencies first, and     ║
║ then run Playwright's install command:                                        ║
║                                                                               ║
║     npm install                                                               ║
║     npx playwright install                                                    ║
║                                                                               ║
║ If your project does not yet depend on Playwright, first install the          ║
║ applicable npm package (most commonly @playwright/test), and                  ║
║ then run Playwright's install command to download the browsers:               ║
║                                                                               ║
║     npm install @playwright/test                                              ║
║     npx playwright install                                                    ║
║                                                                               ║
╚═══════════════════════════════════════════════════════════════════════════════╝
Switching to root user to install dependencies...
++ arch
+ [[ x86_64 == aarch64 ]]
+ '[' -z '' ']'
+ [[ ! -f /etc/os-release ]]
++ bash -c 'source /etc/os-release && echo $ID'
+ ID=fedora
+ [[ fedora != ubuntu ]]
+ [[ fedora != debian ]]
+ echo 'ERROR: cannot install on fedora distribution - only Ubuntu and Debian are supported'
ERROR: cannot install on fedora distribution - only Ubuntu and Debian are supported
+ exit 1
Failed to install browsers
Error: Failed to install chrome

Hypothesis: This is primarily a packaging problem

From inspection, Playwright’s Linux support relies on:

  • Installing system dependencies (apt-based today)
  • Downloading browser binaries
  • Ensuring required shared libraries are present

On Fedora:

  • Equivalent packages exist via dnf
  • Required libraries (glibc, libnss, libatk, etc.) are available with similar names

This suggests:

  • The main gap is dependency resolution + package manager abstraction
  • Not fundamental incompatibility

Suggested approach

  1. Remove hard allowlist

    • Attempt install on non-Debian systems instead of exiting
  2. Add package manager abstraction

    • Support:

      • apt (existing)
      • dnf (Fedora/RHEL)
      • optionally others later
  3. Graceful fallback

    • If auto-install fails:

      • Print required packages
      • Allow manual install + continue

Effort estimate (rough)

  • OS detection refactor: low
  • Fedora dependency mapping: moderate (~1–2 days initial)
  • Test coverage: moderate
  • Maintenance: low once abstraction exists

Why this is worth it

  • Expands Playwright adoption in modern Linux environments
  • Aligns with dev trends toward newer distros
  • Removes need for Docker/Ubuntu workarounds

Request

  • Reconsider the Ubuntu/Debian restriction
  • Evaluate Fedora as first expansion target
  • Happy to help validate or contribute mappings

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions