Skip to content

Defect fixes of Mobile Accessibility Analyzer#4235

Merged
Maheshkale447 merged 3 commits into
Releases/Betafrom
BugFix/MobileAnalyzer
Jun 20, 2025
Merged

Defect fixes of Mobile Accessibility Analyzer#4235
Maheshkale447 merged 3 commits into
Releases/Betafrom
BugFix/MobileAnalyzer

Conversation

@AmanPrasad43

@AmanPrasad43 AmanPrasad43 commented Jun 19, 2025

Copy link
Copy Markdown
Contributor

Thank you for your contribution.
Before submitting this PR, please make sure:

  • PR description and commit message should describe the changes done in this PR
  • Verify the PR is pointing to correct branch i.e. Release or Beta branch if the code fix is for specific release , else point it to master
  • Latest Code from master or specific release branch is merged to your branch
  • No unwanted\commented\junk code is included
  • No new warning upon build solution
  • Code Summary\Comments are added to my code which explains what my code is doing
  • Existing unit test cases are passed
  • New Unit tests are added for your development
  • Sanity Tests are successfully executed for New and Existing Functionality
  • Verify that changes are compatible with all relevant browsers and platforms.
  • After creating pull request there should not be any conflicts
  • Resolve all Codacy comments
  • Builds and checks are passed before PR is sent for review
  • Resolve code review comments
  • Update the Help Library document to match any feature changes

Summary by CodeRabbit

  • New Features

    • Added new filtering options for accessibility rules, allowing users to filter by tags or rule IDs within mobile accessibility testing.
    • Accessibility reports now include embedded screenshots for enhanced context.
  • Improvements

    • Enhanced accessibility rule filtering logic for more precise and flexible analysis.
    • Improved result reporting, including clearer status and error messages based on filtered severity levels.
    • Added error handling to prevent element-level mobile accessibility analysis, guiding users to select page-level analysis instead.
    • Refined biometrics simulation logic and device unlock handling for better stability.
  • Bug Fixes

    • Improved error handling and status updates during accessibility analysis.

@coderabbitai

coderabbitai Bot commented Jun 19, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

The changes refactor accessibility rule filtering by switching from ObservableList to ObservableCollection, introduce new extension methods for rule filtering and tag normalization, and enhance the mobile accessibility analyzer to handle screenshots and severity-based result reporting. The update also modifies method signatures and error handling, while embedding screenshots in generated accessibility reports. Additional improvements include better error handling for unsupported element-level mobile accessibility tests and refactoring biometrics and device unlock logic in the mobile driver.

Changes

File(s) Change Summary
.../ActionsLib/UI/Web/ActAccessibilityTesting.cs Refactored rule filtering logic, switched to ObservableCollection, updated analyzer method signatures, improved error handling, added screenshot context handling, and centralized tag normalization.
.../Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityAnalyzer.cs Updated to use ObservableCollection, extended analyzer/reporting methods for screenshot embedding and severity filtering, added method to set accessibility results to action.
.../Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityRuleDataExtensions.cs Added new static class with extension methods (WithTags, NormalizeTagNames) for filtering and normalizing accessibility rules.
.../Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs Added error handling for unsupported element-level mobile accessibility testing, refactored biometrics simulation logic, improved Android unlock logic with lock state check, and minor formatting changes.

Sequence Diagram(s)

sequenceDiagram
    participant UI
    participant ActAccessibilityTesting
    participant MobileAccessibilityAnalyzer
    participant ReportGenerator

    UI->>ActAccessibilityTesting: Trigger AnalyzerMobileAccessibility(driver, context, element)
    ActAccessibilityTesting->>MobileAccessibilityAnalyzer: AnalyzerMobileAccessibility(driver, context, element, screenshot)
    MobileAccessibilityAnalyzer->>MobileAccessibilityAnalyzer: Analyze rules, filter by severity/tags
    MobileAccessibilityAnalyzer->>ReportGenerator: CreateMobileAccessibilityHtmlReport(issues, screenshot)
    ReportGenerator-->>MobileAccessibilityAnalyzer: HTML Report
    MobileAccessibilityAnalyzer->>ActAccessibilityTesting: SetMobileAccessibilityResultToAction(issues, currentAct)
    ActAccessibilityTesting-->>UI: Status, error message, report
Loading

Possibly related PRs

  • Ginger-Automation/Ginger#4231: Refactors and extends accessibility testing logic in ActAccessibilityTesting.cs to support both Web and Mobile platforms, directly related to rule filtering and analyzer enhancements.
  • Ginger-Automation/Ginger#3851: Modifies accessibility rule handling and filtering logic within the accessibility testing framework, related to rule activation/exclusion and configuration for analysis.

Suggested reviewers

  • Maheshkale447

Poem

In fields of code, where carrots grow,
A bunny hops where rules now flow.
With tags and screenshots, clear and bright,
Accessibility checks now work just right!
Refactored lists, extension flair—
The mobile world gets thorough care.
🥕🐇✨

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate Unit Tests
  • Create PR with Unit Tests
  • Post Copyable Unit Tests in Comment
  • Commit Unit Tests in branch BugFix/MobileAnalyzer

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai auto-generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai or @coderabbitai title anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 5

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3f196bd and 00f6889.

📒 Files selected for processing (3)
  • Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs (3 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityAnalyzer.cs (8 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityRuleDataExtensions.cs (1 hunks)
🔇 Additional comments (4)
Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityRuleDataExtensions.cs (2)

16-32: LGTM! Efficient implementation with proper case handling.

The use of HashSet for O(1) lookups and proper handling of comma-separated tags with trimming is well implemented.


34-45: LGTM! Clean implementation with proper case-insensitive handling.

Good use of StringComparer.OrdinalIgnoreCase in the HashSet constructor.

Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs (1)

887-901: LGTM! Good handling of wrapped elements and screenshot extraction.

The unwrapping of IWrapsElement and extraction of base64 screenshot data is properly implemented.

Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityAnalyzer.cs (1)

39-43: LGTM! Good defensive programming with null handling.

The constructor properly handles null input by initializing to an empty collection.

Comment thread Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs Outdated
Comment thread Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🔭 Outside diff range comments (2)
Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityAnalyzer.cs (2)

628-668: Update parameter name to reflect its content.

The parameter screenShotPath is misleading as it contains base64-encoded image data, not a file path.

-public void AnalyzerMobileAccessibility(IWebDriver Driver, IWebElement element, Act currentAct, MobileAccessibilityAnalyzer mobileAnalyzer, string screenShotPath = null)
+public void AnalyzerMobileAccessibility(IWebDriver Driver, IWebElement element, Act currentAct, MobileAccessibilityAnalyzer mobileAnalyzer, string screenShotBase64 = null)

And update the usage:

-CreateMobileAccessibilityHtmlReport(mobileAxeResult, path, screenShotPath);
+CreateMobileAccessibilityHtmlReport(mobileAxeResult, path, screenShotBase64);

799-859: Update parameter name for clarity.

The parameter screenshotPath should be renamed to better reflect that it contains base64-encoded image data.

-private void CreateMobileAccessibilityHtmlReport(List<AccessibilityIssue> issues, string outputPath, string screenshotPath = null)
+private void CreateMobileAccessibilityHtmlReport(List<AccessibilityIssue> issues, string outputPath, string screenshotBase64 = null)

And update the usage:

-if (!string.IsNullOrWhiteSpace(screenshotPath))
+if (!string.IsNullOrWhiteSpace(screenshotBase64))
 {
     html.Append("        <h2>Page Screenshot</h2>");
     html.Append("        <div class='screenshot-container'>");
-    html.Append("            <img src='data:image/png;base64," + screenshotPath + "' alt='Screenshot of the mobile page' />");
+    html.Append("            <img src='data:image/png;base64," + screenshotBase64 + "' alt='Screenshot of the mobile page' />");
     html.Append("        </div>");
 }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00f6889 and 292b941.

📒 Files selected for processing (3)
  • Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs (4 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityAnalyzer.cs (8 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityRuleDataExtensions.cs (1 hunks)
🔇 Additional comments (4)
Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityRuleDataExtensions.cs (2)

16-32: LGTM! Well-implemented filtering logic.

The WithTags method efficiently filters rules using a HashSet for O(1) lookups and properly handles edge cases. Good use of collection expressions for creating the result.


34-49: Great extraction of duplicate normalization logic!

The NormalizeTagNames method successfully addresses the DRY principle by extracting the duplicate tag normalization logic from ActAccessibilityTesting. The implementation is clean and maintains proper null handling.

Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs (1)

440-507: Well-refactored filtering logic with proper error handling!

The GetFilteredRuleList method has been successfully refactored to:

  • Use ObservableCollection consistently
  • Leverage the new WithTags extension method for cleaner code
  • Provide clear error messages when required lists are empty
  • Properly handle both ByStandard and BySeverity analyzer types

The implementation is clean and maintainable.

Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/MobileAccessibilityAnalyzer.cs (1)

697-792: Excellent implementation of result processing logic!

The SetMobileAccessibilityResultToAction method provides comprehensive result processing:

  • Correctly handles both ByStandard and BySeverity analyzer types
  • Sets appropriate pass/fail status based on configured criteria
  • Provides detailed return parameters including violation counts, lists, and severities
  • Includes clear error messages that explain why the action passed or failed

The implementation is well-structured and maintainable.

Comment thread Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs Outdated

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 292b941 and 810b7b5.

📒 Files selected for processing (2)
  • Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs (4 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs (7 hunks)
🔇 Additional comments (10)
Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs (6)

45-45: LGTM! Necessary import addition.

The import is required to support the eRunStatus enum used in the accessibility testing handler.


606-609: LGTM! Clear error handling for unsupported functionality.

The immediate failure with a descriptive error message provides good user guidance about using 'Page' target instead of element-level analysis for mobile accessibility testing.


1303-1328: LGTM! Good refactoring for consistency.

The consolidation of the switch statement with proper scoping improves code structure and readability while maintaining the same functionality.


1390-1399: LGTM! Consistent scoping improvement.

Adding explicit braces for switch cases improves code consistency and maintainability.


1450-1474: LGTM! Consistent scoping pattern.

The explicit braces for performance data switch cases maintain consistency with the codebase style improvements.


2172-2180: LGTM! Performance improvement and consistency.

The Android unlock logic now efficiently checks the device lock state before attempting unlock, preventing unnecessary operations. The iOS unlock case maintains consistent scoping with the rest of the codebase.

Also applies to: 2216-2219

Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs (4)

41-41: LGTM - Required using statement for ObservableCollection.

The addition of System.Collections.ObjectModel using statement is necessary to support the transition from ObservableList to ObservableCollection.


428-428: LGTM - Improved type consistency with .NET standards.

The change from ObservableList<AccessibilityRuleData> to ObservableCollection<AccessibilityRuleData> aligns with standard .NET collection types and is appropriate for data binding scenarios.


881-901: Excellent improvements to method signature and variable naming.

The updated method signature with ISearchContext context parameter provides better flexibility, and the screenshot extraction logic is clean and well-implemented. The variable renaming from screenShotPath to screenShotBase64 correctly addresses the past review feedback about misleading naming.

The wrapped element handling and error logging are also well-implemented.


972-972: Perfect implementation of DRY principle.

The use of MobileAccessibilityRuleDataExtensions.NormalizeTagNames successfully addresses the previous review feedback about extracting duplicate tag normalization logic. This improves code maintainability and follows the DRY principle.

Comment on lines +436 to 507
/// <summary>
/// Filters the accessibility rule list based on selected standards and/or severity levels.
/// </summary>
/// <returns>An ObservableCollection of AccessibilityRuleData for analysis.</returns>
public ObservableCollection<AccessibilityRuleData> GetFilteredRuleList()
{
ObservableList<AccessibilityRuleData> allRules = GetRuleList();
//all rules that are marked as Active in configuration
ObservableCollection<AccessibilityRuleData> rulesForAnalysis =
[.. GetRuleList().Where(x => x.Active)];

// Start with the rules excluded by the user's configuration ('Active' field being false)
HashSet<string> finalExcludedRuleIds = new HashSet<string>(
allRules.Where(x => !x.Active).Select(x => x.RuleID),
StringComparer.OrdinalIgnoreCase
);
// Get the selected analyzer type
string analyzerType = GetInputParamValue(ActAccessibilityTesting.Fields.Analyzer);

// Apply filtering based on Analyzer mode
if (GetInputParamValue(ActAccessibilityTesting.Fields.Analyzer) == nameof(eAnalyzer.ByStandard))
// lists for selected tags and severities
List<string>? selectedStandardTags = null;
if (StandardList != null && StandardList.Any())
{
if (StandardList == null || !StandardList.Any())
{

Reporter.ToLog(eLogLevel.ERROR, "Error: 'ByStandard' analyzer selected, but no standards are provided.");

return new ObservableList<AccessibilityRuleData>();
}
selectedStandardTags = StandardList.Select(i => i.Value.ToString().ToLower()).ToList();

selectedStandardTags = MobileAccessibilityRuleDataExtensions.NormalizeTagNames(selectedStandardTags.ToArray()).ToList();
}

HashSet<string> selectedStandardTags = new HashSet<string>(
StandardList.Select(item => item.Value.ToString().Equals("bestpractice", StringComparison.OrdinalIgnoreCase) ? "best-practice" : item.Value.ToString()),
StringComparer.OrdinalIgnoreCase
);
List<string>? selectedSeverities = null;
if (SeverityList != null && SeverityList.Count != 0)
{
selectedSeverities = [.. SeverityList.Select(x => x.Value.ToLower())];
}

// Assuming Tag is a string or list of strings that can be matched.
allRules = new ObservableList<AccessibilityRuleData>(
allRules.Where(r =>
{
if (string.IsNullOrEmpty(r.Tags)) // Handle cases where Tags might be null or empty
{
return false;
}

// Split the comma-separated tags string into a collection of individual tags
// .Select(s => s.Trim()) to remove leading/trailing whitespace from each tag
// .ToList() to make it a List<string> if needed, or keep as IEnumerable<string>
IEnumerable<string> ruleIndividualTags = r.Tags.Split(',')
.Select(s => s.Trim())
.Where(s => !string.IsNullOrWhiteSpace(s)); // Filter out empty strings from splitting

// Check if any of the individual tags for the rule are in the selectedStandardTags
return ruleIndividualTags.Any(ruleTag => selectedStandardTags.Contains(ruleTag));
})
);
if (SeverityList != null && SeverityList.Any())
// Apply filtering based on Analyzer type
if (analyzerType == nameof(ActAccessibilityTesting.eAnalyzer.ByStandard))
{
if (selectedStandardTags == null || selectedStandardTags.Count == 0)
{
List<string> selectedSeverities = SeverityList.Select(x => x.Value.ToLower()).ToList();

Status = eRunStatus.Failed;
Error = "Standard list is empty or not set when 'By Standard' analyzer is selected.";
return [];
}

// Rules to exclude based on severity: if a rule's impact is NOT in the selected severities
var severityExcludedRuleIds = allRules
.Where(r => !selectedSeverities.Contains(r.Impact.ToLower())) // Exclude if its Impact is NOT among the selected
.Select(r => r.RuleID);
// Filter rules to only include those matching selected standards/tags
rulesForAnalysis = rulesForAnalysis.WithTags([.. selectedStandardTags]);

foreach (var ruleId in severityExcludedRuleIds)
{
finalExcludedRuleIds.Add(ruleId);
}
if (selectedSeverities != null && selectedSeverities.Count != 0)
{
rulesForAnalysis = new ObservableCollection<AccessibilityRuleData>(
rulesForAnalysis.Where(rule => !selectedSeverities.Contains(rule.Impact.ToLower()))
);
}
}
else if (GetInputParamValue(ActAccessibilityTesting.Fields.Analyzer) == nameof(eAnalyzer.BySeverity))
else if (analyzerType == nameof(ActAccessibilityTesting.eAnalyzer.BySeverity))
{
if (SeverityList == null || !SeverityList.Any())
if (selectedSeverities == null || selectedSeverities.Count == 0)
{
Reporter.ToLog(eLogLevel.ERROR, "Error: 'BySeverity' analyzer selected, but no severities are provided.");
// Optionally, set currentAct.Status = Failed and currentAct.Error
return new ObservableList<AccessibilityRuleData>();
Status = eRunStatus.Failed;
Error = "Severity list is empty or not set when 'By Severity' analyzer is selected.";
return [];
}

List<string> selectedSeverities = SeverityList.Select(x => x.Value.ToLower()).ToList();

// Filter rules: only include rules whose Impact matches a selected severity
allRules = new ObservableList<AccessibilityRuleData>(
allRules.Where(r => selectedSeverities.Contains(r.Impact.ToLower()))
// Filter rules to only include those matching selected severities
rulesForAnalysis = new ObservableCollection<AccessibilityRuleData>(
rulesForAnalysis.Where(rule => selectedSeverities.Contains(rule.Impact.ToLower()))
);
}

// Final step: Apply the combined exclusions to the initially loaded rules
// Create the final list of rules that are truly active for the analyzer
ObservableList<AccessibilityRuleData> finalActiveRules = new ObservableList<AccessibilityRuleData>();
foreach (AccessibilityRuleData ruleData in allRules)
}
else
{
if (!finalExcludedRuleIds.Contains(ruleData.RuleID))
{
ruleData.Active = true; // Mark as active for consistency, though not strictly needed here
finalActiveRules.Add(ruleData);
}
else
{
ruleData.Active = false; // Explicitly mark as inactive if excluded
}

Status = eRunStatus.Passed;
Error = string.Empty;
}

return finalActiveRules;
return rulesForAnalysis;
}

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.

🧹 Nitpick (assertive)

Well-structured method with clear separation of concerns.

The refactored GetFilteredRuleList method provides excellent error handling and uses modern C# syntax. The logic correctly handles different analyzer types and validates input parameters.

However, the severity exclusion logic in the "By Standard" branch (lines 477-482) might be counterintuitive:

// In "By Standard" mode, why are we excluding selected severities?
rulesForAnalysis = new ObservableCollection<AccessibilityRuleData>(
    rulesForAnalysis.Where(rule => !selectedSeverities.Contains(rule.Impact.ToLower()))
);

Consider adding a comment to clarify the intent, or verify if this should be inclusion rather than exclusion of severities when using standard-based analysis.

🤖 Prompt for AI Agents
In Ginger/GingerCoreNET/ActionsLib/UI/Web/ActAccessibilityTesting.cs between
lines 436 and 507, the filtering logic in the "By Standard" analyzer branch
excludes rules matching the selected severities, which may be confusing. Review
whether this exclusion is intentional or if it should instead include only rules
with the selected severities. To fix, either add a clear comment explaining why
severities are excluded in this context or change the filtering condition to
include rules with severities in the selectedSeverities list, aligning it with
expected behavior.

@Maheshkale447
Maheshkale447 merged commit 2bf2f10 into Releases/Beta Jun 20, 2025
15 of 17 checks passed
@Maheshkale447
Maheshkale447 deleted the BugFix/MobileAnalyzer branch June 20, 2025 05:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants