Skip to content

Commit c23456f

Browse files
bgraingerkblok
andauthored
Don't assume Params type (#3028)
* Don't assume Params type. Fixes #2943 * Add failing test for unfixed code. * Ignore screencast tests on Firefox. * Bump version to 20.2.5. * Add test ID. Co-authored-by: Darío Kondratiuk <[email protected]> * Use correct test ID. Co-authored-by: Darío Kondratiuk <[email protected]> * Add missing using. Co-authored-by: Darío Kondratiuk <[email protected]> --------- Co-authored-by: Darío Kondratiuk <[email protected]>
1 parent 1264e35 commit c23456f

File tree

4 files changed

+61
-5
lines changed

4 files changed

+61
-5
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@
6262
"parameters": ["firefox"],
6363
"expectations": ["FAIL"]
6464
},
65+
{
66+
"comment": "TODO Review screencasts in firefox",
67+
"testIdPattern": "[puppeteer-sharp] Screencast*",
68+
"platforms": ["linux", "win32"],
69+
"parameters": ["firefox"],
70+
"expectations": ["FAIL"]
71+
},
6572
{
6673
"comment": "TODO Review screenshots in firefox",
6774
"testIdPattern": "[screenshot.spec] *",
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System.Threading.Tasks;
2+
using NUnit.Framework;
3+
using PuppeteerSharp.Nunit;
4+
5+
namespace PuppeteerSharp.Tests.ScreencastTests
6+
{
7+
public class PageScreencastTests : PuppeteerBrowserContextBaseTest
8+
{
9+
[Test, PuppeteerTest("puppeteer-sharp", "Screencast", "can start screencast")]
10+
public async Task CanStartScreencast()
11+
{
12+
await using var page = await Context.NewPageAsync();
13+
await page.SetViewportAsync(new ViewPortOptions
14+
{
15+
Width = 500,
16+
Height = 500
17+
});
18+
19+
var screencastFramesReceived = 0;
20+
page.Client.MessageReceived += async (_, e) =>
21+
{
22+
if (e.MessageID == "Page.screencastFrame")
23+
{
24+
Assert.That(e.MessageData.GetProperty("data").GetString(), Is.Not.Null.Or.Empty);
25+
screencastFramesReceived++;
26+
27+
// acknowledge frame
28+
await page.Client.SendAsync("Page.screencastFrameAck", new
29+
{
30+
sessionId = e.MessageData.GetProperty("sessionId").GetInt32(),
31+
});
32+
}
33+
};
34+
35+
await page.Client.SendAsync("Page.startScreencast", new
36+
{
37+
format = "png",
38+
everyNthFrame = 1
39+
});
40+
41+
await page.GoToAsync(TestConstants.ServerUrl + "/grid.html");
42+
43+
await page.Client.SendAsync("Page.stopScreencast");
44+
45+
Assert.That(screencastFramesReceived, Is.GreaterThan(0));
46+
}
47+
}
48+
}

lib/PuppeteerSharp/Cdp/Connection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,10 @@ private async Task ProcessMessage(MessageReceivedEventArgs e)
303303
private void ProcessIncomingMessage(ConnectionResponse obj)
304304
{
305305
var method = obj.Method;
306-
var param = obj.Params?.ToObject<ConnectionResponseParams>();
307306

308307
if (method == "Target.attachedToTarget")
309308
{
309+
var param = obj.Params?.ToObject<ConnectionResponseParams>();
310310
var sessionId = param.SessionId;
311311
var session = new CdpCDPSession(this, param.TargetInfo.Type, sessionId, obj.SessionId);
312312
_sessions.AddItem(sessionId, session);
@@ -320,6 +320,7 @@ private void ProcessIncomingMessage(ConnectionResponse obj)
320320
}
321321
else if (method == "Target.detachedFromTarget")
322322
{
323+
var param = obj.Params?.ToObject<ConnectionResponseParams>();
323324
var sessionId = param.SessionId;
324325
if (_sessions.TryRemove(sessionId, out var session) && !session.IsClosed)
325326
{

lib/PuppeteerSharp/PuppeteerSharp.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
<Description>Headless Browser .NET API</Description>
1313
<PackageId>PuppeteerSharp</PackageId>
1414
<PackageReleaseNotes></PackageReleaseNotes>
15-
<PackageVersion>20.2.4</PackageVersion>
16-
<ReleaseVersion>20.2.4</ReleaseVersion>
17-
<AssemblyVersion>20.2.4</AssemblyVersion>
18-
<FileVersion>20.2.4</FileVersion>
15+
<PackageVersion>20.2.5</PackageVersion>
16+
<ReleaseVersion>20.2.5</ReleaseVersion>
17+
<AssemblyVersion>20.2.5</AssemblyVersion>
18+
<FileVersion>20.2.5</FileVersion>
1919
<SynchReleaseVersion>false</SynchReleaseVersion>
2020
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
2121
<DebugType>embedded</DebugType>

0 commit comments

Comments
 (0)