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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }