Пример #1
0
        public async Task OOPIFShouldReportGoogleComFrame()
        {
            await using var browser = await Playwright.LaunchAsync(TestConstants.GetHeadfulOptions());

            var page = await browser.DefaultContext.NewPageAsync();

            await page.GoToAsync(TestConstants.EmptyPage);

            await page.SetRequestInterceptionAsync(true);

            page.Request += async(sender, e) => await e.Request.FulfillAsync(
                new ResponseData { Body = "{ body: 'YO, GOOGLE.COM'}" });

            await page.EvaluateHandleAsync(@"() => {
                    const frame = document.createElement('iframe');
                    frame.setAttribute('src', 'https://google.com/');
                    document.body.appendChild(frame);
                    return new Promise(x => frame.onload = x);
                }");

            await page.WaitForSelectorAsync("iframe[src=\"https://google.com/\"]");

            string[] urls = Array.ConvertAll(page.Frames, frame => frame.Url);
            Array.Sort(urls);
            Assert.Equal(new[] { TestConstants.EmptyPage, "https://google.com/" }, urls);
        }
Пример #2
0
        public async Task ShouldHaveDefaultUrlWhenLaunchingBrowser()
        {
            await using var browser = await Playwright.LaunchAsync(TestConstants.GetHeadfulOptions());

            string[] pages = (await browser.DefaultContext.GetPagesAsync()).Select(page => page.Url).ToArray();
            Assert.Equal(new[] { "about:blank" }, pages);
        }
Пример #3
0
        public async Task ShouldOpenDevtoolsWhenDevtoolsTrueOptionIsGiven()
        {
            var headfulOptions = TestConstants.GetHeadfulOptions();

            headfulOptions.Devtools = true;
            await using var browser = await BrowserType.LaunchAsync(headfulOptions);

            var context = await browser.NewContextAsync();

            await Task.WhenAll(
                context.NewPageAsync(),
                browser.WaitForTargetAsync(target => target.Url.Contains("devtools://")));
        }
Пример #4
0
        public async Task HeadlessShouldBeAbleToReadCookiesWrittenByHeadful()
        {
            // "Too" complex for our skip attribute
            if ((TestConstants.IsWindows && TestConstants.IsChromium) || TestConstants.IsFirefox)
            {
                return;
            }
            using var userDataDir = new TempDirectory();

            // Write a cookie in headful chrome
            var headfulOptions = TestConstants.GetHeadfulOptions();

            headfulOptions.UserDataDir = userDataDir.Path;

            var headfulBrowser = await Playwright.LaunchAsync(headfulOptions);

            var headfulPage = await headfulBrowser.DefaultContext.NewPageAsync();

            await headfulPage.GoToAsync(TestConstants.EmptyPage);

            await headfulPage.EvaluateAsync("() => document.cookie = 'foo=true; expires=Fri, 31 Dec 9999 23:59:59 GMT'");

            await headfulBrowser.CloseAsync();

            // Read the cookie from headless chrome
            var headlessOptions = TestConstants.GetDefaultBrowserOptions();

            headlessOptions.UserDataDir = userDataDir.Path;

            var headlessBrowser = await Playwright.LaunchAsync(headlessOptions);

            var headlessPage = await headlessBrowser.DefaultContext.NewPageAsync();

            await headlessPage.GoToAsync(TestConstants.EmptyPage);

            string cookie = await headlessPage.EvaluateAsync <string>("() => document.cookie");

            await headlessBrowser.CloseAsync();

            Assert.Equal("foo=true", cookie);
        }
Пример #5
0
        public async Task ShouldReportGoogleComFrameWithHeadful()
        {
            await using var browser = await BrowserType.LaunchAsync(TestConstants.GetHeadfulOptions());

            var page = await browser.NewPageAsync();

            await page.GoToAsync(TestConstants.EmptyPage);

            await page.RouteAsync("**/*", (route, _) => route.FulfillAsync(body: "YO, GOOGLE.COM"));

            await page.EvaluateAsync(@"() => {
              const frame = document.createElement('iframe');
              frame.setAttribute('src', 'https://google.com/');
              document.body.appendChild(frame);
              return new Promise(x => frame.onload = x);
            }");

            await page.WaitForSelectorAsync("iframe[src=\"https://google.com/\"]");

            Assert.Equal(1, await CountOOPIFsASync(browser));
            var urls = page.Frames.Select(f => f.Url);

            Assert.Equal(new[] { TestConstants.EmptyPage, "https://google.com/" }, urls.ToArray());
        }
 /// <inheritdoc/>
 public PageSelectOptionTests(ITestOutputHelper output) : base(output)
 {
     DefaultOptions = TestConstants.GetHeadfulOptions();
 }