Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Misc test updates (backport #18387) #18396

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
7a779fc
chore: adjust for CLI limit on android tests
jeromelaban Oct 3, 2024
422743d
chore: Adjust response file
jeromelaban Oct 3, 2024
e6cad8e
chore: adjust response options
jeromelaban Oct 3, 2024
2d438b9
test: Adjust test duration for navigation
jeromelaban Oct 4, 2024
b880f68
chore: Fix When_Image_Source_Nullify race condition
jeromelaban Oct 4, 2024
0996e3a
chore: Adjust ValidateOverflowScrollViewerDoesNotScrollWithArrowKeys
jeromelaban Oct 4, 2024
0371525
chore: Adjust test
jeromelaban Oct 4, 2024
2b34cf7
chore: Adjust response
jeromelaban Oct 3, 2024
bd484ae
chore: Adjust for collected TextBoxView reference
jeromelaban Oct 4, 2024
32b9710
chore: adjust for CLI limit on android tests
jeromelaban Oct 3, 2024
03d83d4
chore: Adjust response file
jeromelaban Oct 3, 2024
5322bee
chore: adjust response options
jeromelaban Oct 3, 2024
32f4b54
chore: Adjust execute flag
jeromelaban Oct 4, 2024
8644ac7
chore: Don't copy crash reports if the folder does not exist
jeromelaban Oct 4, 2024
b099ca5
chore: Log more commandbar tests
jeromelaban Oct 4, 2024
48ceea2
chore: Adjust for When_Stretch instability
jeromelaban Oct 4, 2024
4e0350d
chore: Adjust retries in ValidateVisualStateUpdatesWhenDynamicOverflo…
jeromelaban Oct 4, 2024
228cc24
chore: Adjust default style for button to remove animation
jeromelaban Oct 4, 2024
3c95d94
chore: Close popups at the end of the test
jeromelaban Oct 4, 2024
7c449ac
chore: Adjust for uno only
jeromelaban Oct 4, 2024
099fd10
chore: Retry calendar open/close test
jeromelaban Oct 4, 2024
aaf54c6
chore: Adjust sample for winui
jeromelaban Oct 4, 2024
0d3e5f9
chore: Adjust button style
jeromelaban Oct 4, 2024
787a89e
chore: adjust button style
jeromelaban Oct 5, 2024
f625952
chore: Adjust test
jeromelaban Oct 5, 2024
06b8fc8
chore: Adjust for backport
jeromelaban Oct 5, 2024
8002015
chore: Adjust for backport
jeromelaban Oct 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build/ci/.azure-devops-android-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ jobs:

## First tests run (https://github.com/unoplatform/uno/issues/6714)
- bash: |
# always set execute bit, as git has a tendency to remove it
chmod +x $(build.sourcesdirectory)/build/test-scripts/android-uitest-run.sh
$(build.sourcesdirectory)/build/test-scripts/android-uitest-run.sh

displayName: Run Android Tests
Expand Down
10 changes: 7 additions & 3 deletions build/test-scripts/android-uitest-run.sh
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -231,15 +231,19 @@ else

cd $UNO_TESTS_LOCAL_TESTS_FILE

# Response file for testing to avoid the command line length limitation
# new parameters must include the ":" to separate parameter options
# the response file contains only the filters, in order to get proper stderr
echo "--filter:\"$UNO_TESTS_FILTER\"" > tests.rsp

## Run NUnit tests
dotnet test \
-c Release \
-l:"console;verbosity=normal" \
--logger "nunit;LogFileName=$UNO_ORIGINAL_TEST_RESULTS" \
--filter "$UNO_TESTS_FILTER" \
--blame-hang-timeout 120m \
-v m || true

-v m \
@tests.rsp || true
fi

## Dump the emulator's system log
Expand Down
2 changes: 1 addition & 1 deletion build/test-scripts/ios-uitest-run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ if [ ! -f "$UNO_ORIGINAL_TEST_RESULTS" ]; then
fi

echo "Copying crash reports"
cp -R ~/Library/Logs/DiagnosticReports/* $LOG_FILE_DIRECTORY
cp -R ~/Library/Logs/DiagnosticReports/* $LOG_FILE_DIRECTORY || true

pushd $BUILD_SOURCESDIRECTORY/src/Uno.NUnitTransformTool
mkdir -p $(dirname ${UNO_TESTS_FAILED_LIST})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media;
using Uno.UI.RuntimeTests.Tests.Windows_UI_Xaml;

// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238

Expand All @@ -16,6 +17,16 @@ public sealed partial class Flyout_ShowAt_Window_Content : Page
public Flyout_ShowAt_Window_Content()
{
this.InitializeComponent();

#if HAS_UNO
XamlRoot _xamlRoot = null;
Loaded += (s, e) => _xamlRoot = XamlRoot;
Unloaded += (s, e) =>
{
// close all popups at the end of the test.
VisualTreeHelper.CloseAllPopups(_xamlRoot);
};
#endif
}

private void ButtonButton_Click(object sender, RoutedEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -263,46 +263,50 @@ public async Task CanOpenCloseFlyoutBySettingIsCalendarOpen()
{
TestCleanupWrapper cleanup;

Grid rootPanel = null;
CalendarDatePickerHelper helper = new CalendarDatePickerHelper();
await helper.PrepareLoadedEvent();
Microsoft.UI.Xaml.Controls.CalendarDatePicker cp = await helper.GetCalendarDatePicker();
// This test may be unstable on iOS
await TestHelper.RetryAssert(async () =>
{
Grid rootPanel = null;
CalendarDatePickerHelper helper = new CalendarDatePickerHelper();
await helper.PrepareLoadedEvent();
Microsoft.UI.Xaml.Controls.CalendarDatePicker cp = await helper.GetCalendarDatePicker();

rootPanel = await CreateTestResources();
rootPanel = await CreateTestResources();

// load into visual tree
await RunOnUIThread(() =>
{
rootPanel.Children.Append(cp);
});
// load into visual tree
await RunOnUIThread(() =>
{
rootPanel.Children.Append(cp);
});

await helper.WaitForLoaded();
await helper.WaitForLoaded();

await TestServices.WindowHelper.WaitForIdle();
await TestServices.WindowHelper.WaitForIdle();

await helper.PrepareOpenedEvent();
await helper.PrepareOpenedEvent();

await RunOnUIThread(() =>
{
cp.IsCalendarOpen = true;
});
await helper.WaitForOpened();
await RunOnUIThread(() =>
{
cp.IsCalendarOpen = true;
});
await helper.WaitForOpened();

await helper.PrepareClosedEvent();
await helper.PrepareClosedEvent();

await RunOnUIThread(() =>
{
cp.IsCalendarOpen = false;
});
await RunOnUIThread(() =>
{
cp.IsCalendarOpen = false;
});

await helper.WaitForClosed();
await helper.WaitForClosed();

await RunOnUIThread(() =>
{
// disable CP to make sure input pane is not open during clean up.
cp.IsEnabled = false;
await RunOnUIThread(() =>
{
// disable CP to make sure input pane is not open during clean up.
cp.IsEnabled = false;
});
await TestServices.WindowHelper.WaitForIdle();
});
await TestServices.WindowHelper.WaitForIdle();
}

[TestMethod]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1364,13 +1364,18 @@ await RunOnUIThread(() =>
KeyboardHelper.Down(secondaryItemsPresenter);
await WindowHelper.WaitForIdle();

await RunOnUIThread(() =>
await TestHelper.RetryAssert(async () =>
{
var item = (AppBarButton)cmdBar.SecondaryCommands[0];
var transform = item.TransformToVisual(null);
var firstItemNewPosition = transform.TransformPoint(new Point(0, 0));
// This keyboard and animation driven, it may need a few retries to get the right position.

VERIFY_ARE_EQUAL(firstItemNewPosition, firstItemOriginalPosition);
await RunOnUIThread(() =>
{
var item = (AppBarButton)cmdBar.SecondaryCommands[0];
var transform = item.TransformToVisual(null);
var firstItemNewPosition = transform.TransformPoint(new Point(0, 0));

VERIFY_ARE_EQUAL(firstItemNewPosition, firstItemOriginalPosition);
});
});
}

Expand Down Expand Up @@ -3251,27 +3256,32 @@ await RunOnUIThread(() =>
VERIFY_ARE_EQUAL(primaryItemsControl.Visibility, Visibility.Collapsed);
});

LOG_OUTPUT("Now open and close the CommandBar.");
await OpenCommandBar(cmdBar, OpenMethod.Programmatic);
await CloseCommandBar(cmdBar);

await RunOnUIThread(() =>
// in some unknown conditions, the OpenCommandBar may not happen on android
// Retry a few times until it does.
await TestHelper.RetryAssert(async () =>
{
LOG_OUTPUT("The primary items control should still be collapsed.");
VERIFY_ARE_EQUAL(primaryItemsControl.Visibility, Visibility.Collapsed);
LOG_OUTPUT("Now open and close the CommandBar.");
await OpenCommandBar(cmdBar, OpenMethod.Programmatic);
await CloseCommandBar(cmdBar);

LOG_OUTPUT("Change the width of the CommandBar back to 600. The AppBarButton should be moved back from the overflow.");
expectItemsAdded = false;
cmdBar.Width = 600;
});
await RunOnUIThread(() =>
{
LOG_OUTPUT("The primary items control should still be collapsed.");
VERIFY_ARE_EQUAL(primaryItemsControl.Visibility, Visibility.Collapsed);

await dynamicOverflowItemsChangingEvent.WaitForDefault();
await WindowHelper.WaitForIdle();
LOG_OUTPUT("Change the width of the CommandBar back to 600. The AppBarButton should be moved back from the overflow.");
expectItemsAdded = false;
cmdBar.Width = 600;
});

await RunOnUIThread(() =>
{
LOG_OUTPUT("The primary items control should now be visible since the AppBarButton is back in it.");
VERIFY_ARE_EQUAL(primaryItemsControl.Visibility, Visibility.Visible);
await dynamicOverflowItemsChangingEvent.WaitForDefault();
await WindowHelper.WaitForIdle();

await RunOnUIThread(() =>
{
LOG_OUTPUT("The primary items control should now be visible since the AppBarButton is back in it.");
VERIFY_ARE_EQUAL(primaryItemsControl.Visibility, Visibility.Visible);
});
});
}

Expand Down Expand Up @@ -5226,7 +5236,11 @@ private async Task CloseCommandBar(CommandBar cmdBar)
var closedRegistration = CreateSafeEventRegistration<CommandBar, EventHandler<object>>("Closed");
closedRegistration.Attach(cmdBar, (s, e) => closedEvent.Set());

await RunOnUIThread(() => cmdBar.IsOpen = false);
await RunOnUIThread(() =>
{
Assert.IsTrue(cmdBar.IsOpen, "Command bar is not opened");
cmdBar.IsOpen = false;
});
await closedEvent.WaitForDefault();
await WindowHelper.WaitForIdle();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,14 @@ public async Task When_NavigateToString()
webView.NavigationCompleted += (s, e) => navigationDone = true;
webView.Source = uri;
Assert.IsNotNull(webView.Source);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 10000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 10000);
Assert.IsNotNull(webView.Source);
navigationStarting = false;
navigationDone = false;
webView.NavigateToString("<html></html>");
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 3000);
await TestServices.WindowHelper.WaitFor(() => navigationStarting, 10000);
await TestServices.WindowHelper.WaitFor(() => navigationDone, 10000);
Assert.AreEqual(new Uri("about:blank"), webView.Source);
}

Expand All @@ -106,24 +106,24 @@ public async Task When_GoBack()
Assert.IsFalse(webView.CanGoForward);

webView.NavigationCompleted += (sender, e) => navigated = true;
webView.CoreWebView2.Navigate("https://example.com/1");
await TestServices.WindowHelper.WaitFor(() => navigated, 3000);
webView.CoreWebView2.Navigate("https://uno-assets.platform.uno/tests/docs/WebView_NavigateToAnchor.html");
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CoreWebView2.CanGoForward);
Assert.IsFalse(webView.CanGoForward);

navigated = false;
webView.CoreWebView2.Navigate("https://example.com/2");
await TestServices.WindowHelper.WaitFor(() => navigated, 3000);
webView.CoreWebView2.Navigate("https://platform.uno");
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsTrue(webView.CoreWebView2.CanGoBack);
Assert.IsTrue(webView.CanGoBack);

navigated = false;
webView.GoBack();
await TestServices.WindowHelper.WaitFor(() => navigated, 3000);
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CoreWebView2.CanGoBack);
Assert.IsFalse(webView.CanGoBack);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -356,13 +356,20 @@ public async Task When_Image_Source_Nullify()
{
Width = 100,
Height = 100,
Source = new BitmapImage(new Uri("ms-appx:///Assets/square100.png")),
Stretch = Stretch.Fill
};

var imageOpened = false;
SUT.ImageOpened += (_, _) => imageOpened = true;

SUT.Source = new BitmapImage(new Uri("ms-appx:///Assets/square100.png"));

parent.Child = SUT;
WindowHelper.WindowContent = parent;
await WindowHelper.WaitForLoaded(parent);

await TestServices.WindowHelper.WaitFor(() => imageOpened, 3000);

var result = await TakeScreenshot(parent);

var sample = parent.GetRelativeCoords(SUT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,21 +141,21 @@ public async Task When_GoBack()
Assert.IsFalse(webView.CanGoForward);

webView.NavigationCompleted += (sender, e) => navigated = true;
webView.Navigate(new Uri("https://example.com/1"));
await TestServices.WindowHelper.WaitFor(() => navigated, 3000);
webView.Navigate(new Uri("https://uno-assets.platform.uno/tests/docs/WebView_NavigateToAnchor.html"));
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CanGoBack);
Assert.IsFalse(webView.CanGoForward);

navigated = false;
webView.Navigate(new Uri("https://example.com/2"));
await TestServices.WindowHelper.WaitFor(() => navigated, 3000);
webView.Navigate(new Uri("https://platform.uno"));
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsTrue(webView.CanGoBack);

navigated = false;
webView.GoBack();
await TestServices.WindowHelper.WaitFor(() => navigated, 3000);
await TestServices.WindowHelper.WaitFor(() => navigated, 10000);

Assert.IsFalse(webView.CanGoBack);
Assert.IsTrue(webView.CanGoForward);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,36 +80,40 @@ public async Task When_Stretch(Stretch stretch, bool useRectangle)
WindowHelper.WindowContent = SUT;
await WindowHelper.WaitForLoaded(SUT);

float BorderOffset =
// Retry is required because the brush even is not always raised
await TestHelper.RetryAssert(async () =>
{
float BorderOffset =
#if __SKIA__
useRectangle ? 4 : 7;
useRectangle ? 4 : 7;
#elif __IOS__
6;
6;
#else
3;
3;
#endif
float width = (float)SUT.Width, height = (float)SUT.Height;
float centerX = width / 2, centerY = height / 2;
var expectations = stretch switch
{
// All edges are red-ish
Stretch.Fill => (Top: Redish, Bottom: Redish, Left: Redish, Right: Redish),
// Top and bottom are red-ish. Left and right are yellow-ish
Stretch.UniformToFill => (Top: Redish, Bottom: Redish, Left: Yellowish, Right: Yellowish),
// Top and bottom are same as background. Left and right are red-ish
Stretch.Uniform => (Top: Transparent, Bottom: Transparent, Left: Redish, Right: Redish),
// Everything is green-ish
Stretch.None => (Top: Greenish, Bottom: Greenish, Left: Greenish, Right: Greenish),
float width = (float)SUT.Width, height = (float)SUT.Height;
float centerX = width / 2, centerY = height / 2;
var expectations = stretch switch
{
// All edges are red-ish
Stretch.Fill => (Top: Redish, Bottom: Redish, Left: Redish, Right: Redish),
// Top and bottom are red-ish. Left and right are yellow-ish
Stretch.UniformToFill => (Top: Redish, Bottom: Redish, Left: Yellowish, Right: Yellowish),
// Top and bottom are same as background. Left and right are red-ish
Stretch.Uniform => (Top: Transparent, Bottom: Transparent, Left: Redish, Right: Redish),
// Everything is green-ish
Stretch.None => (Top: Greenish, Bottom: Greenish, Left: Greenish, Right: Greenish),

_ => throw new ArgumentOutOfRangeException($"unexpected stretch: {stretch}"),
};
_ => throw new ArgumentOutOfRangeException($"unexpected stretch: {stretch}"),
};

var bitmap = await UITestHelper.ScreenShot(SUT);
var bitmap = await UITestHelper.ScreenShot(SUT);

ImageAssert.HasColorAt(bitmap, centerX, BorderOffset, expectations.Top, tolerance: 28);
ImageAssert.HasColorAt(bitmap, centerX, height - BorderOffset, expectations.Bottom, tolerance: 28);
ImageAssert.HasColorAt(bitmap, BorderOffset, centerY, expectations.Left, tolerance: 28);
ImageAssert.HasColorAt(bitmap, width - BorderOffset, centerY, expectations.Right, tolerance: 28);
ImageAssert.HasColorAt(bitmap, centerX, BorderOffset, expectations.Top, tolerance: 28);
ImageAssert.HasColorAt(bitmap, centerX, height - BorderOffset, expectations.Bottom, tolerance: 28);
ImageAssert.HasColorAt(bitmap, BorderOffset, centerY, expectations.Left, tolerance: 28);
ImageAssert.HasColorAt(bitmap, width - BorderOffset, centerY, expectations.Right, tolerance: 28);
}, 10);
}

#if __SKIA__
Expand Down
Loading
Loading