2525using System ;
2626using System . Collections . Generic ;
2727using System . Globalization ;
28+ using System . Linq ;
2829using System . Text . Json ;
2930using System . Text . Json . Serialization ;
3031using System . Threading . Tasks ;
@@ -50,19 +51,23 @@ private static async Task<IBrowser> CreateBrowser(IBrowserType browserType, Play
5051 {
5152 if ( connectOptions != null )
5253 {
53- return await browserType . ConnectAsync ( connectOptions . WSEndpoint , connectOptions ) . ConfigureAwait ( false ) ;
54+ var options = new BrowserTypeConnectOptions ( connectOptions ) ;
55+ var headers = options . Headers ? . ToDictionary ( kvp => kvp . Key , kvp => kvp . Value ) ?? [ ] ;
56+ headers . Add ( "x-playwright-launch-options" , JsonSerializer . Serialize ( PlaywrightSettingsProvider . LaunchOptions , new JsonSerializerOptions ( ) { DefaultIgnoreCondition = JsonIgnoreCondition . WhenWritingNull } ) ) ;
57+ options . Headers = headers ;
58+ return await browserType . ConnectAsync ( connectOptions . WSEndpoint , options ) . ConfigureAwait ( false ) ;
5459 }
5560
56- var legacyBrowser = await ConnectToLegacyService ( browserType ) ;
61+ var legacyBrowser = await ConnectBasedOnEnv ( browserType ) ;
5762 if ( legacyBrowser != null )
5863 {
5964 return legacyBrowser ;
6065 }
6166 return await browserType . LaunchAsync ( PlaywrightSettingsProvider . LaunchOptions ) . ConfigureAwait ( false ) ;
6267 }
6368
64- // TODO: Remove after Q3 2025
65- private static async Task < IBrowser ? > ConnectToLegacyService ( IBrowserType browserType )
69+ // TODO: Remove at some point
70+ private static async Task < IBrowser ? > ConnectBasedOnEnv ( IBrowserType browserType )
6671 {
6772 var accessToken = Environment . GetEnvironmentVariable ( "PLAYWRIGHT_SERVICE_ACCESS_TOKEN" ) ;
6873 var serviceUrl = Environment . GetEnvironmentVariable ( "PLAYWRIGHT_SERVICE_URL" ) ;
0 commit comments