Skip to content

Commit 7d2ffef

Browse files
authored
Fix some tests in Firefox (#2237)
* Fix some tests in Firefox * Fix one more test * a few more * More fixes * Fix another test * Another fix * Fix closed test
1 parent 7cde7c4 commit 7d2ffef

File tree

10 files changed

+49
-27
lines changed

10 files changed

+49
-27
lines changed

lib/PuppeteerSharp.Tests/EvaluationTests/PageEvaluateTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ public async Task ShouldFailForCircularObject()
238238
public async Task ShouldBeAbleToThrowATrickyError()
239239
{
240240
var windowHandle = await Page.EvaluateFunctionHandleAsync("() => window");
241-
PuppeteerException exception = await Assert.ThrowsAsync<MessageException>(() => windowHandle.JsonValueAsync());
241+
PuppeteerException exception = await Assert.ThrowsAsync<PuppeteerException>(() => windowHandle.JsonValueAsync());
242242
var errorText = exception.Message;
243243

244244
exception = await Assert.ThrowsAsync<EvaluationFailedException>(() => Page.EvaluateFunctionAsync(@"errorText =>

lib/PuppeteerSharp.Tests/JSHandleTests/JsonValueTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ public async Task ShouldNotWorkWithDates()
5555
public async Task ShouldThrowForCircularObjects()
5656
{
5757
var windowHandle = await Page.EvaluateExpressionHandleAsync("window");
58-
var exception = await Assert.ThrowsAsync<MessageException>(()
58+
var exception = await Assert.ThrowsAsync<PuppeteerException>(()
5959
=> windowHandle.JsonValueAsync());
6060

61-
Assert.Contains(TestConstants.IsChrome ? "Object reference chain is too long" : "Object is not serializable", exception.Message);
61+
Assert.Contains("Could not serialize referenced object", exception.Message);
6262
}
6363
}
6464
}

lib/PuppeteerSharp.Tests/LauncherTests/BrowserDisconnectTests.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,13 @@ public async Task ShouldRejectNavigationWhenBrowserCloses()
3333
await Server.WaitForRequest("/one-style.css");
3434
remote.Disconnect();
3535
var exception = await Assert.ThrowsAsync<NavigationException>(() => navigationTask);
36-
Assert.Contains("Navigation failed because browser has disconnected!", exception.Message);
36+
Assert.Contains(
37+
new[]
38+
{
39+
"Navigation failed because browser has disconnected! (Connection disposed)",
40+
"Protocol error(Page.navigate): Target closed. (Connection disposed)",
41+
},
42+
value => value == exception.Message);
3743
}
3844
}
3945

lib/PuppeteerSharp.Tests/LauncherTests/PuppeteerLaunchTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ public PuppeteerLaunchTests(ITestOutputHelper output) : base(output) { }
2323
public async Task ShouldWorkInRealLife()
2424
{
2525
var options = TestConstants.DefaultBrowserOptions();
26+
options.IgnoreHTTPSErrors = true;
2627

2728
await using (var browser = await Puppeteer.LaunchAsync(options, TestConstants.LoggerFactory))
2829
await using (var page = await browser.NewPageAsync())
2930
{
30-
var response = await page.GoToAsync("https://www.google.com");
31+
var response = await page.GoToAsync("https://www.github.com");
3132
Assert.Equal(HttpStatusCode.OK, response.Status);
3233
}
3334
}

lib/PuppeteerSharp.Tests/PageTests/CloseTests.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,10 @@ public async Task ShouldNotRunBeforeunloadByDefault()
100100
[PuppeteerFact]
101101
public async Task ShouldSetThePageCloseState()
102102
{
103-
Assert.False(Page.IsClosed);
104-
await Page.CloseAsync();
105-
Assert.True(Page.IsClosed);
103+
var page = await Context.NewPageAsync();
104+
Assert.False(page.IsClosed);
105+
await page.CloseAsync();
106+
Assert.True(page.IsClosed);
106107
}
107108

108109
[PuppeteerTest("page.spec.ts", "Page.close", "should terminate network waiters")]

lib/PuppeteerSharp.Tests/WaitTaskTests/FrameWaitForSelectorTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,38 +169,38 @@ public async Task ShouldWaitForVisibleBoundingBox()
169169
await Page.SetContentAsync("<div style='width: 0;'>text</div>");
170170
await Task.Delay(100);
171171
Assert.False(divFound);
172-
await Page.EvaluateExpressionAsync(@"() => {
172+
await Page.EvaluateFunctionAsync(@"() => {
173173
const div = document.querySelector('div');
174174
div.style.setProperty('height', '0');
175175
div.style.removeProperty('width');
176176
}");
177177
await Task.Delay(100);
178178
Assert.False(divFound);
179-
await Page.EvaluateExpressionAsync(@"() => {
179+
await Page.EvaluateFunctionAsync(@"() => {
180180
const div = document.querySelector('div');
181181
div.style.setProperty('position', 'absolute');
182182
div.style.setProperty('right', '100vw');
183183
div.style.removeProperty('height');
184184
}");
185185
await Task.Delay(100);
186186
Assert.False(divFound);
187-
await Page.EvaluateExpressionAsync(@"() => {
187+
await Page.EvaluateFunctionAsync(@"() => {
188188
const div = document.querySelector('div');
189189
div.style.setProperty('position', 'absolute');
190190
div.style.setProperty('left', '100vw');
191191
div.style.removeProperty('right');
192192
}");
193193
await Task.Delay(100);
194194
Assert.False(divFound);
195-
await Page.EvaluateExpressionAsync(@"() => {
195+
await Page.EvaluateFunctionAsync(@"() => {
196196
const div = document.querySelector('div');
197197
div.style.setProperty('position', 'absolute');
198198
div.style.setProperty('top', '100vw');
199199
div.style.removeProperty('left');
200200
}");
201201
await Task.Delay(100);
202202
Assert.False(divFound);
203-
await Page.EvaluateExpressionAsync(@"() => {
203+
await Page.EvaluateFunctionAsync(@"() => {
204204
const div = document.querySelector('div');
205205
div.style.setProperty('position', 'absolute');
206206
div.style.setProperty('bottom', '100vw');

lib/PuppeteerSharp/FirefoxTargetManager.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ public async Task InitializeAsync()
6262
await _connection.SendAsync("Target.setDiscoverTargets", new TargetSetDiscoverTargetsRequest
6363
{
6464
Discover = true,
65+
Filter = new[]
66+
{
67+
new TargetSetDiscoverTargetsRequest.DiscoverFilter(),
68+
},
6569
}).ConfigureAwait(false);
6670

6771
_targetsIdsForInit = new List<string>(_discoveredTargetsByTargetId.Keys);
@@ -125,7 +129,13 @@ private void OnTargetCreated(TargetCreatedResponse e)
125129

126130
var target = _targetFactoryFunc(e.TargetInfo, null);
127131
_availableTargetsByTargetId[e.TargetInfo.TargetId] = target;
128-
TargetAvailable?.Invoke(this, new TargetChangedArgs { TargetInfo = e.TargetInfo });
132+
TargetAvailable?.Invoke(
133+
this,
134+
new TargetChangedArgs
135+
{
136+
Target = target,
137+
TargetInfo = e.TargetInfo,
138+
});
129139
FinishInitializationIfReady(target.TargetId);
130140
}
131141

lib/PuppeteerSharp/JSHandle.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -91,19 +91,14 @@ public async Task<T> JsonValueAsync<T>()
9191
{
9292
var objectId = RemoteObject.ObjectId;
9393

94-
if (objectId != null)
94+
if (objectId == null)
9595
{
96-
var response = await Client.SendAsync<RuntimeCallFunctionOnResponse>("Runtime.callFunctionOn", new RuntimeCallFunctionOnRequest
97-
{
98-
FunctionDeclaration = "function() { return this; }",
99-
ObjectId = objectId,
100-
ReturnByValue = true,
101-
AwaitPromise = true,
102-
}).ConfigureAwait(false);
103-
return (T)RemoteObjectHelper.ValueFromRemoteObject<T>(response.Result);
96+
return (T)RemoteObjectHelper.ValueFromRemoteObject<T>(RemoteObject);
10497
}
10598

106-
return (T)RemoteObjectHelper.ValueFromRemoteObject<T>(RemoteObject);
99+
var value = await EvaluateFunctionAsync<T>("object => object").ConfigureAwait(false);
100+
101+
return value == null ? throw new PuppeteerException("Could not serialize referenced object") : value;
107102
}
108103

109104
/// <inheritdoc/>

lib/PuppeteerSharp/LifecycleWatcher.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ internal sealed class LifecycleWatcher : IDisposable
3535
private IRequest _navigationRequest;
3636
private bool _hasSameDocumentNavigation;
3737
private bool _swapped;
38-
private bool _newDocumentNavigation;
3938

4039
public LifecycleWatcher(
4140
FrameManager frameManager,
@@ -99,7 +98,6 @@ private void Navigated(object sender, FrameEventArgs e)
9998
return;
10099
}
101100

102-
_newDocumentNavigation = true;
103101
CheckLifecycleComplete();
104102
}
105103

@@ -143,7 +141,7 @@ private void CheckLifecycleComplete()
143141
_sameDocumentNavigationTaskWrapper.TrySetResult(true);
144142
}
145143

146-
if (_swapped || _newDocumentNavigation)
144+
if (_swapped || _frame.LoaderId != _initialLoaderId)
147145
{
148146
_newDocumentNavigationTaskWrapper.TrySetResult(true);
149147
}

lib/PuppeteerSharp/ResourceType.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ public enum ResourceType
1616
/// </summary>
1717
Unknown = -1,
1818

19+
/// <summary>
20+
/// Beacon.
21+
/// </summary>
22+
Beacon,
23+
1924
/// <summary>
2025
/// Document.
2126
/// </summary>
@@ -32,6 +37,12 @@ public enum ResourceType
3237
/// </summary>
3338
Image,
3439

40+
/// <summary>
41+
/// Imageset.
42+
/// </summary>
43+
[EnumMember(Value = "imageset")]
44+
ImageSet,
45+
3546
/// <summary>
3647
/// Media.
3748
/// </summary>

0 commit comments

Comments
 (0)