diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index bc882891b..f8231e106 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -20,7 +20,7 @@ env: jobs: build: - name: build-${{ matrix.browser }}-${{ matrix.mode }}-${{ matrix.os }}-${{ matrix.protocol }} + name: build-${{ matrix.browser }}-${{ matrix.mode }}-${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -29,63 +29,33 @@ jobs: - os: ubuntu-latest browser: CHROME mode: headless - protocol: cdp - os: ubuntu-latest browser: CHROME mode: headful - protocol: cdp - os: ubuntu-latest browser: CHROME mode: headless-shell - protocol: cdp - os: ubuntu-latest browser: FIREFOX mode: headless - protocol: cdp - os: ubuntu-latest browser: FIREFOX mode: headful - protocol: cdp - os: windows-latest browser: CHROME mode: headless - protocol: cdp - os: windows-latest browser: CHROME mode: headful - protocol: cdp - os: windows-latest browser: CHROME mode: headless-shell - protocol: cdp - os: windows-latest browser: FIREFOX mode: headless - protocol: cdp - os: windows-latest browser: FIREFOX mode: headful - protocol: cdp - - os: ubuntu-latest - browser: CHROME - mode: headless - protocol: webdriverbidi - - os: ubuntu-latest - browser: CHROME - mode: headful - protocol: webdriverbidi - - os: ubuntu-latest - browser: CHROME - mode: headless-shell - protocol: webdriverbidi - - os: ubuntu-latest - browser: FIREFOX - mode: headless - protocol: webdriverbidi - - os: ubuntu-latest - browser: FIREFOX - mode: headful - protocol: webdriverbidi steps: - uses: actions/checkout@v3 - name: Setup .NET Core @@ -113,7 +83,7 @@ jobs: New-SelfSignedCertificate -Subject "localhost" -FriendlyName "Puppeteer" -CertStoreLocation "cert:\CurrentUser\My" Get-ChildItem -Path cert:\CurrentUSer\my | where { $_.friendlyname -eq "Puppeteer" } | Export-Certificate -FilePath $env:GITHUB_WORKSPACE\lib\PuppeteerSharp.TestServer\testCert.cer - name: Check formatting - if: ${{ matrix.os == 'ubuntu-latest' && matrix.browser == 'CHROME' && matrix.mode == 'headless' && matrix.protocol == 'cdp' }} + if: ${{ matrix.os == 'ubuntu-latest' && matrix.browser == 'CHROME' && matrix.mode == 'headless' }} run: dotnet format ./lib/PuppeteerSharp.sln --verify-no-changes - name: Build working-directory: lib @@ -123,7 +93,6 @@ jobs: env: PRODUCT: ${{ matrix.browser }} HEADLESS_MODE: ${{ matrix.mode }} - PROTOCOL: ${{ matrix.protocol }} run: | Xvfb :1 -screen 5 1024x768x8 & export DISPLAY=:1.5 @@ -134,7 +103,6 @@ jobs: env: PRODUCT: ${{ matrix.browser }} HEADLESS_MODE: ${{ matrix.mode }} - PROTOCOL: ${{ matrix.protocol }} run: | cd .\lib\PuppeteerSharp.Tests dotnet test -s test.runsettings --blame-hang-timeout 300000 diff --git a/lib/PuppeteerSharp.Nunit/PuppeteerTestAttribute.cs b/lib/PuppeteerSharp.Nunit/PuppeteerTestAttribute.cs index e0c8054f1..e16a717d9 100644 --- a/lib/PuppeteerSharp.Nunit/PuppeteerTestAttribute.cs +++ b/lib/PuppeteerSharp.Nunit/PuppeteerTestAttribute.cs @@ -21,7 +21,8 @@ public class PuppeteerTestAttribute : NUnitAttribute, IApplyToTest private static TestExpectation[] _localExpectations; private static TestExpectation[] _upstreamExpectations; public static readonly bool IsChrome = Environment.GetEnvironmentVariable("PRODUCT") != "FIREFOX"; - public static readonly bool IsCdp = Environment.GetEnvironmentVariable("PROTOCOL") != "webdriverbidi"; + // TODO: Change implementation when we implement Webdriver Bidi + public static readonly bool IsCdp = true; public static readonly HeadlessMode Headless = string.IsNullOrEmpty(Environment.GetEnvironmentVariable("HEADLESS_MODE")) ? (System.Diagnostics.Debugger.IsAttached ? HeadlessMode.False : HeadlessMode.True) : diff --git a/lib/PuppeteerSharp.Tests/BrowserContextTests/BrowserContextTests.cs b/lib/PuppeteerSharp.Tests/BrowserContextTests/BrowserContextTests.cs index 87153b9a3..a0bc42360 100644 --- a/lib/PuppeteerSharp.Tests/BrowserContextTests/BrowserContextTests.cs +++ b/lib/PuppeteerSharp.Tests/BrowserContextTests/BrowserContextTests.cs @@ -142,8 +142,7 @@ public async Task ShouldWorkAcrossSessions() var remoteBrowser = await Puppeteer.ConnectAsync(new ConnectOptions { - BrowserWSEndpoint = Browser.WebSocketEndpoint, - Protocol = ((Browser)Browser).Protocol, + BrowserWSEndpoint = Browser.WebSocketEndpoint }); var contexts = remoteBrowser.BrowserContexts(); Assert.AreEqual(2, contexts.Length); diff --git a/lib/PuppeteerSharp.Tests/BrowserTests/IsConnectedTests.cs b/lib/PuppeteerSharp.Tests/BrowserTests/IsConnectedTests.cs index 1f274359e..eda270251 100644 --- a/lib/PuppeteerSharp.Tests/BrowserTests/IsConnectedTests.cs +++ b/lib/PuppeteerSharp.Tests/BrowserTests/IsConnectedTests.cs @@ -6,13 +6,16 @@ namespace PuppeteerSharp.Tests.BrowserTests { public class IsConnectedTests : PuppeteerBrowserBaseTest { + public IsConnectedTests() : base() + { + } + [Test, Retry(2), PuppeteerTest("browser.spec", "Browser.isConnected", "should set the browser connected state")] public async Task ShouldSetTheBrowserConnectedState() { var newBrowser = await Puppeteer.ConnectAsync(new ConnectOptions { - BrowserWSEndpoint = Browser.WebSocketEndpoint, - Protocol = ((Browser)Browser).Protocol, + BrowserWSEndpoint = Browser.WebSocketEndpoint }); Assert.True(newBrowser.IsConnected); newBrowser.Disconnect(); diff --git a/lib/PuppeteerSharp.Tests/BrowserTests/ProcessTests.cs b/lib/PuppeteerSharp.Tests/BrowserTests/ProcessTests.cs index 8e2b7e16e..ae482b1c2 100644 --- a/lib/PuppeteerSharp.Tests/BrowserTests/ProcessTests.cs +++ b/lib/PuppeteerSharp.Tests/BrowserTests/ProcessTests.cs @@ -6,6 +6,8 @@ namespace PuppeteerSharp.Tests.BrowserTests { public class ProcessTests : PuppeteerBrowserBaseTest { + public ProcessTests() : base() { } + [Test, Retry(2), PuppeteerTest("browser.spec", "Browser.process", "should return child_process instance")] public void ShouldReturnProcessInstance() { @@ -18,12 +20,7 @@ public async Task ShouldNotReturnChildProcessForRemoteBrowser() { var browserWSEndpoint = Browser.WebSocketEndpoint; var remoteBrowser = await Puppeteer.ConnectAsync( - new ConnectOptions - { - BrowserWSEndpoint = browserWSEndpoint, - Protocol = ((Browser)Browser).Protocol, - }, - TestConstants.LoggerFactory); + new ConnectOptions { BrowserWSEndpoint = browserWSEndpoint }, TestConstants.LoggerFactory); Assert.Null(remoteBrowser.Process); remoteBrowser.Disconnect(); } diff --git a/lib/PuppeteerSharp.Tests/LauncherTests/BrowserCloseTests.cs b/lib/PuppeteerSharp.Tests/LauncherTests/BrowserCloseTests.cs index a94276747..bba2de405 100644 --- a/lib/PuppeteerSharp.Tests/LauncherTests/BrowserCloseTests.cs +++ b/lib/PuppeteerSharp.Tests/LauncherTests/BrowserCloseTests.cs @@ -6,28 +6,30 @@ namespace PuppeteerSharp.Tests.BrowserTests.Events { public class BrowserCloseTests : PuppeteerBrowserBaseTest { + public BrowserCloseTests() : base() + { + } + [Test, Retry(2), PuppeteerTest("launcher.spec", "Launcher specs Browser.close", "should terminate network waiters")] public async Task ShouldTerminateNetworkWaiters() { - await using var browser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions()); - await using var remote = await Puppeteer.ConnectAsync(new ConnectOptions + await using (var browser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions())) + await using (var remote = await Puppeteer.ConnectAsync(new ConnectOptions { BrowserWSEndpoint = browser.WebSocketEndpoint })) { - BrowserWSEndpoint = browser.WebSocketEndpoint, - Protocol = ((Browser)browser).Protocol, - }); - var newPage = await remote.NewPageAsync(); - var requestTask = newPage.WaitForRequestAsync(TestConstants.EmptyPage); - var responseTask = newPage.WaitForResponseAsync(TestConstants.EmptyPage); + var newPage = await remote.NewPageAsync(); + var requestTask = newPage.WaitForRequestAsync(TestConstants.EmptyPage); + var responseTask = newPage.WaitForResponseAsync(TestConstants.EmptyPage); - await browser.CloseAsync(); + await browser.CloseAsync(); - var exception = Assert.ThrowsAsync(() => requestTask); - StringAssert.Contains("Target closed", exception.Message); - StringAssert.DoesNotContain("Timeout", exception.Message); + var exception = Assert.ThrowsAsync(() => requestTask); + StringAssert.Contains("Target closed", exception.Message); + StringAssert.DoesNotContain("Timeout", exception.Message); - exception = Assert.ThrowsAsync(() => responseTask); - StringAssert.Contains("Target closed", exception.Message); - StringAssert.DoesNotContain("Timeout", exception.Message); + exception = Assert.ThrowsAsync(() => responseTask); + StringAssert.Contains("Target closed", exception.Message); + StringAssert.DoesNotContain("Timeout", exception.Message); + } } } } diff --git a/lib/PuppeteerSharp.Tests/LauncherTests/BrowserDisconnectTests.cs b/lib/PuppeteerSharp.Tests/LauncherTests/BrowserDisconnectTests.cs index 64055b426..681b3d26e 100644 --- a/lib/PuppeteerSharp.Tests/LauncherTests/BrowserDisconnectTests.cs +++ b/lib/PuppeteerSharp.Tests/LauncherTests/BrowserDisconnectTests.cs @@ -15,8 +15,7 @@ public async Task ShouldRejectNavigationWhenBrowserCloses() await using var browser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions()); var remote = await Puppeteer.ConnectAsync(new ConnectOptions { - BrowserWSEndpoint = browser.WebSocketEndpoint, - Protocol = ((Browser)Browser).Protocol, + BrowserWSEndpoint = browser.WebSocketEndpoint }); var page = await remote.NewPageAsync(); var navigationTask = page.GoToAsync(TestConstants.ServerUrl + "/one-style.html", new NavigationOptions @@ -42,8 +41,7 @@ public async Task ShouldRejectWaitForSelectorWhenBrowserCloses() await using var browser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions()); var remote = await Puppeteer.ConnectAsync(new ConnectOptions { - BrowserWSEndpoint = browser.WebSocketEndpoint, - Protocol = ((Browser)browser).Protocol, + BrowserWSEndpoint = browser.WebSocketEndpoint }); var page = await remote.NewPageAsync(); var watchdog = page.WaitForSelectorAsync("div", new WaitForSelectorOptions { Timeout = 60000 }); diff --git a/lib/PuppeteerSharp.Tests/LauncherTests/BrowserEventsDisconnectedTests.cs b/lib/PuppeteerSharp.Tests/LauncherTests/BrowserEventsDisconnectedTests.cs index e90b39933..bd3c0da32 100644 --- a/lib/PuppeteerSharp.Tests/LauncherTests/BrowserEventsDisconnectedTests.cs +++ b/lib/PuppeteerSharp.Tests/LauncherTests/BrowserEventsDisconnectedTests.cs @@ -14,11 +14,7 @@ public BrowserEventsDisconnectedTests() : base() public async Task ShouldEmittedWhenBrowserGetsClosedDisconnectedOrUnderlyingWebsocketGetsClosed() { var originalBrowser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions(), TestConstants.LoggerFactory); - var connectOptions = new ConnectOptions - { - BrowserWSEndpoint = originalBrowser.WebSocketEndpoint, - Protocol = ((Browser)Browser).Protocol, - }; + var connectOptions = new ConnectOptions { BrowserWSEndpoint = originalBrowser.WebSocketEndpoint }; var remoteBrowser1 = await Puppeteer.ConnectAsync(connectOptions, TestConstants.LoggerFactory); var remoteBrowser2 = await Puppeteer.ConnectAsync(connectOptions, TestConstants.LoggerFactory); diff --git a/lib/PuppeteerSharp.Tests/LauncherTests/PuppeteerConnectTests.cs b/lib/PuppeteerSharp.Tests/LauncherTests/PuppeteerConnectTests.cs index 8172fc62c..73603b4ee 100644 --- a/lib/PuppeteerSharp.Tests/LauncherTests/PuppeteerConnectTests.cs +++ b/lib/PuppeteerSharp.Tests/LauncherTests/PuppeteerConnectTests.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Connections.Features; @@ -10,13 +11,16 @@ namespace PuppeteerSharp.Tests.LauncherTests { public class PuppeteerConnectTests : PuppeteerBrowserBaseTest { + public PuppeteerConnectTests() : base() + { + } + [Test, Retry(2), PuppeteerTest("launcher.spec", "Launcher specs Puppeteer Puppeteer.connect", "should be able to connect multiple times to the same browser")] public async Task ShouldBeAbleToConnectMultipleTimesToSameBrowser() { var options = new ConnectOptions() { - BrowserWSEndpoint = Browser.WebSocketEndpoint, - Protocol = ((Browser)Browser).Protocol, + BrowserWSEndpoint = Browser.WebSocketEndpoint }; var browser = await Puppeteer.ConnectAsync(options, TestConstants.LoggerFactory); await using (var page = await browser.NewPageAsync()) @@ -51,29 +55,30 @@ public async Task ShouldBeAbleToCloseRemoteBrowser() [Test, Retry(2), PuppeteerTest("launcher.spec", "Launcher specs Puppeteer Puppeteer.connect", "should support ignoreHTTPSErrors option")] public async Task ShouldSupportIgnoreHTTPSErrorsOption() { - await using var originalBrowser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions()); - await using var browser = await Puppeteer.ConnectAsync(new ConnectOptions + await using (var originalBrowser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions())) + await using (var browser = await Puppeteer.ConnectAsync(new ConnectOptions { BrowserWSEndpoint = originalBrowser.WebSocketEndpoint, - IgnoreHTTPSErrors = true, - Protocol = ((Browser)Browser).Protocol, - }); - await using var page = await browser.NewPageAsync(); - var requestTask = HttpsServer.WaitForRequest( - "/empty.html", - request => request?.HttpContext.Features.Get()?.Protocol); - var responseTask = page.GoToAsync(TestConstants.HttpsPrefix + "/empty.html"); - - await Task.WhenAll( - requestTask, - responseTask).WithTimeout(Puppeteer.DefaultTimeout); - - var response = responseTask.Result; - Assert.True(response.Ok); - Assert.NotNull(response.SecurityDetails); - Assert.AreEqual( - TestUtils.CurateProtocol(requestTask.Result.ToString()), - TestUtils.CurateProtocol(response.SecurityDetails.Protocol)); + IgnoreHTTPSErrors = true + })) + await using (var page = await browser.NewPageAsync()) + { + var requestTask = HttpsServer.WaitForRequest( + "/empty.html", + request => request?.HttpContext?.Features?.Get()?.Protocol); + var responseTask = page.GoToAsync(TestConstants.HttpsPrefix + "/empty.html"); + + await Task.WhenAll( + requestTask, + responseTask).WithTimeout(Puppeteer.DefaultTimeout); + + var response = responseTask.Result; + Assert.True(response.Ok); + Assert.NotNull(response.SecurityDetails); + Assert.AreEqual( + TestUtils.CurateProtocol(requestTask.Result.ToString()), + TestUtils.CurateProtocol(response.SecurityDetails.Protocol)); + } } [Test, Retry(2), PuppeteerTest("launcher.spec", "Launcher specs Puppeteer Puppeteer.connect", "should support targetFilter option")] @@ -89,8 +94,7 @@ public async Task ShouldSupportTargetFilter() var remoteBrowser = await Puppeteer.ConnectAsync(new ConnectOptions { BrowserWSEndpoint = browser.WebSocketEndpoint, - TargetFilter = target => !target.Url.Contains("should-be-ignored"), - Protocol = ((Browser)browser).Protocol, + TargetFilter = (Target target) => !target.Url.Contains("should-be-ignored"), }, TestConstants.LoggerFactory); var pages = await remoteBrowser.PagesAsync(); @@ -101,7 +105,7 @@ public async Task ShouldSupportTargetFilter() "about:blank", TestConstants.EmptyPage }, - pages.Select(p => p.Url).OrderBy(t => t)); + pages.Select((IPage p) => p.Url).OrderBy(t => t)); await page2.CloseAsync(); await page1.CloseAsync(); @@ -132,8 +136,7 @@ public async Task ShouldBeAbleToReconnectToADisconnectedBrowser() { var options = new ConnectOptions() { - BrowserWSEndpoint = Browser.WebSocketEndpoint, - Protocol = ((Browser)Browser).Protocol, + BrowserWSEndpoint = Browser.WebSocketEndpoint }; var url = TestConstants.ServerUrl + "/frames/nested-frames.html"; @@ -158,8 +161,7 @@ public async Task ShouldBeAbleToConnectToTheSamePageSimultaneously() var browserOne = await Puppeteer.LaunchAsync(new LaunchOptions()); var browserTwo = await Puppeteer.ConnectAsync(new ConnectOptions { - BrowserWSEndpoint = browserOne.WebSocketEndpoint, - Protocol = ((Browser)browserOne).Protocol, + BrowserWSEndpoint = browserOne.WebSocketEndpoint }); var tcs = new TaskCompletionSource(); async void TargetCreated(object sender, TargetChangedArgs e) @@ -190,8 +192,7 @@ public async Task ShouldBeAbleToReconnect() var browserTwo = await Puppeteer.ConnectAsync(new ConnectOptions { - BrowserWSEndpoint = browserWSEndpoint, - Protocol = ((Browser)browserOne).Protocol, + BrowserWSEndpoint = browserWSEndpoint }); var pages = await browserTwo.PagesAsync(); diff --git a/lib/PuppeteerSharp.Tests/TestConstants.cs b/lib/PuppeteerSharp.Tests/TestConstants.cs index 6231c91b7..9b1ded441 100644 --- a/lib/PuppeteerSharp.Tests/TestConstants.cs +++ b/lib/PuppeteerSharp.Tests/TestConstants.cs @@ -48,7 +48,6 @@ public static LaunchOptions DefaultBrowserOptions() => new() EnqueueAsyncMessages = Convert.ToBoolean(Environment.GetEnvironmentVariable("ENQUEUE_ASYNC_MESSAGES") ?? "false"), Timeout = 0, LogProcess = true, - Protocol = PuppeteerTestAttribute.IsCdp ? ProtocolType.Cdp : ProtocolType.WebdriverBiDi, #if NETCOREAPP EnqueueTransportMessages = false #else @@ -59,7 +58,6 @@ public static LaunchOptions DefaultBrowserOptions() => new() public static LaunchOptions BrowserWithExtensionOptions() => new() { Headless = false, - Protocol = PuppeteerTestAttribute.IsCdp ? ProtocolType.Cdp : ProtocolType.WebdriverBiDi, Args = new[] { $"--disable-extensions-except={ExtensionPath.Quote()}", diff --git a/lib/PuppeteerSharp/Browser.cs b/lib/PuppeteerSharp/Browser.cs index e6112af9a..4c1a1a379 100644 --- a/lib/PuppeteerSharp/Browser.cs +++ b/lib/PuppeteerSharp/Browser.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Net.Sockets; using System.Threading.Tasks; using PuppeteerSharp.Cdp; +using PuppeteerSharp.Cdp.Messaging; using PuppeteerSharp.Helpers; namespace PuppeteerSharp @@ -67,8 +67,6 @@ public abstract class Browser : IBrowser internal Func IsPageTargetFunc { get; set; } - internal abstract ProtocolType Protocol { get; } - /// public abstract Task NewPageAsync(); diff --git a/lib/PuppeteerSharp/Cdp/CdpBrowser.cs b/lib/PuppeteerSharp/Cdp/CdpBrowser.cs index dc64645c9..b35b3a777 100644 --- a/lib/PuppeteerSharp/Cdp/CdpBrowser.cs +++ b/lib/PuppeteerSharp/Cdp/CdpBrowser.cs @@ -24,7 +24,6 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; -using System.Net.Sockets; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using PuppeteerSharp.Cdp.Messaging; @@ -104,8 +103,6 @@ public override bool IsClosed internal ITargetManager TargetManager { get; } - internal override ProtocolType Protocol => ProtocolType.Cdp; - /// public override Task NewPageAsync() => DefaultContext.NewPageAsync(); diff --git a/lib/PuppeteerSharp/ConnectOptions.cs b/lib/PuppeteerSharp/ConnectOptions.cs index c89d476ca..d11a525db 100644 --- a/lib/PuppeteerSharp/ConnectOptions.cs +++ b/lib/PuppeteerSharp/ConnectOptions.cs @@ -15,6 +15,12 @@ public class ConnectOptions : IBrowserOptions, IConnectionOptions /// public bool IgnoreHTTPSErrors { get; set; } + /// + /// If set to true, sets Headless = false, otherwise, enables automation. + /// + [Obsolete("No longer required and usages should be removed")] + public bool AppMode { get; set; } + /// /// A browser websocket endpoint to connect to. /// @@ -31,6 +37,12 @@ public class ConnectOptions : IBrowserOptions, IConnectionOptions /// public int SlowMo { get; set; } + /// + /// Keep alive value. + /// + [Obsolete("Chromium doesn't support pings yet (see: https://bugs.chromium.org/p/chromium/issues/detail?id=865002)")] + public int KeepAliveInterval { get; set; } = 0; + /// /// Optional factory for implementations. /// If is set this property will be ignored. @@ -43,8 +55,11 @@ public class ConnectOptions : IBrowserOptions, IConnectionOptions /// The default Viewport. public ViewPortOptions DefaultViewport { get; set; } = ViewPortOptions.Default; - /// - public ProtocolType Protocol { get; set; } = ProtocolType.Cdp; + /// + /// Optional connection transport. + /// + [Obsolete("Use " + nameof(TransportFactory) + " instead")] + public IConnectionTransport Transport { get; set; } /// /// Optional factory for implementations. diff --git a/lib/PuppeteerSharp/IBrowserOptions.cs b/lib/PuppeteerSharp/IBrowserOptions.cs index ab4f8a95a..902b3c9e1 100644 --- a/lib/PuppeteerSharp/IBrowserOptions.cs +++ b/lib/PuppeteerSharp/IBrowserOptions.cs @@ -15,10 +15,5 @@ public interface IBrowserOptions /// /// The default Viewport. ViewPortOptions DefaultViewport { get; set; } - - /// - /// Protocol type.. - /// - ProtocolType Protocol { get; set; } } } diff --git a/lib/PuppeteerSharp/LaunchOptions.cs b/lib/PuppeteerSharp/LaunchOptions.cs index 65765910e..0c1ab4ab4 100644 --- a/lib/PuppeteerSharp/LaunchOptions.cs +++ b/lib/PuppeteerSharp/LaunchOptions.cs @@ -91,6 +91,12 @@ public bool Devtools } } + /// + /// Keep alive value. + /// + [Obsolete("Chromium doesn't support pings yet (see: https://bugs.chromium.org/p/chromium/issues/detail?id=865002)")] + public int KeepAliveInterval { get; set; } = 0; + /// /// Logs process counts after launching chrome and after exiting. /// @@ -145,6 +151,12 @@ public string[] IgnoredDefaultArgs /// public WebSocketFactory WebSocketFactory { get; set; } + /// + /// Optional connection transport. + /// + [Obsolete("Use " + nameof(TransportFactory) + " instead")] + public IConnectionTransport Transport { get; set; } + /// /// Optional factory for implementations. /// @@ -156,9 +168,6 @@ public string[] IgnoredDefaultArgs /// The default Viewport. public ViewPortOptions DefaultViewport { get; set; } = ViewPortOptions.Default; - /// - public ProtocolType Protocol { get; set; } - /// /// If not is set this will be use to determine is the default will enqueue messages. /// diff --git a/lib/PuppeteerSharp/ProtocolType.cs b/lib/PuppeteerSharp/ProtocolType.cs deleted file mode 100644 index 3e8afb781..000000000 --- a/lib/PuppeteerSharp/ProtocolType.cs +++ /dev/null @@ -1,39 +0,0 @@ -// * MIT License -// * -// * Copyright (c) DarĂ­o Kondratiuk -// * -// * Permission is hereby granted, free of charge, to any person obtaining a copy -// * of this software and associated documentation files (the "Software"), to deal -// * in the Software without restriction, including without limitation the rights -// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// * copies of the Software, and to permit persons to whom the Software is -// * furnished to do so, subject to the following conditions: -// * -// * The above copyright notice and this permission notice shall be included in all -// * copies or substantial portions of the Software. -// * -// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// * SOFTWARE. - -namespace PuppeteerSharp; - -/// -/// Protocol used to communicate with the browser. -/// -public enum ProtocolType -{ - /// - /// Chrome DevTools Protocol. - /// - Cdp = 0, - - /// - /// Webdriver Bidi. - /// - WebdriverBiDi, -}