Browse Source

Added integration tests for tapped gestures.

Some skipped on Windows as right button actions aren't supported by WinAppDriver.
pull/9360/head
Steven Kirk 3 years ago
parent
commit
9a50b9ee0c
  1. 12
      samples/IntegrationTestApp/MainWindow.axaml
  2. 10
      samples/IntegrationTestApp/MainWindow.axaml.cs
  3. 151
      tests/Avalonia.IntegrationTests.Appium/GestureTests.cs

12
samples/IntegrationTestApp/MainWindow.axaml

@ -69,6 +69,18 @@
</StackPanel>
</TabItem>
<TabItem Header="Gestures">
<DockPanel>
<DockPanel DockPanel.Dock="Top">
<Button Name="ClearLastGesture" DockPanel.Dock="Right">Clear</Button>
<TextBlock Name="LastGesture" />
</DockPanel>
<Border Name="GestureBorder" Background="Blue"
AutomationProperties.AccessibilityView="Content"
AutomationProperties.ControlTypeOverride="Image"/>
</DockPanel>
</TabItem>
<TabItem Header="ListBox">
<DockPanel>
<StackPanel DockPanel.Dock="Bottom">

10
samples/IntegrationTestApp/MainWindow.axaml.cs

@ -4,6 +4,7 @@ using Avalonia;
using Avalonia.Automation;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.VisualTree;
@ -20,6 +21,15 @@ namespace IntegrationTestApp
this.AttachDevTools();
AddHandler(Button.ClickEvent, OnButtonClick);
ListBoxItems = Enumerable.Range(0, 100).Select(x => "Item " + x).ToList();
var gestureBorder = this.GetControl<Border>("GestureBorder");
var lastGesture = this.GetControl<TextBlock>("LastGesture");
var clearLastGesture = this.GetControl<Button>("ClearLastGesture");
gestureBorder.Tapped += (s, e) => lastGesture.Text = "Tapped";
gestureBorder.DoubleTapped += (s, e) => lastGesture.Text = "DoubleTapped";
Gestures.AddRightTappedHandler(gestureBorder, (s, e) => lastGesture.Text = "RightTapped");
clearLastGesture.Click += (s, e) => lastGesture.Text = string.Empty;
DataContext = this;
}

151
tests/Avalonia.IntegrationTests.Appium/GestureTests.cs

@ -0,0 +1,151 @@
using System;
using System.Threading;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Interactions;
using Xunit;
namespace Avalonia.IntegrationTests.Appium
{
[Collection("Default")]
public class GestureTests
{
private readonly AppiumDriver<AppiumWebElement> _session;
public GestureTests(TestAppFixture fixture)
{
_session = fixture.Session;
var tabs = _session.FindElementByAccessibilityId("MainTabs");
var tab = tabs.FindElementByName("Gestures");
tab.Click();
var clear = _session.FindElementByAccessibilityId("ClearLastGesture");
clear.Click();
}
[Fact]
public void Tapped_Is_Raised()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
new Actions(_session).Click(border).Perform();
Assert.Equal("Tapped", lastGesture.Text);
}
[Fact]
public void Tapped_Is_Raised_Slow()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
new Actions(_session).ClickAndHold(border).Perform();
Thread.Sleep(2000);
new Actions(_session).Release(border).Perform();
Assert.Equal("Tapped", lastGesture.Text);
}
[Fact]
public void Tapped_Is_Not_Raised_For_Drag()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
new Actions(_session)
.ClickAndHold(border)
.MoveByOffset(50, 50)
.Release()
.Perform();
Assert.Equal(string.Empty, lastGesture.Text);
}
[Fact]
public void DoubleTapped_Is_Raised()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
new Actions(_session).DoubleClick(border).Perform();
Assert.Equal("DoubleTapped", lastGesture.Text);
}
[Fact]
public void DoubleTapped_Is_Raised_2()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
new Actions(_session).ClickAndHold(border).Release().Perform();
Thread.Sleep(100);
new Actions(_session).ClickAndHold(border).Release().Perform();
Assert.Equal("DoubleTapped", lastGesture.Text);
}
[Fact]
public void DoubleTapped_Is_Raised_Not_Raised_If_Too_Slow()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
new Actions(_session).ClickAndHold(border).Release().Perform();
Thread.Sleep(2000);
new Actions(_session).ClickAndHold(border).Release().Perform();
Assert.Equal("Tapped", lastGesture.Text);
}
[Fact]
public void RightTapped_Is_Raised()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
new Actions(_session).ContextClick(border).Perform();
Assert.Equal("RightTapped", lastGesture.Text);
}
[PlatformFact(TestPlatforms.MacOS)]
public void RightTapped_Is_Raised_2()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
var device = new PointerInputDevice(PointerKind.Mouse);
var b = new ActionBuilder();
b.AddAction(device.CreatePointerMove(border, 50, 50, TimeSpan.FromMilliseconds(100)));
b.AddAction(device.CreatePointerDown(MouseButton.Right));
b.AddAction(device.CreatePointerMove(border, 2, 2, TimeSpan.FromMilliseconds(100)));
b.AddAction(device.CreatePointerUp(MouseButton.Right));
_session.PerformActions(b.ToActionSequenceList());
Assert.Equal("RightTapped", lastGesture.Text);
}
[PlatformFact(TestPlatforms.MacOS)]
public void RightTapped_Is_Not_Raised_For_Drag()
{
var border = _session.FindElementByAccessibilityId("GestureBorder");
var lastGesture = _session.FindElementByAccessibilityId("LastGesture");
var device = new PointerInputDevice(PointerKind.Mouse);
var b = new ActionBuilder();
b.AddAction(device.CreatePointerMove(border, 50, 50, TimeSpan.FromMilliseconds(100)));
b.AddAction(device.CreatePointerDown(MouseButton.Right));
b.AddAction(device.CreatePointerMove(CoordinateOrigin.Pointer, 50, 50, TimeSpan.FromMilliseconds(100)));
b.AddAction(device.CreatePointerUp(MouseButton.Right));
Assert.Equal(string.Empty, lastGesture.Text);
}
}
}
Loading…
Cancel
Save