From c04b7d79ccfccb71fd6a4fea5abd5758595ad660 Mon Sep 17 00:00:00 2001 From: kubaflo Date: Fri, 26 Jan 2024 01:21:44 +0100 Subject: [PATCH 1/6] Fixed android toolbar icon change (#19673) --- .../src/Core/Platform/Android/Extensions/ToolbarExtensions.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs b/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs index 734304b4c29e..8c037a808b0e 100644 --- a/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs +++ b/src/Controls/src/Core/Platform/Android/Extensions/ToolbarExtensions.cs @@ -320,6 +320,7 @@ static void UpdateMenuItem(AToolbar toolbar, return; menuitem.SetTitle(newTitle); + menuitem.SetIcon(null); } menuitem.SetEnabled(item.IsEnabled); From b424b649944db057befb6dfd8b8c103ab7382234 Mon Sep 17 00:00:00 2001 From: "javiersuarezruiz@hotmail.com" Date: Fri, 26 Jan 2024 12:22:05 +0100 Subject: [PATCH 2/6] Added test sample --- .../Issues/Issue19673.xaml | 14 +++++++++++ .../Issues/Issue19673.xaml.cs | 15 ++++++++++++ .../Issues/Issue19673Page1.xaml | 12 ++++++++++ .../Issues/Issue19673Page1.xaml.cs | 11 +++++++++ .../Issues/Issue19673Page2.xaml | 23 +++++++++++++++++++ .../Issues/Issue19673Page2.xaml.cs | 16 +++++++++++++ .../Issues/Issue19673Page3.xaml | 12 ++++++++++ 7 files changed, 103 insertions(+) create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml new file mode 100644 index 000000000000..82302dc97a28 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml.cs b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml.cs new file mode 100644 index 000000000000..dc47e8fff206 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673.xaml.cs @@ -0,0 +1,15 @@ +using Microsoft.Maui.Controls; +using Microsoft.Maui.Controls.Xaml; + +namespace Maui.Controls.Sample.Issues +{ + [XamlCompilation(XamlCompilationOptions.Compile)] + [Issue(IssueTracker.Github, 19673, "ToolbarItem icon/image doesn't update on page navigation on Android", PlatformAffected.Android, NavigationBehavior.PushAsync)] + public partial class Issue19673 : TabbedPage + { + public Issue19673() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml new file mode 100644 index 000000000000..0655ad3933bc --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml.cs b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml.cs new file mode 100644 index 000000000000..a690ce2d4bce --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page1.xaml.cs @@ -0,0 +1,11 @@ +using Microsoft.Maui.Controls; + +namespace Maui.Controls.Sample.Issues; + +public partial class Issue19673Page1 : ContentPage +{ + public Issue19673Page1() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml new file mode 100644 index 000000000000..153917b6e95f --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml.cs b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml.cs new file mode 100644 index 000000000000..2206aa5b6469 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page2.xaml.cs @@ -0,0 +1,16 @@ +using Microsoft.Maui.Controls; + +namespace Maui.Controls.Sample.Issues; + +public partial class Issue19673Page2 : ContentPage +{ + public Issue19673Page2() + { + InitializeComponent(); + } + + void OnToolbarItemClicked(object sender, System.EventArgs e) + { + LabelResult.Text = "Success"; + } +} \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml new file mode 100644 index 000000000000..e1af4fba9768 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file From 9ac046fcfc1173c93419bf4760c2136ce95fb840 Mon Sep 17 00:00:00 2001 From: "javiersuarezruiz@hotmail.com" Date: Fri, 26 Jan 2024 12:22:14 +0100 Subject: [PATCH 3/6] More files --- .../Issues/Issue19673Page3.xaml.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml.cs diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml.cs b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml.cs new file mode 100644 index 000000000000..5cb770f8b6b0 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19673Page3.xaml.cs @@ -0,0 +1,11 @@ +using Microsoft.Maui.Controls; + +namespace Maui.Controls.Sample.Issues; + +public partial class Issue19673Page3 : ContentPage +{ + public Issue19673Page3() + { + InitializeComponent(); + } +} \ No newline at end of file From 5627d38639c73334f0f95ffd04e719fb82fa73ad Mon Sep 17 00:00:00 2001 From: "javiersuarezruiz@hotmail.com" Date: Fri, 26 Jan 2024 12:30:03 +0100 Subject: [PATCH 4/6] Added UI Test --- .../tests/UITests/Tests/Issues/Issue19673.cs | 27 ++++++++++++++++++ .../android/ToolbarItemUpdateOnNavigation.png | Bin 0 -> 26100 bytes .../Actions/AppiumScrollActions.cs | 24 ++++++++-------- .../Actions/AppiumSwipeActions.cs | 4 +-- 4 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 src/Controls/tests/UITests/Tests/Issues/Issue19673.cs create mode 100644 src/Controls/tests/UITests/snapshots/android/ToolbarItemUpdateOnNavigation.png diff --git a/src/Controls/tests/UITests/Tests/Issues/Issue19673.cs b/src/Controls/tests/UITests/Tests/Issues/Issue19673.cs new file mode 100644 index 000000000000..9fe239e807f3 --- /dev/null +++ b/src/Controls/tests/UITests/Tests/Issues/Issue19673.cs @@ -0,0 +1,27 @@ +using Microsoft.Maui.AppiumTests; +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Controls.AppiumTests.Tests.Issues +{ + public class Issue19673 : _IssuesUITest + { + public Issue19673(TestDevice device) : base(device) { } + + public override string Issue => "ToolbarItem icon/image doesn't update on page navigation on Android"; + + [Test] + public void ToolbarItemUpdateOnNavigation() + { + this.IgnoreIfPlatforms(new TestDevice[] { TestDevice.iOS, TestDevice.Mac, TestDevice.Windows }); + + // 1. Swipe to second page. + App.WaitForElement("Page1"); + App.SwipeRightToLeft("Page1"); + + // 2. Verify that the ToolbarItem is rendered. + VerifyScreenshot(); + } + } +} \ No newline at end of file diff --git a/src/Controls/tests/UITests/snapshots/android/ToolbarItemUpdateOnNavigation.png b/src/Controls/tests/UITests/snapshots/android/ToolbarItemUpdateOnNavigation.png new file mode 100644 index 0000000000000000000000000000000000000000..322528fee860dd0042f4379580a417d55b737c93 GIT binary patch literal 26100 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 literal 0 HcmV?d00001 diff --git a/src/TestUtils/src/UITest.Appium/Actions/AppiumScrollActions.cs b/src/TestUtils/src/UITest.Appium/Actions/AppiumScrollActions.cs index 7285558bd2ef..f5c4757fa9a4 100644 --- a/src/TestUtils/src/UITest.Appium/Actions/AppiumScrollActions.cs +++ b/src/TestUtils/src/UITest.Appium/Actions/AppiumScrollActions.cs @@ -143,10 +143,10 @@ CommandResponse ScrollUp(IDictionary parameters) static void ScrollToLeft(AppiumDriver driver, AppiumElement element, ScrollStrategy strategy, double swipePercentage, int swipeSpeed, bool withInertia = true) { - var position = element is not null ? element.Location : System.Drawing.Point.Empty; - var size = element is not null ? element.Size : driver.Manage().Window.Size; + var position = element is not null ? element.Location : System.Drawing.Point.Empty; + var size = element is not null ? element.Size : driver.Manage().Window.Size; - int startX = (int)(position.X + (size.Width * 0.05)); + int startX = (int)(position.X + (size.Width * 0.05)); int startY = position.Y + size.Height / 2; int endX = (int)(position.X + (size.Width * swipePercentage)); @@ -164,10 +164,10 @@ static void ScrollToLeft(AppiumDriver driver, AppiumElement element, ScrollStrat static void ScrollToDown(AppiumDriver driver, AppiumElement element, ScrollStrategy strategy, double swipePercentage, int swipeSpeed, bool withInertia = true) { - var position = element is not null ? element.Location : System.Drawing.Point.Empty; - var size = element is not null ? element.Size : driver.Manage().Window.Size; + var position = element is not null ? element.Location : System.Drawing.Point.Empty; + var size = element is not null ? element.Size : driver.Manage().Window.Size; - int startX = position.X + size.Width / 2; + int startX = position.X + size.Width / 2; int startY = (int)(position.Y + (size.Height * swipePercentage)); int endX = startX; @@ -185,10 +185,10 @@ static void ScrollToDown(AppiumDriver driver, AppiumElement element, ScrollStrat static void ScrollToRight(AppiumDriver driver, AppiumElement element, ScrollStrategy strategy, double swipePercentage, int swipeSpeed, bool withInertia = true) { - var position = element is not null ? element.Location : System.Drawing.Point.Empty; - var size = element is not null ? element.Size : driver.Manage().Window.Size; + var position = element is not null ? element.Location : System.Drawing.Point.Empty; + var size = element is not null ? element.Size : driver.Manage().Window.Size; - int startX = (int)(position.X + (size.Width * swipePercentage)); + int startX = (int)(position.X + (size.Width * swipePercentage)); int startY = position.Y + size.Height / 2; int endX = (int)(position.X + (size.Width * 0.05)); @@ -206,10 +206,10 @@ static void ScrollToRight(AppiumDriver driver, AppiumElement element, ScrollStra static void ScrollToUp(AppiumDriver driver, AppiumElement element, ScrollStrategy strategy, double swipePercentage, int swipeSpeed, bool withInertia = true) { - var position = element is not null ? element.Location : System.Drawing.Point.Empty; - var size = element is not null ? element.Size : driver.Manage().Window.Size; + var position = element is not null ? element.Location : System.Drawing.Point.Empty; + var size = element is not null ? element.Size : driver.Manage().Window.Size; - int startX = position.X + size.Width / 2; + int startX = position.X + size.Width / 2; int startY = (int)(position.Y + (size.Height * 0.05)); int endX = startX; diff --git a/src/TestUtils/src/UITest.Appium/Actions/AppiumSwipeActions.cs b/src/TestUtils/src/UITest.Appium/Actions/AppiumSwipeActions.cs index cc3dd218a388..2ee05d18d26d 100644 --- a/src/TestUtils/src/UITest.Appium/Actions/AppiumSwipeActions.cs +++ b/src/TestUtils/src/UITest.Appium/Actions/AppiumSwipeActions.cs @@ -44,7 +44,7 @@ CommandResponse SwipeLeftToRight(IDictionary parameters) parameters.TryGetValue("element", out var value); var element = GetAppiumElement(value); - double swipePercentage = (double)parameters["swipePercentage"]; + double swipePercentage = (double)parameters["swipePercentage"]; int swipeSpeed = (int)parameters["swipeSpeed"]; bool withInertia = (bool)parameters["withInertia"]; @@ -58,7 +58,7 @@ CommandResponse SwipeRightToLeft(IDictionary parameters) parameters.TryGetValue("element", out var value); var element = GetAppiumElement(value); - double swipePercentage = (double)parameters["swipePercentage"]; + double swipePercentage = (double)parameters["swipePercentage"]; int swipeSpeed = (int)parameters["swipeSpeed"]; bool withInertia = (bool)parameters["withInertia"]; From cb02b5b8eacff65ff01c5be459e3e0827745d166 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Sun, 28 Apr 2024 01:39:18 +0200 Subject: [PATCH 5/6] Added a UI test (#19950) --- .../Issues/Issue19950.xaml | 29 ++++++++++++++ .../Issues/Issue19950.xaml.cs | 38 +++++++++++++++++++ .../tests/UITests/Tests/Issues/Issue19950.cs | 37 ++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19950.xaml create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19950.xaml.cs create mode 100644 src/Controls/tests/UITests/Tests/Issues/Issue19950.cs diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19950.xaml b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19950.xaml new file mode 100644 index 000000000000..4abcd6a1be7e --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19950.xaml @@ -0,0 +1,29 @@ + + + + + + + + + +