Skip to content

Commit bc0b290

Browse files
authored
Bidi jsonvalue support (#2980)
1 parent c4a9fa4 commit bc0b290

File tree

19 files changed

+115
-87
lines changed

19 files changed

+115
-87
lines changed

lib/PuppeteerSharp.Nunit/PuppeteerTestAttribute.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ public class PuppeteerTestAttribute : NUnitAttribute, IApplyToTest
2222
private static TestExpectation[] _localExpectations;
2323
private static TestExpectation[] _upstreamExpectations;
2424

25-
public static readonly bool IsChrome = false;
26-
public static readonly bool IsCdp = false;
25+
public static readonly bool IsChrome = Environment.GetEnvironmentVariable("BROWSER") != "FIREFOX";
26+
public static readonly bool IsCdp = string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROTOCOL")) || Environment.GetEnvironmentVariable("PROTOCOL")!.Equals("cdp");
2727

2828
public static readonly HeadlessMode Headless =
2929
string.IsNullOrEmpty(Environment.GetEnvironmentVariable("HEADLESS_MODE")) ?

lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -795,21 +795,6 @@
795795
"FAIL"
796796
]
797797
},
798-
{
799-
"comment": "This is part of organizing the webdriver bidi implementation, We will remove it one by one",
800-
"testIdPattern": "[jshandle.spec] *.jsonValue*",
801-
"platforms": [
802-
"darwin",
803-
"linux",
804-
"win32"
805-
],
806-
"parameters": [
807-
"webDriverBiDi"
808-
],
809-
"expectations": [
810-
"FAIL"
811-
]
812-
},
813798
{
814799
"comment": "This is part of organizing the webdriver bidi implementation, We will remove it one by one",
815800
"testIdPattern": "[jshandle.spec] *.evaluateHandle*",

lib/PuppeteerSharp.Tests/ClickTests/ClickTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public async Task ShouldClickWrappedLinks()
183183
public async Task ShouldClickOnCheckboxInputAndToggle()
184184
{
185185
await Page.GoToAsync(TestConstants.ServerUrl + "/input/checkbox.html");
186-
Assert.That(await Page.EvaluateExpressionAsync("result.check"), Is.Null);
186+
Assert.That(await Page.EvaluateExpressionAsync<bool?>("result.check"), Is.Null);
187187
await Page.ClickAsync("input#agree");
188188
Assert.That(await Page.EvaluateExpressionAsync<bool>("result.check"), Is.True);
189189
Assert.That(await Page.EvaluateExpressionAsync<string[]>("result.events"),
@@ -205,7 +205,7 @@ public async Task ShouldClickOnCheckboxInputAndToggle()
205205
public async Task ShouldClickOnCheckboxLabelAndToggle()
206206
{
207207
await Page.GoToAsync(TestConstants.ServerUrl + "/input/checkbox.html");
208-
Assert.That(await Page.EvaluateExpressionAsync("result.check"), Is.Null);
208+
Assert.That(await Page.EvaluateExpressionAsync<bool?>("result.check"), Is.Null);
209209
await Page.ClickAsync("label[for=\"agree\"]");
210210
Assert.That(await Page.EvaluateExpressionAsync<bool>("result.check"), Is.True);
211211
Assert.That(await Page.EvaluateExpressionAsync<string[]>("result.events"),

lib/PuppeteerSharp.Tests/ElementHandleTests/ContentFrameTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public async Task ShouldWorkHeadful()
3232
await page.GoToAsync($"{TestConstants.ServerUrl}/frame-example.html");
3333
var elementHandle = await page.QuerySelectorAsync("iframe");
3434
var frame = await elementHandle.ContentFrameAsync();
35-
Assert.That(frame, Is.EqualTo(await Page.FirstChildFrameAsync()));
35+
Assert.That(frame, Is.EqualTo(await page.FirstChildFrameAsync()));
3636
}
3737
}
3838
}

lib/PuppeteerSharp.Tests/EvaluationTests/PageEvaluateOnNewDocumentTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ await Page.AddScriptTagAsync(new AddTagOptions
3535
{
3636
Content = "window.e = 10;"
3737
}).ContinueWith(_ => Task.CompletedTask);
38-
Assert.That(await Page.EvaluateExpressionAsync("window.e"), Is.Null);
38+
Assert.That(await Page.EvaluateExpressionAsync<int?>("window.e"), Is.Null);
3939
}
4040

4141
[Test, Ignore("Inconsistent results on Firefox")]

lib/PuppeteerSharp.Tests/EvaluationTests/PageEvaluateTests.cs

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,12 @@ public async Task ShouldAcceptNullAsOneOfMultipleParameters()
196196

197197
[Test, PuppeteerTest("evaluation.spec", "Evaluation specs Page.evaluate", "should return undefined for non-serializable objects")]
198198
public async Task ShouldReturnNullForNonSerializableObjects()
199-
=> Assert.That(await Page.EvaluateFunctionAsync("() => window"), Is.Null);
199+
=> Assert.That(await Page.EvaluateFunctionAsync<object>("() => window"), Is.Null);
200200

201201
[Test, PuppeteerTest("evaluation.spec", "Evaluation specs Page.evaluate", "should fail for circular object")]
202202
public async Task ShouldFailForCircularObject()
203203
{
204-
var result = await Page.EvaluateFunctionAsync(@"() => {
204+
var result = await Page.EvaluateFunctionAsync<object>(@"() => {
205205
const a = {};
206206
const b = {a};
207207
a.b = b;
@@ -326,31 +326,6 @@ public async Task ShouldAcceptObjectHandleAsAnArgument()
326326
Assert.That(text, Is.EqualTo("42"));
327327
}
328328

329-
#pragma warning disable NUnit2021 // Incompatible types for EqualTo constraint
330-
[Test]
331-
[Ignore("I'm not sure how this ever worked?")]
332-
public async Task ShouldWorkWithoutGenerics()
333-
{
334-
Assert.That(await Page.EvaluateExpressionAsync("var obj = {}; obj;"), Is.Not.Null);
335-
Assert.That(await Page.EvaluateExpressionAsync("[]"), Is.Not.Null);
336-
Assert.That(await Page.EvaluateExpressionAsync("''"), Is.Not.Null);
337-
338-
var objectPopulated = await Page.EvaluateExpressionAsync("var obj = {a:1}; obj;");
339-
340-
Assert.That(objectPopulated, Is.Not.Null);
341-
Assert.That(objectPopulated.Value.GetProperty("a").GetInt32(), Is.EqualTo(1));
342-
343-
var arrayPopulated = await Page.EvaluateExpressionAsync("[1]");
344-
Assert.That(arrayPopulated.Value.EnumerateArray().ElementAt(0), Is.EqualTo(1));
345-
346-
Assert.That(await Page.EvaluateExpressionAsync("'1'"), Is.EqualTo("1"));
347-
Assert.That(await Page.EvaluateExpressionAsync("1"), Is.EqualTo(1));
348-
Assert.That(await Page.EvaluateExpressionAsync("11111111"), Is.EqualTo(11111111));
349-
Assert.That(await Page.EvaluateExpressionAsync("11111111111111"), Is.EqualTo(11111111111111));
350-
Assert.That(await Page.EvaluateExpressionAsync("1.1"), Is.EqualTo(1.1));
351-
}
352-
#pragma warning restore NUnit2021 // Incompatible types for EqualTo constraint
353-
354329
public class ComplexObjectTestClass
355330
{
356331
public string Foo { get; set; }

lib/PuppeteerSharp.Tests/EvaluationTests/RemoveScriptToEvaluateOnNewDocumentTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public async Task ShouldRemoveNewDocumentScript()
1717
await Page.RemoveScriptToEvaluateOnNewDocumentAsync(id.Identifier);
1818

1919
await Page.ReloadAsync();
20-
Assert.That(await Page.EvaluateFunctionAsync("() => globalThis.result ?? null"), Is.Null);
20+
Assert.That(await Page.EvaluateFunctionAsync<bool?>("() => globalThis.result ?? null"), Is.Null);
2121
}
2222
}
2323
}

lib/PuppeteerSharp.Tests/JSHandleTests/JsonValueTests.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@ namespace PuppeteerSharp.Tests.JSHandleTests
88
{
99
public class JsonValueTests : PuppeteerPageBaseTest
1010
{
11+
private struct MyObject
12+
{
13+
public string Foo { get; set; }
14+
}
15+
1116
[Test, PuppeteerTest("jshandle.spec", "JSHandle JSHandle.jsonValue", "should work")]
1217
public async Task ShouldWork()
1318
{
1419
var aHandle = await Page.EvaluateExpressionHandleAsync("({ foo: 'bar'})");
1520

16-
var json = await aHandle.JsonValueAsync<JsonElement>();
17-
Assert.That(json.GetProperty("foo").GetString(), Is.EqualTo("bar"));
21+
var json = await aHandle.JsonValueAsync<MyObject>();
22+
Assert.That(json.Foo, Is.EqualTo("bar"));
1823
}
1924

2025
[Test, Retry(2),

lib/PuppeteerSharp.Tests/NavigationTests/PageReloadTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public async Task ShouldWork()
1212
await Page.GoToAsync(TestConstants.EmptyPage);
1313
await Page.EvaluateFunctionAsync("() => (globalThis._foo = 10)");
1414
await Page.ReloadAsync();
15-
Assert.That(await Page.EvaluateFunctionAsync("() => globalThis._foo"), Is.Null);
15+
Assert.That(await Page.EvaluateFunctionAsync<int?>("() => globalThis._foo"), Is.Null);
1616
}
1717
}
1818
}

lib/PuppeteerSharp.Tests/PageTests/SetBypassCSPTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ await Page.AddScriptTagAsync(new AddTagOptions
1919
{
2020
Content = "window.__injected = 42;"
2121
}).ContinueWith(_ => Task.CompletedTask);
22-
Assert.That(await Page.EvaluateExpressionAsync("window.__injected"), Is.Null);
22+
Assert.That(await Page.EvaluateExpressionAsync<int?>("window.__injected"), Is.Null);
2323

2424
// By-pass CSP and try one more time.
2525
await Page.SetBypassCSPAsync(true);
@@ -41,7 +41,7 @@ await Page.AddScriptTagAsync(new AddTagOptions
4141
{
4242
Content = "window.__injected = 42;"
4343
}).ContinueWith(_ => Task.CompletedTask);
44-
Assert.That(await Page.EvaluateExpressionAsync("window.__injected"), Is.Null);
44+
Assert.That(await Page.EvaluateExpressionAsync<int?>("window.__injected"), Is.Null);
4545

4646
// By-pass CSP and try one more time.
4747
await Page.SetBypassCSPAsync(true);

0 commit comments

Comments
 (0)