Skip to content

Commit

Permalink
Fix SlowMo (#1151)
Browse files Browse the repository at this point in the history
  • Loading branch information
kblok committed Jun 1, 2019
1 parent c97a908 commit 5cdb3cd
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 8 deletions.
10 changes: 4 additions & 6 deletions lib/PuppeteerSharp.Tests/InputTests/KeyboardTests.cs
Expand Up @@ -27,25 +27,23 @@ public async Task ShouldTypeIntoTheTextarea()
[Fact]
public async Task ShouldMoveWithTheArrowKeys()
{
Task dummy;

await Page.GoToAsync(TestConstants.ServerUrl + "/input/textarea.html");
await Page.TypeAsync("textarea", "Hello World!");
Assert.Equal("Hello World!", await Page.EvaluateExpressionAsync<string>("document.querySelector('textarea').value"));
for (var i = 0; i < "World!".Length; i++)
{
dummy = Page.Keyboard.PressAsync("ArrowLeft");
_ = Page.Keyboard.PressAsync("ArrowLeft");
}

await Page.Keyboard.TypeAsync("inserted ");
Assert.Equal("Hello inserted World!", await Page.EvaluateExpressionAsync<string>("document.querySelector('textarea').value"));
dummy = Page.Keyboard.DownAsync("Shift");
_ = Page.Keyboard.DownAsync("Shift");
for (var i = 0; i < "inserted ".Length; i++)
{
dummy = Page.Keyboard.PressAsync("ArrowLeft");
_ = Page.Keyboard.PressAsync("ArrowLeft");
}

dummy = Page.Keyboard.UpAsync("Shift");
_ = Page.Keyboard.UpAsync("Shift");
await Page.Keyboard.PressAsync("Backspace");
Assert.Equal("Hello World!", await Page.EvaluateExpressionAsync<string>("document.querySelector('textarea').value"));
}
Expand Down
30 changes: 30 additions & 0 deletions lib/PuppeteerSharp.Tests/Issues/Issue0716.cs
@@ -0,0 +1,30 @@
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;

namespace PuppeteerSharp.Tests.Issues
{
[Collection("PuppeteerLoaderFixture collection")]
public class Issue0716 : PuppeteerPageBaseTest
{
public Issue0716(ITestOutputHelper output) : base(output)
{
}

[Fact]
public async Task ShouldWorkInSlowMo()
{
var options = TestConstants.DefaultBrowserOptions();
options.SlowMo = 100;
options.Headless = false;

using (var browser = await Puppeteer.LaunchAsync(options))
using (var page = await browser.NewPageAsync())
{
await page.GoToAsync("https://duckduckgo.com/");
var input = await page.WaitForSelectorAsync("#search_form_input_homepage");
await input.TypeAsync("Lorem ipsum dolor sit amet.");
}
}
}
}
7 changes: 5 additions & 2 deletions lib/PuppeteerSharp/Connection.cs
Expand Up @@ -19,6 +19,7 @@ namespace PuppeteerSharp
public class Connection : IDisposable
{
private readonly ILogger _logger;
private TaskQueue _callbackQueue = new TaskQueue();

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

var id = GetMessageID();

MessageTask callback = null;
if (waitForCallback)
{
Expand Down Expand Up @@ -178,7 +179,9 @@ internal void Close(string closeReason)

#region Private Methods

private async void Transport_MessageReceived(object sender, MessageReceivedEventArgs e)
private async void Transport_MessageReceived(object sender, MessageReceivedEventArgs e) => await _callbackQueue.Enqueue(() => ProcessMessage(e));

private async Task ProcessMessage(MessageReceivedEventArgs e)
{
try
{
Expand Down

0 comments on commit 5cdb3cd

Please sign in to comment.