You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add a Program.Main() override with a throwOnError parameter
Ensuring that playwright is properly installed can be done by running the following code:
```csharp
var playwright = new Microsoft.Playwright.Program();
var exitCode = playwright.Run(["install", "--with-deps"]);
```
This is fine when the installation succeeds and the exit code is 0. But when running under xUnit.net (which [does **not** capture the console output](https://xunit.net/docs/capturing-output)) and the installation fails with exit code 1, then it becomes impossibly hard to diagnose the root cause of the failure.
For example, a failure can be triggered by deleting the installed browers in the `ms-playwright` cache directory and setting the `https_proxy` environment variable to an invalid proxy: `http://127.0.0.1:33333`.
Under these conditions, running with the new `throwOnError` parameter becomes diagnosable.
```csharp
var playwright = new Microsoft.Playwright.Program();
var exitCode = playwright.Run(["install", "--with-deps", "firefox"], throwOnError: true);
```
This throws a `PlaywrightException` with the exact command executed and its output, making it clear what the problem is.
> Failed to run ~/playwright-dotnet/src/playwright-xunit/bin/Debug/net8.0/.playwright/node/darwin-x64/node "~/playwright-dotnet/src/playwright-xunit/bin/Debug/net8.0/.playwright/package/cli.js" "install" "--with-deps" "firefox"
> Downloading Firefox 132.0 (playwright build v1466) from https://playwright.azureedge.net/builds/firefox/1466/firefox-mac.zip
> Error: connect ECONNREFUSED 127.0.0.1:33333
> at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1610:16) {
> errno: -61,
> code: 'ECONNREFUSED',
> syscall: 'connect',
> address: '127.0.0.1',
> port: 33333
> }
> Downloading Firefox 132.0 (playwright build v1466) from https://playwright-akamai.azureedge.net/builds/firefox/1466/firefox-mac.zip
> Error: connect ECONNREFUSED 127.0.0.1:33333
> at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1610:16) {
> errno: -61,
> code: 'ECONNREFUSED',
> syscall: 'connect',
> address: '127.0.0.1',
> port: 33333
> }
> Downloading Firefox 132.0 (playwright build v1466) from https://playwright-verizon.azureedge.net/builds/firefox/1466/firefox-mac.zip
> Error: connect ECONNREFUSED 127.0.0.1:33333
> at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1610:16) {
> errno: -61,
> code: 'ECONNREFUSED',
> syscall: 'connect',
> address: '127.0.0.1',
> port: 33333
> }
> Failed to install browsers
> Error: Failed to download Firefox 132.0 (playwright build v1466), caused by
> Error: Download failure, code=1
returnPrintError("Microsoft.Playwright assembly was found, but is missing required assets. Please ensure to build your project before running Playwright tool.");
thrownewPlaywrightException($"Failed to run {playwrightStartInfo.FileName}{playwrightStartInfo.Arguments}{Environment.NewLine}{pwOutput.ToString().Trim()}");
0 commit comments