Skip to content

Commit 5d3f59b

Browse files
Meir017kblok
authored andcommitted
Using new browser context for every page test (#628)
1 parent d8a35cb commit 5d3f59b

File tree

8 files changed

+95
-46
lines changed

8 files changed

+95
-46
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using Xunit;
7+
using Xunit.Abstractions;
8+
9+
namespace PuppeteerSharp.Tests.BrowserTests.Events
10+
{
11+
[Collection("PuppeteerLoaderFixture collection")]
12+
public class TargetTests : PuppeteerBrowserBaseTest
13+
{
14+
public TargetTests(ITestOutputHelper output) : base(output)
15+
{
16+
}
17+
18+
[Fact]
19+
public async Task ShouldWork()
20+
{
21+
var events = new List<string>();
22+
Browser.TargetCreated += (sender, e) => events.Add("CREATED");
23+
Browser.TargetChanged += (sender, e) => events.Add("CHANGED");
24+
Browser.TargetDestroyed += (sender, e) => events.Add("DESTROYED");
25+
var page = await Browser.NewPageAsync();
26+
await page.GoToAsync(TestConstants.EmptyPage);
27+
await page.CloseAsync();
28+
Assert.Equal(new[] { "CREATED", "CHANGED", "DESTROYED" }, events);
29+
}
30+
}
31+
}

lib/PuppeteerSharp.Tests/Issues/Issue0100.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace PuppeteerSharp.Tests.Issues
66
{
77
[Collection("PuppeteerLoaderFixture collection")]
8-
public class Issue0100 : PuppeteerBrowserBaseTest
8+
public class Issue0100 : PuppeteerBrowserContextBaseTest
99
{
1010
public Issue0100(ITestOutputHelper output) : base(output)
1111
{
@@ -14,7 +14,7 @@ public Issue0100(ITestOutputHelper output) : base(output)
1414
[Fact]
1515
public async Task PdfDarkskyShouldWork()
1616
{
17-
using (var page = await Browser.NewPageAsync())
17+
using (var page = await Context.NewPageAsync())
1818
{
1919
await page.GoToAsync("https://darksky.net/forecast/51.2211,4.3997/si12/en");
2020
var pdf = await page.PdfDataAsync();

lib/PuppeteerSharp.Tests/PageTests/Events/CloseTests.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
using System;
2-
using System.Linq;
3-
using System.Collections.Generic;
4-
using System.Threading.Tasks;
1+
using System.Threading.Tasks;
52
using Xunit;
63
using Xunit.Abstractions;
74

@@ -18,7 +15,7 @@ public CloseTests(ITestOutputHelper output) : base(output)
1815
public async Task ShouldWorkWithWindowClose()
1916
{
2017
var newPageTaskSource = new TaskCompletionSource<Page>();
21-
Browser.TargetCreated += async (sender, e) => newPageTaskSource.TrySetResult(await e.Target.PageAsync());
18+
Context.TargetCreated += async (sender, e) => newPageTaskSource.TrySetResult(await e.Target.PageAsync());
2219

2320
await Page.EvaluateExpressionAsync("window['newPage'] = window.open('about:blank');");
2421
var newPage = await newPageTaskSource.Task;
@@ -32,7 +29,7 @@ public async Task ShouldWorkWithWindowClose()
3229
[Fact]
3330
public async Task ShouldWorkWithPageClose()
3431
{
35-
var newPage = await Browser.NewPageAsync();
32+
var newPage = await Context.NewPageAsync();
3633
var closeTaskSource = new TaskCompletionSource<bool>();
3734
newPage.Close += (sender, e) => closeTaskSource.SetResult(true);
3835
await newPage.CloseAsync();

lib/PuppeteerSharp.Tests/PageTests/ScreenshotTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
namespace PuppeteerSharp.Tests.PageTests
1010
{
1111
[Collection("PuppeteerLoaderFixture collection")]
12-
public class ScreenshotTests : PuppeteerBrowserBaseTest
12+
public class ScreenshotTests : PuppeteerBrowserContextBaseTest
1313
{
1414
public ScreenshotTests(ITestOutputHelper output) : base(output)
1515
{
@@ -21,7 +21,7 @@ public async Task ShouldWorkWithFile()
2121
var outputFile = Path.Combine(BaseDirectory, "output.png");
2222
var fileInfo = new FileInfo(outputFile);
2323

24-
using (var page = await Browser.NewPageAsync())
24+
using (var page = await Context.NewPageAsync())
2525
{
2626
await page.SetViewportAsync(new ViewPortOptions
2727
{
@@ -52,7 +52,7 @@ await page.SetViewportAsync(new ViewPortOptions
5252
[Fact]
5353
public async Task ShouldWork()
5454
{
55-
using (var page = await Browser.NewPageAsync())
55+
using (var page = await Context.NewPageAsync())
5656
{
5757
await page.SetViewportAsync(new ViewPortOptions
5858
{
@@ -68,7 +68,7 @@ await page.SetViewportAsync(new ViewPortOptions
6868
[Fact]
6969
public async Task ShouldClipRect()
7070
{
71-
using (var page = await Browser.NewPageAsync())
71+
using (var page = await Context.NewPageAsync())
7272
{
7373
await page.SetViewportAsync(new ViewPortOptions
7474
{
@@ -93,7 +93,7 @@ await page.SetViewportAsync(new ViewPortOptions
9393
[Fact]
9494
public async Task ShouldWorkForOffscreenClip()
9595
{
96-
using (var page = await Browser.NewPageAsync())
96+
using (var page = await Context.NewPageAsync())
9797
{
9898
await page.SetViewportAsync(new ViewPortOptions
9999
{
@@ -118,7 +118,7 @@ await page.SetViewportAsync(new ViewPortOptions
118118
[Fact]
119119
public async Task ShouldRunInParallel()
120120
{
121-
using (var page = await Browser.NewPageAsync())
121+
using (var page = await Context.NewPageAsync())
122122
{
123123
await page.SetViewportAsync(new ViewPortOptions
124124
{
@@ -150,7 +150,7 @@ await page.SetViewportAsync(new ViewPortOptions
150150
[Fact]
151151
public async Task ShouldTakeFullPageScreenshots()
152152
{
153-
using (var page = await Browser.NewPageAsync())
153+
using (var page = await Context.NewPageAsync())
154154
{
155155
await page.SetViewportAsync(new ViewPortOptions
156156
{
@@ -175,7 +175,7 @@ public async Task ShouldRunInParallelInMultiplePages()
175175
{
176176
Func<Task<Page>> func = async () =>
177177
{
178-
var page = await Browser.NewPageAsync();
178+
var page = await Context.NewPageAsync();
179179
await page.GoToAsync(TestConstants.ServerUrl + "/grid.html");
180180
return page;
181181
};
@@ -219,7 +219,7 @@ public async Task ShouldRunInParallelInMultiplePages()
219219
[Fact]
220220
public async Task ShouldAllowTransparency()
221221
{
222-
using (var page = await Browser.NewPageAsync())
222+
using (var page = await Context.NewPageAsync())
223223
{
224224
await page.SetViewportAsync(new ViewPortOptions
225225
{
@@ -239,7 +239,7 @@ await page.SetViewportAsync(new ViewPortOptions
239239
[Fact]
240240
public async Task ShouldWorkWithOddClipSizeOnRetinaDisplays()
241241
{
242-
using (var page = await Browser.NewPageAsync())
242+
using (var page = await Context.NewPageAsync())
243243
{
244244
var screenshot = await page.ScreenshotDataAsync(new ScreenshotOptions
245245
{
@@ -259,7 +259,7 @@ public async Task ShouldWorkWithOddClipSizeOnRetinaDisplays()
259259
[Fact]
260260
public async Task ShouldReturnBase64()
261261
{
262-
using (var page = await Browser.NewPageAsync())
262+
using (var page = await Context.NewPageAsync())
263263
{
264264
await page.SetViewportAsync(new ViewPortOptions
265265
{
@@ -286,7 +286,7 @@ public void ShouldInferScreenshotTypeFromName()
286286
[Fact]
287287
public async Task ShouldWorkWithQuality()
288288
{
289-
using (var page = await Browser.NewPageAsync())
289+
using (var page = await Context.NewPageAsync())
290290
{
291291
await page.SetViewportAsync(new ViewPortOptions
292292
{

lib/PuppeteerSharp.Tests/PuppeteerBrowserBaseTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public PuppeteerBrowserBaseTest(ITestOutputHelper output) : base(output)
2020
}
2121
}
2222

23-
public virtual async Task InitializeAsync() =>
24-
Browser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions(), TestConstants.LoggerFactory);
23+
public virtual async Task InitializeAsync()
24+
=> Browser = await Puppeteer.LaunchAsync(TestConstants.DefaultBrowserOptions(), TestConstants.LoggerFactory);
2525

2626
public virtual async Task DisposeAsync() => await Browser.CloseAsync();
2727
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System.IO;
2+
using System.Threading.Tasks;
3+
using Xunit;
4+
using Xunit.Abstractions;
5+
6+
namespace PuppeteerSharp.Tests
7+
{
8+
public class PuppeteerBrowserContextBaseTest : PuppeteerBrowserBaseTest
9+
{
10+
public PuppeteerBrowserContextBaseTest(ITestOutputHelper output) : base(output)
11+
{
12+
}
13+
14+
protected BrowserContext Context { get; set; }
15+
public override async Task InitializeAsync()
16+
{
17+
await base.InitializeAsync();
18+
Context = await Browser.CreateIncognitoBrowserContextAsync();
19+
}
20+
}
21+
}

lib/PuppeteerSharp.Tests/PuppeteerPageBaseTest.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33

44
namespace PuppeteerSharp.Tests
55
{
6-
public class PuppeteerPageBaseTest : PuppeteerBrowserBaseTest
6+
public class PuppeteerPageBaseTest : PuppeteerBrowserContextBaseTest
77
{
88
public PuppeteerPageBaseTest(ITestOutputHelper output) : base(output)
99
{
1010
}
11-
12-
protected Page Page { get; set; }
11+
12+
protected Page Page { get; private set; }
1313

1414
public override async Task InitializeAsync()
1515
{
1616
await base.InitializeAsync();
17-
Page = await Browser.NewPageAsync();
17+
Page = await Context.NewPageAsync();
1818
}
1919

2020
public override async Task DisposeAsync()
@@ -25,7 +25,7 @@ public override async Task DisposeAsync()
2525

2626
protected Task WaitForError()
2727
{
28-
TaskCompletionSource<bool> wrapper = new TaskCompletionSource<bool>();
28+
var wrapper = new TaskCompletionSource<bool>();
2929

3030
void errorEvent(object sender, ErrorEventArgs e)
3131
{

lib/PuppeteerSharp.Tests/TargetTests/TargetTests.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -59,31 +59,31 @@ public async Task ShouldReportWhenANewPageIsCreatedAndClosed()
5959
async void TargetCreatedEventHandler(object sender, TargetChangedArgs e)
6060
{
6161
otherPageTaskCompletion.SetResult(await e.Target.PageAsync());
62-
Browser.TargetCreated -= TargetCreatedEventHandler;
62+
Context.TargetCreated -= TargetCreatedEventHandler;
6363
}
64-
Browser.TargetCreated += TargetCreatedEventHandler;
64+
Context.TargetCreated += TargetCreatedEventHandler;
6565
await Page.EvaluateFunctionHandleAsync("url => window.open(url)", TestConstants.CrossProcessUrl);
6666
var otherPage = await otherPageTaskCompletion.Task;
6767
Assert.Contains(TestConstants.CrossProcessUrl, otherPage.Url);
6868

6969
Assert.Equal("Hello world", await otherPage.EvaluateExpressionAsync<string>("['Hello', 'world'].join(' ')"));
7070
Assert.NotNull(await otherPage.QuerySelectorAsync("body"));
7171

72-
var allPages = await Browser.PagesAsync();
72+
var allPages = await Context.PagesAsync();
7373
Assert.Contains(Page, allPages);
7474
Assert.Contains(otherPage, allPages);
7575

7676
var closePageTaskCompletion = new TaskCompletionSource<Page>();
7777
async void TargetDestroyedEventHandler(object sender, TargetChangedArgs e)
7878
{
7979
closePageTaskCompletion.SetResult(await e.Target.PageAsync());
80-
Browser.TargetDestroyed -= TargetDestroyedEventHandler;
80+
Context.TargetDestroyed -= TargetDestroyedEventHandler;
8181
}
82-
Browser.TargetDestroyed += TargetDestroyedEventHandler;
82+
Context.TargetDestroyed += TargetDestroyedEventHandler;
8383
await otherPage.CloseAsync();
8484
Assert.Equal(otherPage, await closePageTaskCompletion.Task);
8585

86-
allPages = await Task.WhenAll(Browser.Targets().Select(target => target.PageAsync()));
86+
allPages = await Task.WhenAll(Context.Targets().Select(target => target.PageAsync()));
8787
Assert.Contains(Page, allPages);
8888
Assert.DoesNotContain(otherPage, allPages);
8989
}
@@ -96,9 +96,9 @@ public async Task ShouldReportWhenAServiceWorkerIsCreatedAndDestroyed()
9696
void TargetCreatedEventHandler(object sender, TargetChangedArgs e)
9797
{
9898
createdTargetTaskCompletion.SetResult(e.Target);
99-
Browser.TargetCreated -= TargetCreatedEventHandler;
99+
Context.TargetCreated -= TargetCreatedEventHandler;
100100
}
101-
Browser.TargetCreated += TargetCreatedEventHandler;
101+
Context.TargetCreated += TargetCreatedEventHandler;
102102
await Page.GoToAsync(TestConstants.ServerUrl + "/serviceworkers/empty/sw.html");
103103

104104
var createdTarget = await createdTargetTaskCompletion.Task;
@@ -109,9 +109,9 @@ void TargetCreatedEventHandler(object sender, TargetChangedArgs e)
109109
void TargetDestroyedEventHandler(object sender, TargetChangedArgs e)
110110
{
111111
targetDestroyedTaskCompletion.SetResult(e.Target);
112-
Browser.TargetDestroyed -= TargetDestroyedEventHandler;
112+
Context.TargetDestroyed -= TargetDestroyedEventHandler;
113113
}
114-
Browser.TargetDestroyed += TargetDestroyedEventHandler;
114+
Context.TargetDestroyed += TargetDestroyedEventHandler;
115115
await Page.EvaluateExpressionAsync("window.registrationPromise.then(registration => registration.unregister())");
116116
Assert.Equal(createdTarget, await targetDestroyedTaskCompletion.Task);
117117
}
@@ -125,16 +125,16 @@ public async Task ShouldReportWhenATargetUrlChanges()
125125
void ChangedTargetEventHandler(object sender, TargetChangedArgs e)
126126
{
127127
changedTargetTaskCompletion.SetResult(e.Target);
128-
Browser.TargetChanged -= ChangedTargetEventHandler;
128+
Context.TargetChanged -= ChangedTargetEventHandler;
129129
}
130-
Browser.TargetChanged += ChangedTargetEventHandler;
130+
Context.TargetChanged += ChangedTargetEventHandler;
131131

132132
await Page.GoToAsync(TestConstants.CrossProcessUrl + "/");
133133
var changedTarget = await changedTargetTaskCompletion.Task;
134134
Assert.Equal(TestConstants.CrossProcessUrl + "/", changedTarget.Url);
135135

136136
changedTargetTaskCompletion = new TaskCompletionSource<Target>();
137-
Browser.TargetChanged += ChangedTargetEventHandler;
137+
Context.TargetChanged += ChangedTargetEventHandler;
138138
await Page.GoToAsync(TestConstants.EmptyPage);
139139
changedTarget = await changedTargetTaskCompletion.Task;
140140
Assert.Equal(TestConstants.EmptyPage, changedTarget.Url);
@@ -145,28 +145,28 @@ public async Task ShouldNotReportUninitializedPages()
145145
{
146146
var targetChanged = false;
147147
void listener(object sender, TargetChangedArgs e) => targetChanged = true;
148-
Browser.TargetChanged += listener;
148+
Context.TargetChanged += listener;
149149
var targetCompletionTask = new TaskCompletionSource<Target>();
150150
void TargetCreatedEventHandler(object sender, TargetChangedArgs e)
151151
{
152152
targetCompletionTask.SetResult(e.Target);
153-
Browser.TargetCreated -= TargetCreatedEventHandler;
153+
Context.TargetCreated -= TargetCreatedEventHandler;
154154
}
155-
Browser.TargetCreated += TargetCreatedEventHandler;
156-
var newPageTask = Browser.NewPageAsync();
155+
Context.TargetCreated += TargetCreatedEventHandler;
156+
var newPageTask = Context.NewPageAsync();
157157
var target = await targetCompletionTask.Task;
158158
Assert.Equal(TestConstants.AboutBlank, target.Url);
159159

160160
var newPage = await newPageTask;
161161
targetCompletionTask = new TaskCompletionSource<Target>();
162-
Browser.TargetCreated += TargetCreatedEventHandler;
162+
Context.TargetCreated += TargetCreatedEventHandler;
163163
var evaluateTask = newPage.EvaluateExpressionHandleAsync("window.open('about:blank')");
164164
var target2 = await targetCompletionTask.Task;
165165
Assert.Equal(TestConstants.AboutBlank, target2.Url);
166166
await evaluateTask;
167167
await newPage.CloseAsync();
168168
Assert.False(targetChanged, "target should not be reported as changed");
169-
Browser.TargetChanged -= listener;
169+
Context.TargetChanged -= listener;
170170
}
171171

172172
[Fact]

0 commit comments

Comments
 (0)