Skip to content

Master for beta merge#4429

Merged
ravirk91 merged 15 commits into
masterfrom
master-for-beta-merge
Feb 3, 2026
Merged

Master for beta merge#4429
ravirk91 merged 15 commits into
masterfrom
master-for-beta-merge

Conversation

@ravirk91

@ravirk91 ravirk91 commented Feb 3, 2026

Copy link
Copy Markdown
Collaborator

Description

Type of Change

  • Bug fix - [ ] New feature - [ ] Breaking change - [ ] Plugin update

Checklist

  • PR description clearly describes the changes
  • Target branch is correct (master for features, Releases/* for fixes)
  • Latest code from target branch merged
  • No commented/junk code included
  • No new build warnings or errors
  • All existing unit tests pass
  • New unit tests added for new functionality
  • Cross-platform compatibility verified (Windows/Linux/macOS)
  • CI/CD pipeline passes
  • Code follows project conventions (Act{Platform}{Type}, {Platform}Driver)
  • Repository objects use [IsSerializedForLocalRepository] where needed
  • Error handling uses Reporter.ToLog() pattern
  • Documentation updated for user-facing changes
  • Self-review completed and code review comments addressed

Summary by CodeRabbit

  • New Features

    • Added Android TV support for mobile testing, new device flow and UI.
    • New UFT Mobile credentials dialog for device discovery and selection.
    • Enhanced live inspection with focus/key listeners for TV/remote interactions.
  • Improvements

    • Platform labels now display as "Mobile/TV" with updated icons and combo controls.
    • More reliable screenshots and image handling (thread-safe).
    • Improved element detection, highlighting and coordinate mapping across devices.
  • Bug Fixes

    • Prevented infinite loops in JSON schema processing.
    • Added defensive null-checks and safer fallbacks to reduce errors.

ravirk91 and others added 13 commits January 23, 2026 14:55
* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>
* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.
* Exclamation mark fix

* commit
Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.
Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.
* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>
@coderabbitai

coderabbitai Bot commented Feb 3, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

Adds Android TV support across drivers and UI, refactors list-operation helpers to accept a conditional flag, improves screenshot/bitmap handling and visual-testing flows, introduces UFT Mobile credentials/device-picker, and adds enum/tooltip/display changes for platform descriptions.

Changes

Cohort / File(s) Summary
List operations & list view helpers
Ginger/Ginger/Actions/ActionsListViewHelper.cs, Ginger/Ginger/Activities/.../ActivitiesGroupsListViewHelper.cs, Ginger/Ginger/Activities/ActivitiesListViewHelper.cs, Ginger/Ginger/ApplicationModelsLib/POMModels/ElementInfoListViewHelper.cs, Ginger/Ginger/Variables/DatabaseListViewHelper.cs, Ginger/Ginger/Variables/VariablesListViewHelper.cs, Ginger/Ginger/UserControlsLib/UCListView/IListViewHelper.cs, Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs, Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml
Changed GetListOperations() signatures to GetListOperations(bool AddOperationsIcon = true) and propagated usage; UcListView.SetListOperations similarly updated; toggle behavior wired to disable/enable operations.
Mobile / Android TV drivers & windows
Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs, Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs, Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/DeviceViewPage.xaml.cs
Large Android TV support: new enum values, element hit-testing (XML/WebElement fallbacks), enriched ElementInfo population, SetRectangleProperties override, screenshot/coordinate mapping, highlight APIs and TV-specific canvas/window sizing and safe image access.
Screenshot, visual testing & live spy
Ginger/Ginger/AutomatePageLib/.../WindowExplorerPage.xaml.cs, Ginger/Ginger/Actions/ScreenShotViewPage.xaml.cs, Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js, Ginger/Ginger/AutomatePageLib/AddActionMenu/LiveSpy/LiveSpyPage.xaml.cs
Refactored ShowScreenShot to use IVisualTestingDriver, improved coordinate translation, preserved/re-applied highlights, replaced BMP→BitmapImage flow with PNG cloning for thread-safety, enhanced JS LiveSpy for Android TV and Shadow DOM, and added live-focus/key listeners.
UFT Mobile credentials & device picker
Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml, Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs, Ginger/Ginger/Drivers/DriversConfigsEditPages/UFTCredentialsDialog.xaml, Ginger/Ginger/Drivers/DriversConfigsEditPages/UFTCredentialsDialog.xaml.cs
Added UFTM credentials dialog UI and integration: fetch devices flow, OAuth helper, device parsing/view-model, FetchDevices button and apply-selected-device helpers, plus related capability management paths.
Image and UI assets / tooltips
Ginger/GingerCoreCommon/EnumsLib/eImageType.cs, Ginger/Ginger/UserControlsLib/ImageMakerLib/ImageMakerControl.xaml.cs, Ginger/Ginger/Ginger.csproj
Added new eImageType members (AndroidTv, AndroidTvWhite, MultipleScreen, MultipleScreenGrey), mapped them to new embedded images, extended GetImageSource fallback rendering via RenderTargetBitmap, and applied ImageToolTip handling.
Platform description & app display binding
Ginger/GingerCoreCommon/Repository/PlatformsLib/ApplicationPlatform.cs, Ginger/GingerCoreCommon/Repository/PlatformsLib/Platform.cs, Ginger/GingerCoreCommon/EnvironmentLib/EnvApplication.cs, Ginger/Ginger/.../AppsListPage.xaml.cs, Ginger/Ginger/.../EditBusinessFlowAppsPage.xaml.cs, Ginger/Ginger/SolutionWindows/.../EnvironmentApplicationList.xaml.cs, Ginger/Ginger/SolutionWindows/TargetApplicationsPage.xaml.cs, Ginger/Ginger/SolutionWindows/AddApplicationPage.xaml.cs, Ginger/Ginger/SolutionWindows/AddSolutionPage.xaml.cs
Added PlatformDescription properties and bindings, changed enum description for Mobile→"Mobile/TV", updated grid columns to bind PlatformDescription and updated image mapping for Mobile to MultipleScreen.
List item tooltips & enum converters
Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml.cs, Ginger/Ginger/UserControlsLib/ucGridView/ComboEnumItemValueConverter.cs, Ginger/Ginger/UserControlsLib/ucGridView/ucGrid.xaml.cs
Added EnumValueDescriptionConverter and ComboEnumItemValueConverter, updated grid combo column handling to use converter/SelectedValue binding for enum-description storage, and applied tooltip/title logic for Act items.
Appium driver edit UI & capability changes
Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml, Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs
UI rework for Mobile/TV grouping, added Android TV option and icons, device source choices, fetch devices button, and runtime capability update flows including TV-specific handling and UFTM integration hooks.
JSON schema & data safety
Ginger/GingerCoreCommon/GeneralLib/JSONLib/JsonSchemaTools.cs, Ginger/GingerCoreNET/DataSource/LiteDB.cs, Ginger/GingerCoreNET/Application Models/Learn/POM/PomLearnUtils.cs
Added circular-reference guards and stack-safe handling to JsonSchemaFaker/GenerateJsonObjectFromJsonSchema4, added RunQuery row-existence check, and improved bitmap→base64 PNG cloning with fallbacks and error handling.
Misc UI tweaks & small fixes
Ginger/Ginger/Agents/AgentEditPage.xaml.cs, Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml.cs, Ginger/Ginger/AutomatePageLib/.../UploadItemsSelectionPage.xaml.cs, Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs, Ginger/GingerCoreCommon/Run/ApplicationAgent.cs, Ginger/GingerCoreCommon/GingerCoreCommon.csproj, Ginger/GingerCoreNET/Drivers/WebServicesDriver/HttpWebClientUtils.cs, Ginger/GingerAutoPilotTest/SwaggetTests.cs, Ginger/GingerCoreCommon/Repository/SharedRepository/UploadSelectionItem.cs
Minor formatting, tooltip text improvements, increased folder button/icon sizing, ActMobileDevice description/image updates, assembly version bump, HTTP response status numeric inclusion, added tests for JSON-schema circular refs, and enhanced UploadSelectionItem path display logic.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant MobileDriverWindow
    participant IVisualTestingDriver
    participant UI as UI Canvas

    User->>MobileDriverWindow: Click screenshot / move mouse (Ctrl)
    MobileDriverWindow->>IVisualTestingDriver: GetScreenshot()
    alt Screenshot returned
        IVisualTestingDriver-->>MobileDriverWindow: ScreenShotBitmap
        MobileDriverWindow->>MobileDriverWindow: Translate display coords → source coords
        MobileDriverWindow->>IVisualTestingDriver: GetElementAtPoint(sourceX, sourceY)
        alt Element found
            IVisualTestingDriver-->>UI: ElementInfo
            MobileDriverWindow->>UI: Draw highlight rectangle
            MobileDriverWindow->>MobileDriverWindow: Update details pane
        else No element
            MobileDriverWindow->>UI: Clear highlight
        end
    else Error / unsupported
        IVisualTestingDriver-->>MobileDriverWindow: null/Error
        MobileDriverWindow->>MobileDriverWindow: Log & exit
    end
Loading
sequenceDiagram
    actor User
    participant AppiumUI as AppiumDriverEditPage
    participant UFTDialog as UFTCredentialsDialog
    participant UFTM as UFTM Server

    User->>AppiumUI: Click Fetch Devices
    AppiumUI->>UFTDialog: Show dialog
    UFTDialog->>UFTDialog: Load workspaces
    User->>UFTDialog: Enter creds + Refresh
    UFTDialog->>UFTM: UFTMBasicCallAsync (OAuth)
    alt Auth success
        UFTM-->>UFTDialog: Token/Cookies
        UFTDialog->>UFTM: GET /devices
        UFTM-->>UFTDialog: Devices payload
        UFTDialog->>UFTDialog: Parse → Device list
        User->>UFTDialog: Select device + OK
        UFTDialog-->>AppiumUI: SelectedPhoneUuid/Name/Platform
        AppiumUI->>AppiumUI: Apply capabilities
    else Auth/fetch fail
        UFTDialog->>UFTDialog: Show error
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

  • PR #4426: Refactors GetListOperations to accept a boolean AddOperationsIcon and conditionally add bulk operations (same helper/API change).
  • PR #4414: Adds UFT Mobile credentials dialog and device-fetch integration in Appium driver UI (directly overlaps UFTM flow).
  • PR #4413: Changes screenshot/bitmap handling and Android TV-related UI/driver work (overlaps ScreenShotViewPage and visual testing changes).

Suggested reviewers

  • Maheshkale447
  • prashelke

Poem

🐰 I hopped through code and found TV light,
Mobile and Android now share the night,
Screenshots cloned as PNGs so neat,
UFT devices lined up in a sweet fleet,
Icons sparkle — lists toggle with delight. 🎩📺🐇

🚥 Pre-merge checks | ❌ 3
❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is entirely empty except for the template structure; no actual implementation details, changes, or rationale are provided. Fill in the Description section with a clear summary of the changes made, specify the type of change, and ensure all relevant checklist items are properly reviewed and checked.
Docstring Coverage ⚠️ Warning Docstring coverage is 5.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Master for beta merge' is vague and generic; it does not convey meaningful information about the actual changes in the changeset. Provide a specific title that summarizes the main changes, such as 'Add Android TV support and UFT mobile device selection enhancements' or similar.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch master-for-beta-merge

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@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: 58

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (10)
Ginger/GingerCoreNET/DataSource/LiteDB.cs (2)

688-691: ⚠️ Potential issue | 🟠 Major

Same bounds issue exists here — missing row count validation before accessing Rows[LocateRowValue].

The query uses LIMIT 1, so there's at most one row. Accessing datatble.Rows[LocateRowValue] when LocateRowValue > 0 or when the query returns zero rows will throw an exception. The check at line 689 validates Columns.Count but not Rows.Count.

🛡️ Proposed fix
             DataTable datatble = GetQueryOutput($"SELECT $ FROM {DSTableName} WHERE GINGER_USED = \"False\" LIMIT 1");
-            if (datatble != null && datatble.Columns.Count > 0)
+            if (datatble != null && datatble.Rows.Count > 0)
             {
-                row = datatble.Rows[LocateRowValue];
+                row = datatble.Rows[0]; // LIMIT 1 returns at most one row

714-716: ⚠️ Potential issue | 🟡 Minor

Missing row existence check before accessing dt.Rows[0].

If the query returns zero rows, this will throw an IndexOutOfRangeException. Consider adding a similar defensive check as introduced at line 672.

🛡️ Proposed fix
                     dt = GetQueryOutput($"SELECT $ FROM {DSTableName} WHERE GINGER_ID = {querysplit[1]}");
+                    if (dt.Rows.Count == 0)
+                    {
+                        throw new Exception($"No row found with GINGER_ID = {querysplit[1]} in table: {DSTableName}");
+                    }
                     row = dt.Rows[0];
Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js (1)

169-199: ⚠️ Potential issue | 🔴 Critical

Duplicate ElementFromPoint overwrites the new implementation and throws at runtime.
The second definition (Line 169) replaces the Shadow DOM + Android TV logic and references allShadowRoots (undefined), which will raise a ReferenceError. It also uses string X/Y without numeric coercion. Remove this block or merge it properly.

🧹 Suggested fix (remove duplicate block)
-    GingerLibLiveSpy.ElementFromPoint = function () {
-        const X = GingerLibLiveSpy.GetXPoint();
-        const Y = GingerLibLiveSpy.GetYPoint();
-        let depth = 0;
-        let resultElementFromPoint = null;
-        function getCurrentDepth(element) {
-            let depth = 0;
-
-            while (element.parentNode) {
-                element = element.parentNode;
-                depth++;
-            }
-            return depth;
-        }
-
-        allShadowRoots.forEach((shadowRoot) => {
-            let element = shadowRoot.elementFromPoint(X, Y);
-            const currentDepth = getCurrentDepth(element);
-
-            if (depth < currentDepth) {
-                depth = currentDepth;
-                resultElementFromPoint = element;
-            }
-        });
-
-        if (!resultElementFromPoint) {
-            return document.elementFromPoint(X, Y);
-        }
-
-        return resultElementFromPoint;
-    }
Ginger/GingerCoreCommon/GingerCoreCommon.csproj (1)

38-38: ⚠️ Potential issue | 🔴 Critical

Duplicate LiteDB references with conflicting versions.

The project references LiteDB twice:

  • Line 38: PackageReference with version 5.0.21
  • Lines 62-64: Direct Reference with version 4.1.4

This will cause assembly binding conflicts at runtime and unpredictable behavior depending on which version gets loaded.

🐛 Proposed fix: Remove the stale direct reference
-  <ItemGroup> 
-    <Reference Include="LiteDB">
-      <HintPath>..\..\..\..\..\.nuget\packages\litedb\4.1.4\lib\net40\LiteDB.dll</HintPath>
-    </Reference>
-  </ItemGroup>

Also applies to: 62-64

Ginger/GingerCoreCommon/Repository/SharedRepository/UploadSelectionItem.cs (1)

319-344: ⚠️ Potential issue | 🔴 Critical

Remove duplicate TargetFolderFullPath/TargetFolderDisplay members (compile error).

Lines 319-344 redefine members already declared at lines 232-248, causing CS0102. Delete the duplicate block.

🧹 Proposed fix
-        string mTargetFolderFullPath = string.Empty;
-        public string TargetFolderFullPath
-        {
-            get { return mTargetFolderFullPath; }
-            set
-            {
-                if (mTargetFolderFullPath != value)
-                {
-                    mTargetFolderFullPath = value ?? string.Empty;
-                    OnPropertyChanged(nameof(TargetFolderFullPath));
-                    OnPropertyChanged(nameof(TargetFolderDisplay));
-                }
-            }
-        }
-
-        public string TargetFolderDisplay
-        {
-            get
-            {
-                if (string.IsNullOrEmpty(TargetFolderFullPath))
-                {
-                    return "Select...";
-                }
-                return TargetFolderFullPath;
-            }
-        }
Ginger/Ginger/Variables/DatabaseListViewHelper.cs (1)

315-357: ⚠️ Potential issue | 🟠 Major

The AddOperationsIcon parameter is unused.

The new AddOperationsIcon parameter is added to the signature but is never referenced in the method body. All operations are unconditionally added regardless of the parameter value.

Comparing with similar helpers:

  • ActionsListViewHelper.GetListOperations wraps operations in if (AddOperationsIcon) (see relevant snippet lines 245-293)
  • ActivitiesGroupsListViewHelper.GetListOperations uses if (AddOperationIcon) to conditionally add operations (see relevant snippet lines 142-168)

This appears to be an incomplete implementation where the signature was updated for consistency but the conditional logic wasn't added.

🐛 Proposed fix to use the parameter
 public List<ListItemOperation> GetListOperations(bool AddOperationsIcon = true)
 {
     List<ListItemOperation> operationsList = [];


     if (mContext.Environment.GOpsFlag)
     {
         return operationsList;
     }

+    if (!AddOperationsIcon)
+    {
+        return operationsList;
+    }
+
     ListItemOperation addNew = new ListItemOperation
     {

Alternatively, if specific operations should be conditionally included (like in ActionsListViewHelper), wrap only those operations in the conditional block.

Ginger/Ginger/Variables/VariablesListViewHelper.cs (1)

198-227: ⚠️ Potential issue | 🟠 Major

Respect AddOperationsIcon when building operations.

The new flag is ignored, so operations still appear when callers request none (e.g., folder view). This breaks the intended conditional UI behavior.

🛠️ Suggested fix
         public List<ListItemOperation> GetListOperations(bool AddOperationsIcon = true)
         {
             List<ListItemOperation> operationsList = [];
 
-            if (VariablesParent.GOpsFlag)
+            if (VariablesParent.GOpsFlag || !AddOperationsIcon)
             {
                 return operationsList;
             }
Ginger/Ginger/AutomatePageLib/AddActionMenu/LiveSpy/LiveSpyPage.xaml.cs (1)

251-281: ⚠️ Potential issue | 🟠 Major

Use null-safe cast for AgentOperations in the spy loop.

The direct cast can throw if mContext, Agent, or AgentOperations is null—stopping spying. Since AgentOperations is nullable (proven by explicit checks elsewhere in the codebase) and this runs in a timer handler, a null-safe cast is required.

-            if (mWindowExplorerDriver != null && ((AgentOperations)mContext.Agent.AgentOperations).Status == Agent.eStatus.Running)
+            var agentOps = mContext?.Agent?.AgentOperations as AgentOperations;
+            if (mWindowExplorerDriver != null && agentOps?.Status == Agent.eStatus.Running)
Ginger/Ginger/ApplicationModelsLib/POMModels/ElementInfoListViewHelper.cs (1)

146-159: ⚠️ Potential issue | 🟠 Major

Honor AddOperationsIcon to allow callers to suppress operations.
AddOperationsIcon is never used, so callers cannot disable the list operations when they need a clean list view.

✅ Suggested fix
 public List<ListItemOperation> GetListOperations(bool AddOperationsIcon=true)
 {
     List<ListItemOperation> operationsList = [];
+    if (!AddOperationsIcon)
+    {
+        return operationsList;
+    }

     ListItemOperation addToFlow = new ListItemOperation
     {
         SupportedViews = [General.eRIPageViewMode.AddFromModel],
         ImageType = Amdocs.Ginger.Common.Enums.eImageType.MoveLeft,
         ToolTip = "Add to Actions",
         OperationHandler = AddFromPOMNavPage
     };
     operationsList.Add(addToFlow);

     return operationsList;
 }
Ginger/GingerCoreCommon/EnvironmentLib/EnvApplication.cs (1)

205-228: ⚠️ Potential issue | 🟡 Minor

Inconsistent image mapping for Mobile platform across multiple files.

ItemImageType in EnvApplication.cs (line 215) maps ePlatformType.Mobile to eImageType.Mobile, but GetPlatformImage() in ApplicationPlatform.cs maps the same platform type to eImageType.MultipleScreen. Additionally, ApplicationPOMModel.cs (line 296) also uses eImageType.Mobile. This inconsistency may cause different icons to appear in different parts of the UI depending on which method is called.

🤖 Fix all issues with AI agents
In `@Ginger/Ginger/Activities/ActivityPage.xaml.cs`:
- Around line 98-123: The catch in the SetIconImageType logic swallows
exceptions; change it to catch Exception (e) and log the error via
Reporter.ToLog(eLogLevel.ERROR, "...") including the exception and context
(e.g., Activity/TargetApplication), so failures when calling
WorkSpace.Instance.Solution.GetApplicationPlatformForTargetApp or
Amdocs.Ginger.Common.GeneralLib.General.GetEnumValueDescription are recorded;
keep the existing fallback (platformText) and continue setting
xIconImage.ImageToolTip/xIconImage.ToolTip.

In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs`:
- Around line 1326-1386: Duplicate image scale/offset math in
HighlightSelectedElement and DrawElementRectangleAsync should be extracted into
a shared helper; add a private method (e.g., ComputeImageScaleAndOffset(Image
img, double sourceWidth, double sourceHeight) returning (double usedScaleX,
double usedScaleY, double offsetX, double offsetY)) that contains the Stretch
(Uniform/UniformToFill/Fill) logic, scale calculation and centering offsets,
then replace the inline calculations in HighlightSelectedElement and
DrawElementRectangleAsync to call this helper and use its returned values for
mapping ClickedPoint/display coords to source coords; ensure the helper handles
missing BitmapSource sizes and uses the same clamping/epsilon behavior.
- Around line 1496-1545: The empty catch blocks must log the caught exceptions:
change both catch blocks to catch (Exception e) and call
Reporter.ToLog(eLogLevel.DEBUG, $"<context>: {e}") — for the first catch (around
bitmap source access) include context like "WindowExplorerPage: failed reading
bitmap source for mScreenShotViewPage.xMainImage", and for the second catch
(around ((DriverBase)mWindowExplorerDriver).SetRectangleProperties) include
context like "WindowExplorerPage: SetRectangleProperties threw" while preserving
existing fallback assignments to rectangleWidth/rectangleHeight and not altering
logic for ElementStartPoint/ElementMaxPoint or clickedElementInfo.
- Around line 1144-1152: The empty catch swallowing exceptions around
mWindowExplorerDriver.UnHighLightElements() should be replaced with logging:
catch the exception as ex and call Reporter.ToLog(eLogLevel.DEBUG,
$"UnHighLightElements failed: {ex.Message}", ex) (or equivalent overload) so the
exception and stack trace are recorded; update the catch block in the method
containing the mWindowExplorerDriver.UnHighLightElements() call to log the
exception at DEBUG level using Reporter.ToLog rather than ignoring it.
- Around line 1451-1468: Remove the nested try/catch inside Task.Run and instead
schedule the call to mWindowExplorerDriver?.HighLightElement(...) with a
continuation that logs failures consistently; e.g. call Task.Run(() =>
mWindowExplorerDriver?.HighLightElement(inspectElementInfo,
locateElementByItLocators: false)).ContinueWith(t =>
Reporter.ToLog(eLogLevel.DEBUG, "HighlightSelectedElement: driver
HighLightElement failed: " + t.Exception?.GetBaseException().Message,
t.Exception), TaskContinuationOptions.OnlyOnFaulted) so you keep fire-and-forget
behavior but centralize and unify logging for exceptions thrown by
HighLightElement.

In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs`:
- Around line 977-1095: The UFTMBasicCallAsync method lacks request timeouts and
cancellation; update UFTMBasicCallAsync to accept an optional CancellationToken
parameter and configure RestClient with RestClientOptions (e.g., MaxTimeout) for
both the token request and the follow-up client (references: UFTMBasicCallAsync,
authClient, client, authRequest, request), then call the ExecuteAsync overloads
that accept a CancellationToken and pass the token through to all network awaits
to enable proper timeout and cancellation handling.
- Around line 1048-1051: The empty catch in AppiumDriverEditPage.xaml.cs that
swallows JSON parsing exceptions should be replaced with a catch(Exception ex)
that logs the exception and the offending response so failures are visible;
update the block that parses the authentication response (the code that sets
accessToken) to log ex.Message/stack and the raw response (using the existing
logging facility in the class, e.g., Reporter/Logger) and then allow the
method's existing null-accessToken handling to proceed.
- Around line 27-37: Remove the unused using directives from the top of
AppiumDriverEditPage.xaml.cs in the AppiumDriverEditPage class: delete
System.Net.Http, System.Net.Http.Headers and System.Text (only if
Encoding/StringBuilder aren’t used elsewhere in that file); keep RestSharp and
any namespaces actually referenced (e.g., System.Text.Json) and rebuild to
ensure no missing references remain.
- Around line 767-770: Replace the empty catch in the AppiumDriverEditPage
radio-button initialization (page load handler in AppiumDriverEditPage.xaml.cs)
with a typed catch (catch(Exception ex)) and log the exception instead of
silently swallowing it; use the project's logging utility (e.g., Reporter.ToLog
or the existing logger) or System.Diagnostics.Trace/Debug to record a
descriptive message plus ex.ToString() so debugging information is preserved
while keeping behavior unchanged.
- Around line 600-617: The fire-and-forget Task.Run around
mAgent?.AgentOperations (the GingerCore.AgentOperations ops block) can lead to
unobserved failures and no user feedback; change the call to a proper awaited
async flow (e.g., expose/convert the caller to async and await the operation
instead of Task.Run) or explicitly capture the returned Task and handle faults
with ContinueWith/await, and on failure (catch around ops.SetDriverConfiguration
/ ops.WaitForAgentToBeReady) log the exception and surface a user notification
(toast/dialog) so the user is informed when SetDriverConfiguration or
WaitForAgentToBeReady fails; ensure you reference and update the code paths that
call this block so the async usage is properly awaited rather than
fire-and-forget.
- Around line 1080-1083: The code currently sends the session identifier using
request.AddHeader("JSESSIONID", cookieSessionId); change this to send it as an
actual cookie using RestSharp's cookie API: locate the request variable and the
cookieSessionId value (extracted earlier in AppiumDriverEditPage.xaml.cs) and
replace the header call with request.AddCookie("JSESSIONID", cookieSessionId) so
the JSESSIONID is transmitted as a cookie in subsequent requests.

In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/UFTCredentialsDialog.xaml`:
- Line 15: The outer ScrollViewer xMainScrollViewer contains an inner
ScrollViewer xDevicesScrollViewer which can steal scroll events and lead to
broken scrolling; fix by removing the inner ScrollViewer and replacing it with a
non-scrolling panel (e.g., Grid/StackPanel/ItemsControl) or, if inner scrolling
is required, disable its vertical scrolling
(VerticalScrollBarVisibility="Disabled" or set CanContentScroll appropriately)
and/or adjust PanningMode so only the intended ScrollViewer handles scroll
input; update the markup around xDevicesScrollViewer (or the container used by
it) and test nested scrolling behaviour after the change.
- Line 1: The class UFTCredentialsDialog currently inherits Page but uses a
"Dialog" name; either rename the class and XAML x:Class to UFTCredentialsPage
(and rename the files accordingly) to follow the {Feature}Page convention, or if
it should be a window change the base class to Window and rename to
UFTCredentialsWindow; update the code-behind partial class name and constructor
(UFTCredentialsDialog -> UFTCredentialsPage or UFTCredentialsWindow), adjust the
XAML x:Class attribute to match, and fix all references/usages (instantiations,
resource dictionaries, and project file entries) so the new type name is
consistent.

In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/UFTCredentialsDialog.xaml.cs`:
- Around line 637-663: ApplyFilters currently replaces
xPhonesListBox.ItemsSource with a new List, breaking the binding to the
ObservableCollection mPhones; change to use a CollectionView (e.g., store
ICollectionView mPhonesView created in InitPhonesList via
CollectionViewSource.GetDefaultView(mPhones)), set mPhonesView.Filter (implement
PhoneFilter to apply the same platform/workspace/status/availability checks),
assign xPhonesListBox.ItemsSource once to mPhonesView in InitPhonesList, and
then have ApplyFilters simply call mPhonesView?.Refresh() so the UI stays bound
to mPhones and reflects dynamic updates.
- Around line 149-160: The page currently subscribes
CredentialsParam_PropertyChanged to mClientIdParam, mClientSecretParam and
mTenantIdParam but never unsubscribes, causing a potential memory leak; add
cleanup that removes those handlers (e.g., handle the page Unloaded event or
implement IDisposable) and in that cleanup method call
mClientIdParam.PropertyChanged -= CredentialsParam_PropertyChanged,
mClientSecretParam.PropertyChanged -= CredentialsParam_PropertyChanged and
mTenantIdParam.PropertyChanged -= CredentialsParam_PropertyChanged (guarding for
null) so subscriptions are removed when the dialog is unloaded/disposed.
- Around line 266-270: The catch block in UFTCredentialsDialog.xaml.cs that
handles failures to fetch UFTM workspaces is logging at eLogLevel.INFO; change
the log level to eLogLevel.ERROR so failures are recorded as errors, e.g. update
the Reporter.ToLog call in the catch(Exception ex) for the workspace fetch (the
"Failed to fetch UFTM workspaces" message) to use eLogLevel.ERROR and leave the
message and exception argument intact.
- Around line 308-311: In the catch block that handles failures fetching UFTM
apps (inside UFTCredentialsDialog.xaml.cs, in the method that calls the UFTM
apps fetch), replace the current Reporter.ToLog call that uses eLogLevel.INFO
with eLogLevel.ERROR (or WARN if you prefer) so the failure is logged at an
appropriate error level and keep the existing message and exception parameter
(Reporter.ToLog(eLogLevel.ERROR, "Failed to fetch UFTM apps for workspace",
ex)); this ensures the catch for fetching UFTM apps is logged as an error.
- Around line 97-101: The catch block in UFTCredentialsDialog.xaml.cs that
handles the auto-refresh on load currently logs failures with
Reporter.ToLog(eLogLevel.INFO, ...); change the log level to a failure severity
(eLogLevel.ERROR or eLogLevel.WARN) so the exception is recorded appropriately;
locate the catch(Exception ex) around the auto-refresh/on-load logic and update
the Reporter.ToLog call to use eLogLevel.ERROR (or eLogLevel.WARN) while
preserving the message and exception parameter.

In `@Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/DeviceViewPage.xaml.cs`:
- Around line 442-463: The code computes scaleFactor from DeviceImage.Source
without guarding zero-sized image sources; add a check after obtaining image =
DeviceImage.Source to verify image.Width > 0 && image.Height > 0 and if either
is zero call Reporter.ToLog(eLogLevel.ERROR, "DeviceImage.Source has zero width
or height") (include context like device id/name if available) and return early
to avoid mispositioning rect, rather than proceeding to compute hscale/vscale
and set rect.Margin; keep existing variables scaleFactor, rect,
DeviceScreenCanvas and DeviceImage references.

In `@Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs`:
- Around line 1599-1664: The code sets defaultTvWidth and defaultTvHeight both
to 500, producing a 1:1 aspect ratio instead of 16:9; update the AndroidTV
sizing logic in MobileDriverWindow.xaml.cs (within the block checking
mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv) to use a 16:9
ratio—either by changing the defaults (e.g., defaultTvWidth=1920,
defaultTvHeight=1080) or by computing aspectRatio = 9.0/16.0 and deriving
targetHeight = targetWidth * aspectRatio—so that mZoomSize,
xDeviceScreenshotCanvas.Width/Height and subsequent window sizing use the
correct TV aspect ratio.
- Around line 1813-1837: The read-modify-write of mLastHighlightTime and the
decision to call UnHighlightElementEvent()/set clearedHighlights are not
synchronized; wrap the entire conditional that reads mLastHighlightTime,
compares it to mHighlightPreserveDuration, may set mLastHighlightTime = null,
and sets clearedHighlights (the block containing the shouldClear logic and
subsequent if/else) inside lock(mHighlightLock) so reads and writes on
mLastHighlightTime are atomic and thread-safe; ensure you hold the lock while
evaluating (DateTime.UtcNow - mLastHighlightTime.Value) <
mHighlightPreserveDuration and while assigning mLastHighlightTime = null and
updating clearedHighlights, but avoid holding the lock while calling
UnHighlightElementEvent() if that method may re-enter locks or be long-running
(release lock before invoking it if needed).
- Around line 152-327: HighlightElementOnDevice creates a new DispatcherTimer on
every call allowing an earlier timer to clear a newer highlight; fix by
introducing a single reusable timer field (e.g., mHighlightClearTimer) started
once, and in its tick handler (HighlightClearTimer_Tick) lock mHighlightLock and
compare DateTime.UtcNow - mLastHighlightTime against mHighlightPreserveDuration,
only calling ClearHighlightedElementOnDevice() and stopping the timer when the
last highlight is older than the preserve duration; update
HighlightElementOnDevice to set mLastHighlightTime and start the shared timer
instead of creating new timers, and ensure TV path still sets mKeepHighlightTv
to true so TV highlights remain sticky.
- Around line 478-490: Before calling GetPointOnAppWindow to map mousePos, guard
against a null image source by calling SafeGetDeviceImageSource() (same pattern
used elsewhere) and return early if it is null; specifically, before
Dispatcher.Invoke and Mouse.GetPosition(xDeviceScreenshotImage), ensure
SafeGetDeviceImageSource() for xDeviceScreenshotImage is non-null and skip the
mapping if it returns null so GetPointOnAppWindow and
xDeviceScreenshotImage.Source.Width/Height are never accessed when Source is
null.

In `@Ginger/Ginger/Environments/AppsListPage.xaml.cs`:
- Line 38: SetGridView builds a new GridViewDef (including the
PlatformDescription column) but never assigns it to the UI control, so the new
view/columns aren’t applied to grdApps; after creating the GridViewDef instance
in SetGridView assign it to the grid (e.g., set grdApps.View or the control’s
appropriate View property to the new GridViewDef or call the control’s SetView
method) so the PlatformDescription column is rendered, and make the same change
for the duplicate creation at the other occurrence (lines around the second
GridViewDef creation).

In `@Ginger/Ginger/Ginger.csproj`:
- Around line 14-19: Add explicit
<CopyToOutputDirectory>Never</CopyToOutputDirectory> entries for the new
Resource items so they match existing image resource conventions: update the
Resource elements that include "radio-androidtv.png", "whiteTv.png",
"multiple_screens.png", and "multiple_screen_grey.png" to include a
CopyToOutputDirectory set to Never inside each Resource node.

In `@Ginger/Ginger/SolutionWindows/AddSolutionPage.xaml.cs`:
- Line 167: Update the string-to-enum mappings so they consistently use
"Mobile/TV" instead of "Mobile": find the mapping in AddSolutionPage that
already maps "Mobile/TV" => ePlatformType.Mobile and change the analogous
mappings in AppsListPage and AddGingerOpsEnvPage to use the same "Mobile/TV"
key; ensure any switch/case or dictionary entries that convert friendly platform
strings to the enum (ePlatformType.Mobile) are updated to "Mobile/TV" to match
the EnumValueDescription in Platform.cs and UI dropdown values.

In `@Ginger/Ginger/UserControlsLib/ImageMakerLib/ImageMakerControl.xaml.cs`:
- Around line 1324-1340: The current fallback always creates a 1x1 bitmap when
width==0 and uses fixed 96 DPI; update the method that renders IM so it first
handles the zero-width edge case (if width==0 either return null or use a
sensible default size — reference desiredWidth/desiredHeight/width and the
caller's expected behavior) and then obtain actual DPI via
VisualTreeHelper.GetDpi(IM) (use the returned DpiScale.DpiScaleX/DpiScaleY or
DpiX/DpiY values) and pass those DPI values into the RenderTargetBitmap
constructor (and compute pixelWidth/pixelHeight using the device-independent
size * DPI/96 if needed) before calling rtb.Render(IM) and rtb.Freeze(); this
ensures correct size handling and sharp rendering on high-DPI displays.
- Around line 1201-1204: Remove the dead commented-out block in
ImageMakerControl.xaml.cs that references eImageType.RadioButton_AndroidTV and
the SetAsStaticImage call; delete the three commented lines (the case label and
its body) so the switch/logic contains only active code and no leftover
commented cases like "RadioButton_AndroidTV" or
"SetAsStaticImage(\"radio-androidtv.png\", Width: 16, Height: 16)".

In `@Ginger/Ginger/UserControlsLib/ucGridView/ucGrid.xaml.cs`:
- Around line 2161-2170: The magic number 27.0 in the Convert method should be
extracted to a named constant or resource so it can be adjusted centrally;
replace the inline literal used when checking
Amdocs.Ginger.Common.Enums.eImageType.MultipleScreen (currently assigned to
desiredWidth) with a clearly named constant (e.g., MultipleScreenImageWidth) or
a resource lookup, and update the call to ImageMakerControl.GetImageSource to
use that constant instead of 27.0; keep the existing logic and variable names
(Convert, desiredWidth, eImageType.MultipleScreen,
ImageMakerControl.GetImageSource) so the change is minimal and discoverable.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs`:
- Around line 1342-1349: Remove the duplicate Dispose method and the stray
closing brace in UcListView.xaml.cs: locate the second Dispose() implementation
that manipulates mTreeSearchCts (calls Cancel/Dispose and sets it to null) and
delete this duplicate block along with the extra closing brace so only the
original Dispose method remains, ensuring the class compiles cleanly.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml.cs`:
- Around line 98-127: The catch in EnumValueDescriptionConverter.Convert
swallows exceptions silently; update the Convert method in the
EnumValueDescriptionConverter class to log the caught exception at debug/trace
level before falling back to value.ToString(), e.g., use the project's logging
facility (or System.Diagnostics.Debug/Trace if no logger exists) and include
contextual info (enumType and value) in the message so failures inside
GingerCore.General.GetEnumValueDescription are visible while preserving the
graceful fallback behavior.
- Around line 241-282: The UpdateIconToolTip method currently swallows all
exceptions; modify its catch block to log the exception using Reporter.ToLog so
failures are visible: in UpdateIconToolTip catch (Exception ex) call
Reporter.ToLog with an Error level (or appropriate severity) and a message like
"UpdateIconToolTip failed for item" including the exception (ex) and context
(Item and mItemIconTooltipField) to aid debugging; keep swallowing the exception
after logging to preserve UI stability.
- Around line 307-350: The two empty catch blocks around the tooltip converter
discovery and the ToolTip binding swallow useful diagnostics; update the catch
handlers in the block that checks mItemIconTooltipField (surrounding the
EnumValueDescriptionConverter creation) and the catch after xItemIcon.SetBinding
to log the exception at debug/trace level (using the project's logging facility)
while preserving the existing fallback behavior (leave tooltipConverter = null
and continue). Reference: mItemIconTooltipField, tooltipConverter,
EnumValueDescriptionConverter, BindingHandler.ObjFieldBinding, xItemIcon,
ImageMakerControl.ImageToolTipProperty, and the SetBinding call when adding the
debug logs.
- Around line 156-166: The OnItemPropertyChanged method currently creates a
local uli and then pattern-matches d again into control and casts e.NewValue to
(object) redundantly; simplify by using a single pattern-match (e.g., if (d is
UcListViewItem uli && e.NewValue != null)) then assign uli.Item = e.NewValue and
call uli.ApplyTitleAndTooltipForAct(uli.Item); remove the duplicate control
variable and the unnecessary ((object)e.NewValue) cast so only UcListViewItem
uli, Item, and ApplyTitleAndTooltipForAct are used.
- Around line 54-85: The catch in ApplyTitleAndTooltipForAct currently swallows
all exceptions; change it to catch Exception (e.g., catch (Exception ex)) and
log the error via Reporter.ToLog including context (method name and relevant
item data like act?.ActionDescription/Description) before suppressing, so any
UI-thread invocation errors are recorded for debugging; ensure you reference
ApplyTitleAndTooltipForAct, Dispatcher.BeginInvoke, and Reporter.ToLog in the
fix.

In `@Ginger/GingerAutoPilotTest/SwaggetTests.cs`:
- Around line 210-239: The test TestCircularReference_PreventInfiniteLoop
currently only checks for braces which can give false positives; instead parse
the string returned by JsonSchemaTools.JsonSchemaFaker and assert it
deserializes to a valid JSON value (e.g., use
System.Text.Json.JsonDocument.Parse or
Newtonsoft.Json.JsonConvert.DeserializeObject) to ensure well-formed JSON and
avoid false positives; replace the Assert.IsTrue(result.Contains("{"))/("}"))
checks with a try/parse-and-Assert that the parse succeeded (and optionally that
the root is JsonValueKind.Object) so the test still verifies no hang and
produces valid JSON.
- Around line 241-260: Update the TestSelfReferenceElement_ReturnsEmptyObject
test to parse the returned string from JsonSchemaTools.JsonSchemaFaker into a
JSON object (e.g., using JsonDocument or JObject) instead of using Contains
checks; assert the root value is a JSON object and, if a "self" property exists
on that root, assert that its value is also a JSON object (or empty object) to
make the assertion deterministic when validating the JsonSchema4
self-referencing schema.
- Around line 262-292: The test
TestSwaggerPetSchema_WithCircularCategoryReference currently only creates a
one-way reference (petSchema → categorySchema); make it a true circular
reference by adding a back-reference from categorySchema to petSchema (e.g., add
a property on categorySchema that References petSchema) and wrap the call to
JsonSchemaTools.JsonSchemaFaker with the same timeout/guard pattern used in
TestCircularReference_PreventInfiniteLoop to prevent infinite loops during
generation; ensure assertions remain and the test still asserts completion and
presence of "name" and "category".

In `@Ginger/GingerCore/Actions/ActSikuli.cs`:
- Around line 302-311: The empty SetTextValue branch sets Error but doesn't mark
the action failed; update the failure branch in ActSikuli (where
ValueExpression.Calculate(SetTextValue) is checked) to also set Status =
eRunStatus.Failed (in addition to Error = "SetTextValue is empty") so the action
status reflects the failure; locate the block that calls
sekuliScreen.Type(sikuliPattern, textValue, KeyModifier.NONE) and add the Status
assignment in the else branch.

In `@Ginger/GingerCoreCommon/Actions/Act.cs`:
- Around line 576-590: The catch block that swallows exceptions thrown by
derived ActionDescription implementations should log the exception before
falling back to mDescription: update the Act class's ActionDescription access
code to catch (Exception ex) and emit a debug/info log entry (using the
project's logging facility) that includes the exception and context (e.g.,
this.GetType().Name and "ActionDescription"), then continue to return
mDescription so behavior is unchanged; reference the ActionDescription property
and mDescription field when making the change.

In `@Ginger/GingerCoreCommon/Drivers/CoreDrivers/Mobile/MobileDriverCommon.cs`:
- Around line 28-35: The eDeviceSource enum contains AndroidTV but it isn't
wired into the UI or capability logic; update AppiumDriverEditPage.xaml.cs to
include AndroidTV in the device source dropdown/bindings, extend
SetDeviceSourceCapabilities() to handle eDeviceSource.AndroidTV (and any
switch/if branches that parse/compare device sources) so Android TV platform
selects AndroidTV instead of being forced to LocalAppium, and ensure any
Enum.Parse/TryParse usages and device source comparisons recognize the AndroidTV
value; alternatively, if AndroidTV support is not intended, remove the AndroidTV
= 3 value from eDeviceSource to avoid dead enum entries.
- Around line 21-26: ValidateAndroidOnlyOperation currently blocks
eDevicePlatformType.AndroidTv and several switch statements for PressMenuButton,
OpenCamera, PressKey and LongPressKey only handle Android and iOS; update
behavior so AndroidTv is treated as Android where appropriate. Modify
ValidateAndroidOnlyOperation to accept eDevicePlatformType.AndroidTv as valid
for Android-only operations (PushFile, PullFile, GetDeviceLogs), and update the
switch/case handlers in methods PressMenuButton, OpenCamera, PressKey and
LongPressKey to either add explicit eDevicePlatformType.AndroidTv cases that
delegate to the Android logic or group AndroidTv with the Android case
(fallthrough) so AndroidTv devices execute the same code path and produce an
error only for unsupported platforms.

In `@Ginger/GingerCoreCommon/EnvironmentLib/EnvApplication.cs`:
- Around line 237-241: Remove the dead commented-out property block for Platform
in EnvApplication (the commented code defining the Platform property and its
default ePlatformType.NA value); delete those commented lines entirely so the
file contains no leftover commented-out property definitions and rely on source
control for history.
- Around line 267-275: The catch block in EnvApplication's code that calls
Amdocs.Ginger.Common.GeneralLib.General.GetEnumValueDescription(typeof(ePlatformType),
this.Platform) currently swallows exceptions; change it to catch Exception
(e.g., catch (Exception ex)) and call Reporter.ToLog(eLogLevel.ERROR, ...)
including contextual text and the exception (mentioning ePlatformType and
this.Platform) before returning this.Platform.ToString(); keep the existing
fallback return but ensure the exception is logged via Reporter.ToLog with
eLogLevel.ERROR.

In `@Ginger/GingerCoreCommon/GeneralLib/JSONLib/JsonSchemaTools.cs`:
- Around line 223-246: ReferenceStack is being pushed with different objects
(Enumeration.FirstOrDefault() or Example) but always popped by jkp.Value,
causing stale entries and false cycle detection; change the push/pop to track
the exact object pushed: compute a single variable (e.g., pushedRef) from
jkp.Value.ActualSchema.Enumeration.FirstOrDefault(),
jkp.Value.ActualSchema.Example or jkp.Value, push pushedRef onto ReferenceStack,
and when unwinding remove that same pushedRef (and similarly add/remove
PrivateStack with jkp.Value as before) so ReferenceStack push/pop are symmetric.
- Around line 247-249: Replace the places that serialize nested objects into
JSON strings and instead add the objects as proper JSON nodes: where
GenerateJsonObjectFromJsonSchema4(...) is stored in the local variable named
JObject and currently added via JsonBody.Add(key,
JsonConvert.SerializeObject(JObject)), change to add the object directly
(JsonBody.Add(key, JObject)); and for the other cases where a JObject/JsonObject
is being stringified before adding to jb (the JObject/JToken container at lines
~292 and ~341), wrap the CLR object using JToken.FromObject(JsonObject) and add
that (jb.Add(key, JToken.FromObject(JsonObject))). Ensure you reference the
GenerateJsonObjectFromJsonSchema4 result variables (JObject/JsonObject) and the
containers (JsonBody, jb) when applying these replacements.
- Around line 83-94: Remove the try/catch blocks that catch
System.StackOverflowException in JsonSchemaTools.cs (these are around accesses
to schema.ActualProperties and similar sections) because StackOverflowException
is non-recoverable; instead rely on the existing cycle detection using
ReferenceStack.Contains(schema) and the ReferenceStack.Remove(schema) cleanup
already present in methods such as the ones interacting with ActualProperties
and other schema traversals; if you still want protection against extreme depth,
add a simple recursion-depth parameter (or a depth counter stored/passed via
ReferenceStack) to the relevant methods rather than catching
StackOverflowException.

In `@Ginger/GingerCoreCommon/Repository/SharedRepository/UploadSelectionItem.cs`:
- Around line 296-305: The current logic in UploadSelectionItem (the block using
normRoot, normTarget and rootName) uses StartsWith which false-positives when
root is only a prefix (e.g., "C:\Shared" vs "C:\Shared2"); change the condition
to also verify that either normTarget exactly equals normRoot or that the
character immediately after normRoot in normTarget is a path separator ('\\' or
'/'), before computing rel and returning $"{rootName}/{rel}" (or rootName when
rel empty). This preserves the existing Trim/rel logic but prevents prefix-only
matches.

In `@Ginger/GingerCoreCommon/RunLib/Agent.cs`:
- Around line 373-374: The inline comment suggests both Appium and AndroidTV
driver types should be exposed, but the code only adds Agent.eDriverType.Appium
to driverTypes; either add the missing AndroidTV enum value (e.g.,
Agent.eDriverType.AndroidTV) to the collection where driverTypes is populated or
change the comment to accurately describe that only Appium is added; locate the
driverTypes.Add call and the Agent.eDriverType enum to update the code or
comment accordingly so they remain consistent.
- Around line 341-345: Remove the unnecessary try-catch around Enum.TryParse in
Agent.cs: replace the try-catch block that sets parsed by directly calling
parsed = Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out
resolvedPlatform); and delete the empty catch branch; this keeps the same
behavior (TryParse returns false on invalid input) and references the existing
symbols parsed and resolvedPlatform in the Agent class.
- Around line 338-359: The parsed enum value resolvedPlatform is never used
downstream: update the branching logic in Agent.cs that currently compares the
raw platformType string (the if/else chain around the eDriverType decisions) to
instead use the resolvedPlatform enum value (e.g., compare resolvedPlatform ==
ePlatformType.Mobile or resolvedPlatform.ToString(), or switch on
resolvedPlatform) so the description-fallback parsing is honored and returns the
correct eDriverType instead of eDriverType.NA.

In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs`:
- Around line 37-44: Extract the repeated Description initialization into a
private helper (e.g., InitializeDescription or EnsureDescriptionFromAction) and
call it from the ActMobileDevice constructor, DoNewActionSetup(), and
PostDeserialization(); the helper should check if
string.IsNullOrEmpty(this.Description) &&
!string.IsNullOrEmpty(this.ActionDescription) and set this.Description =
this.ActionDescription. Replace the duplicated blocks in the constructor,
DoNewActionSetup(), and PostDeserialization() with a single call to that helper
to keep behavior consistent and avoid duplication.
- Line 26: Remove the unused using directive "using System.Linq;" from the top
of ActMobileDevice.cs (the file containing the ActMobileDevice class) — locate
the directive among the other using statements and delete it so there are no
unused imports remaining.
- Around line 138-141: The empty catch in ActMobileDevice's deserialization path
should not swallow exceptions; change it to catch(Exception e) and log the error
via Reporter.ToLog(eLogLevel.ERROR, ...) including context (e.g.,
"ActMobileDevice deserialization failed") and the exception details
(e.ToString()) so failures are recorded; locate the catch in the deserialization
method of class ActMobileDevice and replace the silent catch with the logging
call.

In `@Ginger/GingerCoreNET/DataSource/LiteDB.cs`:
- Around line 672-676: The code currently only checks dt.Rows.Count==0 before
indexing dt.Rows[LocateRowValue], which can still throw IndexOutOfRangeException
if LocateRowValue is negative or >= dt.Rows.Count; update the block around the
DataRow retrieval (the check that precedes DataRow row =
dt.Rows[LocateRowValue]) to validate that LocateRowValue is within
0..dt.Rows.Count-1 and throw a clear Exception that includes DSTableName and the
invalid LocateRowValue when out of range.

In
`@Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs`:
- Around line 1709-1777: In EnsureDeviceBounds, add logic to handle Android TV
attributes when "bounds" is missing: after attempting boundsAttr but before
falling back to webElement.Location/Size, query the IWebElement for attributes
"x", "y", "width", and "height" (using GetAttribute) and try parsing them as
ints; if parsing succeeds, set ei.X, ei.Y, ei.Width, ei.Height accordingly and
add a ControlProperty (or properties) to ei.Properties (e.g., a synthesized
"bounds" value or individual "x"/"y"/"width"/"height" entries) so downstream
highlight/rectangle mapping uses correct dimensions; ensure you catch parsing
exceptions and only apply when all required values are valid.
- Around line 4786-4843: The IWebElement fallback in GenericAppiumDriver (the
code that finds the "best" IWebElement and constructs ElementInfo named ei from
best) only sets ei.X and ei.Y; update this block to also set ei.Width and
ei.Height (use best.Size.Width and best.Size.Height, guarded in the same
try/catch used for X/Y) so the ElementInfo contains full bounds for highlighting
and hit-testing; keep existing attribute population (ElementTitle, ElementType,
ElementObject) unchanged and mirror the error handling style used for setting
X/Y.

In `@Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js`:
- Around line 146-151: The condition treating (0,0) as "no coordinates" is
wrong; when using X = +GingerLibLiveSpy.GetXPoint() and Y =
+GingerLibLiveSpy.GetYPoint(), replace the falsy check (!X || !Y) with a NaN
check (e.g., Number.isNaN(X) || Number.isNaN(Y) or isNaN(X) || isNaN(Y)) so only
undefined/invalid coordinates fall back to CurrentFocusedElement; update the
conditional around GingerLibLiveSpy.GetXPoint/GetYPoint accordingly.

Comment on lines +1144 to +1152
try
{
mWindowExplorerDriver.UnHighLightElements(); // keep previous behavior

}
catch
{
// ignore
}

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.

⚠️ Potential issue | 🟡 Minor

Empty catch block should log the exception.

Per coding guidelines, exceptions should be logged using Reporter.ToLog. Even if the exception is non-fatal, logging at DEBUG level aids troubleshooting.

Proposed fix
             try
             {
                 mWindowExplorerDriver.UnHighLightElements(); // keep previous behavior
-
             }
-            catch
+            catch (Exception ex)
             {
-                // ignore
+                Reporter.ToLog(eLogLevel.DEBUG, "UnHighLightElements failed", ex);
             }
🤖 Prompt for AI Agents
In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs`
around lines 1144 - 1152, The empty catch swallowing exceptions around
mWindowExplorerDriver.UnHighLightElements() should be replaced with logging:
catch the exception as ex and call Reporter.ToLog(eLogLevel.DEBUG,
$"UnHighLightElements failed: {ex.Message}", ex) (or equivalent overload) so the
exception and stack trace are recorded; update the catch block in the method
containing the mWindowExplorerDriver.UnHighLightElements() call to log the
exception at DEBUG level using Reporter.ToLog rather than ignoring it.

Comment on lines +1326 to +1386
// Convert mouse point on displayed Image control to source (screenshot / device) coordinates
// This mirrors DrawElementRectangleAsync mapping and handles Image.Stretch (Uniform/UniformToFill/Fill)
var img = mScreenShotViewPage?.xMainImage;
int srcX = 0, srcY = 0;
bool coordsFromImage = false;

//get the clicked element
ElementInfo inspectElementInfo = await ((IVisualTestingDriver)((AgentOperations)mApplicationAgent.Agent.AgentOperations).Driver).GetElementAtPoint(pointOnAppScreen.X, pointOnAppScreen.Y);
if (inspectElementInfo != null && inspectElementInfo != currentHighlightedElement)
if (img != null)
{
try
{
double srcW = 0, srcH = 0;
if (img.Source is System.Windows.Media.Imaging.BitmapSource bmp && bmp.PixelWidth > 0 && bmp.PixelHeight > 0)
{
srcW = bmp.PixelWidth;
srcH = bmp.PixelHeight;
}

if (srcW <= 0) srcW = Math.Max(1.0, img.ActualWidth);
if (srcH <= 0) srcH = Math.Max(1.0, img.ActualHeight);

double dispW = Math.Max(1.0, img.ActualWidth);
double dispH = Math.Max(1.0, img.ActualHeight);

double scaleX = dispW / srcW;
double scaleY = dispH / srcH;
double usedScaleX = scaleX;
double usedScaleY = scaleY;
double offsetX = 0;
double offsetY = 0;

var stretch = img.Stretch;
if (stretch == Stretch.Uniform || stretch == Stretch.UniformToFill)
{
double uniformScale = (stretch == Stretch.Uniform) ? Math.Min(scaleX, scaleY) : Math.Max(scaleX, scaleY);
usedScaleX = usedScaleY = uniformScale;

double renderedWidth = srcW * uniformScale;
double renderedHeight = srcH * uniformScale;
offsetX = (dispW - renderedWidth) / 2.0;
offsetY = (dispH - renderedHeight) / 2.0;
}

// Mouse point passed in is in displayed image coords (ClickedPoint)
double calcSrcX = (ClickedPoint.X - offsetX) / Math.Max(1e-6, usedScaleX);
double calcSrcY = (ClickedPoint.Y - offsetY) / Math.Max(1e-6, usedScaleY);

// Clamp to source bounds
calcSrcX = Math.Max(0, Math.Min(calcSrcX, srcW - 1));
calcSrcY = Math.Max(0, Math.Min(calcSrcY, srcH - 1));

srcX = (int)Math.Round(calcSrcX);
srcY = (int)Math.Round(calcSrcY);

coordsFromImage = true;
}
catch (Exception exMap)
{
Reporter.ToLog(eLogLevel.DEBUG, "HighlightSelectedElement: failed to convert displayed point to source coords, falling back to driver mapping: " + exMap.Message, exMap);
coordsFromImage = false;
}
}

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 | 🔵 Trivial

Consider extracting coordinate transformation to a reusable helper.

The same uniform/fill scale computation and offset calculation logic appears in both HighlightSelectedElement (lines 1336-1386) and DrawElementRectangleAsync (lines 1547-1572). Extracting this to a shared helper method would reduce duplication and ensure consistency.

Example helper signature
private (double scaleX, double scaleY, double offsetX, double offsetY) ComputeImageScaleAndOffset(
    System.Windows.Controls.Image img, 
    double sourceWidth, 
    double sourceHeight)
{
    // shared transformation logic here
}
🤖 Prompt for AI Agents
In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs`
around lines 1326 - 1386, Duplicate image scale/offset math in
HighlightSelectedElement and DrawElementRectangleAsync should be extracted into
a shared helper; add a private method (e.g., ComputeImageScaleAndOffset(Image
img, double sourceWidth, double sourceHeight) returning (double usedScaleX,
double usedScaleY, double offsetX, double offsetY)) that contains the Stretch
(Uniform/UniformToFill/Fill) logic, scale calculation and centering offsets,
then replace the inline calculations in HighlightSelectedElement and
DrawElementRectangleAsync to call this helper and use its returned values for
mapping ClickedPoint/display coords to source coords; ensure the helper handles
missing BitmapSource sizes and uses the same clamping/epsilon behavior.

Comment on lines +1496 to 1545
// try to get source image size (device/screenshot) safely
double srcW = 0, srcH = 0;
try
{
var bmpSrc = mScreenShotViewPage.xMainImage.Source as System.Windows.Media.Imaging.BitmapSource;
if (bmpSrc != null && bmpSrc.PixelWidth > 0 && bmpSrc.PixelHeight > 0)
{
srcW = bmpSrc.PixelWidth;
srcH = bmpSrc.PixelHeight;
}
}
catch { /* ignore */ }

// fallback to image Actual size if source pixels not available
if (srcW <= 0) srcW = Math.Max(1.0, mScreenShotViewPage.xMainImage.ActualWidth);
if (srcH <= 0) srcH = Math.Max(1.0, mScreenShotViewPage.xMainImage.ActualHeight);

double dispW = Math.Max(1.0, mScreenShotViewPage.xMainImage.ActualWidth);
double dispH = Math.Max(1.0, mScreenShotViewPage.xMainImage.ActualHeight);

// Allow driver/platform to adjust rectangle (works in source coordinates)
double rectangleWidth = clickedElementInfo.Width;
double rectangleHeight = clickedElementInfo.Height;

if (((DriverBase)mWindowExplorerDriver).SetRectangleProperties(ref ElementStartPoint, ref ElementMaxPoint, mScreenShotViewPage.xMainImage.Source.Width, mScreenShotViewPage.xMainImage.Source.Height,
mScreenShotViewPage.xMainImage.ActualWidth, mScreenShotViewPage.xMainImage.ActualHeight, clickedElementInfo))
try
{
/// Driver/Platform specific calculations
rectangleWidth = ElementMaxPoint.X - ElementStartPoint.X;
rectangleHeight = ElementMaxPoint.Y - ElementStartPoint.Y;
bool driverHandled = ((DriverBase)mWindowExplorerDriver).SetRectangleProperties(
ref ElementStartPoint,
ref ElementMaxPoint,
srcW,
srcH,
dispW,
dispH,
clickedElementInfo);

if (driverHandled)
{
rectangleWidth = ElementMaxPoint.X - ElementStartPoint.X;
rectangleHeight = ElementMaxPoint.Y - ElementStartPoint.Y;
}
else
{
rectangleWidth = clickedElementInfo.Width;
rectangleHeight = clickedElementInfo.Height;
}
}
else
catch
{
/// Regular/Common calculations
rectangleWidth = clickedElementInfo.Width;
rectangleHeight = clickedElementInfo.Height;
}

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.

⚠️ Potential issue | 🟡 Minor

Empty catch blocks should log exceptions.

Lines 1507 and 1541 have empty catch blocks. Per coding guidelines, use Reporter.ToLog(eLogLevel.DEBUG, ...) to capture diagnostic information.

Proposed fixes
                     }
                 }
-                catch { /* ignore */ }
+                catch (Exception ex) 
+                { 
+                    Reporter.ToLog(eLogLevel.DEBUG, "Failed to get source image dimensions", ex); 
+                }
                 }
-                catch
+                catch (Exception ex)
                 {
+                    Reporter.ToLog(eLogLevel.DEBUG, "SetRectangleProperties failed", ex);
                     rectangleWidth = clickedElementInfo.Width;
                     rectangleHeight = clickedElementInfo.Height;
                 }
🤖 Prompt for AI Agents
In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs`
around lines 1496 - 1545, The empty catch blocks must log the caught exceptions:
change both catch blocks to catch (Exception e) and call
Reporter.ToLog(eLogLevel.DEBUG, $"<context>: {e}") — for the first catch (around
bitmap source access) include context like "WindowExplorerPage: failed reading
bitmap source for mScreenShotViewPage.xMainImage", and for the second catch
(around ((DriverBase)mWindowExplorerDriver).SetRectangleProperties) include
context like "WindowExplorerPage: SetRectangleProperties threw" while preserving
existing fallback assignments to rectangleWidth/rectangleHeight and not altering
logic for ElementStartPoint/ElementMaxPoint or clickedElementInfo.

Comment on lines +27 to +37
using RestSharp;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

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 | 🔵 Trivial

Remove unused using statements.

Several System.Net.Http related namespaces are imported but RestSharp is used for HTTP calls instead. Consider removing unused imports:

  • System.Net.Http
  • System.Net.Http.Headers
  • System.Text (if StringBuilder/Encoding not used elsewhere)
Proposed cleanup
 using RestSharp;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
 using System.Net;
-using System.Net.Http;
-using System.Net.Http.Headers;
-using System.Text;
 using System.Text.Json;
 using System.Threading.Tasks;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
using RestSharp;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Text.Json;
using System.Threading.Tasks;
🤖 Prompt for AI Agents
In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs`
around lines 27 - 37, Remove the unused using directives from the top of
AppiumDriverEditPage.xaml.cs in the AppiumDriverEditPage class: delete
System.Net.Http, System.Net.Http.Headers and System.Text (only if
Encoding/StringBuilder aren’t used elsewhere in that file); keep RestSharp and
any namespaces actually referenced (e.g., System.Text.Json) and rebuild to
ensure no missing references remain.

Comment on lines +600 to 617
if (mAgent?.AgentOperations != null)
{
if (mAgent.AgentOperations is GingerCore.AgentOperations ops && ops.Driver != null)
{
System.Threading.Tasks.Task.Run(() =>
{
try
{
ops.SetDriverConfiguration();
ops.WaitForAgentToBeReady();
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.ERROR, "Failed to apply agent driver configuration after platform change", ex);
}
});
}
}

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 | 🔵 Trivial

Fire-and-forget async pattern may cause unobserved exceptions.

The Task.Run() call is not awaited and runs on a background thread. While exceptions are caught inside, if the task fails before entering the try block or throws from SetDriverConfiguration, the exception could be unobserved (though caught by the inner try-catch). More critically, there's no feedback to the user if the operation fails.

Consider showing a brief notification on failure or using a proper async event handler pattern.

Suggested improvement
-                    System.Threading.Tasks.Task.Run(() =>
+                    _ = System.Threading.Tasks.Task.Run(async () =>
                     {
                         try
                         {
                             ops.SetDriverConfiguration();
                             ops.WaitForAgentToBeReady();
                         }
                         catch (Exception ex)
                         {
                             Reporter.ToLog(eLogLevel.ERROR, "Failed to apply agent driver configuration after platform change", ex);
+                            await Dispatcher.InvokeAsync(() =>
+                            {
+                                Reporter.ToUser(eUserMsgKey.StaticErrorMessage, "Failed to apply driver configuration. See log for details.");
+                            });
                         }
                     });
🤖 Prompt for AI Agents
In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs`
around lines 600 - 617, The fire-and-forget Task.Run around
mAgent?.AgentOperations (the GingerCore.AgentOperations ops block) can lead to
unobserved failures and no user feedback; change the call to a proper awaited
async flow (e.g., expose/convert the caller to async and await the operation
instead of Task.Run) or explicitly capture the returned Task and handle faults
with ContinueWith/await, and on failure (catch around ops.SetDriverConfiguration
/ ops.WaitForAgentToBeReady) log the exception and surface a user notification
(toast/dialog) so the user is informed when SetDriverConfiguration or
WaitForAgentToBeReady fails; ensure you reference and update the code paths that
call this block so the async usage is properly awaited rather than
fire-and-forget.

Comment on lines +338 to +359
List<object> driverTypes = new List<object>();
ePlatformType resolvedPlatform = ePlatformType.NA;
bool parsed = false;
try
{
parsed = Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out resolvedPlatform);
}
catch { parsed = false; }

if (!parsed)
{
foreach (ePlatformType p in Enum.GetValues(typeof(ePlatformType)))
{
string desc = Amdocs.Ginger.Common.GeneralLib.General.GetEnumValueDescription(typeof(ePlatformType), p);
if (!string.IsNullOrEmpty(desc) && string.Equals(desc, platformType, StringComparison.OrdinalIgnoreCase))
{
resolvedPlatform = p;
parsed = true;
break;
}
}
}

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.

⚠️ Potential issue | 🔴 Critical

Critical: resolvedPlatform is computed but never used in the branching logic.

The new parsing logic (lines 338-359) correctly parses platformType into resolvedPlatform via enum name or description fallback. However, the subsequent if-else chain (lines 361-416) still compares the raw platformType string against ePlatformType.X.ToString().

For inputs like "Mobile/TV" (as shown in AddSolutionPage.xaml.cs), the description fallback would resolve it to ePlatformType.Mobile, but the branching logic would then fail all string comparisons and return eDriverType.NA.

🐛 Proposed fix: Use resolvedPlatform in branching logic
-            if (platformType == ePlatformType.Web.ToString())
+            if (resolvedPlatform == ePlatformType.Web)
             {
                 driverTypes.Add(Agent.eDriverType.InternalBrowser);
                 driverTypes.Add(Agent.eDriverType.Selenium);
                 driverTypes.Add(Agent.eDriverType.Playwright);
             }
-            else if (platformType == ePlatformType.Java.ToString())
+            else if (resolvedPlatform == ePlatformType.Java)
             {
                 driverTypes.Add(Agent.eDriverType.JavaDriver);
             }
-            else if (platformType == ePlatformType.Mobile.ToString())
+            else if (resolvedPlatform == ePlatformType.Mobile)
             {
                 // expose both Appium (mobile) and the AndroidTV flavor
                 driverTypes.Add(Agent.eDriverType.Appium);
             }
-            else if (platformType == ePlatformType.Windows.ToString())
+            else if (resolvedPlatform == ePlatformType.Windows)
             {
                 driverTypes.Add(Agent.eDriverType.WindowsAutomation);
             }
-            else if (platformType == ePlatformType.PowerBuilder.ToString())
+            else if (resolvedPlatform == ePlatformType.PowerBuilder)
             {
                 driverTypes.Add(Agent.eDriverType.PowerBuilder);
             }
-
-            else if (platformType == ePlatformType.Unix.ToString())
+            else if (resolvedPlatform == ePlatformType.Unix)
             {
                 driverTypes.Add(Agent.eDriverType.UnixShell);
-
             }
-            else if (platformType == ePlatformType.DOS.ToString())
+            else if (resolvedPlatform == ePlatformType.DOS)
             {
                 driverTypes.Add(Agent.eDriverType.DOSConsole);
             }
-
-            else if (platformType == ePlatformType.WebServices.ToString())
+            else if (resolvedPlatform == ePlatformType.WebServices)
             {
                 driverTypes.Add(Agent.eDriverType.WebServices);
             }
-
-            //else if (platformType == ePlatformType.AndroidDevice.ToString())
-            //{
-            //    driverTypes.Add(Agent.eDriverType.AndroidADB);
-            //}
-            else if (platformType == ePlatformType.ASCF.ToString())
+            else if (resolvedPlatform == ePlatformType.ASCF)
             {
                 driverTypes.Add(Agent.eDriverType.ASCF);
             }
-
-            else if (platformType == ePlatformType.MainFrame.ToString())
+            else if (resolvedPlatform == ePlatformType.MainFrame)
             {
                 driverTypes.Add(Agent.eDriverType.MainFrame3270);
             }
             else
             {
                 driverTypes.Add(Agent.eDriverType.NA);
             }

Also applies to: 361-416

🤖 Prompt for AI Agents
In `@Ginger/GingerCoreCommon/RunLib/Agent.cs` around lines 338 - 359, The parsed
enum value resolvedPlatform is never used downstream: update the branching logic
in Agent.cs that currently compares the raw platformType string (the if/else
chain around the eDriverType decisions) to instead use the resolvedPlatform enum
value (e.g., compare resolvedPlatform == ePlatformType.Mobile or
resolvedPlatform.ToString(), or switch on resolvedPlatform) so the
description-fallback parsing is honored and returns the correct eDriverType
instead of eDriverType.NA.

Comment on lines +341 to +345
try
{
parsed = Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out resolvedPlatform);
}
catch { parsed = false; }

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 | 🔵 Trivial

Unnecessary try-catch around Enum.TryParse.

Enum.TryParse is designed to never throw exceptions for invalid input—it returns false instead. The try-catch wrapper is dead code.

♻️ Proposed simplification
-            try
-            {
-                parsed = Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out resolvedPlatform);
-            }
-            catch { parsed = false; }
+            parsed = Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out resolvedPlatform);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
try
{
parsed = Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out resolvedPlatform);
}
catch { parsed = false; }
parsed = Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out resolvedPlatform);
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreCommon/RunLib/Agent.cs` around lines 341 - 345, Remove the
unnecessary try-catch around Enum.TryParse in Agent.cs: replace the try-catch
block that sets parsed by directly calling parsed =
Enum.TryParse<ePlatformType>(platformType, ignoreCase: true, out
resolvedPlatform); and delete the empty catch branch; this keeps the same
behavior (TryParse returns false on invalid input) and references the existing
symbols parsed and resolvedPlatform in the Agent class.

Comment on lines +373 to 374
// expose both Appium (mobile) and the AndroidTV flavor
driverTypes.Add(Agent.eDriverType.Appium);

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.

⚠️ Potential issue | 🟡 Minor

Stale or incomplete comment.

The comment states "expose both Appium and the AndroidTV flavor" but only Agent.eDriverType.Appium is added. If AndroidTV support is intended, it appears to be missing. If AndroidTV is handled elsewhere (e.g., via configuration), consider updating the comment to reflect the actual behavior.

🤖 Prompt for AI Agents
In `@Ginger/GingerCoreCommon/RunLib/Agent.cs` around lines 373 - 374, The inline
comment suggests both Appium and AndroidTV driver types should be exposed, but
the code only adds Agent.eDriverType.Appium to driverTypes; either add the
missing AndroidTV enum value (e.g., Agent.eDriverType.AndroidTV) to the
collection where driverTypes is populated or change the comment to accurately
describe that only Appium is added; locate the driverTypes.Add call and the
Agent.eDriverType enum to update the code or comment accordingly so they remain
consistent.

Comment on lines +672 to 676
if (dt.Rows.Count == 0)
{
throw new Exception($"No row found in the datasource table: {DSTableName}");
}
DataRow row = dt.Rows[LocateRowValue];

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.

⚠️ Potential issue | 🟠 Major

Incomplete bounds validation — LocateRowValue can still cause IndexOutOfRangeException.

The check at line 672 only verifies the table is non-empty, but doesn't validate that LocateRowValue is within the valid range. If the table has fewer rows than LocateRowValue, line 676 will still throw an IndexOutOfRangeException.

🛡️ Proposed fix for complete bounds validation
-            if (dt.Rows.Count == 0)
-            {
-                throw new Exception($"No row found in the datasource table: {DSTableName}");                
-            }
+            if (dt.Rows.Count == 0)
+            {
+                throw new Exception($"No row found in the datasource table: {DSTableName}");                
+            }
+            if (LocateRowValue < 0 || LocateRowValue >= dt.Rows.Count)
+            {
+                throw new ArgumentOutOfRangeException(nameof(LocateRowValue), 
+                    $"Row index {LocateRowValue} is out of range. Table '{DSTableName}' has {dt.Rows.Count} row(s).");
+            }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (dt.Rows.Count == 0)
{
throw new Exception($"No row found in the datasource table: {DSTableName}");
}
DataRow row = dt.Rows[LocateRowValue];
if (dt.Rows.Count == 0)
{
throw new Exception($"No row found in the datasource table: {DSTableName}");
}
if (LocateRowValue < 0 || LocateRowValue >= dt.Rows.Count)
{
throw new ArgumentOutOfRangeException(nameof(LocateRowValue),
$"Row index {LocateRowValue} is out of range. Table '{DSTableName}' has {dt.Rows.Count} row(s).");
}
DataRow row = dt.Rows[LocateRowValue];
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/DataSource/LiteDB.cs` around lines 672 - 676, The code
currently only checks dt.Rows.Count==0 before indexing dt.Rows[LocateRowValue],
which can still throw IndexOutOfRangeException if LocateRowValue is negative or
>= dt.Rows.Count; update the block around the DataRow retrieval (the check that
precedes DataRow row = dt.Rows[LocateRowValue]) to validate that LocateRowValue
is within 0..dt.Rows.Count-1 and throw a clear Exception that includes
DSTableName and the invalid LocateRowValue when out of range.

Comment on lines +146 to +151
var X = +GingerLibLiveSpy.GetXPoint();
var Y = +GingerLibLiveSpy.GetYPoint();

// ✅ Android TV fallback
if ((!X || !Y) && CurrentFocusedElement) {
return CurrentFocusedElement;

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.

⚠️ Potential issue | 🟡 Minor

Avoid treating (0,0) as “no coordinates.”
Line 149 uses (!X || !Y), which incorrectly triggers the focused-element fallback at the top/left edges. Use NaN checks instead.

🛠️ Suggested fix
-        if ((!X || !Y) && CurrentFocusedElement) {
+        if ((Number.isNaN(X) || Number.isNaN(Y)) && CurrentFocusedElement) {
             return CurrentFocusedElement;
         }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
var X = +GingerLibLiveSpy.GetXPoint();
var Y = +GingerLibLiveSpy.GetYPoint();
// ✅ Android TV fallback
if ((!X || !Y) && CurrentFocusedElement) {
return CurrentFocusedElement;
var X = +GingerLibLiveSpy.GetXPoint();
var Y = +GingerLibLiveSpy.GetYPoint();
// ✅ Android TV fallback
if ((Number.isNaN(X) || Number.isNaN(Y)) && CurrentFocusedElement) {
return CurrentFocusedElement;
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js` around lines 146
- 151, The condition treating (0,0) as "no coordinates" is wrong; when using X =
+GingerLibLiveSpy.GetXPoint() and Y = +GingerLibLiveSpy.GetYPoint(), replace the
falsy check (!X || !Y) with a NaN check (e.g., Number.isNaN(X) ||
Number.isNaN(Y) or isNaN(X) || isNaN(Y)) so only undefined/invalid coordinates
fall back to CurrentFocusedElement; update the conditional around
GingerLibLiveSpy.GetXPoint/GetYPoint accordingly.

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

Review continued from previous batch...

Comment on lines +98 to +123
// Set the image glyph based on Activity
xIconImage.ImageType = Activity.TargetApplicationPlatformImage;
xIconImage.ToolTip = Activity.TargetApplicationPlatformName;

// Default tooltip value (fallback)
string platformText = Activity.TargetApplicationPlatformName ?? string.Empty;

try
{
// Try to get the platform enum for the Activity target app and get its description attribute value
var ws = WorkSpace.Instance;
if (ws?.Solution != null && !string.IsNullOrEmpty(mActivity?.TargetApplication))
{
var platformEnum = ws.Solution.GetApplicationPlatformForTargetApp(mActivity.TargetApplication);
// Use the General helper to return the EnumValueDescription attribute when present
platformText = Amdocs.Ginger.Common.GeneralLib.General.GetEnumValueDescription(platformEnum.GetType(), platformEnum);
}
}
catch
{
// keep fallback Activity.TargetApplicationPlatformName if anything goes wrong
}

// Set tooltip on the ImageMakerControl - ImageToolTip updates the inner image/font's ToolTip
xIconImage.ImageToolTip = platformText;
// Also set the UserControl ToolTip for safety/fallback
xIconImage.ToolTip = platformText;

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.

⚠️ Potential issue | 🟡 Minor

Log exceptions instead of silently swallowing in SetIconImageType.
The catch block currently hides failures, which makes platform-description issues hard to diagnose.

🔧 Suggested fix
-                catch
-                {
-                    // keep fallback Activity.TargetApplicationPlatformName if anything goes wrong
-                }
+                catch (Exception ex)
+                {
+                    Reporter.ToLog(eLogLevel.ERROR, $"Failed to resolve platform description for '{mActivity?.TargetApplication}'. {ex}");
+                    // keep fallback Activity.TargetApplicationPlatformName if anything goes wrong
+                }

As per coding guidelines, use Reporter.ToLog(eLogLevel.ERROR, message) for logging errors.

🤖 Prompt for AI Agents
In `@Ginger/Ginger/Activities/ActivityPage.xaml.cs` around lines 98 - 123, The
catch in the SetIconImageType logic swallows exceptions; change it to catch
Exception (e) and log the error via Reporter.ToLog(eLogLevel.ERROR, "...")
including the exception and context (e.g., Activity/TargetApplication), so
failures when calling
WorkSpace.Instance.Solution.GetApplicationPlatformForTargetApp or
Amdocs.Ginger.Common.GeneralLib.General.GetEnumValueDescription are recorded;
keep the existing fallback (platformText) and continue setting
xIconImage.ImageToolTip/xIconImage.ToolTip.

Comment on lines +1451 to +1468
try
{
System.Threading.Tasks.Task.Run(() =>
{
try
{
mWindowExplorerDriver?.HighLightElement(inspectElementInfo, locateElementByItLocators: false);
}
catch (Exception exDriver)
{
Reporter.ToLog(eLogLevel.DEBUG, "HighlightSelectedElement: driver HighLightElement failed: " + exDriver.Message, exDriver);
}
});
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.DEBUG, "HighlightSelectedElement: scheduling driver highlight failed: " + ex.Message, ex);
}

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 | 🔵 Trivial

Fire-and-forget Task.Run with internal exception handling is acceptable but could be simplified.

The nested try-catch inside Task.Run is defensive, but consider using a helper or ensuring the logging is consistent across similar patterns in this file.

🤖 Prompt for AI Agents
In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs`
around lines 1451 - 1468, Remove the nested try/catch inside Task.Run and
instead schedule the call to mWindowExplorerDriver?.HighLightElement(...) with a
continuation that logs failures consistently; e.g. call Task.Run(() =>
mWindowExplorerDriver?.HighLightElement(inspectElementInfo,
locateElementByItLocators: false)).ContinueWith(t =>
Reporter.ToLog(eLogLevel.DEBUG, "HighlightSelectedElement: driver
HighLightElement failed: " + t.Exception?.GetBaseException().Message,
t.Exception), TaskContinuationOptions.OnlyOnFaulted) so you keep fire-and-forget
behavior but centralize and unify logging for exceptions thrown by
HighLightElement.

Comment on lines +152 to +327
private DateTime? mLastHighlightTime = null;
private readonly TimeSpan mHighlightPreserveDuration = TimeSpan.FromSeconds(5); // keep highlights visible this long after being set
private readonly object mHighlightLock = new object();
private bool mKeepHighlightTv = false;
public void HighlightElementOnDevice(Amdocs.Ginger.Common.UIElement.ElementInfo element)
{

try
{
if (element == null) return;

var platform = mDriver.GetDevicePlatformType();

// ─────────────────────────────────────────────────────────────
// ANDROID / iOS → Use the driver mapping (accurate & stable)
// - Draw via DrawRectangle() which calls SetRectangleProperties(...)
// - Start a 5s one-shot timer to auto-clear the rectangle
// ─────────────────────────────────────────────────────────────
if (platform == eDevicePlatformType.Android || platform == eDevicePlatformType.iOS)
{
// Seed points; the driver will compute the accurate rectangle (XML fallback inside driver)
System.Drawing.Point start = new System.Drawing.Point(element.X, element.Y);
System.Drawing.Point end = new System.Drawing.Point(
element.X + Math.Max(1, element.Width),
element.Y + Math.Max(1, element.Height));

DrawRectangle(start, end, element); // <-- calls driver SetRectangleProperties (old, working path)

// Record highlight time (used by your refresh logic)
lock (mHighlightLock) { mLastHighlightTime = DateTime.UtcNow; }

// Auto-clear after 5s (mobile only)
var t = new DispatcherTimer { Interval = mHighlightPreserveDuration }; // e.g., 5 seconds
t.Tick += (s, e) =>
{
try { ClearHighlightedElementOnDevice(); }
finally { ((DispatcherTimer)s).Stop(); }
};
t.Start();

return;
}

// ─────────────────────────────────────────────────────────────
// ANDROID TV → Keep your on-device highlight + screenshot overlay
// (Uniform scale + letterbox mapping using screenshot pixel size)
// ─────────────────────────────────────────────────────────────
// Keep the overlay sticky for TV (don’t auto-clear here)
mKeepHighlightTv = true; // set this field in your class (bool mKeepHighlightTv = false;)

var canvas = this.FindName("xDeviceScreenshotCanvas") as System.Windows.Controls.Canvas
?? this.FindName("xCordsStack") as System.Windows.Controls.Canvas;
var img = this.xDeviceScreenshotImage ?? this.FindName("xDeviceScreenshotImage") as Image;
var highlighter = this.FindName("xHighlighterBorder") as System.Windows.Controls.Border;

if (canvas == null || img == null)
{
Reporter.ToLog(eLogLevel.WARN, "HighlightElementOnDevice(TV): missing canvas or image control.");
return;
}

canvas.Dispatcher.Invoke(() =>
{
try
{
if (highlighter != null) highlighter.Visibility = Visibility.Collapsed;

var src = SafeGetDeviceImageSource();
double srcW = src?.PixelWidth ?? (double)Math.Max(1, img.Source?.Width ?? 1);
double srcH = src?.PixelHeight ?? (double)Math.Max(1, img.Source?.Height ?? 1);
if (srcW <= 0 || srcH <= 0) { Reporter.ToLog(eLogLevel.WARN, "TV highlight: invalid screenshot source"); return; }

// Parse bounds then fallback to X/Y/Width/Height
long l = -1, t = -1, r = -1, b = -1; bool haveBounds = false;
try
{
var boundsProp = element?.Properties?.FirstOrDefault(p => string.Equals(p.Name, "bounds", StringComparison.InvariantCultureIgnoreCase))?.Value;
if (!string.IsNullOrEmpty(boundsProp))
{
string cleaned = boundsProp.Replace("][", ",").Replace("[", "").Replace("]", "").Replace(" ", "");
var parts = cleaned.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length >= 4 &&
long.TryParse(parts[0], NumberStyles.Integer, CultureInfo.InvariantCulture, out l) &&
long.TryParse(parts[1], NumberStyles.Integer, CultureInfo.InvariantCulture, out t) &&
long.TryParse(parts[2], NumberStyles.Integer, CultureInfo.InvariantCulture, out r) &&
long.TryParse(parts[3], NumberStyles.Integer, CultureInfo.InvariantCulture, out b))
{
haveBounds = true;
}
}
}
catch { haveBounds = false; }

if (!haveBounds && element != null && element.X >= 0 && element.Y >= 0)
{
l = element.X;
t = element.Y;
r = element.X + Math.Max(1, element.Width);
b = element.Y + Math.Max(1, element.Height);
haveBounds = true;
}

if (!haveBounds)
{
Reporter.ToLog(eLogLevel.WARN, "TV highlight: element has no bounds/size.");
return;
}

// Map device pixels -> control using Uniform scale + centered letterbox
double controlW = img.ActualWidth > 0 ? img.ActualWidth : (double)img.Width;
double controlH = img.ActualHeight > 0 ? img.ActualHeight : (double)img.Height;
if (controlW <= 0 || controlH <= 0)
{
controlW = xDeviceScreenshotCanvas?.ActualWidth ?? controlW;
controlH = xDeviceScreenshotCanvas?.ActualHeight ?? controlH;
}

double scaleUniform = Math.Min(controlW / Math.Max(1.0, srcW), controlH / Math.Max(1.0, srcH));
double displayedW = srcW * scaleUniform;
double displayedH = srcH * scaleUniform;
double offsetX = (controlW - displayedW) / 2.0;
double offsetY = (controlH - displayedH) / 2.0;

double startX = l * scaleUniform + offsetX;
double startY = t * scaleUniform + offsetY;
double width = Math.Max(2, (r - l) * scaleUniform);
double height = Math.Max(2, (b - t) * scaleUniform);

if (highlighter != null)
{
Canvas.SetLeft(highlighter, startX);
Canvas.SetTop(highlighter, startY);
highlighter.Width = width;
highlighter.Height = height;
highlighter.Visibility = Visibility.Visible;
Canvas.SetZIndex(highlighter, 9999);
}
else
{
// Fallback to a transient rectangle if the border is not available
for (int i = canvas.Children.Count - 1; i >= 0; i--)
{
if (canvas.Children[i] is System.Windows.Shapes.Rectangle r0 && r0.Tag is string s && s == "GingerHighlighter")
canvas.Children.RemoveAt(i);
}
var rect = new System.Windows.Shapes.Rectangle
{
Stroke = Brushes.Red,
StrokeThickness = 3,
Fill = new SolidColorBrush(Color.FromArgb(40, 255, 0, 0)),
Width = width,
Height = height,
IsHitTestVisible = false,
Tag = "GingerHighlighter"
};
Canvas.SetLeft(rect, startX);
Canvas.SetTop(rect, startY);
Canvas.SetZIndex(rect, 9999);
canvas.Children.Add(rect);
}

// Update last time for logs/refresh logic (not used to auto-clear TV)
lock (mHighlightLock) { mLastHighlightTime = DateTime.UtcNow; }
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.WARN, "TV highlight mapping/drawing failed: " + ex.Message, ex);
}
});
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.WARN, "HighlightElementOnDevice failed: " + ex.Message, ex);
}

}

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.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

find . -name "MobileDriverWindow.xaml.cs" -type f

Repository: Ginger-Automation/Ginger

Length of output: 133


🏁 Script executed:

wc -l ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 138


🏁 Script executed:

sed -n '152,327p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs | head -80

Repository: Ginger-Automation/Ginger

Length of output: 4688


🏁 Script executed:

# Check for other DispatcherTimer usage in the file
rg "DispatcherTimer" ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs -A 2 -B 2

Repository: Ginger-Automation/Ginger

Length of output: 483


🏁 Script executed:

# Check the ClearHighlightedElementOnDevice implementation
rg "ClearHighlightedElementOnDevice" ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs -A 10

Repository: Ginger-Automation/Ginger

Length of output: 2616


🏁 Script executed:

# Check class-level fields to understand the overall structure
sed -n '1,160p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs | grep -E "private|public|protected" | head -30

Repository: Ginger-Automation/Ginger

Length of output: 696


Prevent earlier highlight timers from clearing newer highlights.

Each call to HighlightElementOnDevice creates a new DispatcherTimer that fires after 5 seconds. If consecutive highlights occur within that window, an earlier timer can fire and clear the most recent highlight. Reuse a single timer and check the timestamp before clearing to ensure only highlights older than 5 seconds are cleared.

🧩 Suggested single-timer approach
         private readonly object mHighlightLock = new object();
+        private DispatcherTimer mHighlightClearTimer;
         private bool mKeepHighlightTv = false;
                     // Record highlight time (used by your refresh logic)
                     lock (mHighlightLock) { mLastHighlightTime = DateTime.UtcNow; }
 
                     // Auto-clear after 5s (mobile only)
-                    var t = new DispatcherTimer { Interval = mHighlightPreserveDuration }; // e.g., 5 seconds
-                    t.Tick += (s, e) =>
-                    {
-                        try { ClearHighlightedElementOnDevice(); }
-                        finally { ((DispatcherTimer)s).Stop(); }
-                    };
-                    t.Start();
+                    mHighlightClearTimer ??= new DispatcherTimer { Interval = mHighlightPreserveDuration };
+                    mHighlightClearTimer.Stop();
+                    mHighlightClearTimer.Tick -= HighlightClearTimer_Tick;
+                    mHighlightClearTimer.Tick += HighlightClearTimer_Tick;
+                    mHighlightClearTimer.Start();
private void HighlightClearTimer_Tick(object sender, EventArgs e)
{
    lock (mHighlightLock)
    {
        if (!mLastHighlightTime.HasValue ||
            (DateTime.UtcNow - mLastHighlightTime.Value) < mHighlightPreserveDuration)
        {
            return;
        }
        mLastHighlightTime = null;
    }

    ClearHighlightedElementOnDevice();
    (sender as DispatcherTimer)?.Stop();
}
🤖 Prompt for AI Agents
In `@Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs` around lines
152 - 327, HighlightElementOnDevice creates a new DispatcherTimer on every call
allowing an earlier timer to clear a newer highlight; fix by introducing a
single reusable timer field (e.g., mHighlightClearTimer) started once, and in
its tick handler (HighlightClearTimer_Tick) lock mHighlightLock and compare
DateTime.UtcNow - mLastHighlightTime against mHighlightPreserveDuration, only
calling ClearHighlightedElementOnDevice() and stopping the timer when the last
highlight is older than the preserve duration; update HighlightElementOnDevice
to set mLastHighlightTime and start the shared timer instead of creating new
timers, and ensure TV path still sets mKeepHighlightTv to true so TV highlights
remain sticky.

Comment on lines +478 to 490
Point mousePos = new Point(-1, -1);
Dispatcher.Invoke(() => mousePos = Mouse.GetPosition(xDeviceScreenshotImage));

System.Drawing.Point pointOnAppScreen = new System.Drawing.Point(-1, -1);

this.Dispatcher.Invoke(() =>
pointOnAppScreen = ((DriverBase)mDriver).GetPointOnAppWindow(new System.Drawing.Point((int)mousePos.X, (int)mousePos.Y),
xDeviceScreenshotImage.Source.Width, xDeviceScreenshotImage.Source.Height, xDeviceScreenshotImage.ActualWidth, xDeviceScreenshotImage.ActualHeight)
pointOnAppScreen = ((DriverBase)mDriver).GetPointOnAppWindow(
new System.Drawing.Point((int)mousePos.X, (int)mousePos.Y),
xDeviceScreenshotImage.Source.Width,
xDeviceScreenshotImage.Source.Height,
xDeviceScreenshotImage.ActualWidth,
xDeviceScreenshotImage.ActualHeight)
);

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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

find . -name "MobileDriverWindow.xaml.cs" -type f

Repository: Ginger-Automation/Ginger

Length of output: 133


🏁 Script executed:

wc -l ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 138


🏁 Script executed:

sed -n '470,500p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 1214


🏁 Script executed:

grep -n "SafeGetDeviceImageSource" ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 735


🏁 Script executed:

sed -n '73,120p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 2188


🏁 Script executed:

sed -n '130,145p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 818


🏁 Script executed:

sed -n '215,230p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 1101


🏁 Script executed:

sed -n '1960,1975p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 634


🏁 Script executed:

sed -n '2295,2310p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 606


🏁 Script executed:

sed -n '475,495p' ./Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 843


Guard against null screenshot source when mapping mouse position.

xDeviceScreenshotImage.Source can be null during initial load or a failed refresh, which would throw in the mapping call. Use SafeGetDeviceImageSource() with an early-return guard, consistent with other usages in this file (lines 1966, 2298, etc.).

🛠️ Suggested guard
-            this.Dispatcher.Invoke(() =>
-                pointOnAppScreen = ((DriverBase)mDriver).GetPointOnAppWindow(
-                    new System.Drawing.Point((int)mousePos.X, (int)mousePos.Y),
-                    xDeviceScreenshotImage.Source.Width,
-                    xDeviceScreenshotImage.Source.Height,
-                    xDeviceScreenshotImage.ActualWidth,
-                    xDeviceScreenshotImage.ActualHeight)
-            );
+            this.Dispatcher.Invoke(() =>
+            {
+                var src = SafeGetDeviceImageSource();
+                if (src == null) return;
+                pointOnAppScreen = ((DriverBase)mDriver).GetPointOnAppWindow(
+                    new System.Drawing.Point((int)mousePos.X, (int)mousePos.Y),
+                    src.PixelWidth,
+                    src.PixelHeight,
+                    xDeviceScreenshotImage.ActualWidth,
+                    xDeviceScreenshotImage.ActualHeight);
+            });
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Point mousePos = new Point(-1, -1);
Dispatcher.Invoke(() => mousePos = Mouse.GetPosition(xDeviceScreenshotImage));
System.Drawing.Point pointOnAppScreen = new System.Drawing.Point(-1, -1);
this.Dispatcher.Invoke(() =>
pointOnAppScreen = ((DriverBase)mDriver).GetPointOnAppWindow(new System.Drawing.Point((int)mousePos.X, (int)mousePos.Y),
xDeviceScreenshotImage.Source.Width, xDeviceScreenshotImage.Source.Height, xDeviceScreenshotImage.ActualWidth, xDeviceScreenshotImage.ActualHeight)
pointOnAppScreen = ((DriverBase)mDriver).GetPointOnAppWindow(
new System.Drawing.Point((int)mousePos.X, (int)mousePos.Y),
xDeviceScreenshotImage.Source.Width,
xDeviceScreenshotImage.Source.Height,
xDeviceScreenshotImage.ActualWidth,
xDeviceScreenshotImage.ActualHeight)
);
Point mousePos = new Point(-1, -1);
Dispatcher.Invoke(() => mousePos = Mouse.GetPosition(xDeviceScreenshotImage));
System.Drawing.Point pointOnAppScreen = new System.Drawing.Point(-1, -1);
this.Dispatcher.Invoke(() =>
{
var src = SafeGetDeviceImageSource();
if (src == null) return;
pointOnAppScreen = ((DriverBase)mDriver).GetPointOnAppWindow(
new System.Drawing.Point((int)mousePos.X, (int)mousePos.Y),
src.PixelWidth,
src.PixelHeight,
xDeviceScreenshotImage.ActualWidth,
xDeviceScreenshotImage.ActualHeight);
});
🤖 Prompt for AI Agents
In `@Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs` around lines
478 - 490, Before calling GetPointOnAppWindow to map mousePos, guard against a
null image source by calling SafeGetDeviceImageSource() (same pattern used
elsewhere) and return early if it is null; specifically, before
Dispatcher.Invoke and Mouse.GetPosition(xDeviceScreenshotImage), ensure
SafeGetDeviceImageSource() for xDeviceScreenshotImage is non-null and skip the
mapping if it returns null so GetPointOnAppWindow and
xDeviceScreenshotImage.Source.Width/Height are never accessed when Source is
null.

Comment on lines +1599 to +1664
else if(mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv)
{
this.Icon = ImageMakerControl.GetImageSource(eImageType.AndroidTv , width: 200);
}
else
{
this.Icon = ImageMakerControl.GetImageSource(eImageType.Ios);
}
xMessageLbl.Content = "Connecting to Device...";

//---NEW: if the configured driver is AndroidTV, set the initial preview/ window size
//to better match a typical TV native resolution so the user doesn't see a mobile-sized window
// while the agent is loading.This does not affect mobile devices.
try
{
if (mDriver != null && mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv)
{
// Prefer a 16:9 default TV native resolution (1920x1080) for initial sizing
const double defaultTvWidth = 500.0;
const double defaultTvHeight = 500.0;
double hostHalfWidth = SystemParameters.PrimaryScreenWidth * 0.5; // keep it usable on laptops
double targetWidth = Math.Max(250, Math.Min(hostHalfWidth, defaultTvWidth)); // clamp to usable range
double aspectRatio = defaultTvHeight / defaultTvWidth;
double targetHeight = Math.Max(150, targetWidth * aspectRatio);

// Apply TV-only behavior so we do not affect mobile agents:
// - Clip canvas so children can't draw outside the column
// - Force left alignment and Transparent background so canvas captures mouse events
xDeviceSectionMainPnl.ClipToBounds = true;
xDeviceScreenshotCanvas.ClipToBounds = true;
xDeviceScreenshotCanvas.HorizontalAlignment = HorizontalAlignment.Left;
xDeviceScreenshotCanvas.Background = Brushes.Transparent;

// Reserve space for the right-side controls so the canvas won't expand underneath them
double reservedRight = 250; // safe default
try
{
reservedRight = Math.Max(150, xWindowGrid.ColumnDefinitions[2].ActualWidth + 40);
}
catch
{
// keep fallback if layout not measured yet
reservedRight = 250;
}

// Clamp the canvas width so it cannot overlap the controls column
double maxAllowedCanvas = Math.Max(250, SystemParameters.PrimaryScreenWidth - reservedRight);
double finalWidth = Math.Min(targetWidth, maxAllowedCanvas);

// Set initial zoom based on chosen final width
mZoomSize = finalWidth / defaultTvWidth;
if (mZoomSize <= 0) mZoomSize = 0.5;

xDeviceScreenshotCanvas.Width = finalWidth;
xDeviceScreenshotCanvas.Height = targetHeight;

// Update window so the canvas is visible when it first opens and doesn't cover the controls
this.Width = Math.Max(this.Width, xDeviceScreenshotCanvas.Width + reservedRight);
this.Height = Math.Max(this.Height, xDeviceScreenshotCanvas.Height + 180);
}
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.WARN, "InitWindowLook: failed to apply AndroidTV initial sizing, continuing with defaults", ex);
}
//---END NEW

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.

⚠️ Potential issue | 🟡 Minor

Android TV initial sizing uses 1:1 ratio, not 16:9.

defaultTvWidth and defaultTvHeight are both 500, so the computed aspect ratio is square while the comment says 16:9. This yields a non-TV-like preview. Consider deriving height from width with a 16:9 ratio.

🛠️ Suggested ratio fix
-                        const double defaultTvWidth = 500.0;
-                        const double defaultTvHeight = 500.0;
+                        const double defaultTvWidth = 500.0;
+                        const double defaultTvHeight = defaultTvWidth * 9.0 / 16.0;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
else if(mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv)
{
this.Icon = ImageMakerControl.GetImageSource(eImageType.AndroidTv , width: 200);
}
else
{
this.Icon = ImageMakerControl.GetImageSource(eImageType.Ios);
}
xMessageLbl.Content = "Connecting to Device...";
//---NEW: if the configured driver is AndroidTV, set the initial preview/ window size
//to better match a typical TV native resolution so the user doesn't see a mobile-sized window
// while the agent is loading.This does not affect mobile devices.
try
{
if (mDriver != null && mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv)
{
// Prefer a 16:9 default TV native resolution (1920x1080) for initial sizing
const double defaultTvWidth = 500.0;
const double defaultTvHeight = 500.0;
double hostHalfWidth = SystemParameters.PrimaryScreenWidth * 0.5; // keep it usable on laptops
double targetWidth = Math.Max(250, Math.Min(hostHalfWidth, defaultTvWidth)); // clamp to usable range
double aspectRatio = defaultTvHeight / defaultTvWidth;
double targetHeight = Math.Max(150, targetWidth * aspectRatio);
// Apply TV-only behavior so we do not affect mobile agents:
// - Clip canvas so children can't draw outside the column
// - Force left alignment and Transparent background so canvas captures mouse events
xDeviceSectionMainPnl.ClipToBounds = true;
xDeviceScreenshotCanvas.ClipToBounds = true;
xDeviceScreenshotCanvas.HorizontalAlignment = HorizontalAlignment.Left;
xDeviceScreenshotCanvas.Background = Brushes.Transparent;
// Reserve space for the right-side controls so the canvas won't expand underneath them
double reservedRight = 250; // safe default
try
{
reservedRight = Math.Max(150, xWindowGrid.ColumnDefinitions[2].ActualWidth + 40);
}
catch
{
// keep fallback if layout not measured yet
reservedRight = 250;
}
// Clamp the canvas width so it cannot overlap the controls column
double maxAllowedCanvas = Math.Max(250, SystemParameters.PrimaryScreenWidth - reservedRight);
double finalWidth = Math.Min(targetWidth, maxAllowedCanvas);
// Set initial zoom based on chosen final width
mZoomSize = finalWidth / defaultTvWidth;
if (mZoomSize <= 0) mZoomSize = 0.5;
xDeviceScreenshotCanvas.Width = finalWidth;
xDeviceScreenshotCanvas.Height = targetHeight;
// Update window so the canvas is visible when it first opens and doesn't cover the controls
this.Width = Math.Max(this.Width, xDeviceScreenshotCanvas.Width + reservedRight);
this.Height = Math.Max(this.Height, xDeviceScreenshotCanvas.Height + 180);
}
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.WARN, "InitWindowLook: failed to apply AndroidTV initial sizing, continuing with defaults", ex);
}
//---END NEW
else if(mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv)
{
this.Icon = ImageMakerControl.GetImageSource(eImageType.AndroidTv , width: 200);
}
else
{
this.Icon = ImageMakerControl.GetImageSource(eImageType.Ios);
}
xMessageLbl.Content = "Connecting to Device...";
//---NEW: if the configured driver is AndroidTV, set the initial preview/ window size
//to better match a typical TV native resolution so the user doesn't see a mobile-sized window
// while the agent is loading.This does not affect mobile devices.
try
{
if (mDriver != null && mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv)
{
// Prefer a 16:9 default TV native resolution (1920x1080) for initial sizing
const double defaultTvWidth = 500.0;
const double defaultTvHeight = defaultTvWidth * 9.0 / 16.0;
double hostHalfWidth = SystemParameters.PrimaryScreenWidth * 0.5; // keep it usable on laptops
double targetWidth = Math.Max(250, Math.Min(hostHalfWidth, defaultTvWidth)); // clamp to usable range
double aspectRatio = defaultTvHeight / defaultTvWidth;
double targetHeight = Math.Max(150, targetWidth * aspectRatio);
// Apply TV-only behavior so we do not affect mobile agents:
// - Clip canvas so children can't draw outside the column
// - Force left alignment and Transparent background so canvas captures mouse events
xDeviceSectionMainPnl.ClipToBounds = true;
xDeviceScreenshotCanvas.ClipToBounds = true;
xDeviceScreenshotCanvas.HorizontalAlignment = HorizontalAlignment.Left;
xDeviceScreenshotCanvas.Background = Brushes.Transparent;
// Reserve space for the right-side controls so the canvas won't expand underneath them
double reservedRight = 250; // safe default
try
{
reservedRight = Math.Max(150, xWindowGrid.ColumnDefinitions[2].ActualWidth + 40);
}
catch
{
// keep fallback if layout not measured yet
reservedRight = 250;
}
// Clamp the canvas width so it cannot overlap the controls column
double maxAllowedCanvas = Math.Max(250, SystemParameters.PrimaryScreenWidth - reservedRight);
double finalWidth = Math.Min(targetWidth, maxAllowedCanvas);
// Set initial zoom based on chosen final width
mZoomSize = finalWidth / defaultTvWidth;
if (mZoomSize <= 0) mZoomSize = 0.5;
xDeviceScreenshotCanvas.Width = finalWidth;
xDeviceScreenshotCanvas.Height = targetHeight;
// Update window so the canvas is visible when it first opens and doesn't cover the controls
this.Width = Math.Max(this.Width, xDeviceScreenshotCanvas.Width + reservedRight);
this.Height = Math.Max(this.Height, xDeviceScreenshotCanvas.Height + 180);
}
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.WARN, "InitWindowLook: failed to apply AndroidTV initial sizing, continuing with defaults", ex);
}
//---END NEW
🤖 Prompt for AI Agents
In `@Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs` around lines
1599 - 1664, The code sets defaultTvWidth and defaultTvHeight both to 500,
producing a 1:1 aspect ratio instead of 16:9; update the AndroidTV sizing logic
in MobileDriverWindow.xaml.cs (within the block checking
mDriver.GetDevicePlatformType() == eDevicePlatformType.AndroidTv) to use a 16:9
ratio—either by changing the defaults (e.g., defaultTvWidth=1920,
defaultTvHeight=1080) or by computing aspectRatio = 9.0/16.0 and deriving
targetHeight = targetWidth * aspectRatio—so that mZoomSize,
xDeviceScreenshotCanvas.Width/Height and subsequent window sizing use the
correct TV aspect ratio.

using Amdocs.Ginger.Repository;
using GingerCoreNET.SolutionRepositoryLib.RepositoryObjectsLib.PlatformsLib;
using System;
using System.Linq;

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 | 🔵 Trivial

Remove unused import.

System.Linq is imported but not used in this file.

🧹 Remove unused import
-using System.Linq;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
using System.Linq;
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs` at line 26,
Remove the unused using directive "using System.Linq;" from the top of
ActMobileDevice.cs (the file containing the ActMobileDevice class) — locate the
directive among the other using statements and delete it so there are no unused
imports remaining.

Comment on lines +37 to +44
public ActMobileDevice()
{
// If Description not set, default it to the canonical action-level description
if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
{
this.Description = this.ActionDescription;
}
}

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.

🛠️ Refactor suggestion | 🟠 Major

Consolidate duplicate initialization logic.

The same Description initialization logic is repeated in the constructor, DoNewActionSetup(), and PostDeserialization(). Extract this into a private helper method to follow DRY principles and ensure consistent behavior.

♻️ Proposed refactor to consolidate logic
+        private void EnsureDescriptionInitialized()
+        {
+            if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
+            {
+                this.Description = this.ActionDescription;
+            }
+        }
+
         public ActMobileDevice()
         {
-            // If Description not set, default it to the canonical action-level description
-            if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
-            {
-                this.Description = this.ActionDescription;
-            }
+            EnsureDescriptionInitialized();
         }
         
         public override void DoNewActionSetup()
         {
             base.DoNewActionSetup();
-            if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
-            {
-                this.Description = this.ActionDescription;
-            }
+            EnsureDescriptionInitialized();
         }
         
         public override void PostDeserialization()
         {
             base.PostDeserialization();
             try
             {
-                if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
-                {
-                    this.Description = this.ActionDescription;
-                }
+                EnsureDescriptionInitialized();
             }
             catch
             {
                 // be defensive - do not throw during deserialization
             }
         }

Also applies to: 53-60, 128-142

🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs` around lines 37
- 44, Extract the repeated Description initialization into a private helper
(e.g., InitializeDescription or EnsureDescriptionFromAction) and call it from
the ActMobileDevice constructor, DoNewActionSetup(), and PostDeserialization();
the helper should check if string.IsNullOrEmpty(this.Description) &&
!string.IsNullOrEmpty(this.ActionDescription) and set this.Description =
this.ActionDescription. Replace the duplicated blocks in the constructor,
DoNewActionSetup(), and PostDeserialization() with a single call to that helper
to keep behavior consistent and avoid duplication.

Comment on lines +138 to +141
catch
{
// be defensive - do not throw during deserialization
}

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.

⚠️ Potential issue | 🟡 Minor

Log exceptions instead of swallowing them silently.

Even in defensive code paths, silently catching exceptions hides potential issues. Log the exception for debugging purposes.

🛡️ Proposed fix to log the exception
             catch (Exception ex)
             {
-                // be defensive - do not throw during deserialization
+                // be defensive - do not throw during deserialization, but log for debugging
+                Reporter.ToLog(eLogLevel.ERROR, "Error during ActMobileDevice PostDeserialization", ex);
             }

As per coding guidelines: **/*.cs: Use Reporter.ToLog(eLogLevel.ERROR, message) for logging errors.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
catch
{
// be defensive - do not throw during deserialization
}
catch (Exception ex)
{
// be defensive - do not throw during deserialization, but log for debugging
Reporter.ToLog(eLogLevel.ERROR, "Error during ActMobileDevice PostDeserialization", ex);
}
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs` around lines
138 - 141, The empty catch in ActMobileDevice's deserialization path should not
swallow exceptions; change it to catch(Exception e) and log the error via
Reporter.ToLog(eLogLevel.ERROR, ...) including context (e.g., "ActMobileDevice
deserialization failed") and the exception details (e.ToString()) so failures
are recorded; locate the catch in the deserialization method of class
ActMobileDevice and replace the silent catch with the logging call.

Comment on lines +1709 to +1777
private void EnsureDeviceBounds(ElementInfo ei)
{
try
{
if (ei == null) return;

// If already have bounds property or width/height set - assume ok
if ((ei.Properties != null && ei.Properties.Any(p => string.Equals(p.Name, "bounds", StringComparison.InvariantCultureIgnoreCase)))
|| (ei.Width > 0 && ei.Height > 0))
{
return;
}

// Try attribute "bounds" (common for Android UiAutomator)
string boundsAttr = null;
if (ei.ElementObject is IWebElement we)
{
try
{
boundsAttr = we.GetAttribute("bounds");
}
catch { boundsAttr = null; }
}

if (!string.IsNullOrEmpty(boundsAttr))
{
// parse "[l,t][r,b]" or "[l,t,r,b]"
var cleaned = boundsAttr.Replace("][", ",").Replace("[", "").Replace("]", "").Replace(" ", "");
var parts = cleaned.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length >= 4 &&
int.TryParse(parts[0], out var l) &&
int.TryParse(parts[1], out var t) &&
int.TryParse(parts[2], out var r) &&
int.TryParse(parts[3], out var b))
{
ei.X = l;
ei.Y = t;
ei.Width = Math.Max(0, r - l);
ei.Height = Math.Max(0, b - t);

if (ei.Properties == null) ei.Properties = new ObservableList<ControlProperty>();
ei.Properties.Add(new ControlProperty() { Name = "bounds", Value = $"[{l},{t}][{r},{b}]" });
return;
}
}

// Fallback: try IWebElement location/size (Selenium/Appium)
if (ei.ElementObject is IWebElement webElement)
{
try
{
// Use Selenium API that is commonly available
var loc = webElement.Location;
var sz = webElement.Size;

ei.X = loc.X;
ei.Y = loc.Y;
ei.Width = sz.Width;
ei.Height = sz.Height;

if (ei.Properties == null) ei.Properties = new ObservableList<ControlProperty>();
ei.Properties.Add(new ControlProperty() { Name = "bounds", Value = $"[{ei.X},{ei.Y}][{ei.X + ei.Width},{ei.Y + ei.Height}]" });
return;
}
catch
{
// ignore and let caller try other ways
}
}

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.

⚠️ Potential issue | 🟠 Major

Handle Android TV x/y/width/height attributes when bounds are missing.
Android TV page sources often expose x/y/width/height instead of bounds. Without parsing those, ElementInfo.Width/Height stays 0 and highlight/rectangle mapping can collapse to a 1‑px box.

🐛 Proposed fix
                 if (!string.IsNullOrEmpty(boundsAttr))
                 {
                     // parse "[l,t][r,b]" or "[l,t,r,b]"
                     var cleaned = boundsAttr.Replace("][", ",").Replace("[", "").Replace("]", "").Replace(" ", "");
                     var parts = cleaned.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
@@
                         return;
                     }
                 }
+
+                // Android TV / vendor XML sometimes provides x/y/width/height instead of bounds
+                if (ei.ElementObject is XmlNode xmlNode)
+                {
+                    var ax = xmlNode.Attributes?["x"];
+                    var ay = xmlNode.Attributes?["y"];
+                    var aw = xmlNode.Attributes?["width"];
+                    var ah = xmlNode.Attributes?["height"];
+
+                    if (ax != null && ay != null && aw != null && ah != null &&
+                        int.TryParse(ax.Value, out var x) &&
+                        int.TryParse(ay.Value, out var y) &&
+                        int.TryParse(aw.Value, out var w) &&
+                        int.TryParse(ah.Value, out var h))
+                    {
+                        ei.X = x;
+                        ei.Y = y;
+                        ei.Width = w;
+                        ei.Height = h;
+
+                        if (ei.Properties == null) ei.Properties = new ObservableList<ControlProperty>();
+                        ei.Properties.Add(new ControlProperty() { Name = "bounds", Value = $"[{x},{y}][{x + w},{y + h}]" });
+                        return;
+                    }
+                }
🤖 Prompt for AI Agents
In
`@Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs`
around lines 1709 - 1777, In EnsureDeviceBounds, add logic to handle Android TV
attributes when "bounds" is missing: after attempting boundsAttr but before
falling back to webElement.Location/Size, query the IWebElement for attributes
"x", "y", "width", and "height" (using GetAttribute) and try parsing them as
ints; if parsing succeeds, set ei.X, ei.Y, ei.Width, ei.Height accordingly and
add a ControlProperty (or properties) to ei.Properties (e.g., a synthesized
"bounds" value or individual "x"/"y"/"width"/"height" entries) so downstream
highlight/rectangle mapping uses correct dimensions; ensure you catch parsing
exceptions and only apply when all required values are valid.

Comment on lines +4786 to +4843
// 2) IWebElement fallback
try
{
Reporter.ToLog(eLogLevel.DEBUG, "AndroidTV: Trying IWebElement fallback");

var webElements = Driver.FindElements(By.XPath(".//*"));
IWebElement best = null;
long bestArea = long.MaxValue;

foreach (var we in webElements)
{
try
{
var loc = we.Location;
var sz = we.Size;

long sx = loc.X;
long sy = loc.Y;
long ex = loc.X + sz.Width;
long ey = loc.Y + sz.Height;

if (ptX >= sx && ptX <= ex && ptY >= sy && ptY <= ey)
{
long area = Math.Max(1, ex - sx) * Math.Max(1, ey - sy);
if (area < bestArea)
{
best = we;
bestArea = area;
}
}
}
catch { }
}

if (best != null)
{
Reporter.ToLog(eLogLevel.DEBUG, "AndroidTV: IWebElement fallback succeeded");

// Build ElementInfo from IWebElement
ElementInfo ei = new ElementInfo
{
ElementTitle = best.GetAttribute("content-desc") ??
best.GetAttribute("name") ??
best.GetAttribute("text") ??
best.TagName,
ElementType = best.GetAttribute("class") ?? best.TagName,
ElementObject = best
};

// Set coordinates
try
{
ei.X = best.Location.X;
ei.Y = best.Location.Y;
}
catch { }

// Try mapping IWebElement → XmlNode to get XPath

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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# Find the GenericAppiumDriver.cs file
fd "GenericAppiumDriver.cs" --type f

Repository: Ginger-Automation/Ginger

Length of output: 145


🏁 Script executed:

# Once found, check the file around the mentioned lines and ElementInfo usage
wc -l "Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs"

Repository: Ginger-Automation/Ginger

Length of output: 150


🏁 Script executed:

# Search for ElementInfo class definition
rg "class ElementInfo" --type cs -A 20

Repository: Ginger-Automation/Ginger

Length of output: 8309


🏁 Script executed:

# Check the exact lines in GenericAppiumDriver.cs around 4786-4843
sed -n '4780,4850p' "Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs" | cat -n

Repository: Ginger-Automation/Ginger

Length of output: 3730


🏁 Script executed:

# Get the full ElementInfo class from GingerCoreCommon (appears to be the one used)
cat "Ginger/GingerCoreCommon/UIElement/ElementInfo.cs" | head -100

Repository: Ginger-Automation/Ginger

Length of output: 3307


🏁 Script executed:

# Search for Width and Height properties in ElementInfo
rg "public.*Width|public.*Height" "Ginger/GingerCoreCommon/UIElement/ElementInfo.cs" -A 1

Repository: Ginger-Automation/Ginger

Length of output: 151


🏁 Script executed:

# Search for other ElementInfo instantiations in GenericAppiumDriver.cs to establish pattern
rg "new ElementInfo|ei\.Width|ei\.Height" "Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs" -B 2 -A 5

Repository: Ginger-Automation/Ginger

Length of output: 6190


Add Width and Height to ElementInfo in IWebElement fallback.
The IWebElement fallback creates ElementInfo with only X and Y coordinates, missing Width and Height. This breaks element highlighting and hit-tests that rely on full bounds. Other instantiations in this file consistently set all dimensions; this fallback should too.

Proposed fix
                             try
                             {
                                 ei.X = best.Location.X;
                                 ei.Y = best.Location.Y;
+                                ei.Width = best.Size.Width;
+                                ei.Height = best.Size.Height;
                             }
                             catch { }
🤖 Prompt for AI Agents
In
`@Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs`
around lines 4786 - 4843, The IWebElement fallback in GenericAppiumDriver (the
code that finds the "best" IWebElement and constructs ElementInfo named ei from
best) only sets ei.X and ei.Y; update this block to also set ei.Width and
ei.Height (use best.Size.Width and best.Size.Height, guarded in the same
try/catch used for X/Y) so the ElementInfo contains full bounds for highlighting
and hit-testing; keep existing attribute population (ElementTitle, ElementType,
ElementObject) unchanged and mirror the error handling style used for setting
X/Y.

@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

🤖 Fix all issues with AI agents
In `@Ginger/GingerCoreCommon/Repository/SharedRepository/UploadSelectionItem.cs`:
- Around line 251-277: The repeated if/else-if chain that sets rootPath and
rootName based on UsageItem's type (checking ActivitiesGroup, Activity, Act,
VariableBase) should be replaced with a single mapping or switch expression to
avoid duplication; create a map from Type to a tuple of (generic repository
type, friendly name) or use a switch on UsageItem's runtime type, call
GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<T>()
with the mapped generic type to obtain FolderFullPath, and assign
rootPath/rootName from that single concise branch (update references to
UsageItem, rootPath, rootName, and the GetRepositoryItemRootFolder<T>() calls
accordingly).

Comment on lines +251 to +277
// Determine the shared root folder and friendly name based on item type
string rootPath = string.Empty;
string rootName = "Shared Repository";
if (UsageItem is ActivitiesGroup)
{
var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<ActivitiesGroup>();
rootPath = root?.FolderFullPath ?? string.Empty;
rootName = "(root) Shared Activities Groups";
}
else if (UsageItem is Activity)
{
var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<Activity>();
rootPath = root?.FolderFullPath ?? string.Empty;
rootName = "(root) Shared Activities";
}
else if (UsageItem is Act)
{
var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<Act>();
rootPath = root?.FolderFullPath ?? string.Empty;
rootName = "(root) Shared Actions";
}
else if (UsageItem is VariableBase)
{
var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<VariableBase>();
rootPath = root?.FolderFullPath ?? string.Empty;
rootName = "(root) Shared Variables";
}

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 | 🔵 Trivial

Consider extracting type-to-root mapping to reduce repetition.

The if/else-if chain repeats the same pattern for each type. A dictionary or switch expression could consolidate this logic and make adding new types easier.

♻️ Optional refactor using switch expression
-                // Determine the shared root folder and friendly name based on item type
-                string rootPath = string.Empty;
-                string rootName = "Shared Repository";
-                if (UsageItem is ActivitiesGroup)
-                {
-                    var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<ActivitiesGroup>();
-                    rootPath = root?.FolderFullPath ?? string.Empty;
-                    rootName = "(root) Shared Activities Groups";
-                }
-                else if (UsageItem is Activity)
-                {
-                    var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<Activity>();
-                    rootPath = root?.FolderFullPath ?? string.Empty;
-                    rootName = "(root) Shared Activities";
-                }
-                else if (UsageItem is Act)
-                {
-                    var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<Act>();
-                    rootPath = root?.FolderFullPath ?? string.Empty;
-                    rootName = "(root) Shared Actions";
-                }
-                else if (UsageItem is VariableBase)
-                {
-                    var root = GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<VariableBase>();
-                    rootPath = root?.FolderFullPath ?? string.Empty;
-                    rootName = "(root) Shared Variables";
-                }
+                // Determine the shared root folder and friendly name based on item type
+                var (rootPath, rootName) = UsageItem switch
+                {
+                    ActivitiesGroup => (
+                        GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<ActivitiesGroup>()?.FolderFullPath ?? string.Empty,
+                        "(root) Shared Activities Groups"),
+                    Activity => (
+                        GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<Activity>()?.FolderFullPath ?? string.Empty,
+                        "(root) Shared Activities"),
+                    Act => (
+                        GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<Act>()?.FolderFullPath ?? string.Empty,
+                        "(root) Shared Actions"),
+                    VariableBase => (
+                        GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<VariableBase>()?.FolderFullPath ?? string.Empty,
+                        "(root) Shared Variables"),
+                    _ => (string.Empty, "Shared Repository")
+                };
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreCommon/Repository/SharedRepository/UploadSelectionItem.cs`
around lines 251 - 277, The repeated if/else-if chain that sets rootPath and
rootName based on UsageItem's type (checking ActivitiesGroup, Activity, Act,
VariableBase) should be replaced with a single mapping or switch expression to
avoid duplication; create a map from Type to a tuple of (generic repository
type, friendly name) or use a switch on UsageItem's runtime type, call
GingerCoreCommonWorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder<T>()
with the mapped generic type to obtain FolderFullPath, and assign
rootPath/rootName from that single concise branch (update references to
UsageItem, rootPath, rootName, and the GetRepositoryItemRootFolder<T>() calls
accordingly).

@ravirk91
ravirk91 enabled auto-merge (squash) February 3, 2026 08:18
@ravirk91
ravirk91 disabled auto-merge February 3, 2026 08:18
@ravirk91
ravirk91 merged commit 3371926 into master Feb 3, 2026
13 of 14 checks passed
@ravirk91
ravirk91 deleted the master-for-beta-merge branch February 3, 2026 08:18
ravirk91 added a commit that referenced this pull request Feb 20, 2026
* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
ravirk91 added a commit that referenced this pull request Mar 9, 2026
* Merge master to official branch (#4444)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Updated ginger core common nuget version (#4445)

* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>

* Allow Fetching/Updating Ginger.Solution.xml through SolutionRepository/parser service

* Need to Update GingerCoreCommon Version to generate new nuget package

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>

* Enhance API Key encryption and remove masking logic (#4449)

* Enhance API Key encryption and remove masking logic

API Key is now encrypted on field exit and before saving, unless it is a value expression or already encrypted. Removed the previous masking/tag mechanism for the API Key textbox, simplifying the logic and improving security. Added necessary using directives for new functionality.

* Encrypt API keys and tokens and before save

Added automatic encryption for Applitools and Sealights sensitive fields (API keys, agent tokens) when text boxes lose focus and before saving configurations. Skips encryption for value expressions and already encrypted values. Event handlers are attached and re-attached as needed. Includes minor refactoring and comments.

* by mistake changes revert

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Refactor export query logic for Excel data source (#4452)

* Refactor export query logic for Excel data source

Improve CreateQueryWithWhereList using LINQ and switch for operators, skipping invalid conditions and returning cleaner query strings. Update DataSourceExportToExcelPage to persist ExportQueryValue in both action and standalone modes, ensuring consistent query generation and improved code clarity.

* Add NotStartsWith/NotEndsWith operators and improve where clause

Added support for "NotStartsWith" and "NotEndsWith" operators in SQL-like predicate generation using "Not Like". Also updated logic to omit the "where" keyword when no conditions are present, returning only the column list for cleaner output.

---------

Co-authored-by: tanushah <[email protected]>

* PipelineID Runset fix (#4453)

Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Shared repository folder item fix (#4454)

* Shared repository folder item fix

* Column hide for Overriting Share repo

---------

Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Update installer script for .NET runtime versions

* Update CI pipelines to use .NET 10.0.103 (#4456)

Switched Build.yml and Release.yml to install and reference .NET SDK 10.0.103 instead of 8.0.100. Updated all file copy and signing steps to use net10.0-windows10.0.17763.0 output directories. Adjusted comments and references to match the new .NET version.

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: amanpras <[email protected]>
ravirk91 added a commit that referenced this pull request Mar 31, 2026
* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

* Refactor export query generation and persistence logic (#4447)

Rewrite CreateQueryWithWhereList to use LINQ for column selection, simplify WHERE clause construction with a switch statement, and return queries in the expected format. Update DataSourceExportToExcelPage to persist ExportQueryValue for both action and non-action table elements. Clean up code and improve maintainability.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451) (#4455)

Co-authored-by: Mayur Rathi <[email protected]>

* Merge 2026.3 to master (#4457)

* Merge master to official branch (#4444)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Updated ginger core common nuget version (#4445)

* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>

* Allow Fetching/Updating Ginger.Solution.xml through SolutionRepository/parser service

* Need to Update GingerCoreCommon Version to generate new nuget package

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>

* Enhance API Key encryption and remove masking logic (#4449…
ravirk91 added a commit that referenced this pull request Apr 13, 2026
* Merge master to official branch (#4444)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Updated ginger core common nuget version (#4445)

* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>

* Allow Fetching/Updating Ginger.Solution.xml through SolutionRepository/parser service

* Need to Update GingerCoreCommon Version to generate new nuget package

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>

* Enhance API Key encryption and remove masking logic (#4449)

* Enhance API Key encryption and remove masking logic

API Key is now encrypted on field exit and before saving, unless it is a value expression or already encrypted. Removed the previous masking/tag mechanism for the API Key textbox, simplifying the logic and improving security. Added necessary using directives for new functionality.

* Encrypt API keys and tokens and before save

Added automatic encryption for Applitools and Sealights sensitive fields (API keys, agent tokens) when text boxes lose focus and before saving configurations. Skips encryption for value expressions and already encrypted values. Event handlers are attached and re-attached as needed. Includes minor refactoring and comments.

* by mistake changes revert

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Refactor export query logic for Excel data source (#4452)

* Refactor export query logic for Excel data source

Improve CreateQueryWithWhereList using LINQ and switch for operators, skipping invalid conditions and returning cleaner query strings. Update DataSourceExportToExcelPage to persist ExportQueryValue in both action and standalone modes, ensuring consistent query generation and improved code clarity.

* Add NotStartsWith/NotEndsWith operators and improve where clause

Added support for "NotStartsWith" and "NotEndsWith" operators in SQL-like predicate generation using "Not Like". Also updated logic to omit the "where" keyword when no conditions are present, returning only the column list for cleaner output.

---------

Co-authored-by: tanushah <[email protected]>

* PipelineID Runset fix (#4453)

Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Shared repository folder item fix (#4454)

* Shared repository folder item fix

* Column hide for Overriting Share repo

---------

Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Update installer script for .NET runtime versions

* Update CI pipelines to use .NET 10.0.103 (#4456)

Switched Build.yml and Release.yml to install and reference .NET SDK 10.0.103 instead of 8.0.100. Updated all file copy and signing steps to use net10.0-windows10.0.17763.0 output directories. Adjusted comments and references to match the new .NET version.

* Merge master to official branch 2026.4 (#4475)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and onl…
ravirk91 added a commit that referenced this pull request May 7, 2026
* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

* Refactor export query generation and persistence logic (#4447)

Rewrite CreateQueryWithWhereList to use LINQ for column selection, simplify WHERE clause construction with a switch statement, and return queries in the expected format. Update DataSourceExportToExcelPage to persist ExportQueryValue for both action and non-action table elements. Clean up code and improve maintainability.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451) (#4455)

Co-authored-by: Mayur Rathi <[email protected]>

* Merge 2026.3 to master (#4457)

* Merge master to official branch (#4444)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Updated ginger core common nuget version (#4445)

* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>

* Allow Fetching/Updating Ginger.Solution.xml through SolutionRepository/parser service

* Need to Update GingerCoreCommon Version to generate new nuget package

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>

* Enhance API Key encryption and remove masking logic (…
ravirk91 added a commit that referenced this pull request May 18, 2026
* Merge master to official branch (#4444)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Updated ginger core common nuget version (#4445)

* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>

* Allow Fetching/Updating Ginger.Solution.xml through SolutionRepository/parser service

* Need to Update GingerCoreCommon Version to generate new nuget package

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>

* Enhance API Key encryption and remove masking logic (#4449)

* Enhance API Key encryption and remove masking logic

API Key is now encrypted on field exit and before saving, unless it is a value expression or already encrypted. Removed the previous masking/tag mechanism for the API Key textbox, simplifying the logic and improving security. Added necessary using directives for new functionality.

* Encrypt API keys and tokens and before save

Added automatic encryption for Applitools and Sealights sensitive fields (API keys, agent tokens) when text boxes lose focus and before saving configurations. Skips encryption for value expressions and already encrypted values. Event handlers are attached and re-attached as needed. Includes minor refactoring and comments.

* by mistake changes revert

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Refactor export query logic for Excel data source (#4452)

* Refactor export query logic for Excel data source

Improve CreateQueryWithWhereList using LINQ and switch for operators, skipping invalid conditions and returning cleaner query strings. Update DataSourceExportToExcelPage to persist ExportQueryValue in both action and standalone modes, ensuring consistent query generation and improved code clarity.

* Add NotStartsWith/NotEndsWith operators and improve where clause

Added support for "NotStartsWith" and "NotEndsWith" operators in SQL-like predicate generation using "Not Like". Also updated logic to omit the "where" keyword when no conditions are present, returning only the column list for cleaner output.

---------

Co-authored-by: tanushah <[email protected]>

* PipelineID Runset fix (#4453)

Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Shared repository folder item fix (#4454)

* Shared repository folder item fix

* Column hide for Overriting Share repo

---------

Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Update installer script for .NET runtime versions

* Update CI pipelines to use .NET 10.0.103 (#4456)

Switched Build.yml and Release.yml to install and reference .NET SDK 10.0.103 instead of 8.0.100. Updated all file copy and signing steps to use net10.0-windows10.0.17763.0 output directories. Adjusted comments and references to match the new .NET version.

* Merge master to official branch 2026.4 (#4475)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, …
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.

5 participants