Browse Source

Add ScrollBarAutomationPeer

pull/10541/head
Daniil Pavliuchyk 3 years ago
parent
commit
ddb9669c11
  1. 3
      samples/IntegrationTestApp/MainWindow.axaml
  2. 29
      src/Avalonia.Controls/Automation/Peers/ScrollBarAutomationPeer.cs
  3. 3
      src/Avalonia.Controls/Primitives/ScrollBar.cs
  4. 33
      tests/Avalonia.IntegrationTests.Appium/ScrollBarTests.cs

3
samples/IntegrationTestApp/MainWindow.axaml

@ -167,6 +167,9 @@
<TabItem Header="SliderTab">
<Slider VerticalAlignment="Top" Name="Slider" Value="30"/>
</TabItem>
<TabItem Header="ScrollBarTab">
<ScrollBar Name="MyScrollBar" Orientation="Horizontal" AllowAutoHide="False" Width="200" Height="30" Value="20"/>
</TabItem>
</TabControl>
</DockPanel>
</Window>

29
src/Avalonia.Controls/Automation/Peers/ScrollBarAutomationPeer.cs

@ -0,0 +1,29 @@
using Avalonia.Controls.Primitives;
namespace Avalonia.Automation.Peers
{
public class ScrollBarAutomationPeer : RangeBaseAutomationPeer
{
public ScrollBarAutomationPeer(ScrollBar owner) : base(owner)
{
}
override protected string GetClassNameCore()
{
return "ScrollBar";
}
override protected AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.ScrollBar;
}
// AutomationControlType.ScrollBar must return IsContentElement false.
// See http://msdn.microsoft.com/en-us/library/ms743712.aspx
override protected bool IsContentElementCore()
{
return false;
}
}
}

3
src/Avalonia.Controls/Primitives/ScrollBar.cs

@ -5,6 +5,7 @@ using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.Threading;
using Avalonia.Controls.Metadata;
using Avalonia.Automation.Peers;
namespace Avalonia.Controls.Primitives
{
@ -286,6 +287,8 @@ namespace Avalonia.Controls.Primitives
}
}
protected override AutomationPeer OnCreateAutomationPeer() => new ScrollBarAutomationPeer(this);
private void InvokeAfterDelay(Action handler, TimeSpan delay)
{
if (_timer != null)

33
tests/Avalonia.IntegrationTests.Appium/ScrollBarTests.cs

@ -0,0 +1,33 @@
using OpenQA.Selenium.Appium;
using Xunit;
namespace Avalonia.IntegrationTests.Appium
{
[Collection("Default")]
public class ScrollBarTests
{
private readonly AppiumDriver<AppiumWebElement> _session;
public ScrollBarTests(DefaultAppFixture fixture)
{
_session = fixture.Session;
var tabs = _session.FindElementByAccessibilityId("MainTabs");
var tab = tabs.FindElementByName("ScrollBarTab");
tab.Click();
}
[Fact]
public void ScrollBar_Increases_Value_By_LargeChange_When_IncreaseButton_Is_Clicked()
{
var button = _session.FindElementByAccessibilityId("MyScrollBar");
Assert.True(double.Parse(button.Text) == 20);
button.Click();
// Default LargeChange value is 10 so when clicking the IncreaseButton
// ScrollBar value should be increased by 10.
Assert.Equal(30, double.Parse(button.Text));
}
}
}
Loading…
Cancel
Save