diff --git a/lib/PuppeteerSharp.Tests/PuppeteerTests/HeadfulTests.cs b/lib/PuppeteerSharp.Tests/PuppeteerTests/HeadfulTests.cs index 3c4ebd54e..dc0f49253 100644 --- a/lib/PuppeteerSharp.Tests/PuppeteerTests/HeadfulTests.cs +++ b/lib/PuppeteerSharp.Tests/PuppeteerTests/HeadfulTests.cs @@ -121,6 +121,30 @@ public async Task ShouldCloseBrowserWithBeforeunloadPage() } } + [Fact] + public async Task BringToFrontShouldWork() + { + using (var browserWithExtension = await Puppeteer.LaunchAsync( + TestConstants.BrowserWithExtensionOptions(), + TestConstants.LoggerFactory)) + using (var page = await browserWithExtension.NewPageAsync()) + { + await page.GoToAsync(TestConstants.EmptyPage); + Assert.Equal("visible", await page.EvaluateExpressionAsync("document.visibilityState")); + + var newPage = await browserWithExtension.NewPageAsync(); + await newPage.GoToAsync(TestConstants.EmptyPage); + Assert.Equal("hidden", await page.EvaluateExpressionAsync("document.visibilityState")); + Assert.Equal("visible", await newPage.EvaluateExpressionAsync("document.visibilityState")); + + await page.BringToFrontAsync(); + Assert.Equal("visible", await page.EvaluateExpressionAsync("document.visibilityState")); + Assert.Equal("hidden", await newPage.EvaluateExpressionAsync("document.visibilityState")); + + await newPage.CloseAsync(); + } + } + private Task WaitForBackgroundPageTargetAsync(Browser browser) { var target = browser.Targets().FirstOrDefault(t => t.Type == TargetType.BackgroundPage); diff --git a/lib/PuppeteerSharp/Page.cs b/lib/PuppeteerSharp/Page.cs index 2a75a00fd..df308892e 100644 --- a/lib/PuppeteerSharp/Page.cs +++ b/lib/PuppeteerSharp/Page.cs @@ -1603,6 +1603,13 @@ public Task SetBurstModeOffAsync() return Task.CompletedTask; } + + /// + /// Brings page to front (activates tab). + /// + /// A task that resolves when the message has been sent to Chromium. + public Task BringToFrontAsync() => Client.SendAsync("Page.bringToFront"); + #endregion internal void OnPopup(Page popupPage) => Popup?.Invoke(this, new PopupEventArgs { PopupPage = popupPage });