public async Task ShouldSendEventsWhenFramesAreManipulatedDynamically() { await Page.GotoAsync(TestConstants.EmptyPage); // validate frameattached events var attachedFrames = new List <IFrame>(); Page.FrameAttached += (_, e) => attachedFrames.Add(e); await FrameUtils.AttachFrameAsync(Page, "frame1", "./assets/frame.html"); Assert.Single(attachedFrames); Assert.Contains("/assets/frame.html", attachedFrames[0].Url); // validate framenavigated events var navigatedFrames = new List <IFrame>(); Page.FrameNavigated += (_, e) => navigatedFrames.Add(e); await Page.EvaluateAsync(@"() => { const frame = document.getElementById('frame1'); frame.src = './empty.html'; return new Promise(x => frame.onload = x); }"); Assert.Single(navigatedFrames); Assert.Equal(TestConstants.EmptyPage, navigatedFrames[0].Url); // validate framedetached events var detachedFrames = new List <IFrame>(); Page.FrameDetached += (_, e) => detachedFrames.Add(e); await FrameUtils.DetachFrameAsync(Page, "frame1"); Assert.Single(detachedFrames); Assert.True(detachedFrames[0].IsDetached); }
public async Task ShouldThrowForDetachedFrames() { var frame1 = await FrameUtils.AttachFrameAsync(Page, "frame1", Server.EmptyPage); await FrameUtils.DetachFrameAsync(Page, "frame1"); var exception = await PlaywrightAssert.ThrowsAsync <PlaywrightException>(() => frame1.EvaluateAsync("() => 7 * 8")); StringAssert.Contains("Frame was detached", exception.Message); }
public async Task ShouldThrowForDetachedFrames() { var frame1 = await FrameUtils.AttachFrameAsync(Page, "frame1", TestConstants.EmptyPage); await FrameUtils.DetachFrameAsync(Page, "frame1"); var exception = await Assert.ThrowsAsync <PlaywrightSharpException>(() => frame1.EvaluateAsync("() => 7 * 8")); Assert.Contains("Execution Context is not available in detached frame", exception.Message); }
public async Task ShouldThrowWhenFrameIsDetachedXPath() { await FrameUtils.AttachFrameAsync(Page, "frame1", TestConstants.EmptyPage); var frame = Page.FirstChildFrame(); var waitPromise = frame.WaitForSelectorAsync("//*[@class=\"box\"]"); await FrameUtils.DetachFrameAsync(Page, "frame1"); var exception = await Assert.ThrowsAnyAsync <Exception>(() => waitPromise); Assert.Contains("waitForFunction failed: frame got detached.", exception.Message); }
public async Task ShouldThrowWhenFrameIsDetachedXPath() { await FrameUtils.AttachFrameAsync(Page, "frame1", Server.EmptyPage); var frame = Page.FirstChildFrame(); var waitPromise = frame.WaitForSelectorAsync("//*[@class=\"box\"]"); await FrameUtils.DetachFrameAsync(Page, "frame1"); var exception = await PlaywrightAssert.ThrowsAsync <PlaywrightException>(() => waitPromise); StringAssert.Contains("Frame was detached", exception.Message); }
public async Task ShouldThrowWhenFrameIsDetached() { await FrameUtils.AttachFrameAsync(Page, "frame1", Server.EmptyPage); var frame = Page.FirstChildFrame(); var waitTask = frame.WaitForSelectorAsync(".box").ContinueWith(task => task.Exception?.InnerException); await FrameUtils.DetachFrameAsync(Page, "frame1"); var waitException = await waitTask; Assert.NotNull(waitException); StringAssert.Contains("Frame was detached", waitException.Message); }
public async Task ShouldThrowWhenFrameIsDetached() { await FrameUtils.AttachFrameAsync(Page, "frame1", TestConstants.EmptyPage); var frame = Page.FirstChildFrame(); var waitTask = frame.WaitForSelectorAsync(".box").ContinueWith(task => task.Exception?.InnerException); await FrameUtils.DetachFrameAsync(Page, "frame1"); var waitException = await waitTask; Assert.NotNull(waitException); Assert.Contains("waitForFunction failed: frame got detached.", waitException.Message); }