-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[Testing] Feature matrix UITest Cases for IndicatorView Control #31156
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
[Testing] Feature matrix UITest Cases for IndicatorView Control #31156
Conversation
|
Hey there @@NafeelaNazhir! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed. |
There was a problem hiding this comment.
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 introduces comprehensive UI test coverage for the IndicatorView control by implementing feature matrix tests that validate various properties and behaviors. The implementation includes visual testing through screenshot verification and property validation through assertions.
Key changes:
- New test infrastructure for IndicatorView with 40 individual test cases covering all major properties
- Platform-specific test exclusions for known issues with proper issue tracking
- Interactive UI components for configuring IndicatorView properties during testing
Reviewed Changes
Copilot reviewed 7 out of 56 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
IndicatorViewFeatureTests.cs |
Main test file containing 40 test cases for IndicatorView properties with platform-specific exclusions |
IndicatorViewViewModel.cs |
ViewModel managing IndicatorView state and carousel data with property change notifications |
IndicatorViewOptionsPage.xaml.cs |
Code-behind for options configuration page with event handlers for property changes |
IndicatorViewOptionsPage.xaml |
XAML layout for interactive options configuration with proper AutomationIds |
IndicatorViewControlPage.xaml.cs |
Main control page code-behind with item management functionality |
IndicatorViewControlPage.xaml |
Main control page XAML with IndicatorView and CarouselView integration |
CorePageView.cs |
Registration of the new IndicatorView Feature Matrix in the gallery navigation |
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
| App.IncreaseStepper(IndicatorSizeStepper); | ||
| #else | ||
| App.WaitForElement(IndicatorSizeStepper); | ||
| App.IncreaseStepper(IndicatorSizeStepper); |
Copilot
AI
Aug 19, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The helper methods IncreasePositionStepper, DecreaseMaximumVisibleStepper, and IncreaseIndicatorSizeStepper contain duplicated platform-specific logic. Consider extracting this into a common method that accepts the stepper automation ID as a parameter.
| App.IncreaseStepper(IndicatorSizeStepper); | |
| ChangeStepper(PositionStepper, true); | |
| } | |
| public void DecreaseMaximumVisibleStepper() | |
| { | |
| ChangeStepper(MaximumVisibleStepper, false); | |
| } | |
| public void IncreaseIndicatorSizeStepper() | |
| { | |
| ChangeStepper(IndicatorSizeStepper, true); | |
| } | |
| private void ChangeStepper(string stepperAutomationId, bool increase) | |
| { | |
| #if WINDOWS | |
| if (increase) | |
| App.IncreaseStepper(stepperAutomationId); | |
| else | |
| App.DecreaseStepper(stepperAutomationId); | |
| #else | |
| App.WaitForElement(stepperAutomationId); | |
| if (increase) | |
| App.IncreaseStepper(stepperAutomationId); | |
| else | |
| App.DecreaseStepper(stepperAutomationId); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have updated the code based on your suggestions in the latest commit.
| public const string IndicatorSizeStepper = "IndicatorSizeStepper"; | ||
| public const string PositionStepper = "PositionStepper"; | ||
| public const string IconTemplateButton = "IconTemplateButton"; | ||
|
|
Copilot
AI
Aug 19, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] The large number of AutomationId constants at the top of the class creates maintenance overhead. Consider grouping these constants into a nested static class or using a constants file to improve organization.
| public static class AutomationIds | |
| { | |
| public const string Options = "Options"; | |
| public const string Apply = "Apply"; | |
| public const string IndicatorColorBrownButton = "IndicatorColorBrownButton"; | |
| public const string IndicatorColorGreenButton = "IndicatorColorGreenButton"; | |
| public const string SelectedIndicatorColorGrayButton = "SelectedIndicatorColorGrayButton"; | |
| public const string SelectedIndicatorColorOrangeButton = "SelectedIndicatorColorOrangeButton"; | |
| public const string SelectedIndicatorColorPurpleButton = "SelectedIndicatorColorPurpleButton"; | |
| public const string IndicatorShapeSquareRadioButton = "IndicatorShapeSquareRadioButton"; | |
| public const string HideSingleTrueRadioButton = "HideSingleTrueRadioButton"; | |
| public const string HideSingleFalseRadioButton = "HideSingleFalseRadioButton"; | |
| public const string FlowDirectionRightToLeftRadioButton = "FlowDirectionRTLRadioButton"; | |
| public const string IsEnabledFalseRadioButton = "IsEnabledFalseRadioButton"; | |
| public const string IsVisibleFalseRadioButton = "IsVisibleFalseRadioButton"; | |
| public const string PositionEntry = "PositionEntry"; | |
| public const string AddItemButton = "AddItemButton"; | |
| public const string RemoveItemButton = "RemoveItemButton"; | |
| public const string MaximumVisibleStepper = "MaximumVisibleStepper"; | |
| public const string ShadowTrueRadioButton = "ShadowTrueRadioButton"; | |
| public const string CountLabel = "CountLabel"; | |
| public const string PositionLabel = "PositionLabel"; | |
| public const string IndicatorSizeStepper = "IndicatorSizeStepper"; | |
| public const string PositionStepper = "PositionStepper"; | |
| public const string IconTemplateButton = "IconTemplateButton"; | |
| } |
...ontrols/tests/TestCases.HostApp/FeatureMatrix/IndicatorView/IndicatorViewOptionsPage.xaml.cs
Outdated
Show resolved
Hide resolved
…ew/IndicatorViewOptionsPage.xaml.cs Co-authored-by: Copilot <[email protected]>
|
/azp run MAUI-UITests-public |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run MAUI-UITests-public |
|
Azure Pipelines successfully started running 1 pipeline(s). |
* Added IndicatorView Feature tests * changes updated * Added images * changes updated * Update src/Controls/tests/TestCases.HostApp/FeatureMatrix/IndicatorView/IndicatorViewOptionsPage.xaml.cs Co-authored-by: Copilot <[email protected]> * Added base images --------- Co-authored-by: Copilot <[email protected]>
* Added IndicatorView Feature tests * changes updated * Added images * changes updated * Update src/Controls/tests/TestCases.HostApp/FeatureMatrix/IndicatorView/IndicatorViewOptionsPage.xaml.cs Co-authored-by: Copilot <[email protected]> * Added base images --------- Co-authored-by: Copilot <[email protected]>
This PR includes a comprehensive set of UI test cases for the IndicatorView control. The tests validate the IndicatorView control, including properties such as IndicatorColor, SelectedIndicatorColor, MaximumVisible, Count, Position, HideSingle, IsEnabled, IsVisible, FlowDirection, Shadow, IndicatorTemplate, IndicatorsShape and IndicatorSize
Issues Identified
Screen.Recording.2025-08-13.at.4.42.20.PM.mov