From ddb6ab977e796c402f1535e141d41b369029da44 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 22 Nov 2021 14:25:37 +0100 Subject: [PATCH] Refactored ComboBox integration tests. --- samples/IntegrationTestApp/MainWindow.axaml | 18 ++--- .../IntegrationTestApp/MainWindow.axaml.cs | 11 +++ .../ComboBoxTests.cs | 74 ++++++++++++++++--- 3 files changed, 81 insertions(+), 22 deletions(-) diff --git a/samples/IntegrationTestApp/MainWindow.axaml b/samples/IntegrationTestApp/MainWindow.axaml index 035e0e211b..b0483cba32 100644 --- a/samples/IntegrationTestApp/MainWindow.axaml +++ b/samples/IntegrationTestApp/MainWindow.axaml @@ -19,6 +19,7 @@ + @@ -32,6 +33,7 @@ + + diff --git a/samples/IntegrationTestApp/MainWindow.axaml.cs b/samples/IntegrationTestApp/MainWindow.axaml.cs index 8079472ad8..e61341c159 100644 --- a/samples/IntegrationTestApp/MainWindow.axaml.cs +++ b/samples/IntegrationTestApp/MainWindow.axaml.cs @@ -13,6 +13,7 @@ namespace IntegrationTestApp InitializeComponent(); InitializeViewMenu(); this.AttachDevTools(); + AddHandler(Button.ClickEvent, OnButtonClick); } private void InitializeComponent() @@ -44,5 +45,15 @@ namespace IntegrationTestApp var clickedMenuItemTextBlock = this.FindControl("ClickedMenuItem"); clickedMenuItemTextBlock.Text = ((MenuItem)sender!).Header.ToString(); } + + private void OnButtonClick(object? sender, RoutedEventArgs e) + { + var source = e.Source as Button; + + if (source?.Name == "ComboBoxSelectionClear") + this.FindControl("ComboBox").SelectedIndex = -1; + if (source?.Name == "ComboBoxSelectFirst") + this.FindControl("ComboBox").SelectedIndex = 0; + } } } diff --git a/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs b/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs index 26cbd1127f..9c458059cf 100644 --- a/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs +++ b/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs @@ -1,4 +1,6 @@ -using OpenQA.Selenium.Appium; +using System.Threading; +using OpenQA.Selenium; +using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Mac; using Xunit; @@ -19,32 +21,82 @@ namespace Avalonia.IntegrationTests.Appium } [Fact] - public void UnselectedComboBox() + public void Can_Change_Selection_Using_Mouse() { - var comboBox = _session.FindElementByAccessibilityId("UnselectedComboBox"); + var comboBox = _session.FindElementByAccessibilityId("ComboBox"); + _session.FindElementByAccessibilityId("ComboBoxSelectFirst").Click(); + Assert.Equal("Item 0", comboBox.Text); + + comboBox.Click(); + _session.FindElementByName("Item 1").SendClick(); + + Assert.Equal("Item 1", comboBox.Text); + } + + [Fact] + public void Can_Change_Selection_From_Unselected_Using_Mouse() + { + var comboBox = _session.FindElementByAccessibilityId("ComboBox"); + + _session.FindElementByAccessibilityId("ComboBoxSelectionClear").Click(); Assert.Equal(string.Empty, comboBox.Text); comboBox.Click(); - _session.FindElementByName("Bar").SendClick(); + _session.FindElementByName("Item 0").SendClick(); - Assert.Equal("Bar", comboBox.Text); + Assert.Equal("Item 0", comboBox.Text); } [Fact] - public void SelectedIndex0ComboBox() + public void Can_Change_Selection_With_Keyboard() { - var comboBox = _session.FindElementByAccessibilityId("SelectedIndex0ComboBox"); + var comboBox = _session.FindElementByAccessibilityId("ComboBox"); + + _session.FindElementByAccessibilityId("ComboBoxSelectFirst").Click(); + Assert.Equal("Item 0", comboBox.Text); + + comboBox.SendKeys(Keys.LeftAlt + Keys.ArrowDown); + comboBox.SendKeys(Keys.ArrowDown); - Assert.Equal("Foo", comboBox.Text); + var item = _session.FindElementByName("Item 1"); + item.SendKeys(Keys.Enter); + + Assert.Equal("Item 1", comboBox.Text); } [Fact] - public void SelectedIndex1ComboBox() + public void Can_Change_Selection_With_Keyboard_From_Unselected() { - var comboBox = _session.FindElementByAccessibilityId("SelectedIndex1ComboBox"); + var comboBox = _session.FindElementByAccessibilityId("ComboBox"); + + _session.FindElementByAccessibilityId("ComboBoxSelectionClear").Click(); + Assert.Equal(string.Empty, comboBox.Text); - Assert.Equal("Bar", comboBox.Text); + comboBox.SendKeys(Keys.LeftAlt + Keys.ArrowDown); + comboBox.SendKeys(Keys.ArrowDown); + + var item = _session.FindElementByName("Item 0"); + item.SendKeys(Keys.Enter); + + Assert.Equal("Item 0", comboBox.Text); + } + + [Fact] + public void Can_Cancel_Keyboard_Selection_With_Escape() + { + var comboBox = _session.FindElementByAccessibilityId("ComboBox"); + + _session.FindElementByAccessibilityId("ComboBoxSelectionClear").Click(); + Assert.Equal(string.Empty, comboBox.Text); + + comboBox.SendKeys(Keys.LeftAlt + Keys.ArrowDown); + comboBox.SendKeys(Keys.ArrowDown); + + var item = _session.FindElementByName("Item 0"); + item.SendKeys(Keys.Escape); + + Assert.Equal(string.Empty, comboBox.Text); } } }