A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

188 lines
6.3 KiB

using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using Xunit;
namespace Avalonia.IntegrationTests.Appium
{
[Collection("Default")]
public abstract class MenuTests : TestBase
{
public MenuTests(DefaultAppFixture fixture)
: base(fixture, "Menu")
{
var reset = Session.FindElementByAccessibilityId("MenuClickedMenuItemReset");
reset.Click();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("None", clickedMenuItem.Text);
}
[Fact]
public void Click_Child()
{
var rootMenuItem = Session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
var childMenuItem = Session.FindElementByAccessibilityId("Child1MenuItem");
childMenuItem.SendClick();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text);
}
[Fact]
public void Click_Grandchild()
{
var rootMenuItem = Session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
var childMenuItem = Session.FindElementByAccessibilityId("Child2MenuItem");
childMenuItem.SendClick();
var grandchildMenuItem = Session.FindElementByAccessibilityId("GrandchildMenuItem");
grandchildMenuItem.SendClick();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text);
}
[PlatformFact(TestPlatforms.Windows)]
public void Select_Child_With_Alt_Arrow_Keys()
{
MovePointerOutOfTheWay();
new Actions(Session)
.KeyDown(Keys.Alt).KeyUp(Keys.Alt)
.SendKeys(Keys.Down + Keys.Enter)
.Perform();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text);
}
[PlatformFact(TestPlatforms.Windows)]
public void Select_Grandchild_With_Alt_Arrow_Keys()
{
MovePointerOutOfTheWay();
new Actions(Session)
.KeyDown(Keys.Alt).KeyUp(Keys.Alt)
.SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter)
.Perform();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text);
}
[PlatformFact(TestPlatforms.Windows)]
public void Select_Child_With_Alt_Access_Keys()
{
MovePointerOutOfTheWay();
new Actions(Session)
.KeyDown(Keys.Alt).KeyUp(Keys.Alt)
.SendKeys("rc")
.Perform();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text);
}
[PlatformFact(TestPlatforms.Windows)]
public void Select_Grandchild_With_Alt_Access_Keys()
{
MovePointerOutOfTheWay();
new Actions(Session)
.KeyDown(Keys.Alt).KeyUp(Keys.Alt)
.SendKeys("rhg")
.Perform();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text);
}
[PlatformFact(TestPlatforms.Windows)]
public void Select_Child_With_Click_Arrow_Keys()
{
var rootMenuItem = Session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
MovePointerOutOfTheWay();
new Actions(Session)
.SendKeys(Keys.Down + Keys.Enter)
.Perform();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text);
}
[PlatformFact(TestPlatforms.Windows)]
public void Select_Grandchild_With_Click_Arrow_Keys()
{
var rootMenuItem = Session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
MovePointerOutOfTheWay();
new Actions(Session)
.SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter)
.Perform();
var clickedMenuItem = Session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text);
}
[PlatformFact(TestPlatforms.Windows)]
public void Child_AcceleratorKey()
{
var rootMenuItem = Session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
var childMenuItem = Session.FindElementByAccessibilityId("Child1MenuItem");
Assert.Equal("Ctrl+O", childMenuItem.GetAttribute("AcceleratorKey"));
}
[PlatformFact(TestPlatforms.Windows)]
public void PointerOver_Does_Not_Steal_Focus()
{
// Issue #7906
var textBox = Session.FindElementByAccessibilityId("MenuFocusTest");
textBox.Click();
Assert.True(textBox.GetIsFocused());
var rootMenuItem = Session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.MovePointerOver();
Assert.True(textBox.GetIsFocused());
}
private void MovePointerOutOfTheWay()
{
// Move the pointer to the menu tab item so that it's not over the menu in preparation
// for key press tests. This prevents the mouse accidentally selecting the wrong item
// by hovering.
var tabs = Session.FindElementByAccessibilityId("Pager");
var tab = tabs.FindElementByName("Menu");
tab.MovePointerOver();
}
[Collection("Default")]
public class Default : MenuTests
{
public Default(DefaultAppFixture fixture) : base(fixture) { }
}
[Collection("OverlayPopups")]
public class OverlayPopups : MenuTests
{
public OverlayPopups(OverlayPopupsAppFixture fixture) : base(fixture) { }
}
}
}