Skip to content

Commit cac01b3

Browse files
authored
Split headful tests (#592)
1 parent 18adf78 commit cac01b3

File tree

3 files changed

+103
-78
lines changed

3 files changed

+103
-78
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Diagnostics;
4+
using System.IO;
5+
using System.Linq;
6+
using System.Net;
7+
using System.Runtime.InteropServices;
8+
using System.Threading.Tasks;
9+
using PuppeteerSharp.Helpers;
10+
using Xunit;
11+
using Xunit.Abstractions;
12+
13+
namespace PuppeteerSharp.Tests.PuppeteerTests
14+
{
15+
[Collection("PuppeteerLoaderFixture collection")]
16+
public class HeadfulTests : PuppeteerBaseTest
17+
{
18+
public HeadfulTests(ITestOutputHelper output) : base(output)
19+
{
20+
}
21+
22+
[Fact]
23+
public async Task BackgroundPageTargetTypeShouldBeAvailable()
24+
{
25+
using (var browserWithExtension = await Puppeteer.LaunchAsync(
26+
TestConstants.BrowserWithExtensionOptions(),
27+
TestConstants.LoggerFactory))
28+
using (var page = await browserWithExtension.NewPageAsync())
29+
{
30+
var targets = browserWithExtension.Targets();
31+
var backgroundPageTarget = targets.FirstOrDefault(target => target.Type == TargetType.BackgroundPage);
32+
Assert.NotNull(backgroundPageTarget);
33+
}
34+
}
35+
36+
[Fact]
37+
public async Task ShouldHaveDefaultUrlWhenLaunchingBrowser()
38+
{
39+
using (var browser = await Puppeteer.LaunchAsync(
40+
TestConstants.BrowserWithExtensionOptions(),
41+
TestConstants.LoggerFactory))
42+
{
43+
var pages = (await browser.PagesAsync()).Select(page => page.Url).ToArray();
44+
45+
Assert.Equal(new[] { "about:blank" }, pages);
46+
}
47+
}
48+
49+
[Fact(Skip = "Skipped in Puppeteer")]
50+
public async Task HeadlessShouldBeAbleToReadCookiesWrittenByHeadful()
51+
{
52+
using (var userDataDir = new TempDirectory())
53+
{
54+
var launcher = new Launcher(TestConstants.LoggerFactory);
55+
var options = TestConstants.DefaultBrowserOptions();
56+
options.Args = options.Args.Concat(new[] { $"--user-data-dir=\"{userDataDir}\"" }).ToArray();
57+
options.Headless = false;
58+
59+
using (var browser = await launcher.LaunchAsync(options))
60+
{
61+
var page = await browser.NewPageAsync();
62+
await page.GoToAsync(TestConstants.EmptyPage);
63+
await page.EvaluateExpressionAsync(
64+
"document.cookie = 'foo=true; expires=Fri, 31 Dec 9999 23:59:59 GMT'");
65+
}
66+
67+
options.Headless = true;
68+
using (var browser2 = await Puppeteer.LaunchAsync(options, TestConstants.LoggerFactory))
69+
{
70+
var page2 = await browser2.NewPageAsync();
71+
await page2.GoToAsync(TestConstants.EmptyPage);
72+
Assert.Equal("foo=true", await page2.EvaluateExpressionAsync("document.cookie"));
73+
}
74+
}
75+
}
76+
77+
[Fact]
78+
public async Task OOPIFShouldReportGoogleComFrame()
79+
{
80+
// https://google.com is isolated by default in Chromium embedder.
81+
var headfulOptions = TestConstants.DefaultBrowserOptions();
82+
headfulOptions.Headless = false;
83+
using (var browser = await Puppeteer.LaunchAsync(headfulOptions))
84+
using (var page = await browser.NewPageAsync())
85+
{
86+
await page.GoToAsync(TestConstants.EmptyPage);
87+
await page.SetRequestInterceptionAsync(true);
88+
page.Request += async (sender, e) => await e.Request.RespondAsync(
89+
new ResponseData { Body = "{ body: 'YO, GOOGLE.COM'}" });
90+
await page.EvaluateFunctionHandleAsync(@"() => {
91+
const frame = document.createElement('iframe');
92+
frame.setAttribute('src', 'https://google.com/');
93+
document.body.appendChild(frame);
94+
return new Promise(x => frame.onload = x);
95+
}");
96+
await page.WaitForSelectorAsync("iframe[src=\"https://google.com/\"]");
97+
var urls = Array.ConvertAll(page.Frames, frame => frame.Url);
98+
Array.Sort(urls);
99+
Assert.Equal(new[] { TestConstants.EmptyPage, "https://google.com/" }, urls);
100+
}
101+
}
102+
}
103+
}

lib/PuppeteerSharp.Tests/PuppeteerTests/PuppeteerLaunchTests.cs

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -207,60 +207,6 @@ await page.EvaluateExpressionAsync(
207207
}
208208
}
209209

210-
[Fact]
211-
public async Task HeadlessShouldBeAbleToReadCookiesWrittenByHeadful()
212-
{
213-
using (var userDataDir = new TempDirectory())
214-
{
215-
var launcher = new Launcher(TestConstants.LoggerFactory);
216-
var options = TestConstants.DefaultBrowserOptions();
217-
options.Args = options.Args.Concat(new[] { $"--user-data-dir=\"{userDataDir}\"" }).ToArray();
218-
options.Headless = false;
219-
220-
using (var browser = await launcher.LaunchAsync(options))
221-
{
222-
var page = await browser.NewPageAsync();
223-
await page.GoToAsync(TestConstants.EmptyPage);
224-
await page.EvaluateExpressionAsync(
225-
"document.cookie = 'foo=true; expires=Fri, 31 Dec 9999 23:59:59 GMT'");
226-
}
227-
228-
options.Headless = true;
229-
using (var browser2 = await Puppeteer.LaunchAsync(options, TestConstants.LoggerFactory))
230-
{
231-
var page2 = await browser2.NewPageAsync();
232-
await page2.GoToAsync(TestConstants.EmptyPage);
233-
Assert.Equal("foo=true", await page2.EvaluateExpressionAsync("document.cookie"));
234-
}
235-
}
236-
}
237-
238-
[Fact]
239-
public async Task OOPIFShouldReportGoogleComFrame()
240-
{
241-
// https://google.com is isolated by default in Chromium embedder.
242-
var headfulOptions = TestConstants.DefaultBrowserOptions();
243-
headfulOptions.Headless = false;
244-
using (var browser = await Puppeteer.LaunchAsync(headfulOptions))
245-
using (var page = await browser.NewPageAsync())
246-
{
247-
await page.GoToAsync(TestConstants.EmptyPage);
248-
await page.SetRequestInterceptionAsync(true);
249-
page.Request += async (sender, e) => await e.Request.RespondAsync(
250-
new ResponseData { Body = "{ body: 'YO, GOOGLE.COM'}" });
251-
await page.EvaluateFunctionHandleAsync(@"() => {
252-
const frame = document.createElement('iframe');
253-
frame.setAttribute('src', 'https://google.com/');
254-
document.body.appendChild(frame);
255-
return new Promise(x => frame.onload = x);
256-
}");
257-
await page.WaitForSelectorAsync("iframe[src=\"https://google.com/\"]");
258-
var urls = Array.ConvertAll(page.Frames, frame => frame.Url);
259-
Array.Sort(urls);
260-
Assert.Equal(new[] { TestConstants.EmptyPage, "https://google.com/" }, urls);
261-
}
262-
}
263-
264210
[Fact]
265211
public void ShouldReturnTheDefaultChromeArguments()
266212
{
@@ -396,18 +342,6 @@ public async Task ShouldHaveDefaultUrlWhenLaunchingBrowser()
396342
}
397343
}
398344

399-
[Fact]
400-
public async Task ShouldHaveDefaultUrlWhenLaunchingBrowserWithHeadlessFalse()
401-
{
402-
var options = TestConstants.DefaultBrowserOptions();
403-
options.Headless = false;
404-
using (var browser = await Puppeteer.LaunchAsync(options, TestConstants.LoggerFactory))
405-
{
406-
var pages = (await browser.PagesAsync()).Select(page => page.Url);
407-
Assert.Equal(new[] { TestConstants.AboutBlank }, pages);
408-
}
409-
}
410-
411345
[Fact]
412346
public async Task ShouldHaveCustomUrlWhenLaunchingBrowser()
413347
{

lib/PuppeteerSharp.Tests/TargetTests/TargetTests.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,6 @@ public async Task BrowserPagesShouldReturnAllOfThePages()
3434
Assert.NotSame(allPages[0], allPages[1]);
3535
}
3636

37-
[Fact]
38-
public async Task ShouldAllowBackgroundPageTargetTypeToPassThrough()
39-
{
40-
using (var browserWithExtension = await Puppeteer.LaunchAsync(TestConstants.BrowserWithExtensionOptions()))
41-
using (var page = await browserWithExtension.NewPageAsync())
42-
{
43-
var targets = browserWithExtension.Targets();
44-
var backgroundPageTarget = targets.FirstOrDefault(target => target.Type == TargetType.BackgroundPage);
45-
Assert.NotNull(backgroundPageTarget);
46-
}
47-
}
48-
4937
[Fact]
5038
public void ShouldContainBrowserTarget()
5139
{

0 commit comments

Comments
 (0)