test: Migrate SamplesApp UI tests to runtime tests (batch 1) by MartinZikmund · Pull Request #23620 · unoplatform/uno · GitHub
Skip to content

test: Migrate SamplesApp UI tests to runtime tests (batch 1)#23620

Open
MartinZikmund wants to merge 8 commits into
feature/breakingchangesfrom
dev/mazi/ui-runtime-tests
Open

test: Migrate SamplesApp UI tests to runtime tests (batch 1)#23620
MartinZikmund wants to merge 8 commits into
feature/breakingchangesfrom
dev/mazi/ui-runtime-tests

Conversation

@MartinZikmund

Copy link
Copy Markdown
Member

GitHub Issue: Related to #9811 (first batch of an ongoing effort; does not fully close it)

PR Type:

💬 Other — 🧪 Test infrastructure: migrate SamplesApp.UITests (Selenium/Xamarin) into equivalent Uno runtime tests.

What changed? 🚀

The Selenium/Xamarin-based SamplesApp.UITests do not run on the Skia targets. This PR migrates the first tractable batch of them into equivalent runtime tests (Uno.UI.RuntimeTests), which run on Skia (Desktop + WASM), native, and WinUI.

For each UITest class/method we: (1) judged whether it's meaningful on Skia, (2) translated it to a runtime test if so, and (3) removed the original. Non-translatable tests are kept in place with a short explainer comment for manual review.

This batch:

  • 30 new runtime-test files added under src/Uno.UI.RuntimeTests/Tests/** (~114 test cases, all green on Skia Desktop / Win32).
  • 33 original UITest files removed (migrated or already-covered by existing runtime tests).
  • 5 UITest files kept with an explainer (not applicable to Skia): GyrometerTests (sensor returns null on Skia), TestFrameworkTests (tests the Xamarin UITest harness itself), Wasm/Given_CustomEvents (WASM DOM), BindableDrawerLayoutTests, and UnoSamples_Tests.XBind (its XBind_Validation half relies on x:Uid, not resolvable by the runtime query shim — its XBind_Functions half was migrated).

Translation approach (per test):

  • Reconstruct inline for simple, self-contained scenarios (build the controls directly, drive them, assert).
  • Load the real sample by name (SampleControlUITestBase.RunAsync) for elaborate sample/harness pages.
  • Real pointer taps via InputInjector (#if HAS_INPUT_INJECTOR || WINAPPSDK, gated off native heads with [PlatformCondition]).
  • Pixel checks via UITestHelper.ScreenShot + ImageAssert (gated #if !HAS_RENDER_TARGET_BITMAP [Ignore], i.e. skipped on WASM/Reference).
  • Where a UITest was [Ignore]d/flaky, we tried to enable it as a runtime test (the flakiness was often a Selenium/native/screenshot artifact) rather than blindly carrying the skip forward.

Each wave was built and run via the /runtime-tests skill (Skia Desktop) and committed only when green. This is a foundation batch; further batches (the larger TextBox/ListView/TreeView/Manipulation/input suites) will follow.

New runtime tests span: AutomationId, Control (disabled input suppression), x:Bind functions, ToggleSwitch header, RadioMenuFlyoutItem, VisualStateManager, StaticResource, ContentControl, InfoBar, CheckBox, RadioButton(s), Pivot, Popup (light-dismiss + placement), NumberBox, Enability, ResourceLoader, App.xaml global resources, FocusManager (direction + input), NativeButtons, SplitView, SolidColorBrush/LinearGradientBrush/Geometry/Path/Shapes.

PR Checklist ✅

🤖 Generated with Claude Code

https://claude.ai/code

MartinZikmund and others added 8 commits July 2, 2026 08:33
Ports the three SamplesApp.UITests RadioButton scenarios
(UnoSamples_Tests.RadioButton.cs) to Given_RadioButton runtime tests,
exercising the real pointer-tap path via InputInjector on Skia:
selection, disabled-tap gating, no-uncheck-on-retap, and state
preservation across IsEnabled toggling. Verified 3/3 green on Skia
Desktop. Original UITest removed; these did not run on Skia.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
Migrates the following SamplesApp.UITests to Uno.UI.RuntimeTests
(11 test cases, all green on Skia Desktop):
- AutomationId_Tests -> Given_AutomationId_UITest (load-sample; finds
  items by AutomationProperties.AutomationId since the shim's Marked
  matches Name only)
- Control_Tests -> Given_Control_UITest (inline; disabled subtree
  suppresses pointer input, via InputInjector)
- UnoSamples_Tests.XBind (XBind_Functions) -> Given_XBind_UITest
  (load-sample). XBind_Validation kept in the UITest with an explainer
  (sample uses x:Uid, not resolvable by the runtime query shim)
- UnoSamples_Tests.ToggleSwitch (Header) -> Given_ToggleSwitch_UITest
  (inline). TemplateReuse dropped: already covered by
  Given_FrameworkTemplatePool
- Given_RadioMenuFlyoutItem -> Given_RadioMenuFlyoutItem_UITest (inline;
  group selection semantics)
- VisualStateManagerTest -> Given_VisualStateManager_UITest (load-sample;
  complex setters + state-change events)

Produced via a produce-integrate migration workflow (subagents translate,
main thread integrates + builds + runs). Original UITests removed; they
did not run on Skia.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
- UnoSamples_Tests.StaticResource -> Given_StaticResource_UITest
  (load-sample; XAML/C#/converter StaticResource resolution, 3 DataRows,
  3/3 green on Skia Desktop)
- UnoSamples_RadioButton_Tests removed: already covered by
  Given_RadioButton.Pointer (RadioButton_IsEnabled_Automated scenarios)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
ContentControl, InfoBar, CheckBox, RadioButtons, Pivot UITests ported to
Uno.UI.RuntimeTests (13 test cases, all green on Skia Desktop). Mix of
inline reconstruction and load-sample; originals removed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
Popup light-dismiss + placement, NumberBox (+ Uno spin/validation), and
input Enability UITests ported to Uno.UI.RuntimeTests (57 test cases, all
green on Skia Desktop). Popups reconstructed inline (their child is
reparented under PopupRoot, out of WindowContent's subtree). Originals
removed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
ResourceLoader (x:Uid resw resolution), App.xaml global resources, and
FocusManager direction/input UITests ported to Uno.UI.RuntimeTests
(9 test cases, all green on Skia Desktop). GyrometerTests kept in place
with an explainer: Gyrometer.GetDefault() returns null on Skia, so there
is no sensor to exercise in a runtime test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
Migrated (3 test cases, green on Skia Desktop):
- UnoSamples_Test_NativeButtons -> Given_NativeButtons_UITest (native
  chrome is incidental; Click/Tapped/Command + IsEnabled gating
  reconstructed with default styling, previously Android-only test enabled)
- SplitViewTests -> Given_SplitView_UITest

Removed as already-covered:
- SystemNavigationManagerTests (Given_BackButtonIntegration.RequestBack)
- RoutedEventIsEnabled_Tests (Given_Enability_UITest hit-test suppression)

Kept with explainer (not Skia-applicable):
- TestFrameworkTests (tests the Xamarin UITest harness itself)
- Wasm/Given_CustomEvents (WASM DOM custom events)
- BindableDrawerLayoutTests

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
SolidColorBrush color mutation, LinearGradientBrush stops, Geometry,
Path, shape measurement, and shape ClearData UITests ported to
Uno.UI.RuntimeTests (15 test cases, all green on Skia Desktop). Pixel
checks via UITestHelper.ScreenShot + ImageAssert, gated with
#if !HAS_RENDER_TARGET_BITMAP [Ignore]. Rectangle_Rounding removed as
already-covered. Originals removed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015b87VRZp2F6bZcEjFCTmmz
Copilot AI review requested due to automatic review settings July 2, 2026 12:17
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot added platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform area/solution-templates Categorizes an issue or PR as relevant to the solution template area/skia ✏️ Categorizes an issue or PR as relevant to Skia area/code-generation Categorizes an issue or PR as relevant to code generation area/build Categorizes an issue or PR as relevant to build infrastructure area/automation Categorizes an issue or PR as relevant to project automation kind/documentation area/sdk Categorizes an issue or PR as relevant to the Uno.Sdk labels Jul 2, 2026
@MartinZikmund MartinZikmund changed the base branch from master to feature/breakingchanges July 2, 2026 12:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR is presented as the first batch of migrating SamplesApp.UITests (Selenium/Xamarin) to Uno.UI.RuntimeTests, but the diff also includes broad platform/renderer and API surface changes (including a major version bump), making it significantly wider in scope than “test infrastructure”.

Changes:

  • Bumps version.json to 7.0-dev.{height} and updates docs TOC to include “Upgrading to Uno 7.0”.
  • Removes or reduces many platform-specific (__WASM__, __ANDROID__, __APPLE_UIKIT__, XAMARIN) code paths and deletes multiple platform-specific source files across Uno.UI, templates, and add-ins.
  • Updates unit/runtime test types and infrastructure wiring (e.g., DependencyObjectFrameworkElement in several tests; minor runtime test refactors).

Reviewed changes

Copilot reviewed 69 out of 69 changed files in this pull request and generated no comments.

Show a summary per file
File Description
version.json Major version bump to 7.0-dev.{height}.
src/Uno.UI/Uno/TemplateManager.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Window/Window.wasm.cs Removes WASM-specific Window.Resize export.
src/Uno.UI/UI/Xaml/Window/Window.cs Removes platform-gated SetHost(this) call during initialization.
src/Uno.UI/UI/Xaml/Window/Window.Android.cs Removes Android-specific IsStatusBarTranslucent API.
src/Uno.UI/UI/Xaml/Window/Native/NativeWindowWrapperBase.cs Removes AppleUIKit-only abstract GetWindowSize.
src/Uno.UI/UI/Xaml/Window/Native/INativeWindowWrapper.cs Removes AppleUIKit-only GetWindowSize from the interface.
src/Uno.UI/UI/Xaml/Window/Implementations/BaseWindowImplementation.cs Narrows XamlRoot.InvalidateMeasure() trigger to __SKIA__.
src/Uno.UI/UI/Xaml/VisualStateManager.cs Removes WASM DOM visual-state assignment hook.
src/Uno.UI/UI/Xaml/VisualStateGroup.cs Removes AppleUIKit-only UIKit using.
src/Uno.UI/UI/Xaml/UIElement.FocusMixins.cs Removes Android-specific new modifier for IsFocused.
src/Uno.UI/UI/Xaml/SpecializedResourceDictionary.cs Simplifies 64-bit detection by removing WASM-specific check.
src/Uno.UI/UI/Xaml/SizeChangedEventHandler.cs Removes redundant platform-conditional _Size aliases.
src/Uno.UI/UI/Xaml/Shapes/SvgElement.wasm.cs Removes WASM SvgElement implementation.
src/Uno.UI/UI/Xaml/Shapes/Rectangle.cs Limits MeasureOverride override to __SKIA__.
src/Uno.UI/UI/Xaml/Shapes/Polyline.cs Removes WASM-only base tag constructor call.
src/Uno.UI/UI/Xaml/Shapes/Polygon.cs Removes WASM-only base tag constructor call.
src/Uno.UI/UI/Xaml/Shapes/Ellipse.cs Limits MeasureOverride override to __SKIA__.
src/Uno.UI/UI/Xaml/Shapes/Ellipse.Android.cs Removes Android-specific ArrangeOverride.
src/Uno.UI/UI/Xaml/RoutedEventHandler.cs Removes WASM-only RoutedEventHandlerWithHandled delegate.
src/Uno.UI/UI/Xaml/ResourceDictionary.cs Narrows theme-cache invalidation removal path to __SKIA__.
src/Uno.UI/UI/Xaml/Media/XamlCompositionBrushBase.Android.cs Removes Android-specific paint application override.
src/Uno.UI/UI/Xaml/Media/SolidColorBrush.cs Removes Android/iOS alias usings.
src/Uno.UI/UI/Xaml/Media/SolidColorBrush.Android.cs Removes Android-specific paint application override.
src/Uno.UI/UI/Xaml/Media/PathSegment.wasm.cs Removes WASM-only ToDataStream() default implementation.
src/Uno.UI/UI/Xaml/Media/LineSegment.wasm.cs Removes WASM-only SVG path serialization.
src/Uno.UI/UI/Xaml/Media/Imaging/SvgImageSource.provider.cs Limits SVG provider compilation to __SKIA__.
src/Uno.UI/UI/Xaml/Media/Imaging/SvgImageSource.cs Limits provider initialization to __SKIA__.
src/Uno.UI/UI/Xaml/Media/GradientBrush.wasm.cs Removes WASM-only CSS/SVG conversion API.
src/Uno.UI/UI/Xaml/Media/GradientBrush.Apple.cs Removes Apple-only CALayer API.
src/Uno.UI/UI/Xaml/Media/GradientBrush.Android.cs Removes Android-only shader API.
src/Uno.UI/UI/Xaml/Media/FillRuleExtensions.Apple.cs Removes Apple-only FillRule mapping.
src/Uno.UI/UI/Xaml/Media/Animation/Transition.cs Removes Android/iOS alias usings.
src/Uno.UI/UI/Xaml/Media/Animation/RepositionThemeAnimation.cs Shrinks [NotImplemented] condition to fewer targets.
src/Uno.UI/UI/Xaml/Media/Animation/NavigationThemeTransition.cs Shrinks [NotImplemented] condition to fewer targets.
src/Uno.UI/UI/Xaml/Media/Animation/ExponentialEase.Android.cs Removes Android-only stub.
src/Uno.UI/UI/Xaml/Media/Animation/ColorAnimationUsingKeyFrames.wasm.cs Removes WASM-only frame hook.
src/Uno.UI/UI/Xaml/Media/Animation/ColorAnimationUsingKeyFrames.Apple.cs Removes Apple-only frame hook.
src/Uno.UI/UI/Xaml/Media/AcrylicBrush/AcrylicBrush.cs Changes fallback default gating to __SKIA__ only.
src/Uno.UI/UI/Xaml/Markup/Reader/XamlObjectBuilder.cs Simplifies platform-specific _View aliasing.
src/Uno.UI/UI/Xaml/Internal/VisualTree.cs Removes AppleUIKit-only UIKit using.
src/Uno.UI/UI/Xaml/Input/KeyRoutedEventArgs.wasm.cs Removes WASM HTML-routed args handling.
src/Uno.UI/UI/Xaml/Input/Internal/UnoFocusInputHandler.cs Removes WASM-only tabindex setup on root element.
src/Uno.UI/UI/Xaml/ILayoutConstraints.cs Simplifies platform-specific _View aliasing.
src/Uno.UI/UI/Xaml/IFrameworkTemplateInternal.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/FrameworkTemplate.debugging.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/FrameworkTemplate.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/FrameworkElement.EffectiveViewport.cs Simplifies platform-specific _View aliasing.
src/Uno.UI/UI/Xaml/Extensions/ThicknessExtensions.Android.cs Removes empty Android-specific extension stub.
src/Uno.UI/UI/Xaml/Extensions/FontProperties.UIKit.cs Removes UIKit-only FontProperties record.
src/Uno.UI/UI/Xaml/ElementStub.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Documents/Underline.wasm.cs Removes WASM HTML-tag constructor.
src/Uno.UI/UI/Xaml/Documents/Underline.cs Makes Underline() constructor always present.
src/Uno.UI/UI/Xaml/Documents/TextElement.XamlRoot.cs Removes WASM-only new modifier for XamlRoot.
src/Uno.UI/UI/Xaml/Documents/Span.wasm.cs Removes WASM HTML-tag constructors/initialization.
src/Uno.UI/UI/Xaml/Documents/Span.cs Makes Span() constructor always present.
src/Uno.UI/UI/Xaml/Documents/Run.wasm.cs Removes WASM text update partial.
src/Uno.UI/UI/Xaml/Documents/Run.cs Removes WASM/Xamarin coercion callback on Run.Text.
src/Uno.UI/UI/Xaml/Documents/LineBreak.wasm.cs Removes WASM HTML-tag constructor.
src/Uno.UI/UI/Xaml/Documents/Inline.wasm.cs Removes WASM HTML-tag constructors.
src/Uno.UI/UI/Xaml/Documents/Inline.cs Narrows override gating to __NETSTD_REFERENCE__ only.
src/Uno.UI/UI/Xaml/DependencyPropertyDescriptor.cs Removes WASM interpreter workaround; always allows Type.GetType.
src/Uno.UI/UI/Xaml/DependencyProperty.Dictionary.NameToProperty.cs Simplifies platform-specific _View aliasing.
src/Uno.UI/UI/Xaml/DependencyProperty.cs Simplifies platform-specific _View aliasing.
src/Uno.UI/UI/Xaml/DataTemplate.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Data/TemplateBinding.cs Removes Xamarin-only IValueConverter alias block.
src/Uno.UI/UI/Xaml/ControlTemplate.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Controls/WebView/WebView1/WebView.Android.cs Removes Android-only clipping settings partial.
src/Uno.UI/UI/Xaml/Controls/WebView/Native/Android/NativeWebView.Android.cs Removes Android-specific native web view constructor.
src/Uno.UI/UI/Xaml/Controls/ViewBox/Viewbox.Properties.cs Removes AppleUIKit-only using.
src/Uno.UI/UI/Xaml/Controls/ToolTip/ToolTipService.cs Removes AppleUIKit-only using.
src/Uno.UI/UI/Xaml/Controls/ToggleSwitch/ToggleSwitch.cs Removes AppleUIKit-only using.
src/Uno.UI/UI/Xaml/Controls/ToggleSwitch/ToggleSwitch.Android.cs Removes Android-only OnLoadedPartial behavior.
src/Uno.UI/UI/Xaml/Controls/TimePicker/NativeTimePickerFlyoutPresenter.cs Removes Android/iOS-only flyout presenter.
src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.cs Removes AppleUIKit-only new event modifier for Paste.
src/Uno.UI/UI/Xaml/Controls/StackPanel/StackPanel.uno.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Controls/SplitButton/SplitButton.cs Removes Android-only new event modifier for Click.
src/Uno.UI/UI/Xaml/Controls/Slider/Slider.cs Removes AppleUIKit-only using block.
src/Uno.UI/UI/Xaml/Controls/ScrollViewer/ScrollViewer.focus.cs Enables focus-navigation logic on all platforms (removes wrapping #if).
src/Uno.UI/UI/Xaml/Controls/ScrollContentPresenter/IScrollContentPresenter.wasm.cs Removes WASM-only interface partial.
src/Uno.UI/UI/Xaml/Controls/Repeater/ItemsRepeater.Properties.cs Removes Android-only new modifier for Layout property.
src/Uno.UI/UI/Xaml/Controls/RelativePanel/RPNode.mux.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Controls/RelativePanel/RPNode.h.mux.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Controls/RelativePanel/RelativePanel.uno.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Controls/PullToRefresh/Native/NativeRefreshVisualizer.cs Removes Android/iOS native refresh visualizer partial.
src/Uno.UI/UI/Xaml/Controls/PullToRefresh/Native/NativeRefreshControl.iOS.cs Removes iOS native refresh control.
src/Uno.UI/UI/Xaml/Controls/ProgressRing/Legacy/ProgressRing.cs Removes native-style defaulting on Android/AppleUIKit.
src/Uno.UI/UI/Xaml/Controls/ProgressRing/Legacy/NativeProgressRing.UIKit.cs Removes UIKit native progress ring type.
src/Uno.UI/UI/Xaml/Controls/Primitives/SettingsFlyoutTemplateSettings.UIKit.cs Removes UIKit-only template settings stub.
src/Uno.UI/UI/Xaml/Controls/Primitives/PivotPanel.cs Removes AppleUIKit-only using.
src/Uno.UI/UI/Xaml/Controls/Pivot/Pivot.cs Narrows binding-workaround block to __SKIA__ only.
src/Uno.UI/UI/Xaml/Controls/Picker/PickerItem.UIKit.cs Removes UIKit-only PickerItem partial.
src/Uno.UI/UI/Xaml/Controls/PasswordBox/PasswordBox.wasm.cs Removes WASM-only reveal-state wiring.
src/Uno.UI/UI/Xaml/Controls/Page/Page.cs Removes AppleUIKit-only new modifier for Frame.
src/Uno.UI/UI/Xaml/Controls/NavigationView/NavigationViewItemBase.cs Narrows new Depth hiding condition (drops __WASM__).
src/Uno.UI/UI/Xaml/Controls/MediaPlayerElement/MediaPlayerPresenter.Others.cs Removes platform wrapping #if to compile on more targets.
src/Uno.UI/UI/Xaml/Controls/ListViewBase/VirtualizingPanelGenerator.managed.cs Removes Android/AppleUIKit layout alias switching.
src/Uno.UI/UI/Xaml/Controls/ListViewBase/ListViewBaseHeaderItem.Android.cs Removes Android-only header item partial.
src/Uno.UI/UI/Xaml/Controls/LayoutPanel/LayoutPanel.Properties.cs Removes Android-only new modifier for Layout.
src/Uno.UI/UI/Xaml/Controls/ItemsView/ItemsView.properties.cs Removes Android-only new modifier for Layout.
src/Uno.UI/UI/Xaml/Controls/ItemsStackPanel/ItemsStackPanel.NotImplemented.cs Broadens compilation by simplifying preprocessor condition.
src/Uno.UI/UI/Xaml/Controls/ItemsPanelTemplate.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Controls/ItemsControl/ItemsPresenter.iOSAndroid.cs Removes iOS/Android-only layout opt-out partial.
src/Uno.UI/UI/Xaml/Controls/ImageSourceHelper.cs Removes Xamarin-only overload.
src/Uno.UI/UI/Xaml/Controls/Image/Image.svg.cs Narrows SVG canvas field to __SKIA__.
src/Uno.UI/UI/Xaml/Controls/Image/Image.shared.cs Removes AppleUIKit-only new modifier for Description.
src/Uno.UI/UI/Xaml/Controls/IListView.cs Removes Xamarin-only ItemClickCommand.
src/Uno.UI/UI/Xaml/Controls/Icons/IconElement.cs Removes Android-only new modifier for Foreground.
src/Uno.UI/UI/Xaml/Controls/GroupStyle.cs Drops __WASM__ from [NotImplemented] gating.
src/Uno.UI/UI/Xaml/Controls/GridView/GridViewItem.UIKit.cs Removes UIKit GridViewItem partial.
src/Uno.UI/UI/Xaml/Controls/Grid/Grid.Properties.cs Simplifies platform-specific View aliasing.
src/Uno.UI/UI/Xaml/Controls/Grid/Grid.Panel.cs Removes Android/AppleUIKit-only GetChildren() helper.
src/Uno.UI/UI/Xaml/Controls/FlipView/NativeFlipView.UIKit.cs Removes UIKit native flip view type.
src/Uno.UI/UI/Xaml/Controls/FlipView/NativeFlipView.Android.cs Removes Android native flip view type.
src/Uno.UI/UI/Xaml/Controls/FlipView/FlipView.managed.uno.cs Narrows managed flip view compilation to __SKIA__.
src/Uno.UI/UI/Xaml/Controls/FlipView/FlipView.managed.cs Narrows managed flip view compilation to __SKIA__.
src/Uno.UI/UI/Xaml/Controls/DatePicker/DatePicker.cs Removes SUPPORTS_NATIVE_DATEPICKER define block.
src/Uno.UI/UI/Xaml/Controls/Control/Control.Layout.cs Removes Android/iOS alias usings.
src/Uno.UI/UI/Xaml/Controls/ContentDialog/ContentDialog.cs Removes WASM-only conditional around cancellation registration parameter.
src/Uno.UI/UI/Xaml/Controls/ComboBox/ComboBox.Properties.cs Removes AppleUIKit-only new modifier for Description.
src/Uno.UI/UI/Xaml/Controls/AutoSuggestBox/AutoSuggestBox.Properties.cs Removes AppleUIKit-only new modifier for Description.
src/Uno.UI/UI/Xaml/Controls/AppBar/AppBar.Partial.cs Removes native CommandBar preprocessor define.
src/Uno.UI/UI/Xaml/Automation/AutomationProperty.cs Adjusts [NotImplemented] gating (drops several platforms).
src/Uno.UI/UI/Xaml/Application.Interop.wasm.cs Removes JSImport interop partial.
src/Uno.UI/UI/ViewManagement/InputPane/InputPane.cs Removes AppleUIKit-only [NotImplemented] attribute from TryShow().
src/Uno.UI/UI/LayoutHelper.UIKit.cs Removes UIKit-only bounds helper extension.
src/Uno.UI/Hosting/UIKit/HostBuilder.UIKit.cs Removes public UseAppleUIKit host builder extension.
src/Uno.UI/Generated/3.0.0.0/WinRT.Interop/WindowNative.cs Updates generated preprocessor gating.
src/Uno.UI/Generated/3.0.0.0/WinRT.Interop/InitializeWithWindow.cs Updates generated preprocessor gating.
src/Uno.UI/Generated/3.0.0.0/Microsoft.Windows.ApplicationModel.Resources/MrtCoreContract.cs Updates generated preprocessor gating.
src/Uno.UI/Generated/3.0.0.0/Microsoft.Windows.ApplicationModel.Resources/IResourceManager.cs Updates generated preprocessor gating.
src/Uno.UI/Generated/3.0.0.0/Microsoft.Windows.ApplicationModel.Resources/IResourceContext.cs Updates generated preprocessor gating.
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI/Colors.cs Updates generated preprocessor gating.
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI/ColorHelper.cs Updates generated preprocessor gating.
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml/* Broad updates to generated stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Controls/* Broad updates to generated controls stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Input/* Broad updates to generated input stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Documents/* Broad updates to generated documents stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Data/* Broad updates to generated data stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Shapes/* Broad updates to generated shapes stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Navigation/* Broad updates to generated navigation stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Media/* Broad updates to generated media stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Media.Animation/* Broad updates to generated animation stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Markup/* Broad updates to generated markup stubs’ preprocessor gating (many files).
src/Uno.UI/Generated/3.0.0.0/Microsoft.UI.Xaml.Automation/* Broad updates to generated automation stubs’ preprocessor gating (many files).
src/Uno.UI/Extensions/UIImageExtensions.UIKit.cs Removes UIKit-only UIImage helper.
src/Uno.UI/Extensions/NSUrlExtensions.Apple.cs Removes Apple-only NSUrl-to-Uri helper.
src/Uno.UI/Extensions/EnumerableExtensions.cs Simplifies platform-specific _View aliasing.
src/Uno.UI/DebugHelper.Apple.cs Removes Apple-only native stack trace helper.
src/Uno.UI/DebugHelper.Android.cs Removes Android-only native stack trace helper.
src/Uno.UI/DataBinding/BindingPropertyHelper.cs Removes AppleUIKit-specific primitive checks (nfloat/nint/nuint).
src/Uno.UI/CurrentActivityChangedEventArgs.Android.cs Removes Android-only event args type.
src/Uno.UI/Controls/StyleSelectorCollection.UIKit.cs Removes UIKit-only style selector collection.
src/Uno.UI/Controls/StyleSelector2.UIKit.cs Removes UIKit-only style selector partial implementation.
src/Uno.UI/Controls/ISearchSuggestionsProvider.UIKit.cs Removes UIKit-only suggestions provider interface.
src/Uno.UI/Controls/IPresentable.UIKit.cs Removes empty UIKit-only interface.
src/Uno.UI/Controls/IFontScalable.Apple.cs Removes Apple-only font scaling interface.
src/Uno.UI.Wasm.Tests/ts/.gitignore Removes TS ignore entry.
src/Uno.UI.Wasm.Tests/README.md Removes README describing wasm test runner usage.
src/Uno.UI.UnitTests/DependencyProperty/Given_DependencyProperty.cs Updates mock type inheritance (DependencyObjectFrameworkElement).
src/Uno.UI.UnitTests/DependencyProperty/Given_DependencyObject.cs Updates nested type inheritance (DependencyObjectFrameworkElement).
src/Uno.UI.UnitTests/BinderTests/Given_Binder.TargetNullValue.cs Updates test control inheritance to FrameworkElement.
src/Uno.UI.UnitTests/BinderTests/Given_Binder.PocoBinding.cs Updates test object inheritance to FrameworkElement.
src/Uno.UI.UnitTests/BinderTests/Given_Binder.inpc.cs Updates test data inheritance to FrameworkElement.
src/Uno.UI.UnitTests/BinderTests/Given_Binder.Expando.cs Updates test control inheritance to FrameworkElement.
src/Uno.UI.UnitTests/BinderTests/Given_Binder.DynamicObject.cs Updates test control inheritance to FrameworkElement.
src/Uno.UI.UnitTests/BinderTests/Given_Binder.Converter.cs Updates test control inheritance to FrameworkElement.
src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_RadioButton.cs Makes test class partial (paired with pointer-specific partial).
src/Uno.UI.RuntimeTests/Tests/Uno_Helpers/Given_DependencyPropertyHelper.cs Uses FrameworkElement.DataContextProperty instead of UIElement.DataContextProperty.
src/Uno.UI.Runtime.WebAssembly/RuntimeAnchor.cs Removes WebAssembly runtime compile anchor.
src/Uno.UI.Runtime.WebAssembly/LinkerDefinition.xml Removes WebAssembly linker definition file.
src/Uno.UI.Runtime.WebAssembly/buildTransitive/Uno.WinUI.Runtime.WebAssembly.props Removes transitive props file.
src/Uno.UI.Runtime.WebAssembly/Builder/WebAssemblyHostBuilder.cs Removes WebAssembly host builder implementation.
src/Uno.UI.Runtime.WebAssembly/Builder/HostBuilder.cs Removes public UseWebAssembly host builder extension.
src/Uno.UI.Runtime.WebAssembly/AssemblyInfo.cs Removes WebAssembly assembly attributes/InternalsVisibleTo.
src/Uno.UI.Runtime.Skia.Android/ApplicationActivity.cs Always enables edge-to-edge.
src/Uno.UI.Composition/Generated/3.0.0.0/Microsoft.UI/IClosableNotifier.cs Updates generated preprocessor gating.
src/Uno.UI.Composition/Composition/Visual.wasm.cs Removes WASM-specific NativeOwner partial.
src/Uno.UI.Composition/Composition/Visual.Android.cs Removes Android-specific NativeOwner partial.
src/Uno.UI.Composition/Composition/Uno/ICompositionRoot.Android.cs Removes Android-specific composition root interface.
src/Uno.UI.Composition/Composition/ContainerVisual.UIKit.cs Removes UIKit-only ContainerVisual partial.
src/Uno.Sdk/UnoFeature.cs Removes NativeRenderer enum member; updates renderer feature semantics.
src/SolutionTemplate/UnoAppWinUILinuxValidation/UnoAppWinUILinuxValidation.Wasm/WasmScripts/AppManifest.js Removes WASM app manifest script.
src/SolutionTemplate/UnoAppWinUILinuxValidation/UnoAppWinUILinuxValidation.Server/appsettings*.json Removes server appsettings files.
src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Wasm/WasmScripts/AppManifest.js Removes WASM app manifest script.
src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Wasm/LinkerConfig.xml Removes linker config file.
src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Server/appsettings*.json Removes server appsettings files.
src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI-vsmac.slnf Removes WASM project from solution filter.
src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Class1.cs Removes WASM compile anchor usage.
src/SamplesApp/SamplesApp.Wasm/wwwroot/authentication/login-callback.htm Removes authentication callback HTML page.
src/SamplesApp/SamplesApp.Wasm/WasmScripts/AppManifest.js Removes WASM app manifest script.
src/SamplesApp/SamplesApp.UITests/TestFramework/TestFrameworkTests.cs Adds “not migrated” explainer comment.
src/SamplesApp/SamplesApp.Shared/App.xaml.cs Removes AppleUIKit-only feature flag overrides (DatePicker/TimePicker/CommandBar).
src/SamplesApp/SamplesApp.Shared/App.Tests.cs Removes Android ScrollViewer scrollbar fade delay override.
src/SamplesApp/SamplesApp.netcoremobile/MacCatalyst/Main.MacCatalyst.cs Removes AppleUIKit host builder entry point.
src/SamplesApp/SamplesApp.netcoremobile/iOS/Main.iOS.cs Removes AppleUIKit host builder entry point.
src/SamplesApp/SamplesApp.netcoremobile/Android/Resources/values/Strings.xml Removes Android resource strings file.
src/SamplesApp/SamplesApp.netcoremobile/Android/environment.conf Removes Android environment config.
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/tsconfig.json Removes MediaPlayer WASM TS build config.
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/HtmlVideo.cs Removes WASM HTML video element wrapper.
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/HtmlMediaPlayerState.cs Removes WASM HTML media state enum.
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/HtmlAudio.cs Removes WASM HTML audio element wrapper.
src/AddIns/Uno.UI.MediaPlayer.WebAssembly/FeatureConfiguration.cs Removes WASM MediaPlayer feature configuration.
doc/articles/toc.yml Adds “Upgrading to Uno 7.0” entry.
doc/articles/controls/WebView.md Removes note about obsolete iOS-only alias property.
build/cSpell.json Adds bidi to spelling dictionary.
build/ci/tests/.azure-devops-tests-linux-skia.yml Updates CI condition variable reference for screenshot gating.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Value = 0,
};

await UITestHelper.Load(numberBox);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All seven test methods in this file call UITestHelper.Load() but none wrap the body in a try/finally { WindowHelper.WindowContent = null; } block. Per the runtime-tests rule, cleanup must be in finally (not just at the end of the happy path), otherwise a failing assertion leaves stale window content for every subsequent test in the run.

Suggested change
await UITestHelper.Load(numberBox);
await UITestHelper.Load(numberBox);
try
{

(Each test needs a matching finally { WindowHelper.WindowContent = null; }.)

var rb2 = new RadioButton { Content = "RadioButton 2" };
var panel = new StackPanel { Children = { rb1, rb2 } };

await UITestHelper.Load(panel);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same missing try/finally cleanup pattern: all three test methods in this file call UITestHelper.Load(panel) but never reset WindowHelper.WindowContent = null. Add a try/finally around each test body so a failed assertion doesn't leave stale content for the next test.

Suggested change
await UITestHelper.Load(panel);
await UITestHelper.Load(panel);
try
{

(Each test needs a matching finally { WindowContent = null; }.)

/// ContentControl content-template rendering and toggling by loading the real sample pages.
/// The samples self-initialize (DataContext / template are set in their constructors), so
/// RunAsync (which only calls the parameterless ctor) is sufficient — no ViewModel wiring needed.
/// </summary>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multi-line XML doc comment on the class violates the code-style rule: "Never write multi-paragraph docstrings or multi-line comment blocks — one short line max." Convert to a single-line // comment or drop the block entirely (the test method names already communicate intent).

Suggested change
/// </summary>
// Migrated from SamplesApp.UITests: ContentPresenter/ContentControl template rendering via RunAsync.

/// Migrated from SamplesApp.UITests AutomationId_Tests: verifies that a bound
/// AutomationProperties.AutomationId flows onto ListView item containers and that
/// selecting an item updates the bound result text.
/// </summary>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multi-line XML doc comment on the class violates the code-style rule: "Never write multi-paragraph docstrings or multi-line comment blocks — one short line max." The same information fits in a single // line above the class declaration.

Suggested change
/// </summary>
// Migrated from SamplesApp.UITests AutomationId_Tests: bound AutomationId on ListView item containers.

=> (DataTemplate)XamlReader.Load(
$"<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">{inner}</DataTemplate>");

public class MyCustomPivotItem

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MyCustomPivotItem is a test-local helper but is declared public. Nested types used only within the test class should be private to avoid polluting the namespace. Same for the implicit public on Title and Content — and neither property has a nullable annotation despite consuming code using nullable flow (the file has no #nullable enable).

Suggested change
public class MyCustomPivotItem
private class MyCustomPivotItem
{
public string Title { get; set; } = "";
public string Content { get; set; } = "";
}

// Matches SamplesApp.UITests Path_Tests.Test_FillRule / PathTestsControl.Path_FillRule sample:
// a self-intersecting outline with an inner "hole" figure, rendered with EvenOdd vs. Nonzero
// fill rules, expressed via the three ways Path.Data can be authored.
public enum DataStyle

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DataStyle is a test-local helper enum but is declared public. It is only ever used within this test class; declare it private (or at minimum internal) to keep the namespace clean.

Suggested change
public enum DataStyle
private enum DataStyle

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23620/wasm-skia-net9/index.html

@nventive-devops

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/automation Categorizes an issue or PR as relevant to project automation area/build Categorizes an issue or PR as relevant to build infrastructure area/code-generation Categorizes an issue or PR as relevant to code generation area/sdk Categorizes an issue or PR as relevant to the Uno.Sdk area/skia ✏️ Categorizes an issue or PR as relevant to Skia area/solution-templates Categorizes an issue or PR as relevant to the solution template kind/documentation platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants