Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

From your project directory, run npx playwright show-report. Playwright starts a local web server for the HTML report and opens it in your browser. If the report is in another directory, pass that directory name, for example npx playwright show-report my-report. Opening index.html directly from your file manager can fail because the report is designed to be served over HTTP.

Open the latest Playwright report

Run the command from the directory that contains your Playwright project:

npx playwright show-report

The command looks for Playwright’s default HTML-report directory, playwright-report, starts a local server, and opens the report in a browser. The report is a folder rather than a single independent web page: its scripts, data files, screenshots, traces, and other assets are loaded relative to the served directory.

If your project uses a local Playwright installation, npx resolves the version in that project. This avoids requiring a separate global Playwright installation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Open a report in a different folder

Pass the report directory as the command’s argument:

npx playwright show-report my-report

Use the path relative to your current directory, or provide an absolute path when the report is elsewhere:

npx playwright show-report ./artifacts/playwright-report
npx playwright show-report /absolute/path/to/playwright-report

The folder must contain the generated HTML report, including its index.html file and accompanying assets. Playwright’s HTML reporter normally writes to playwright-report, but the configured outputFolder or the PLAYWRIGHT_HTML_OUTPUT_DIR environment variable can change that location.

Choose the right command for your report location

Where the report is Command What to check
Default project output npx playwright show-report A playwright-report directory exists in the current project.
Custom output directory npx playwright show-report path/to/report Use the directory configured by outputFolder or PLAYWRIGHT_HTML_OUTPUT_DIR.
Downloaded CI artifact npx playwright show-report extracted-report Extract the archive first and pass the folder containing index.html.
ZIP supplied by Playwright npx playwright show-report report.zip The ZIP must contain index.html at its top level.

Why double-clicking index.html may not work

A file URL such as file:///home/me/project/playwright-report/index.html does not provide the same origin and HTTP behavior as a web server. Playwright’s report can use JavaScript and related assets that expect to be served together. Browser security rules can block those requests when the page is opened directly from the file system, leaving you with a blank page, missing data, or a report that never finishes loading.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

npx playwright show-report supplies the missing server. It serves the complete report directory and lets the browser request index.html and its assets from one local origin.

Change the host or port

The documented defaults are host localhost and port 9323. To use a different port, add --port:

npx playwright show-report --port 9400

Then open http://localhost:9400 if your browser does not open automatically. To bind the server to a different host, use --host:

npx playwright show-report --host 0.0.0.0 --port 9400

Binding to 0.0.0.0 makes the server listen on the machine’s network interfaces. Do this only when you understand who can reach that machine; a test report can contain test data, URLs, error messages, and attachments. For a local review, the default localhost binding is the safer choice.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Control whether Playwright opens the browser

The HTML reporter’s open option accepts always, never, or on-failure. The PLAYWRIGHT_HTML_OPEN environment variable can set the same behavior. For example, to generate or use a report without launching a graphical browser:

PLAYWRIGHT_HTML_OPEN=never npx playwright test

After the test run completes, open the report yourself:

npx playwright show-report

If you want the report to open only when tests fail, configure the reporter with open: 'on-failure' in your Playwright configuration. Automatic opening and serving are separate concerns: disabling automatic opening does not remove the report or prevent show-report from serving it later.

Open a report downloaded from CI

  1. Download the CI artifact containing the Playwright HTML report.
  2. Extract it to a local directory.
  3. Check that index.html is directly inside the extracted report folder, rather than one level deeper because the archive preserved a parent directory.
  4. Run npx playwright show-report with that folder:
npx playwright show-report ./ci-artifacts/playwright-report

If the archive itself is a ZIP whose top level contains index.html, Playwright can accept the ZIP directly:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx playwright show-report ./ci-artifacts/playwright-report.zip

When a ZIP contains an extra enclosing directory, extract it and pass the nested directory that actually contains index.html.

Confirm that the report was generated where you expect

If show-report says it cannot find a report, first locate the output configured for the test run. Typical checks are:

  • Look for playwright-report/index.html in the project directory.
  • Inspect the Playwright configuration for the HTML reporter’s outputFolder.
  • Check whether PLAYWRIGHT_HTML_OUTPUT_DIR was set in the shell or CI job.
  • Make sure the test command actually used the HTML reporter; another reporter may write no HTML directory.
  • Verify that the artifact download preserved the report’s complete directory, not just an individual file.

A report generated by one test run can also be replaced by a later run. If the displayed results do not match the run you intended to inspect, remove ambiguity by placing each artifact in its own directory and passing that directory explicitly.

Troubleshoot common errors

“Cannot find report” or an empty directory

Cause: You are in the wrong working directory, the output folder was customized, or the HTML reporter did not run.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Fix: Find the directory containing index.html, then pass its path to show-report. Check the reporter configuration and the output-directory environment variable.

The browser opens a blank page

Cause: The report was opened with a file:// URL, assets are missing, or the artifact was only partially copied.

Fix: Close the file URL and run npx playwright show-report path/to/report. Confirm that the report’s JavaScript and data files are alongside index.html.

The default port is already in use

Cause: Another service is listening on port 9323.

Fix: Select an unused port, such as npx playwright show-report --port 9400, and visit the corresponding localhost URL.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The command does not open a browser

Cause: You are on a headless machine, automatic opening is disabled, or the environment cannot launch a graphical browser.

Fix: Copy the server URL printed by the command into a browser on the same machine. If the server is remote, use a secure tunnel or retrieve the artifact locally rather than exposing a test report unnecessarily.

Only part of the report appears after extraction

Cause: The CI system archived only index.html or changed the directory layout.

Fix: Re-download the complete HTML-report artifact. The report is a self-contained folder, so preserve all files and subdirectories when packaging and extracting it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The report displays old results

Cause: You are serving a stale directory or a browser has cached assets from a previous run.

Fix: Stop the server, identify the intended artifact, start show-report against that folder, and reload the page. Keeping separate, clearly named artifact directories prevents accidental reuse.

Use a repeatable workflow for local and CI reports

  1. Configure the HTML reporter output directory explicitly when your project has multiple test jobs.
  2. Archive the entire output directory as a CI artifact.
  3. When reviewing it, extract the artifact and verify the location of index.html.
  4. Run npx playwright show-report <directory>, choosing a non-default port if necessary.
  5. Keep the server bound to localhost unless another machine genuinely needs access.

This workflow preserves the report’s relative assets and avoids the unreliable file-system URL that causes many direct-opening failures.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If you need an image or PDF of a report that is already available at a public URL, ScreenshotNeo can capture that page through one request. The report must be reachable by the service; a private localhost address on your computer is not publicly accessible.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://playwright.dev -o shot.webp

See the ScreenshotNeo documentation for the complete API. The same request in Python is:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://playwright.dev"}, timeout=90)
open("shot.webp", "wb").write(r.content)

And in Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://playwright.dev' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
  • Cookie banners, newsletter popups, and chat widgets are removed before the shot.
  • Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed; response headers identify the page verdict and billing status.
  • An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
  • The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.

Create a free ScreenshotNeo account to try it without a card.

Frequently asked questions

Can I keep the report server running while I inspect traces?

Yes. Leave the terminal process running and use the browser tab; stop it with the terminal’s interrupt command when finished. The server exists only while that process is active.

Does changing the port change the report files?

No. The port only changes where the local server listens. It does not regenerate, modify, or relocate the report directory.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What should I give a teammate who needs to review the report?

Share the complete CI artifact or a securely hosted report, not just index.html. The supporting files are required for the page to render correctly.

Why does a report from another machine not load when I copy its URL?

localhost always refers to the machine running the browser. A URL printed on a CI runner or another developer’s computer is not automatically reachable from your computer; download the artifact or arrange secure network access to that server.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.