public async Task ShouldSendEventsWhenFramesAreManipulatedDynamically() { await Page.GoToAsync(TestConstants.EmptyPage); // validate frameattached events var attachedFrames = new List <Frame>(); Page.FrameAttached += (sender, e) => attachedFrames.Add(e.Frame); 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 <Frame>(); Page.FrameNavigated += (sender, e) => navigatedFrames.Add(e.Frame); await FrameUtils.NavigateFrameAsync(Page, "frame1", "./empty.html"); Assert.Single(navigatedFrames); Assert.Equal(TestConstants.EmptyPage, navigatedFrames[0].Url); // validate framedetached events var detachedFrames = new List <Frame>(); Page.FrameDetached += (sender, e) => detachedFrames.Add(e.Frame); await FrameUtils.DetachFrameAsync(Page, "frame1"); Assert.Single(navigatedFrames); Assert.True(navigatedFrames[0].Detached); }