|
@@ -0,0 +1,103 @@
|
|
|
+using System.Threading;
|
|
|
+using OpenQA.Selenium;
|
|
|
+using OpenQA.Selenium.Appium;
|
|
|
+using OpenQA.Selenium.Interactions;
|
|
|
+using Xunit;
|
|
|
+
|
|
|
+namespace Avalonia.IntegrationTests.Appium
|
|
|
+{
|
|
|
+ [Collection("Default")]
|
|
|
+ public class ListBoxTests
|
|
|
+ {
|
|
|
+ private readonly AppiumDriver<AppiumWebElement> _session;
|
|
|
+
|
|
|
+ public ListBoxTests(TestAppFixture fixture)
|
|
|
+ {
|
|
|
+ _session = fixture.Session;
|
|
|
+
|
|
|
+ var tabs = _session.FindElementByAccessibilityId("MainTabs");
|
|
|
+ var tab = tabs.FindElementByName("ListBox");
|
|
|
+ tab.Click();
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Can_Select_Item_By_Clicking()
|
|
|
+ {
|
|
|
+ var listBox = GetTarget();
|
|
|
+ var item2 = listBox.FindElementByName("Item 2");
|
|
|
+ var item4 = listBox.FindElementByName("Item 4");
|
|
|
+
|
|
|
+ Assert.False(item2.Selected);
|
|
|
+ Assert.False(item4.Selected);
|
|
|
+
|
|
|
+ item2.SendClick();
|
|
|
+ Assert.True(item2.Selected);
|
|
|
+ Assert.False(item4.Selected);
|
|
|
+
|
|
|
+ item4.SendClick();
|
|
|
+ Assert.False(item2.Selected);
|
|
|
+ Assert.True(item4.Selected);
|
|
|
+ }
|
|
|
+
|
|
|
+ // WinAppDriver seems unable to consistently send a Ctrl key.
|
|
|
+ [PlatformFact(SkipOnWindows = true)]
|
|
|
+ public void Can_Select_Items_By_Ctrl_Clicking()
|
|
|
+ {
|
|
|
+ var listBox = GetTarget();
|
|
|
+ var item2 = listBox.FindElementByName("Item 2");
|
|
|
+ var item4 = listBox.FindElementByName("Item 4");
|
|
|
+
|
|
|
+ Assert.False(item2.Selected);
|
|
|
+ Assert.False(item4.Selected);
|
|
|
+
|
|
|
+ new Actions(_session)
|
|
|
+ .Click(item2)
|
|
|
+ .KeyDown(Keys.Control)
|
|
|
+ .Click(item4)
|
|
|
+ .KeyUp(Keys.Control)
|
|
|
+ .Perform();
|
|
|
+
|
|
|
+ Assert.True(item2.Selected);
|
|
|
+ Assert.True(item4.Selected);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Can_Select_Range_By_Shift_Clicking()
|
|
|
+ {
|
|
|
+ var listBox = GetTarget();
|
|
|
+ var item2 = listBox.FindElementByName("Item 2");
|
|
|
+ var item3 = listBox.FindElementByName("Item 3");
|
|
|
+ var item4 = listBox.FindElementByName("Item 4");
|
|
|
+
|
|
|
+ Assert.False(item2.Selected);
|
|
|
+ Assert.False(item3.Selected);
|
|
|
+ Assert.False(item4.Selected);
|
|
|
+
|
|
|
+ new Actions(_session)
|
|
|
+ .Click(item2)
|
|
|
+ .KeyDown(Keys.Shift)
|
|
|
+ .Click(item4)
|
|
|
+ .KeyUp(Keys.Shift)
|
|
|
+ .Perform();
|
|
|
+
|
|
|
+ Assert.True(item2.Selected);
|
|
|
+ Assert.True(item3.Selected);
|
|
|
+ Assert.True(item4.Selected);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Is_Virtualized()
|
|
|
+ {
|
|
|
+ var listBox = GetTarget();
|
|
|
+ var children = listBox.GetChildren();
|
|
|
+
|
|
|
+ Assert.True(children.Count < 100);
|
|
|
+ }
|
|
|
+
|
|
|
+ private AppiumWebElement GetTarget()
|
|
|
+ {
|
|
|
+ _session.FindElementByAccessibilityId("ListBoxSelectionClear").Click();
|
|
|
+ return _session.FindElementByAccessibilityId("BasicListBox");
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|