Browse Source

Tweak tests.

- Add a retry to `GetWindowInfo`
- Owned windows can't go fullscreen on macOS.
pull/8405/head
Steven Kirk 4 years ago
parent
commit
267710787e
  1. 50
      tests/Avalonia.IntegrationTests.Appium/WindowTests.cs

50
tests/Avalonia.IntegrationTests.Appium/WindowTests.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Threading;
using Avalonia.Controls; using Avalonia.Controls;
using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium;
using Xunit; using Xunit;
@ -68,16 +69,24 @@ namespace Avalonia.IntegrationTests.Appium
Assert.Equal(original.Position, current.Position); Assert.Equal(original.Position, current.Position);
Assert.Equal(original.FrameSize, current.FrameSize); Assert.Equal(original.FrameSize, current.FrameSize);
windowState.Click(); // On macOS, only non-owned windows can go fullscreen.
_session.FindElementByName("Fullscreen").SendClick(); if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || mode == ShowWindowMode.NonOwned)
Assert.Equal("Fullscreen", windowState.GetComboBoxValue()); {
windowState.Click();
_session.FindElementByName("Fullscreen").SendClick();
Assert.Equal("Fullscreen", windowState.GetComboBoxValue());
windowState.Click(); current = GetWindowInfo();
_session.FindElementByName("Normal").SendClick(); Assert.True(current.ClientSize.Width >= current.ScreenRect.Width);
Assert.True(current.ClientSize.Height >= current.ScreenRect.Height);
current = GetWindowInfo(); windowState.Click();
Assert.Equal(original.Position, current.Position); _session.FindElementByName("Normal").SendClick();
Assert.Equal(original.FrameSize, current.FrameSize);
current = GetWindowInfo();
Assert.Equal(original.Position, current.Position);
Assert.Equal(original.FrameSize, current.FrameSize);
}
} }
public static TheoryData<PixelSize?, ShowWindowMode, WindowStartupLocation> StartupLocationData() public static TheoryData<PixelSize?, ShowWindowMode, WindowStartupLocation> StartupLocationData()
@ -149,13 +158,26 @@ namespace Avalonia.IntegrationTests.Appium
private WindowInfo GetWindowInfo() private WindowInfo GetWindowInfo()
{ {
return new( var retry = 0;
Size.Parse(_session.FindElementByAccessibilityId("ClientSize").Text),
Size.Parse(_session.FindElementByAccessibilityId("FrameSize").Text),
PixelPoint.Parse(_session.FindElementByAccessibilityId("Position").Text),
PixelRect.Parse(_session.FindElementByAccessibilityId("ScreenRect").Text),
double.Parse(_session.FindElementByAccessibilityId("Scaling").Text));
for (;;)
{
try
{
return new(
Size.Parse(_session.FindElementByAccessibilityId("ClientSize").Text),
Size.Parse(_session.FindElementByAccessibilityId("FrameSize").Text),
PixelPoint.Parse(_session.FindElementByAccessibilityId("Position").Text),
PixelRect.Parse(_session.FindElementByAccessibilityId("ScreenRect").Text),
double.Parse(_session.FindElementByAccessibilityId("Scaling").Text));
}
catch (OpenQA.Selenium.NoSuchElementException e) when (retry++ < 3)
{
// MacOS sometimes seems to need a bit of time to get itself back in order after switching out
// of fullscreen.
Thread.Sleep(1000);
}
}
} }
public enum ShowWindowMode public enum ShowWindowMode

Loading…
Cancel
Save