public async Task ShouldBeAbleToReconnectToADisconnectedBrowser() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); await using var browser = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var context = await browser.NewContextAsync(); var page = await context.NewPageAsync(); await page.GoToAsync(TestConstants.EmptyPage); await browser.CloseAsync(); await using var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); context = await remote.NewContextAsync(); page = await context.NewPageAsync(); await page.GoToAsync(TestConstants.EmptyPage); await remote.CloseAsync(); await browserServer.CloseAsync(); }
public async Task ShouldFireCloseEvent() { var tcs = new TaskCompletionSource <bool>(); await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); browserServer.Closed += (sender, e) => tcs.TrySetResult(true); await Task.WhenAll(tcs.Task, browserServer.CloseAsync()); }
public async Task ShouldSetTheBrowserConnectedState() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); Assert.True(remote.IsConnected); await remote.CloseAsync(); Assert.False(remote.IsConnected); }
public async Task ShouldThrowIfUsedAfterDisconnect() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var page = await remote.NewPageAsync(); await remote.CloseAsync(); var exception = await Assert.ThrowsAnyAsync <PlaywrightSharpException>(() => page.EvaluateAsync("1 + 1")); Assert.Contains("has been closed", exception.Message); }
public async Task ShouldFireDisconnectedWhenClosingTheServer() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); await using var browser = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var disconnectedTcs = new TaskCompletionSource <bool>(); var closedTcs = new TaskCompletionSource <bool>(); browser.Disconnected += (server, e) => disconnectedTcs.TrySetResult(true); browserServer.Closed += (server, e) => closedTcs.TrySetResult(true); _ = browserServer.KillAsync(); await Task.WhenAll(disconnectedTcs.Task, closedTcs.Task).WithTimeout(); }
public async Task ShouldEmitCloseEventsOnPagesAndContexts() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var context = await remote.NewContextAsync(); var page = await context.NewPageAsync(); var tcs = new TaskCompletionSource <bool>(); page.Closed += (sender, e) => tcs.TrySetResult(true); await Task.WhenAll(remote.CloseAsync(), tcs.Task); }
public async Task ShouldWork() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); await using var browser = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var browserContext = await browser.NewContextAsync(); Assert.Empty(browserContext.Pages); Assert.NotEmpty(browserServer.WSEndpoint); var page = await browserContext.NewPageAsync(); Assert.Equal(121, await page.EvaluateAsync <int>("11 * 11")); await page.CloseAsync(); await browser.CloseAsync(); await browserServer.CloseAsync(); }
public async Task ShouldFireClosedEventDuringKill() { var order = new List <string>(); await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); var closedTcs = new TaskCompletionSource <bool>(); browserServer.Closed += (server, e) => { order.Add("closed"); closedTcs.TrySetResult(true); }; await Task.WhenAll( browserServer.KillAsync().ContinueWith(t => order.Add("killed")), closedTcs.Task); Assert.Equal(new[] { "closed", "killed" }, order.ToArray()); }
public async Task ShouldRejectWaitForSelectorWhenBrowserCloses() { Server.SetRoute("/empty.html", context => Task.Delay(10000)); await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var page = await remote.NewPageAsync(); var watchdog = page.WaitForSelectorAsync("div", new WaitForSelectorOptions { State = WaitForState.Attached, Timeout = 60000 }); await page.WaitForSelectorAsync("body", new WaitForSelectorOptions { State = WaitForState.Attached }); await remote.CloseAsync(); await Assert.ThrowsAsync <TargetClosedException>(() => watchdog); }
public async Task ShouldRejectNavigationWhenBrowserCloses() { Server.SetRoute("/one-style.css", context => Task.Delay(10000)); await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var page = await remote.NewPageAsync(); var navigationTask = page.GoToAsync(TestConstants.ServerUrl + "/one-style.html", new GoToOptions { Timeout = 60000 }); await Server.WaitForRequest("/one-style.css"); await remote.CloseAsync(); await Assert.ThrowsAsync <NavigationException>(() => navigationTask); }
public async Task ShouldThrowWhenUsedAfterIsConnectedReturnsFalse() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var page = await remote.NewPageAsync(); var disconnectedTask = new TaskCompletionSource <bool>(); remote.Disconnected += (sender, e) => disconnectedTask.TrySetResult(true); await Task.WhenAll(browserServer.CloseAsync(), disconnectedTask.Task); Assert.False(remote.IsConnected); var exception = await Assert.ThrowsAnyAsync <PlaywrightSharpException>(() => page.EvaluateAsync("1 + 1")); Assert.Contains("has been closed", exception.Message); }
public async Task ShouldTerminateNetworkWaiters() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); await using var remote = await BrowserType.ConnectAsync(new ConnectOptions { WSEndpoint = browserServer.WSEndpoint }); var newPage = await remote.NewPageAsync(); var requestTask = newPage.WaitForRequestAsync(TestConstants.EmptyPage); var responseTask = newPage.WaitForResponseAsync(TestConstants.EmptyPage); await browserServer.CloseAsync(); var exception = await Assert.ThrowsAsync <TargetClosedException>(() => requestTask); Assert.Contains("Page closed", exception.Message); Assert.DoesNotContain("Timeout", exception.Message); exception = await Assert.ThrowsAsync <TargetClosedException>(() => responseTask); Assert.Contains("Page closed", exception.Message); Assert.DoesNotContain("Timeout", exception.Message); }
public async Task ShouldReturnChildProcessInstance() { await using var browserServer = await BrowserType.LaunchServerAsync(TestConstants.GetDefaultBrowserOptions()); Assert.True(browserServer.ProcessId > 0); }