diff --git a/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml new file mode 100644 index 000000000..fd2bfd3a3 --- /dev/null +++ b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml.cs b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml.cs new file mode 100644 index 000000000..d05859965 --- /dev/null +++ b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml.cs @@ -0,0 +1,24 @@ +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using LiveChartsCore.SkiaSharpView.Avalonia; + +namespace AvaloniaSample.VisualTest.VirtualizationTest; + +public partial class View : UserControl +{ + public View() + { + InitializeComponent(); + } + + public CartesianChart Chart1 => this.Find("chart1")!; + public CartesianChart Chart2 => this.Find("chart2")!; + public void OpenTab1() => this.Find("tabs")!.SelectedIndex = 0; + public void OpenTab2() => this.Find("tabs")!.SelectedIndex = 1; + public void ScrollToChart() => ((ScrollViewer)this.Find("tabs")!.SelectedContent!).ScrollToEnd(); + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } +} diff --git a/tests/SharedUITests/AvaloniaTests.cs b/tests/SharedUITests/AvaloniaTests.cs new file mode 100644 index 000000000..c8b6dce00 --- /dev/null +++ b/tests/SharedUITests/AvaloniaTests.cs @@ -0,0 +1,37 @@ +#if AVALONIA_UI_TESTING + +using Factos; +using SharedUITests.Helpers; +using Xunit; + +namespace SharedUITests; + +public class AvaloniaTests +{ + public AppController App => AppController.Current; + + // based on: + // https://github.com/Live-Charts/LiveCharts2/issues/1986 + // ensure charts load when avalonia virtualization is on. + [AppTestMethod] + public async Task TabControlScrollViewerRendersAfterTabSwitch() + { + var sut = await App.NavigateTo(); + + // open the second tab, scroll to end and ensure the chart is loaded. + sut.OpenTab2(); + await Task.Delay(1000); + sut.ScrollToChart(); + await Task.Delay(1000); + Assert.ChartIsLoaded(sut.Chart2); + + // now open the first tab, scroll to end and ensure the chart is loaded. + sut.OpenTab1(); + await Task.Delay(1000); + sut.ScrollToChart(); + await Task.Delay(1000); + Assert.ChartIsLoaded(sut.Chart1); + } +} + +#endif