Skip to content

Commit 6233377

Browse files
authored
feat(xunit.v3): add LaunchOptionsAsync override (#3304)
1 parent 5012d40 commit 6233377

3 files changed

Lines changed: 51 additions & 5 deletions

File tree

src/Playwright.TestingHarnessTest/tests/xunit.v3.spec.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,3 +572,47 @@ test.describe('ConnectOptions', () => {
572572
expect(result.total).toBe(1);
573573
});
574574
});
575+
576+
test.describe('LaunchOptions', () => {
577+
test('should be able to override launch options via LaunchOptionsAsync', async ({ runTest }) => {
578+
const result = await runTest({
579+
'ExampleTests.cs': `
580+
using System;
581+
using System.Threading.Tasks;
582+
using Microsoft.Playwright;
583+
using Microsoft.Playwright.Xunit.v3;
584+
using Xunit;
585+
586+
namespace Playwright.TestingHarnessTest.Xunit;
587+
588+
public class <class-name> : PageTest
589+
{
590+
private readonly ITestOutputHelper output;
591+
592+
public <class-name>(ITestOutputHelper output)
593+
{
594+
this.output = output;
595+
}
596+
597+
[Fact]
598+
public async Task Test()
599+
{
600+
await Page.GotoAsync("about:blank");
601+
output.WriteLine("User-Agent: " + await Page.EvaluateAsync<string>("() => navigator.userAgent"));
602+
}
603+
604+
public override Task<BrowserTypeLaunchOptions?> LaunchOptionsAsync()
605+
{
606+
return Task.FromResult<BrowserTypeLaunchOptions?>(new BrowserTypeLaunchOptions
607+
{
608+
Args = new[] { "--user-agent=hello" },
609+
});
610+
}
611+
}`,
612+
}, 'dotnet test');
613+
expect(result.passed).toBe(1);
614+
expect(result.failed).toBe(0);
615+
expect(result.total).toBe(1);
616+
expect(result.stdout).toContain("User-Agent: hello");
617+
});
618+
});

src/Playwright.Xunit.v3/BrowserService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ private BrowserService(IBrowser browser)
4242
Browser = browser;
4343
}
4444

45-
public static Task<BrowserService> Register(WorkerAwareTest test, IBrowserType browserType, (string, BrowserTypeConnectOptions?)? connectOptions)
45+
public static Task<BrowserService> Register(WorkerAwareTest test, IBrowserType browserType, (string, BrowserTypeConnectOptions?)? connectOptions, BrowserTypeLaunchOptions? launchOptions)
4646
{
47-
return test.RegisterService("Browser", async () => new BrowserService(await CreateBrowser(browserType, connectOptions).ConfigureAwait(false)));
47+
return test.RegisterService("Browser", async () => new BrowserService(await CreateBrowser(browserType, connectOptions, launchOptions).ConfigureAwait(false)));
4848
}
4949

50-
private static async Task<IBrowser> CreateBrowser(IBrowserType browserType, (string WSEndpoint, BrowserTypeConnectOptions? Options)? connectOptions)
50+
private static async Task<IBrowser> CreateBrowser(IBrowserType browserType, (string WSEndpoint, BrowserTypeConnectOptions? Options)? connectOptions, BrowserTypeLaunchOptions? launchOptions)
5151
{
5252
if (connectOptions.HasValue && connectOptions.Value.WSEndpoint != null)
5353
{
@@ -63,7 +63,7 @@ private static async Task<IBrowser> CreateBrowser(IBrowserType browserType, (str
6363
{
6464
return legacyBrowser;
6565
}
66-
return await browserType.LaunchAsync(PlaywrightSettingsProvider.LaunchOptions).ConfigureAwait(false);
66+
return await browserType.LaunchAsync(launchOptions ?? PlaywrightSettingsProvider.LaunchOptions).ConfigureAwait(false);
6767
}
6868

6969
// TODO: Remove at some point

src/Playwright.Xunit.v3/BrowserTest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public async Task<IBrowserContext> NewContext(BrowserNewContextOptions? options
4242
public override async ValueTask InitializeAsync()
4343
{
4444
await base.InitializeAsync().ConfigureAwait(false);
45-
var service = await BrowserService.Register(this, BrowserType, await ConnectOptionsAsync()).ConfigureAwait(false);
45+
var service = await BrowserService.Register(this, BrowserType, await ConnectOptionsAsync(), await LaunchOptionsAsync()).ConfigureAwait(false);
4646
Browser = service.Browser;
4747
}
4848

@@ -61,4 +61,6 @@ public override async ValueTask DisposeAsync()
6161
}
6262

6363
public virtual Task<(string, BrowserTypeConnectOptions?)?> ConnectOptionsAsync() => Task.FromResult<(string, BrowserTypeConnectOptions?)?>(null);
64+
65+
public virtual Task<BrowserTypeLaunchOptions?> LaunchOptionsAsync() => Task.FromResult<BrowserTypeLaunchOptions?>(null);
6466
}

0 commit comments

Comments
 (0)