From 296cb797fd84fff735b68830328262d7a731422b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Kondratiuk?= Date: Sat, 15 Apr 2023 18:47:14 -0300 Subject: [PATCH] Fix query objects tests --- .../PageTests/QueryObjectsTests.cs | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/lib/PuppeteerSharp.Tests/PageTests/QueryObjectsTests.cs b/lib/PuppeteerSharp.Tests/PageTests/QueryObjectsTests.cs index e95850f33..a2d24d5a2 100644 --- a/lib/PuppeteerSharp.Tests/PageTests/QueryObjectsTests.cs +++ b/lib/PuppeteerSharp.Tests/PageTests/QueryObjectsTests.cs @@ -1,4 +1,6 @@ +using System.Runtime.Remoting; using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.RazorPages; using PuppeteerSharp.Tests.Attributes; using PuppeteerSharp.Xunit; using Xunit; @@ -17,27 +19,33 @@ public QueryObjectsTests(ITestOutputHelper output) : base(output) [SkipBrowserFact(skipFirefox: true)] public async Task ShouldWork() { - // Instantiate an object - await Page.EvaluateExpressionAsync("window.set = new Set(['hello', 'world'])"); - var prototypeHandle = await Page.EvaluateExpressionHandleAsync("Set.prototype"); - var objectsHandle = await Page.QueryObjectsAsync(prototypeHandle); - var count = await Page.EvaluateFunctionAsync("objects => objects.length", objectsHandle); - Assert.Equal(1, count); - var values = await Page.EvaluateFunctionAsync("objects => Array.from(objects[0].values())", objectsHandle); - Assert.Equal(new[] { "hello", "world" }, values); - } + // Create a custom class + var classHandle = await Page.EvaluateFunctionHandleAsync(@"() => { + return class CustomClass { }; + }"); + + // Create an instance. + await Page.EvaluateFunctionAsync(@"CustomClass => { + self.customClass = new CustomClass(); + }", classHandle); + + // Validate only one has been added. + var prototypeHandle = await Page.EvaluateFunctionHandleAsync(@"CustomClass => { + return CustomClass.prototype; + }", classHandle); - [PuppeteerTest("page.spec.ts", "ExecutionContext.queryObjects", "should work for non-blank page")] - [SkipBrowserFact(skipFirefox: true)] - public async Task ShouldWorkForNonBlankPage() - { - // Instantiate an object - await Page.GoToAsync(TestConstants.EmptyPage); - await Page.EvaluateFunctionAsync("() => window.set = new Set(['hello', 'world'])"); - var prototypeHandle = await Page.EvaluateFunctionHandleAsync("() => Set.prototype"); var objectsHandle = await Page.QueryObjectsAsync(prototypeHandle); - var count = await Page.EvaluateFunctionAsync("objects => objects.length", objectsHandle); - Assert.Equal(1, count); + Assert.Equal( + 1, + await Page.EvaluateFunctionAsync(@"objects => { + return objects.length; + }", objectsHandle)); + + + // Check that instances. + Assert.True(await Page.EvaluateFunctionAsync(@"objects => { + return objects[0] === self.customClass; + }", objectsHandle)); } [PuppeteerTest("page.spec.ts", "ExecutionContext.queryObjects", "should fail for disposed handles")]