diff --git a/Microsoft.Maui-dev.sln b/Microsoft.Maui-dev.sln index b3ca986d71bb..173f67c0086d 100644 --- a/Microsoft.Maui-dev.sln +++ b/Microsoft.Maui-dev.sln @@ -179,8 +179,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Console EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Mac", "src\Graphics\samples\GraphicsTester.Skia.Mac\GraphicsTester.Skia.Mac.csproj", "{5E8D70F3-990D-4B40-8B13-AA818F21E8A0}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Tizen", "src\Graphics\samples\GraphicsTester.Skia.Tizen\GraphicsTester.Skia.Tizen.csproj", "{20756558-1284-42D6-AB7B-3E59DF8A6B34}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Windows", "src\Graphics\samples\GraphicsTester.Skia.Windows\GraphicsTester.Skia.Windows.csproj", "{8441FA70-9041-4727-91B9-2F39881CC0EE}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.WinUI.Desktop", "src\Graphics\samples\GraphicsTester.WinUI.Desktop\GraphicsTester.WinUI.Desktop.csproj", "{4BF0AF30-6E18-47D8-B90C-E99C1917BEF5}" @@ -499,10 +497,6 @@ Global {5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Debug|Any CPU.Build.0 = Debug|Any CPU {5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Release|Any CPU.ActiveCfg = Release|Any CPU {5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Release|Any CPU.Build.0 = Release|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Release|Any CPU.Build.0 = Release|Any CPU {8441FA70-9041-4727-91B9-2F39881CC0EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8441FA70-9041-4727-91B9-2F39881CC0EE}.Debug|Any CPU.Build.0 = Debug|Any CPU {8441FA70-9041-4727-91B9-2F39881CC0EE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -691,7 +685,6 @@ Global {546614BB-07AA-4E8E-B6AE-EBDC183C4DAB} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {EF6ACA06-D4DF-4C21-9F65-FBFEC6325094} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {5E8D70F3-990D-4B40-8B13-AA818F21E8A0} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} - {20756558-1284-42D6-AB7B-3E59DF8A6B34} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {8441FA70-9041-4727-91B9-2F39881CC0EE} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {4BF0AF30-6E18-47D8-B90C-E99C1917BEF5} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {AFD9D653-08C4-456C-AA1B-F5C9F621D655} = {42AB9AE1-631D-4AD4-85B7-910FF0940BDB} diff --git a/Microsoft.Maui-vscode.sln b/Microsoft.Maui-vscode.sln index 3b425e561726..43a7d780d85d 100644 --- a/Microsoft.Maui-vscode.sln +++ b/Microsoft.Maui-vscode.sln @@ -159,18 +159,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Android", "s EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.iOS", "src\Graphics\samples\GraphicsTester.iOS\GraphicsTester.iOS.csproj", "{0F1BC26B-5041-4D64-B533-2959287D8197}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Mac", "src\Graphics\samples\GraphicsTester.Mac\GraphicsTester.Mac.csproj", "{0A44978B-81FD-4565-9997-3E7218C66596}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.MacCatalyst", "src\Graphics\samples\GraphicsTester.MacCatalyst\GraphicsTester.MacCatalyst.csproj", "{B3DD0741-2EC3-4A54-82B7-73923DE4CF48}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Portable", "src\Graphics\samples\GraphicsTester.Portable\GraphicsTester.Portable.csproj", "{546614BB-07AA-4E8E-B6AE-EBDC183C4DAB}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Console", "src\Graphics\samples\GraphicsTester.Skia.Console\GraphicsTester.Skia.Console.csproj", "{EF6ACA06-D4DF-4C21-9F65-FBFEC6325094}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Mac", "src\Graphics\samples\GraphicsTester.Skia.Mac\GraphicsTester.Skia.Mac.csproj", "{5E8D70F3-990D-4B40-8B13-AA818F21E8A0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Tizen", "src\Graphics\samples\GraphicsTester.Skia.Tizen\GraphicsTester.Skia.Tizen.csproj", "{20756558-1284-42D6-AB7B-3E59DF8A6B34}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Graphics.Skia.GtkSharp", "src\Graphics\src\Graphics.Skia.GtkSharp\Graphics.Skia.GtkSharp.csproj", "{AFD9D653-08C4-456C-AA1B-F5C9F621D655}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Gtk", "src\Graphics\samples\GraphicsTester.Skia.Gtk\GraphicsTester.Skia.Gtk.csproj", "{F351A992-18E4-473C-8ADD-2BA0BAA7B5A2}" @@ -439,10 +433,6 @@ Global {0F1BC26B-5041-4D64-B533-2959287D8197}.Release|Any CPU.ActiveCfg = Release|Any CPU {0F1BC26B-5041-4D64-B533-2959287D8197}.Release|Any CPU.Build.0 = Release|Any CPU {0F1BC26B-5041-4D64-B533-2959287D8197}.Release|Any CPU.Deploy.0 = Release|Any CPU - {0A44978B-81FD-4565-9997-3E7218C66596}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0A44978B-81FD-4565-9997-3E7218C66596}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0A44978B-81FD-4565-9997-3E7218C66596}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0A44978B-81FD-4565-9997-3E7218C66596}.Release|Any CPU.Build.0 = Release|Any CPU {B3DD0741-2EC3-4A54-82B7-73923DE4CF48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B3DD0741-2EC3-4A54-82B7-73923DE4CF48}.Debug|Any CPU.Build.0 = Debug|Any CPU {B3DD0741-2EC3-4A54-82B7-73923DE4CF48}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -455,14 +445,6 @@ Global {EF6ACA06-D4DF-4C21-9F65-FBFEC6325094}.Debug|Any CPU.Build.0 = Debug|Any CPU {EF6ACA06-D4DF-4C21-9F65-FBFEC6325094}.Release|Any CPU.ActiveCfg = Release|Any CPU {EF6ACA06-D4DF-4C21-9F65-FBFEC6325094}.Release|Any CPU.Build.0 = Release|Any CPU - {5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Release|Any CPU.Build.0 = Release|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20756558-1284-42D6-AB7B-3E59DF8A6B34}.Release|Any CPU.Build.0 = Release|Any CPU {AFD9D653-08C4-456C-AA1B-F5C9F621D655}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AFD9D653-08C4-456C-AA1B-F5C9F621D655}.Debug|Any CPU.Build.0 = Debug|Any CPU {AFD9D653-08C4-456C-AA1B-F5C9F621D655}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -617,12 +599,9 @@ Global {56DF52FC-A48C-4757-8130-A412050CEBB8} = {936C47A9-A7EA-4FBD-8733-CED1D4100E69} {2B02595C-BB82-44F2-8FB7-423EF2DE3A73} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {0F1BC26B-5041-4D64-B533-2959287D8197} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} - {0A44978B-81FD-4565-9997-3E7218C66596} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {B3DD0741-2EC3-4A54-82B7-73923DE4CF48} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {546614BB-07AA-4E8E-B6AE-EBDC183C4DAB} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {EF6ACA06-D4DF-4C21-9F65-FBFEC6325094} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} - {5E8D70F3-990D-4B40-8B13-AA818F21E8A0} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} - {20756558-1284-42D6-AB7B-3E59DF8A6B34} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {AFD9D653-08C4-456C-AA1B-F5C9F621D655} = {42AB9AE1-631D-4AD4-85B7-910FF0940BDB} {F351A992-18E4-473C-8ADD-2BA0BAA7B5A2} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE} {F68932B0-81A2-4CC3-A4F7-28091EE91B23} = {25D0D27A-C5FE-443D-8B65-D6C987F4A80E} diff --git a/eng/pipelines/common/ui-tests.yml b/eng/pipelines/common/ui-tests.yml index dad7c0812772..ad5aaf536c7e 100644 --- a/eng/pipelines/common/ui-tests.yml +++ b/eng/pipelines/common/ui-tests.yml @@ -34,7 +34,7 @@ stages: - ${{ each api in parameters.androidApiLevels }}: - ${{ if not(containsValue(project.androidApiLevelsExclude, api)) }}: - job: android_ui_tests_${{ project.name }}_${{ api }} - timeoutInMinutes: 120 # how long to run the job before automatically cancelling + timeoutInMinutes: 240 # how long to run the job before automatically cancelling workspace: clean: all displayName: ${{ coalesce(project.desc, project.name) }} (API ${{ api }}) @@ -64,7 +64,7 @@ stages: - ${{ each version in parameters.iosVersions }}: - ${{ if not(containsValue(project.iosVersionsExclude, version)) }}: - job: ios_ui_tests_${{ project.name }}_${{ replace(version, '.', '_') }} - timeoutInMinutes: 120 # how long to run the job before automatically cancelling + timeoutInMinutes: 240 # how long to run the job before automatically cancelling workspace: clean: all displayName: ${{ coalesce(project.desc, project.name) }} (v${{ version }}) @@ -95,7 +95,7 @@ stages: - ${{ each project in parameters.projects }}: - ${{ if ne(project.winui, '') }}: - job: winui_ui_tests_${{ project.name }} - timeoutInMinutes: 120 # how long to run the job before automatically cancelling + timeoutInMinutes: 240 # how long to run the job before automatically cancelling workspace: clean: all displayName: ${{ coalesce(project.desc, project.name) }} @@ -118,7 +118,7 @@ stages: - ${{ each project in parameters.projects }}: - ${{ if ne(project.mac, '') }}: - job: mac_ui_tests_${{ project.name }} - timeoutInMinutes: 120 # how long to run the job before automatically cancelling + timeoutInMinutes: 240 # how long to run the job before automatically cancelling workspace: clean: all displayName: ${{ coalesce(project.desc, project.name) }} diff --git a/eng/pipelines/device-tests.yml b/eng/pipelines/device-tests.yml index 1f7a4fb1c1b6..708c1dad0444 100644 --- a/eng/pipelines/device-tests.yml +++ b/eng/pipelines/device-tests.yml @@ -149,8 +149,7 @@ stages: windowsPackageId: 'com.microsoft.maui.controls.devicetests' android: $(System.DefaultWorkingDirectory)/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj ios: $(System.DefaultWorkingDirectory)/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj - # Skip this one for Mac Catalyst for now, it's crashing - catalyst: #$(System.DefaultWorkingDirectory)/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj + catalyst: $(System.DefaultWorkingDirectory)/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj # Skip this one for Windows for now, it's crashing windows: #$(System.DefaultWorkingDirectory)/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj - name: blazorwebview diff --git a/src/Controls/samples/Controls.Sample.UITests/Elements/DoubleTapGallery.cs b/src/Controls/samples/Controls.Sample.UITests/Elements/DoubleTapGallery.cs index fbac1007585c..fa532917d67e 100644 --- a/src/Controls/samples/Controls.Sample.UITests/Elements/DoubleTapGallery.cs +++ b/src/Controls/samples/Controls.Sample.UITests/Elements/DoubleTapGallery.cs @@ -16,10 +16,12 @@ public DoubleTapGallery() { HeightRequest = 200, WidthRequest = 200, - BackgroundColor = Microsoft.Maui.Graphics.Colors.AliceBlue, - AutomationId = "DoubleTapSurface" + BackgroundColor = Microsoft.Maui.Graphics.Colors.AliceBlue }; + var dtLabel = new Label { Text = "DoubleTapSurface", AutomationId = "DoubleTapSurface" }; + tapSurface.Add(dtLabel); + var doubleTapRecognizer = new TapGestureRecognizer() { NumberOfTapsRequired = 2 }; doubleTapRecognizer.Tapped += (sender, args) => { result.Text = "Success"; }; diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue16787.cs b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue16787.cs new file mode 100644 index 000000000000..d1470218d46a --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue16787.cs @@ -0,0 +1,48 @@ +using Microsoft.Maui.Controls; + +namespace Maui.Controls.Sample.Issues +{ + [Issue(IssueTracker.Github, 16787, "CollectionView runtime binding errors when loading the ItemSource asynchronously", PlatformAffected.UWP)] + public class Issue16787 : TestContentPage + { + protected override void OnBindingContextChanged() + { + base.OnBindingContextChanged(); + } + protected override void Init() + { + var cv = new CollectionView(); + cv.BindingContextChanged += Cv_BindingContextChanged; + this.BindingContext = this; + cv.ItemTemplate = new DataTemplate(() => + { + int bindingContextChanges = 0; + var label = new Label(); + label.BindingContextChanged += (_, _) => + { + bindingContextChanges++; + label.Text = bindingContextChanges.ToString(); + }; + label.AutomationId = "LabelBindingCount"; + return label; + }); + + cv.ItemsSource = new[] { "random" }; + + + var layout = new VerticalStackLayout() + { + new Label() + { + Text = "The value below this label should be a 1. That's how many times the BindingContext has changed on the Templated element" + } + }; + + Content = cv; + } + + private void Cv_BindingContextChanged(object sender, System.EventArgs e) + { + } + } +} diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue17347.cs b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue17347.cs new file mode 100644 index 000000000000..fbf889f4e779 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue17347.cs @@ -0,0 +1,65 @@ +using System; +using Microsoft.Maui.Controls; + +namespace Maui.Controls.Sample.Issues +{ + [Issue(IssueTracker.Github, 17347, "Setting a new TitleView on an already created page crashes iOS", PlatformAffected.iOS)] + public class Issue17347 : TestContentPage + { + protected override void Init() + { + var navPage = new NavigationPage(new MainPage()); + NavigatedTo += Issue16499_NavigatedTo; + + async void Issue16499_NavigatedTo(object sender, NavigatedToEventArgs e) + { + NavigatedTo -= Issue16499_NavigatedTo; + + await Navigation.PushModalAsync(navPage); + await navPage.Navigation.PushAsync(new MainPage()); + await navPage.Navigation.PushAsync(new MainPage()); + await navPage.Navigation.PopAsync(); + await navPage.Navigation.PopAsync(); + } + } + + public partial class MainPage : ContentPage + { + Label TopView; + static int i = 0; + protected override void OnAppearing() + { + Content = new VerticalStackLayout() + { + new Button() + { + AutomationId = "PopMeButton", + Command = new Command(async () => + { + if (Navigation.NavigationStack.Count == 1) + await Navigation.PopModalAsync(); + else + await Navigation.PopAsync(); + }), + Text = "Click to Pop This Page If Needed" + } + }; + + var increment = $"{i++}"; + TopView = new() + { + AutomationId = "TitleViewLabel" + increment + }; + + TopView.SetBinding(Label.TextProperty, "AutomationId"); + TopView.BindingContext = TopView; + + TopView.WidthRequest = App.Current.Windows[0].Page.Width / 2; + NavigationPage.SetTitleView(this, TopView); + NavigationPage.SetHasNavigationBar(this, true); + NavigationPage.SetHasBackButton(this, false); + base.OnAppearing(); + } + } + } +} diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issues16561.xaml b/src/Controls/samples/Controls.Sample.UITests/Issues/Issues16561.xaml index 55693dc12e87..2c0ec975796d 100644 --- a/src/Controls/samples/Controls.Sample.UITests/Issues/Issues16561.xaml +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issues16561.xaml @@ -4,15 +4,14 @@ x:Class="Maui.Controls.Sample.Issues.Issue16561"> - -