Skip to content

Commit 5cdb3cd

Browse files
authored
Fix SlowMo (#1151)
1 parent c97a908 commit 5cdb3cd

File tree

3 files changed

+39
-8
lines changed

3 files changed

+39
-8
lines changed

lib/PuppeteerSharp.Tests/InputTests/KeyboardTests.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,23 @@ public async Task ShouldTypeIntoTheTextarea()
2727
[Fact]
2828
public async Task ShouldMoveWithTheArrowKeys()
2929
{
30-
Task dummy;
31-
3230
await Page.GoToAsync(TestConstants.ServerUrl + "/input/textarea.html");
3331
await Page.TypeAsync("textarea", "Hello World!");
3432
Assert.Equal("Hello World!", await Page.EvaluateExpressionAsync<string>("document.querySelector('textarea').value"));
3533
for (var i = 0; i < "World!".Length; i++)
3634
{
37-
dummy = Page.Keyboard.PressAsync("ArrowLeft");
35+
_ = Page.Keyboard.PressAsync("ArrowLeft");
3836
}
3937

4038
await Page.Keyboard.TypeAsync("inserted ");
4139
Assert.Equal("Hello inserted World!", await Page.EvaluateExpressionAsync<string>("document.querySelector('textarea').value"));
42-
dummy = Page.Keyboard.DownAsync("Shift");
40+
_ = Page.Keyboard.DownAsync("Shift");
4341
for (var i = 0; i < "inserted ".Length; i++)
4442
{
45-
dummy = Page.Keyboard.PressAsync("ArrowLeft");
43+
_ = Page.Keyboard.PressAsync("ArrowLeft");
4644
}
4745

48-
dummy = Page.Keyboard.UpAsync("Shift");
46+
_ = Page.Keyboard.UpAsync("Shift");
4947
await Page.Keyboard.PressAsync("Backspace");
5048
Assert.Equal("Hello World!", await Page.EvaluateExpressionAsync<string>("document.querySelector('textarea').value"));
5149
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System.Threading.Tasks;
2+
using Xunit;
3+
using Xunit.Abstractions;
4+
5+
namespace PuppeteerSharp.Tests.Issues
6+
{
7+
[Collection("PuppeteerLoaderFixture collection")]
8+
public class Issue0716 : PuppeteerPageBaseTest
9+
{
10+
public Issue0716(ITestOutputHelper output) : base(output)
11+
{
12+
}
13+
14+
[Fact]
15+
public async Task ShouldWorkInSlowMo()
16+
{
17+
var options = TestConstants.DefaultBrowserOptions();
18+
options.SlowMo = 100;
19+
options.Headless = false;
20+
21+
using (var browser = await Puppeteer.LaunchAsync(options))
22+
using (var page = await browser.NewPageAsync())
23+
{
24+
await page.GoToAsync("https://duckduckgo.com/");
25+
var input = await page.WaitForSelectorAsync("#search_form_input_homepage");
26+
await input.TypeAsync("Lorem ipsum dolor sit amet.");
27+
}
28+
}
29+
}
30+
}

lib/PuppeteerSharp/Connection.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ namespace PuppeteerSharp
1919
public class Connection : IDisposable
2020
{
2121
private readonly ILogger _logger;
22+
private TaskQueue _callbackQueue = new TaskQueue();
2223

2324
internal Connection(string url, int delay, IConnectionTransport transport, ILoggerFactory loggerFactory = null)
2425
{
@@ -109,7 +110,7 @@ internal async Task<JObject> SendAsync(string method, object args = null, bool w
109110
}
110111

111112
var id = GetMessageID();
112-
113+
113114
MessageTask callback = null;
114115
if (waitForCallback)
115116
{
@@ -178,7 +179,9 @@ internal void Close(string closeReason)
178179

179180
#region Private Methods
180181

181-
private async void Transport_MessageReceived(object sender, MessageReceivedEventArgs e)
182+
private async void Transport_MessageReceived(object sender, MessageReceivedEventArgs e) => await _callbackQueue.Enqueue(() => ProcessMessage(e));
183+
184+
private async Task ProcessMessage(MessageReceivedEventArgs e)
182185
{
183186
try
184187
{

0 commit comments

Comments
 (0)