Browse Source

Add failing integration test on macOS.

Hiding a child window, and then clicking on the parent window causes the child window to be erroneously re-shown.
pull/8618/head
Steven Kirk 4 years ago
parent
commit
eb8ddef412
  1. 1
      samples/IntegrationTestApp/MainWindow.axaml.cs
  2. 3
      samples/IntegrationTestApp/ShowWindowTest.axaml
  3. 29
      tests/Avalonia.IntegrationTests.Appium/WindowTests_MacOS.cs

1
samples/IntegrationTestApp/MainWindow.axaml.cs

@ -99,6 +99,7 @@ namespace IntegrationTestApp
foreach (var window in lifetime.Windows) foreach (var window in lifetime.Windows)
{ {
window.Show();
if (window.WindowState == WindowState.Minimized) if (window.WindowState == WindowState.Minimized)
window.WindowState = WindowState.Normal; window.WindowState = WindowState.Normal;
} }

3
samples/IntegrationTestApp/ShowWindowTest.axaml

@ -3,7 +3,7 @@
x:Class="IntegrationTestApp.ShowWindowTest" x:Class="IntegrationTestApp.ShowWindowTest"
Name="SecondaryWindow" Name="SecondaryWindow"
Title="Show Window Test"> Title="Show Window Test">
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto"> <Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
<Label Grid.Column="0" Grid.Row="1">Client Size</Label> <Label Grid.Column="0" Grid.Row="1">Client Size</Label>
<TextBox Name="ClientSize" Grid.Column="1" Grid.Row="1" IsReadOnly="True" <TextBox Name="ClientSize" Grid.Column="1" Grid.Row="1" IsReadOnly="True"
Text="{Binding ClientSize, Mode=OneWay}"/> Text="{Binding ClientSize, Mode=OneWay}"/>
@ -31,5 +31,6 @@
<ComboBoxItem>Maximized</ComboBoxItem> <ComboBoxItem>Maximized</ComboBoxItem>
<ComboBoxItem>Fullscreen</ComboBoxItem> <ComboBoxItem>Fullscreen</ComboBoxItem>
</ComboBox> </ComboBox>
<Button Name="HideButton" Grid.Row="8" Command="{Binding $parent[Window].Hide}">Hide</Button>
</Grid> </Grid>
</Window> </Window>

29
tests/Avalonia.IntegrationTests.Appium/WindowTests_MacOS.cs

@ -211,6 +211,35 @@ namespace Avalonia.IntegrationTests.Appium
} }
} }
[PlatformFact(TestPlatforms.MacOS)]
public void Hidden_Child_Window_Is_Not_Reshown_When_Parent_Clicked()
{
var mainWindow = _session.FindElementByAccessibilityId("MainWindow");
// We don't use dispose to close the window here, because it seems that hiding and re-showing a window
// causes Appium to think it's a different window.
OpenWindow(null, ShowWindowMode.Owned, WindowStartupLocation.Manual);
var secondaryWindow = FindWindow(_session, "SecondaryWindow");
var hideButton = secondaryWindow.FindElementByAccessibilityId("HideButton");
hideButton.Click();
var windows = _session.FindElementsByXPath("XCUIElementTypeWindow");
Assert.Single(windows);
mainWindow.Click();
windows = _session.FindElementsByXPath("XCUIElementTypeWindow");
Assert.Single(windows);
_session.FindElementByAccessibilityId("RestoreAll").Click();
// Close the window manually.
secondaryWindow = FindWindow(_session, "SecondaryWindow");
secondaryWindow.GetChromeButtons().close.Click();
}
private IDisposable OpenWindow(PixelSize? size, ShowWindowMode mode, WindowStartupLocation location) private IDisposable OpenWindow(PixelSize? size, ShowWindowMode mode, WindowStartupLocation location)
{ {
var sizeTextBox = _session.FindElementByAccessibilityId("ShowWindowSize"); var sizeTextBox = _session.FindElementByAccessibilityId("ShowWindowSize");

Loading…
Cancel
Save