diff --git a/eng/pipelines/common/ui-tests.yml b/eng/pipelines/common/ui-tests.yml
index efdad1964c0c..7a24273f1897 100644
--- a/eng/pipelines/common/ui-tests.yml
+++ b/eng/pipelines/common/ui-tests.yml
@@ -253,15 +253,15 @@ stages:
platform: 'iOS'
artifactName: 'uitest-snapshot-results-ios-$(System.StageName)-$(System.JobName)-$(System.JobAttempt)'
- - stage: ios_ui_tests_mono_cv2
- displayName: iOS UITests Mono CollectionView2
+ - stage: ios_ui_tests_mono_cv1
+ displayName: iOS UITests Mono CollectionView1
dependsOn: build_ui_tests
jobs:
- ${{ each project in parameters.projects }}:
- ${{ if ne(project.ios, '') }}:
- ${{ each version in parameters.iosVersions }}:
- ${{ if not(containsValue(project.iosVersionsExclude, version)) }}:
- - job: CV2_ios_ui_tests_mono_${{ project.name }}_${{ replace(version, '.', '_') }}
+ - job: CV1_ios_ui_tests_mono_${{ project.name }}_${{ replace(version, '.', '_') }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }} # how long to run the job before automatically cancelling
workspace:
clean: all
@@ -288,24 +288,24 @@ stages:
runtimeVariant : "Mono"
testFilter: "CollectionView"
headless: ${{ parameters.headless }}
- testConfigurationArgs: "CollectionView2"
+ testConfigurationArgs: "CollectionView1"
skipProvisioning: ${{ parameters.skipProvisioning }}
- # Collect and publish iOS CV2 snapshot diffs
+ # Collect and publish iOS CV1 snapshot diffs
- template: ui-tests-collect-snapshot-diffs.yml
parameters:
- platform: 'iOS CV2'
+ platform: 'iOS CV1'
artifactName: 'uitest-snapshot-results-ios-cv2-$(System.StageName)-$(System.JobName)-$(System.JobAttempt)'
- - stage: ios_ui_tests_mono_carv2
- displayName: iOS UITests Mono CarouselView2
+ - stage: ios_ui_tests_mono_carv1
+ displayName: iOS UITests Mono CarouselView1
dependsOn: build_ui_tests
jobs:
- ${{ each project in parameters.projects }}:
- ${{ if ne(project.ios, '') }}:
- ${{ each version in parameters.iosVersions }}:
- ${{ if not(containsValue(project.iosVersionsExclude, version)) }}:
- - job: CARV2_ios_ui_tests_mono_${{ project.name }}_${{ replace(version, '.', '_') }}
+ - job: CARV1_ios_ui_tests_mono_${{ project.name }}_${{ replace(version, '.', '_') }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }} # how long to run the job before automatically cancelling
workspace:
clean: all
@@ -331,7 +331,7 @@ stages:
provisionatorChannel: ${{ parameters.provisionatorChannel }}
runtimeVariant : "Mono"
testFilter: "CarouselView"
- testConfigurationArgs: "CollectionView2"
+ testConfigurationArgs: "CollectionView1"
skipProvisioning: ${{ parameters.skipProvisioning }}
# Collect and publish iOS CARV2 snapshot diffs
diff --git a/src/Controls/tests/TestCases.HostApp/CollectionViewHostBuilderExtentions.cs b/src/Controls/tests/TestCases.HostApp/CollectionViewHostBuilderExtentions.cs
index ba9658748e67..f2359ca6b429 100644
--- a/src/Controls/tests/TestCases.HostApp/CollectionViewHostBuilderExtentions.cs
+++ b/src/Controls/tests/TestCases.HostApp/CollectionViewHostBuilderExtentions.cs
@@ -30,16 +30,17 @@ public static MauiAppBuilder ConfigureCollectionViewHandlers(this MauiAppBuilder
#if IOS || MACCATALYST
builder.ConfigureMauiHandlers(handlers =>
{
- bool cv2Handlers = false;
+ bool cv2Handlers = true;
foreach (var en in NSProcessInfo.ProcessInfo.Environment)
{
if ($"{en.Key}" == "TEST_CONFIGURATION_ARGS")
{
- cv2Handlers = $"{en.Value}".Contains("CollectionView2", StringComparison.OrdinalIgnoreCase);
+ // If TEST_CONFIGURATION_ARGS contains "CollectionView1", use legacy CV1 handlers
+ // Otherwise, use CV2 handlers (default)
+ cv2Handlers = !$"{en.Value}".Contains("CollectionView1", StringComparison.OrdinalIgnoreCase);
break;
}
}
-
if (cv2Handlers)
{
Console.WriteLine($"Using CollectionView2 handlers");
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml b/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml
index 463341e42fdd..831bc22e98fb 100644
--- a/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml
@@ -3,54 +3,69 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
Title="Issue 20294"
x:Class="Maui.Controls.Sample.Issues.Issue20294">
-
-
-
- ONE
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- asdf
- LAST
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ ONE
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ asdf
+ LAST
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml.cs
index c3b4e2d8c1e6..4c1faa4e0326 100644
--- a/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml.cs
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue20294.xaml.cs
@@ -7,5 +7,10 @@ public Issue20294()
{
InitializeComponent();
}
+
+ private void OnButtonClicked(object sender, EventArgs e)
+ {
+ collectionView.ScrollTo("LAST", position: ScrollToPosition.End, animate: true);
+ }
}
}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/ItemsWrapGridWithDefaultWidth.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/ItemsWrapGridWithDefaultWidth.png
index b61d692452a9..b0d9ccbb79c3 100644
Binary files a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/ItemsWrapGridWithDefaultWidth.png and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/ItemsWrapGridWithDefaultWidth.png differ
diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue20294.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue20294.cs
index bfa767b635c4..dcf5f87c73ca 100644
--- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue20294.cs
+++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue20294.cs
@@ -14,7 +14,8 @@ public Issue20294(TestDevice device) : base(device) { }
[Category(UITestCategories.CollectionView)]
public void ScrollToEndDoesntCrash()
{
- App.ScrollTo("FOOTER");
+ App.WaitForElement("ScrollToFooterButton");
+ App.Tap("ScrollToFooterButton");
App.ScrollUp("theCollectionView", ScrollStrategy.Gesture, 0.5);
App.ScrollDown("theCollectionView", ScrollStrategy.Gesture, 0.5);
App.ScrollDown("theCollectionView", ScrollStrategy.Gesture, 0.5);
diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue27229.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue27229.cs
index d629e23ce695..b0412f7c9bfa 100644
--- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue27229.cs
+++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue27229.cs
@@ -1,4 +1,5 @@
-#if TEST_FAILS_ON_ANDROID
+#if TEST_FAILS_ON_ANDROID && TEST_FAILS_ON_IOS && TEST_FAILS_ON_CATALYST
+//In iOS and Mac , https://github.com/dotnet/maui/issues/33201 takes large horizonal spacing on collectionView2.
// This test started failing on the safe area edges changes because the safe area edges changes
// cause a second measure pass which exposes a bug that already existed in CollectionView on Android.
// You can replicate this bug on NET10 by rotating the device and rotating back, and then you will see that the
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/RefreshView_SetShadowWithCollectionView_VerifyShadowApplied.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/RefreshView_SetShadowWithCollectionView_VerifyShadowApplied.png
index a471ed5e9512..4bb7eccd71c6 100644
Binary files a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/RefreshView_SetShadowWithCollectionView_VerifyShadowApplied.png and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/RefreshView_SetShadowWithCollectionView_VerifyShadowApplied.png differ