Skip to content

Feature/android tv automation support#4413

Merged
ravirk91 merged 156 commits into
Releases/Betafrom
Feature/android_Tv_automation_support
Jan 23, 2026
Merged

Feature/android tv automation support#4413
ravirk91 merged 156 commits into
Releases/Betafrom
Feature/android_Tv_automation_support

Conversation

@tanushahande2003

@tanushahande2003 tanushahande2003 commented Jan 19, 2026

Copy link
Copy Markdown
Contributor

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

    • Android TV support added (device options, TV-specific controls, new icons/images).
  • UI/UX Improvements

    • Platform labels show “Mobile/TV”; platform pickers and grid columns updated for friendlier selection.
    • Richer tooltips and descriptive titles for actions and icons.
  • Live Spy & Visual

    • Improved Live Spy, screenshot flow, element highlighting and coordinate mapping (including TV scenarios).
  • Stability

    • More defensive checks, resilient image handling, safer driver interactions and improved error logging.

✏️ Tip: You can customize this high-level summary in your review settings.

Maheshkale447 and others added 30 commits November 24, 2025 14:54
…ed/Beta-2025.5.1

Releases/beta published/beta 2025.5.1
CodeQL security scan workflow yml added
excluding unwanted folders and projects
updating for triggering security
Fix: GitHub SecurityAlerts 198,199, 200, 201, 202
Comment thread Ginger/GingerCoreCommon/RunLib/Agent.cs Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 23

Caution

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

⚠️ Outside diff range comments (3)
Ginger/GingerCoreCommon/RunLib/Agent.cs (1)

336-376: Use resolvedPlatform for driver selection (description parsing currently ignored).

You compute resolvedPlatform (including description match) but still compare the raw platformType string in the if/else chain, so values like “Mobile/TV” will still fall through to NA. Use resolvedPlatform for selection, and prefer a culture-aware comparison for descriptions.

🐛 Suggested fix
-                    if (!string.IsNullOrEmpty(desc) && string.Equals(desc, platformType, StringComparison.OrdinalIgnoreCase))
+                    if (!string.IsNullOrEmpty(desc) && string.Equals(desc, platformType, StringComparison.CurrentCultureIgnoreCase))
                     {
                         resolvedPlatform = p;
                         parsed = true;
                         break;
                     }
                 }
             }

-            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.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);
             }

Based on learnings, prefer StringComparison.CurrentCultureIgnoreCase for the description comparison.

Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs (1)

1599-1696: Android TV initial sizing uses a square ratio despite the 16:9 intent.

defaultTvWidth and defaultTvHeight are both 500, which yields a 1:1 aspect ratio. That contradicts the 16:9 comment and can distort the initial preview size.

🐛 Suggested fix
-                        const double defaultTvWidth = 500.0;
-                        const double defaultTvHeight = 500.0;
+                        const double defaultTvWidth = 1920.0;
+                        const double defaultTvHeight = 1080.0;
Ginger/Ginger/SolutionWindows/AddSolutionPage.xaml.cs (1)

163-176: Preserve backward compatibility for “Mobile” platform text.

If any legacy paths still emit "Mobile", this now falls back to NA, which can misconfigure the default driver/platform. Consider accepting both strings.

✅ Suggested fix (accept both “Mobile” and “Mobile/TV”)
 return text switch
 {
     "Windows" => ePlatformType.Windows,
     "Unix" => ePlatformType.Unix,
+    "Mobile" => ePlatformType.Mobile,
     "Mobile/TV" => ePlatformType.Mobile,
     "Web" => ePlatformType.Web,
     "DOS" => ePlatformType.DOS,
     "Java" => ePlatformType.Java,
     "WebServices" => ePlatformType.WebServices,
     "ASCF" => ePlatformType.ASCF,
     "MainFrame" => ePlatformType.MainFrame,
     "PowerBuilder" => ePlatformType.PowerBuilder,
     "Service" => ePlatformType.Service,
     _ => ePlatformType.NA,
 };
🤖 Fix all issues with AI agents
In `@Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs`:
- Around line 274-306: Change the exception logging level from DEBUG to ERROR in
the catch blocks within PomAllElementsPage.xaml.cs: update the Reporter.ToLog
calls that currently log exSync, exDriver, and exFallback (the catches around
GetElementAtPoint/Appium live-spy and the WinExplorer
GetControlFromMousePosition fallback) to use eLogLevel.ERROR so failures in the
Appium live-spy path and the WinExplorer fallback (involving
mWinExplorer.GetControlFromMousePosition, LearnElementInfoDetails, etc.) are
logged as errors.
- Around line 270-272: The dispatcher thread is being synchronously blocked by
Task.Run(...).GetAwaiter().GetResult() when calling
appiumDriver.GetElementAtPoint; make the caller async and await the operation
instead (e.g., mark the LiveSpy/tick handler method in
PomAllElementsPage.xaml.cs async and replace the blocking call with await
Task.Run(() => appiumDriver.GetElementAtPoint(p.x, p.y)) or, if the driver
exposes an async API, await that directly), then set foundElement after the
await and call Reporter.ToLog as before so the UI thread remains responsive.
- Around line 256-266: The current catch sets p = (0,0) which can be mistaken
for valid coordinates; change p to a nullable or sentinel value and skip the
element lookup when coords are unknown: replace the local (int x,int y) p with a
nullable tuple (e.g. (int x,int y)? p) or a boolean flag, set p = null (or
flag=false) in the catch block for deviceWindow.GetMousePositionOnDevice(), and
update the subsequent check (the if that currently tests p.x >= 0 && p.y >= 0)
to first ensure p has a value before accessing p.Value.x/p.Value.y (or check the
flag), thereby avoiding treating (0,0) as valid when position retrieval fails.

In `@Ginger/Ginger/AutomatePageLib/AddActionMenu/LiveSpy/LiveSpyPage.xaml.cs`:
- Around line 268-279: LearnElementInfoDetails returns an ElementInfo that may
be an enriched instance; update the code to capture and use that return value
instead of ignoring it by assigning the result back to mSpyElement before
calling mWindowExplorerDriver.UpdateElementInfoFields; keep the existing
try/catch around UpdateElementInfoFields (which takes mSpyElement) so the
enriched element is used for field updates and highlighting.

In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs`:
- Around line 1489-1622: DrawElementRectangleAsync currently always invokes
mWindowExplorerDriver.HighLightElement(... locateElementByItLocators: true)
which can re-select a different element and override an exact selection; add a
boolean parameter highlightInApp (default true) to DrawElementRectangleAsync,
skip the driver.HighLightElement call when highlightInApp is false, and update
HighlightSelectedElement to call DrawElementRectangleAsync(inspectElementInfo,
highlightInApp: false) so the exact element highlight is preserved; reference
the DrawElementRectangleAsync method, the HighlightSelectedElement caller, and
the mWindowExplorerDriver.HighLightElement invocation when making the change.

In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs`:
- Around line 591-609: The fire-and-forget Task.Run around applying runtime
config (mAgent?.AgentOperations -> GingerCore.AgentOperations ops) hides
failures and can cause races; replace it with an awaited/trackable async flow
that reports status to the UI: perform ops.SetDriverConfiguration() and
ops.WaitForAgentToBeReady() in an async method (or return the Task) and await it
(or store and observe the Task) so exceptions surface to the caller, update
Reporter.ToLog and propagate success/failure to the UI (e.g., status indicator
or message box) so the user is notified if the configuration application fails
or is still in progress; ensure you reference mAgent.AgentOperations /
GingerCore.AgentOperations / ops.SetDriverConfiguration /
ops.WaitForAgentToBeReady when locating the code to change.
- Around line 754-758: The empty catch in AppiumDriverEditPage.xaml.cs silently
swallows initialization errors; change the bare catch to catch(Exception e) and
log the full error via Reporter.ToLog(eLogLevel.ERROR, ...) including a concise
context message (e.g., "Error loading Appium driver edit controls") plus
e.Message and e.StackTrace so initialization failures are recorded; update the
catch block that follows the try which loads the page controls in the
AppiumDriverEditPage class accordingly.

In `@Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml.cs`:
- Around line 152-369: The TV highlights are being auto-cleared because the
auto-clear path and any external refresh logic ignore the mKeepHighlightTv flag;
update HighlightElementOnDevice to avoid starting the 5s DispatcherTimer when
mKeepHighlightTv is set (or skip scheduling any auto-clear for
eDevicePlatformType.Android TV path) and ensure any external refresh/cleanup
code that checks mLastHighlightTime respects mKeepHighlightTv before clearing;
also reset mKeepHighlightTv = false inside ClearHighlightedElementOnDevice after
removing TV highlight so state doesn’t drift (refer to mKeepHighlightTv,
mLastHighlightTime, HighlightElementOnDevice, ClearHighlightedElementOnDevice
and the timer/refresh code that clears highlights).
- Around line 478-489: In CurrentMousePosToSpy, guard against a null screenshot
source by calling SafeGetDeviceImageSource and returning early if it is null;
use the safe image returned instead of accessing xDeviceScreenshotImage.Source
directly when computing sizes for ((DriverBase)mDriver).GetPointOnAppWindow, and
keep the existing Dispatcher.Invoke for mousePos and pointOnAppScreen but pass
safeImage.Width/Height (and ActualWidth/ActualHeight from
xDeviceScreenshotImage) to avoid dereferencing a null Source.

In `@Ginger/Ginger/UserControlsLib/ImageMakerLib/ImageMakerControl.xaml.cs`:
- Around line 934-936: The tooltip text for the Mobile image type uses
inconsistent casing ("Mobile/Tv"); update the call in the eImageType.Mobile case
where SetAsFontAwesomeIcon is invoked with
EFontAwesomeIcon.Solid_MobileScreenButton to use "Mobile/TV" instead so it
matches the rest of the UI casing and style.
- Around line 1324-1340: The fallback render currently uses the incoming width
directly which yields 1×1 bitmaps when callers pass 0; fix by measuring the
control with double.PositiveInfinity when width == 0 (call IM.Measure(new
Size(double.PositiveInfinity, double.PositiveInfinity))), then use
IM.DesiredSize to set desiredWidth and desiredHeight (falling back to the
provided width when non-zero), proceed with IM.Arrange/IM.UpdateLayout, and
compute pixelWidth/pixelHeight from the resolved desiredWidth/desiredHeight
before creating the RenderTargetBitmap and calling rtb.Render(IM).

In `@Ginger/Ginger/UserControlsLib/ucGridView/ucGrid.xaml.cs`:
- Around line 2164-2175: Replace the magic number 27.0 in the Convert method
with a well-named constant to clarify intent: declare a private const double
(e.g., MultipleScreenImageWidth) near the ucGrid.xaml.cs class and use that
constant instead of the literal when computing desiredWidth for
Amdocs.Ginger.Common.Enums.eImageType.MultipleScreen; keep the existing type
check and the call to ImageMakerControl.GetImageSource(imageType, null, 0, null,
desiredWidth) unchanged.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml.cs`:
- Around line 54-85: The empty catch in ApplyTitleAndTooltipForAct silently
swallows all exceptions; update it to catch Exception ex and call
Reporter.ToLog(Reporter.eLogLevel.Debug, $"ApplyTitleAndTooltipForAct failed",
ex) (or equivalent overload) so the exception and context are logged at DEBUG
level while still preventing the exception from bubbling, keeping the existing
behavior of not impacting list rendering.
- Around line 156-166: Consolidate the redundant casts in OnItemPropertyChanged
by casting the DependencyObject d once to UcListViewItem (e.g., reuse uli) and
use that single variable for both setting Item and calling
ApplyTitleAndTooltipForAct; replace the separate "if (d is UcListViewItem
control && e.NewValue != null) { control.Item = ... }" with a null-check on uli
and e.NewValue, assign uli.Item when appropriate, then call
uli.ApplyTitleAndTooltipForAct(uli.Item), removing the extra 'control' variable
and duplicate cast.

In `@Ginger/GingerCoreCommon/Drivers/CoreDrivers/Mobile/MobileDriverCommon.cs`:
- Around line 21-35: Rename the enum member eDeviceSource.AndroidTV to AndroidTv
to match the project's PascalCase convention and the existing
eDevicePlatformType.AndroidTv usage; update the declaration inside enum
eDeviceSource and search for all usages of eDeviceSource.AndroidTV (e.g., places
that set or compare device source) and replace them with eDeviceSource.AndroidTv
so references (such as in GenericAppiumDriver, AppiumDriverEditPage.xaml.cs,
MobileDriverWindow.xaml.cs, eImageType.cs) compile and remain consistent.

In `@Ginger/GingerCoreCommon/Repository/PlatformsLib/ApplicationPlatform.cs`:
- Around line 108-143: The setter block for Platform (handling string inputs) is
emitting duplicate notifications and uses OrdinalIgnoreCase; update the logic
that sets this.Platform inside the Enum.TryParse<ePlatformType> and the
description-matching loop to only call OnPropertyChanged once per change (for
nameof(Platform) and nameof(PlatformDescription)) and remove any redundant
calls, and change comparisons that use StringComparison.OrdinalIgnoreCase to
StringComparison.CurrentCultureIgnoreCase when comparing the incoming value to
the enum description (the code using
Amdocs.Ginger.Common.GeneralLib.General.GetEnumValueDescription and the initial
Enum.TryParse check should use culture-aware comparisons where applicable).

In `@Ginger/GingerCoreCommon/Run/ApplicationAgent.cs`:
- Around line 113-120: Wrap the call to
Amdocs.Ginger.Common.GeneralLib.General.GetEnumValueDescription in a safe guard
so exceptions cannot bubble into UI binding: in ApplicationAgent.cs around the
property that reads AppPlatform.Platform, catch any Exception when calling
GetEnumValueDescription (both the AppPlatform branch and the ePlatformType.NA
fallback), and return a safe string fallback (e.g., the enum name or "Unknown")
on error; reference the AppPlatform property, the GetEnumValueDescription
method, and ePlatformType.NA so you update both return paths to use the guarded
call.

In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs`:
- Around line 128-142: The PostDeserialization method in ActMobileDevice
currently swallows all exceptions in its catch block; update it to catch
Exception (e.g., catch (Exception ex)) and call Reporter.ToLog(eLogLevel.ERROR,
$"PostDeserialization failed in ActMobileDevice: {ex}") so errors are recorded;
keep the defensive behavior (do not rethrow) but ensure the exception details
are logged for debugging.
- Around line 45-75: Replace the inconsistent "Tv" casing with "TV" in all
user-facing string properties and methods: update ActionDescription,
ActionUserDescription, ToString(), and ActionType to use "Mobile/TV Device
Action" (and any occurrences of Mobile/Tv elsewhere in this class) so the
abbreviation is consistently capitalized; ensure you only change the string
literals and keep method/property names and behavior intact.
- Around line 37-60: Remove the duplicate Description initialization from the
ActMobileDevice constructor and keep the assignment in DoNewActionSetup;
specifically, delete the constructor's block that sets this.Description from
this.ActionDescription so new-action setup logic lives only in DoNewActionSetup,
and if needed add or ensure a PostDeserialization handler sets Description from
ActionDescription for deserialized instances (referencing ActMobileDevice(),
DoNewActionSetup(), Description, ActionDescription, and PostDeserialization).
- Around line 26-27: Remove the unused using directive by deleting the "using
System.Linq;" line at the top of ActMobileDevice.cs (the file containing the
ActMobileDevice class), leaving only required usings such as "using
System.Collections.Generic;"; after removal, rebuild to ensure no LINQ symbols
are needed elsewhere in that file.

In `@Ginger/GingerCoreNET/RunLib/AgentOperations.cs`:
- Around line 387-405: The loop in Agent.DriverConfiguration mutates persisted
DriverConfigParam.Value (and subValue.Value) with evaluated/decrypted
ve.ValueCalculated, which risks persisting secrets and losing original VE
expressions; instead, create a runtime-only representation (e.g., clone
Agent.DriverConfiguration or build a Dictionary/temporary list keyed by
DriverConfigParam.Name) and set evaluated values there for use at runtime,
leaving the original DriverConfigParam and its MultiValues untouched; update the
code around the foreach over Agent.DriverConfiguration (symbols:
DriverConfigParam, MultiValues, Value, ve.Value, ve.ValueCalculated) to populate
and use that local evaluated map/clone rather than assigning back to DCP.Value
or subValue.Value.
- Around line 448-494: The code currently uses Enum.Parse (inside the
UserConfiguredEnumTypeAttribute handling) and int.Parse/Convert.ToBoolean which
can throw and produce misleading logs; replace Enum.Parse with Enum.TryParse
using the enum type from UserConfiguredEnumTypeAttribute (preserving
case-sensitivity as intended) and only call driverProp.SetValue(Driver,
parsedEnum) when TryParse succeeds (log or handle invalid values instead of
relying on exceptions), and similarly use Int32.TryParse for the "Int32" case
and Boolean.TryParse for "Boolean" (fall back to the existing default true
behavior only when parsing fails if that behaviour is desired), updating the
blocks around UserConfiguredEnumTypeAttribute, driverProp.SetValue, Enum.Parse,
int.Parse and Convert.ToBoolean accordingly.

Comment thread Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs Outdated
Comment thread Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs Outdated
Comment on lines +274 to +306
catch (Exception exSync)
{
Reporter.ToLog(eLogLevel.DEBUG, "GetElementAtPoint failed: " + exSync.Message, exSync);
foundElement = null;
}
}
}
}
else
catch (Exception exDriver)
{
Reporter.ToLog(eLogLevel.DEBUG, "Appium live-spy attempt failed: " + exDriver.Message, exDriver);
foundElement = null;
}
}

// Fallback to WinExplorer synchronous API
if (foundElement == null)
{
try
{
xStatusLable.Content = "Failed to spy element.";
xCreateNewElement.Visibility = Visibility.Collapsed;
GingerCore.General.DoEvents();
var ctrl = mWinExplorer.GetControlFromMousePosition();
if (ctrl != null)
{
ctrl.WindowExplorer = mWinExplorer;
ctrl.IsAutoLearned = true;
ctrl.SetLocatorsAndPropertiesCategory(((DriverBase)mWinExplorer).PomCategory);

foundElement = mWinExplorer.LearnElementInfoDetails(ctrl);
}
}
catch (Exception exFallback)
{
Reporter.ToLog(eLogLevel.DEBUG, "Fallback GetControlFromMousePosition failed: " + exFallback.Message, exFallback);

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 at ERROR level in catch blocks.

Line 274-306 uses eLogLevel.DEBUG for caught exceptions, which hides real failures. Please log these as errors.

🔧 Suggested fix
-                                    Reporter.ToLog(eLogLevel.DEBUG, "GetElementAtPoint failed: " + exSync.Message, exSync);
+                                    Reporter.ToLog(eLogLevel.ERROR, "GetElementAtPoint failed: " + exSync.Message, exSync);
...
-                        Reporter.ToLog(eLogLevel.DEBUG, "Appium live-spy attempt failed: " + exDriver.Message, exDriver);
+                        Reporter.ToLog(eLogLevel.ERROR, "Appium live-spy attempt failed: " + exDriver.Message, exDriver);
...
-                        Reporter.ToLog(eLogLevel.DEBUG, "Fallback GetControlFromMousePosition failed: " + exFallback.Message, exFallback);
+                        Reporter.ToLog(eLogLevel.ERROR, "Fallback GetControlFromMousePosition failed: " + exFallback.Message, exFallback);

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

🤖 Prompt for AI Agents
In `@Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs`
around lines 274 - 306, Change the exception logging level from DEBUG to ERROR
in the catch blocks within PomAllElementsPage.xaml.cs: update the Reporter.ToLog
calls that currently log exSync, exDriver, and exFallback (the catches around
GetElementAtPoint/Appium live-spy and the WinExplorer
GetControlFromMousePosition fallback) to use eLogLevel.ERROR so failures in the
Appium live-spy path and the WinExplorer fallback (involving
mWinExplorer.GetControlFromMousePosition, LearnElementInfoDetails, etc.) are
logged as errors.

Comment on lines +268 to +279
// Learn details (fills properties/locators)
xWindowSelectionUC.mWindowExplorerDriver.LearnElementInfoDetails(mSpyElement);
xStatusTextBlock.Text = "Element was identified, see details below.";//string.Format("The element '{0}' was identified", mSpyElement.ElementName);

// Ensure element location/size fields are updated (important for mobile highlighting)
try
{
mWindowExplorerDriver.UpdateElementInfoFields(mSpyElement);
}
catch (Exception exUpd)
{
Reporter.ToLog(eLogLevel.DEBUG, "UpdateElementInfoFields failed during live-spy: " + exUpd.Message, exUpd);
}

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 the IWindowExplorer interface definition
rg -n "interface IWindowExplorer" --type=cs -A 50

Repository: Ginger-Automation/Ginger

Length of output: 9528


🏁 Script executed:

# Search for LearnElementInfoDetails method signature
rg -n "LearnElementInfoDetails" --type=cs -B 2 -A 3 | head -100

Repository: Ginger-Automation/Ginger

Length of output: 10942


🏁 Script executed:

# Check how LearnElementInfoDetails is implemented in drivers
rg -n "void LearnElementInfoDetails|ElementInfo LearnElementInfoDetails" --type=cs -A 5

Repository: Ginger-Automation/Ginger

Length of output: 5813


Capture LearnElementInfoDetails return to ensure enriched element is used.

The method returns ElementInfo (not void); ignoring this return can leave mSpyElement stale if the driver returns an enriched instance, affecting subsequent operations like UpdateElementInfoFields and element highlighting.

Suggested fix
-                            xWindowSelectionUC.mWindowExplorerDriver.LearnElementInfoDetails(mSpyElement);
+                            var learnedElement = xWindowSelectionUC.mWindowExplorerDriver.LearnElementInfoDetails(mSpyElement);
+                            if (learnedElement != null)
+                            {
+                                mSpyElement = learnedElement;
+                                mSpyElement.WindowExplorer = mWindowExplorerDriver;
+                            }
📝 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
// Learn details (fills properties/locators)
xWindowSelectionUC.mWindowExplorerDriver.LearnElementInfoDetails(mSpyElement);
xStatusTextBlock.Text = "Element was identified, see details below.";//string.Format("The element '{0}' was identified", mSpyElement.ElementName);
// Ensure element location/size fields are updated (important for mobile highlighting)
try
{
mWindowExplorerDriver.UpdateElementInfoFields(mSpyElement);
}
catch (Exception exUpd)
{
Reporter.ToLog(eLogLevel.DEBUG, "UpdateElementInfoFields failed during live-spy: " + exUpd.Message, exUpd);
}
// Learn details (fills properties/locators)
var learnedElement = xWindowSelectionUC.mWindowExplorerDriver.LearnElementInfoDetails(mSpyElement);
if (learnedElement != null)
{
mSpyElement = learnedElement;
mSpyElement.WindowExplorer = mWindowExplorerDriver;
}
// Ensure element location/size fields are updated (important for mobile highlighting)
try
{
mWindowExplorerDriver.UpdateElementInfoFields(mSpyElement);
}
catch (Exception exUpd)
{
Reporter.ToLog(eLogLevel.DEBUG, "UpdateElementInfoFields failed during live-spy: " + exUpd.Message, exUpd);
}
🤖 Prompt for AI Agents
In `@Ginger/Ginger/AutomatePageLib/AddActionMenu/LiveSpy/LiveSpyPage.xaml.cs`
around lines 268 - 279, LearnElementInfoDetails returns an ElementInfo that may
be an enriched instance; update the code to capture and use that return value
instead of ignoring it by assigning the result back to mSpyElement before
calling mWindowExplorerDriver.UpdateElementInfoFields; keep the existing
try/catch around UpdateElementInfoFields (which takes mSpyElement) so the
enriched element is used for field updates and highlighting.

Comment on lines +1489 to +1622
// remove previous rectangle
RemoveElemntRectangle();

//get the element location
// element bounds in source image/device coordinates
System.Drawing.Point ElementStartPoint = new System.Drawing.Point(clickedElementInfo.X, clickedElementInfo.Y);
System.Drawing.Point ElementMaxPoint = new System.Drawing.Point(clickedElementInfo.X + clickedElementInfo.Width, clickedElementInfo.Y + clickedElementInfo.Height);

//draw the rectangle
//mHighightRectangle = new System.Windows.Shapes.Rectangle();
// 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;
}

// Compute display scale & offsets depending on Image.Stretch
double scaleX = dispW / srcW;
double scaleY = dispH / srcH;
double usedScaleX = scaleX;
double usedScaleY = scaleY;
double offsetX = 0;
double offsetY = 0;

var stretch = mScreenShotViewPage.xMainImage.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;
}
// else Fill -> keep independent scales

// Convert source coords to displayed image coords
double left = ElementStartPoint.X * usedScaleX + offsetX;
double top = ElementStartPoint.Y * usedScaleY + offsetY;
double right = (ElementStartPoint.X + rectangleWidth) * usedScaleX + offsetX;
double bottom = (ElementStartPoint.Y + rectangleHeight) * usedScaleY + offsetY;

if (right < left) { var t = left; left = right; right = t; }
if (bottom < top) { var t = top; top = bottom; bottom = t; }

double w = Math.Max(2, right - left);
double h = Math.Max(2, bottom - top);

// account for Canvas offsets of the Image control
double canvasLeftForMainImage = Canvas.GetLeft(mScreenShotViewPage.xMainImage);
if (double.IsNaN(canvasLeftForMainImage))
canvasLeftForMainImage = 0;
double canvasTopForMainImage = Canvas.GetTop(mScreenShotViewPage.xMainImage);
if (double.IsNaN(canvasTopForMainImage))
canvasTopForMainImage = 0;

mScreenShotViewPage.xHighlighterBorder.SetValue(Canvas.LeftProperty, ElementStartPoint.X + canvasLeftForMainImage);
mScreenShotViewPage.xHighlighterBorder.SetValue(Canvas.TopProperty, ElementStartPoint.Y + canvasTopForMainImage);
mScreenShotViewPage.xHighlighterBorder.Margin = new Thickness(0);
// apply to UI on dispatcher
mScreenShotViewPage.xHighlighterBorder.Dispatcher.BeginInvoke(new Action(() =>
{
mScreenShotViewPage.xHighlighterBorder.SetValue(Canvas.LeftProperty, left + canvasLeftForMainImage);
mScreenShotViewPage.xHighlighterBorder.SetValue(Canvas.TopProperty, top + canvasTopForMainImage);
mScreenShotViewPage.xHighlighterBorder.Margin = new Thickness(0);

mScreenShotViewPage.xHighlighterBorder.Width = w;
mScreenShotViewPage.xHighlighterBorder.Height = h;
mScreenShotViewPage.xHighlighterBorder.Visibility = Visibility.Visible;
}), System.Windows.Threading.DispatcherPriority.Render);

mScreenShotViewPage.xHighlighterBorder.Width = rectangleWidth;
mScreenShotViewPage.xHighlighterBorder.Height = rectangleHeight;
mScreenShotViewPage.xHighlighterBorder.Visibility = Visibility.Visible;
// ask driver to highlight in the actual app as well (non-blocking)
try
{
var drv = mWindowExplorerDriver;
if (drv != null)
{
System.Threading.Tasks.Task.Run(() =>
{
try
{
drv.HighLightElement(clickedElementInfo, locateElementByItLocators: true);
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.DEBUG, "Driver HighLightElement failed", ex);
}
});
}
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.DEBUG, "Request to driver highlight element failed", 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 | 🟠 Major

Avoid re-highlighting by locators after an exact point selection.

HighlightSelectedElement explicitly highlights without using locators, but DrawElementRectangleAsync immediately invokes HighLightElement(... locateElementByItLocators: true) which can select a different element and undo the “exact element” intent.

🐛 Suggested fix
-        private void DrawElementRectangleAsync(ElementInfo clickedElementInfo)
+        private void DrawElementRectangleAsync(ElementInfo clickedElementInfo, bool highlightInApp = true)
         {
             try
             {
                 // remove previous rectangle
                 RemoveElemntRectangle();
                 ...
-                // ask driver to highlight in the actual app as well (non-blocking)
-                try
-                {
-                    var drv = mWindowExplorerDriver;
-                    if (drv != null)
-                    {
-                        System.Threading.Tasks.Task.Run(() =>
-                        {
-                            try
-                            {
-                                drv.HighLightElement(clickedElementInfo, locateElementByItLocators: true);
-                            }
-                            catch (Exception ex)
-                            {
-                                Reporter.ToLog(eLogLevel.DEBUG, "Driver HighLightElement failed", ex);
-                            }
-                        });
-                    }
-                }
-                catch (Exception ex)
-                {
-                    Reporter.ToLog(eLogLevel.DEBUG, "Request to driver highlight element failed", ex);
-                }
+                // ask driver to highlight in the actual app only when requested
+                if (highlightInApp)
+                {
+                    try
+                    {
+                        var drv = mWindowExplorerDriver;
+                        if (drv != null)
+                        {
+                            System.Threading.Tasks.Task.Run(() =>
+                            {
+                                try
+                                {
+                                    drv.HighLightElement(clickedElementInfo, locateElementByItLocators: false);
+                                }
+                                catch (Exception ex)
+                                {
+                                    Reporter.ToLog(eLogLevel.DEBUG, "Driver HighLightElement failed", ex);
+                                }
+                            });
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        Reporter.ToLog(eLogLevel.DEBUG, "Request to driver highlight element failed", ex);
+                    }
+                }
             }
             catch (Exception ex)
             {
                 Reporter.ToLog(eLogLevel.ERROR, "Failed to draw mobile element rectangle", ex);
             }
         }

Then call DrawElementRectangleAsync(inspectElementInfo, highlightInApp: false) from HighlightSelectedElement, since it already highlights the exact element.

🤖 Prompt for AI Agents
In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs`
around lines 1489 - 1622, DrawElementRectangleAsync currently always invokes
mWindowExplorerDriver.HighLightElement(... locateElementByItLocators: true)
which can re-select a different element and override an exact selection; add a
boolean parameter highlightInApp (default true) to DrawElementRectangleAsync,
skip the driver.HighLightElement call when highlightInApp is false, and update
HighlightSelectedElement to call DrawElementRectangleAsync(inspectElementInfo,
highlightInApp: false) so the exact element highlight is preserved; reference
the DrawElementRectangleAsync method, the HighlightSelectedElement caller, and
the mWindowExplorerDriver.HighLightElement invocation when making the change.

Comment on lines +37 to +60
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;
}
}
public override string ActionDescription { get { return "Mobile/Tv Device Action"; } }
public override string ActionUserDescription { get { return "USed to performe operations on the connected mobile device"; } }


public override void ActionUserRecommendedUseCase(ITextBoxFormatter TBH)
{
}

public override void DoNewActionSetup()
{
base.DoNewActionSetup();
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.

🧹 Nitpick | 🔵 Trivial

Redundant Description initialization in constructor and DoNewActionSetup.

Both the constructor (lines 40-43) and DoNewActionSetup (lines 56-59) contain identical logic to set Description from ActionDescription. Since DoNewActionSetup is called during new action setup flows, the constructor logic may be redundant or could conflict with deserialization scenarios where Description is already populated.

Consider removing the constructor logic and relying solely on DoNewActionSetup for new actions and PostDeserialization for loaded actions:

♻️ Proposed simplification
-        // Add constructor to initialize Description when creating new instance
-        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;
-            }
-        }
+        public ActMobileDevice()
+        {
+        }
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs` around lines 37
- 60, Remove the duplicate Description initialization from the ActMobileDevice
constructor and keep the assignment in DoNewActionSetup; specifically, delete
the constructor's block that sets this.Description from this.ActionDescription
so new-action setup logic lives only in DoNewActionSetup, and if needed add or
ensure a PostDeserialization handler sets Description from ActionDescription for
deserialized instances (referencing ActMobileDevice(), DoNewActionSetup(),
Description, ActionDescription, and PostDeserialization).

Comment on lines +45 to +75
public override string ActionDescription { get { return "Mobile/Tv Device Action"; } }
public override string ActionUserDescription { get { return "USed to performe operations on the connected mobile device"; } }


public override void ActionUserRecommendedUseCase(ITextBoxFormatter TBH)
{
}

public override void DoNewActionSetup()
{
base.DoNewActionSetup();
if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
{
this.Description = this.ActionDescription;
}
}

public override String ToString()
{
return "Mobile Device Action: " + MobileDeviceAction.ToString();
return "Mobile/Tv Device Action: " + MobileDeviceAction.ToString();
}

public override String ActionType
{
get
{
return "Mobile Device Action: " + MobileDeviceAction.ToString();
return "Mobile/Tv Device Action: " + MobileDeviceAction.ToString();
}
}

public override eImageType Image { get { return eImageType.Mobile; } }
public override eImageType Image { get { return eImageType.MultipleScreenGrey; } }

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

Inconsistent casing: "Tv" should be "TV".

The string "Mobile/Tv Device Action" uses lowercase 'v' in "Tv", but "TV" (all capitals) is the standard abbreviation. This inconsistency appears in multiple places:

🐛 Proposed fix
-        public override string ActionDescription { get { return "Mobile/Tv Device Action"; } }
+        public override string ActionDescription { get { return "Mobile/TV Device Action"; } }

         public override String ToString()
         {
-            return "Mobile/Tv Device Action: " + MobileDeviceAction.ToString();
+            return "Mobile/TV Device Action: " + MobileDeviceAction.ToString();
         }

         public override String ActionType
         {
             get
             {
-                return "Mobile/Tv Device Action: " + MobileDeviceAction.ToString();
+                return "Mobile/TV Device Action: " + MobileDeviceAction.ToString();
             }
         }
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs` around lines 45
- 75, Replace the inconsistent "Tv" casing with "TV" in all user-facing string
properties and methods: update ActionDescription, ActionUserDescription,
ToString(), and ActionType to use "Mobile/TV Device Action" (and any occurrences
of Mobile/Tv elsewhere in this class) so the abbreviation is consistently
capitalized; ensure you only change the string literals and keep method/property
names and behavior intact.

Comment on lines +128 to +142
public override void PostDeserialization()
{
base.PostDeserialization();
try
{
if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
{
this.Description = this.ActionDescription;
}
}
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.

🧹 Nitpick | 🔵 Trivial

Empty catch block in PostDeserialization should log errors.

Per coding guidelines, use Reporter.ToLog(eLogLevel.ERROR, message) for logging errors instead of silently swallowing exceptions:

♻️ Proposed improvement
         public override void PostDeserialization()
         {
             base.PostDeserialization();
             try
             {
                 if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
                 {
                     this.Description = this.ActionDescription;
                 }
             }
-            catch
+            catch (Exception ex)
             {
-                // be defensive - do not throw during deserialization
+                // be defensive - do not throw during deserialization, but log for troubleshooting
+                Reporter.ToLog(eLogLevel.DEBUG, "PostDeserialization: Failed to set Description", ex);
             }
         }

Based on coding guidelines, 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
public override void PostDeserialization()
{
base.PostDeserialization();
try
{
if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
{
this.Description = this.ActionDescription;
}
}
catch
{
// be defensive - do not throw during deserialization
}
}
public override void PostDeserialization()
{
base.PostDeserialization();
try
{
if (string.IsNullOrEmpty(this.Description) && !string.IsNullOrEmpty(this.ActionDescription))
{
this.Description = this.ActionDescription;
}
}
catch (Exception ex)
{
// be defensive - do not throw during deserialization, but log for troubleshooting
Reporter.ToLog(eLogLevel.DEBUG, "PostDeserialization: Failed to set Description", ex);
}
}
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/ActionsLib/UI/Mobile/ActMobileDevice.cs` around lines
128 - 142, The PostDeserialization method in ActMobileDevice currently swallows
all exceptions in its catch block; update it to catch Exception (e.g., catch
(Exception ex)) and call Reporter.ToLog(eLogLevel.ERROR, $"PostDeserialization
failed in ActMobileDevice: {ex}") so errors are recorded; keep the defensive
behavior (do not rethrow) but ensure the exception details are logged for
debugging.

Comment thread Ginger/GingerCoreNET/RunLib/AgentOperations.cs Outdated
Comment on lines +448 to +494
// set enum prop if annotated
UserConfiguredEnumTypeAttribute enumTypeConfig = null;
try
{
MemberInfo[] mf = Driver.GetType().GetMember(DCP.Parameter);
if (mf != null && mf.Length > 0)
{
MemberInfo[] mf = Driver.GetType().GetMember(DCP.Parameter);
if (mf != null)
enumTypeConfig = Attribute.GetCustomAttribute(mf[0], typeof(UserConfiguredEnumTypeAttribute), false) as UserConfiguredEnumTypeAttribute;
if (enumTypeConfig != null)
{
enumTypeConfig = Attribute.GetCustomAttribute(mf[0], typeof(UserConfiguredEnumTypeAttribute), false) as UserConfiguredEnumTypeAttribute;
if (enumTypeConfig != null)
{
Driver.GetType().GetProperty(DCP.Parameter).SetValue(Driver, Enum.Parse(enumTypeConfig.EnumType, value));
continue;
}
driverProp.SetValue(Driver, Enum.Parse(enumTypeConfig.EnumType, value));
continue;
}
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.WARN, string.Format("Failed to check if the driver configuration '{0}' is from EnumType", DCP.Parameter), ex);
}

//set standard prop types
string driverPropType = driverProp.PropertyType.Name;
switch (driverPropType)
{
case "String":
Driver.GetType().GetProperty(DCP.Parameter).SetValue(Driver, value);
break;
case "Boolean":
try
{
Driver.GetType().GetProperty(DCP.Parameter).SetValue(Driver, Convert.ToBoolean(value));
}
catch (Exception)
{
Driver.GetType().GetProperty(DCP.Parameter).SetValue(Driver, true);
}
break;
case "Int32":
if (!string.IsNullOrEmpty(value))
{
Driver.GetType().GetProperty(DCP.Parameter).SetValue(Driver, int.Parse(value));
}
break;
default:
Reporter.ToUser(eUserMsgKey.SetDriverConfigTypeNotHandled, DCP.GetType().ToString());
Reporter.ToLog(eLogLevel.ERROR, string.Format("The driver configuration '{0}' field type '{1}' is unknown", DCP.Parameter, driverPropType));
break;
}
}
else
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.DEBUG, string.Format("The driver configuration '{0}' was not found on the driver class", DCP.Parameter));
Reporter.ToLog(eLogLevel.WARN, string.Format("Failed to check if the driver configuration '{0}' is from EnumType", DCP.Parameter), ex);
}
}

Driver.AdvanceDriverConfigurations = Agent.AdvanceAgentConfigurations;
// set standard prop types
string driverPropType = driverProp.PropertyType.Name;
switch (driverPropType)
{
case "String":
driverProp.SetValue(Driver, value);
break;
case "Boolean":
try
{
driverProp.SetValue(Driver, Convert.ToBoolean(value));
}
catch (Exception)
{
driverProp.SetValue(Driver, true);
}
break;
case "Int32":
if (!string.IsNullOrEmpty(value))
{
driverProp.SetValue(Driver, int.Parse(value));
}
break;
default:
Reporter.ToUser(eUserMsgKey.SetDriverConfigTypeNotHandled, DCP.GetType().ToString());
Reporter.ToLog(eLogLevel.ERROR, string.Format("The driver configuration '{0}' field type '{1}' is unknown", DCP.Parameter, driverPropType));
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.

🧹 Nitpick | 🔵 Trivial

Use Enum.TryParse (and consider Int32.TryParse) to avoid exceptions and misleading logs.
Enum.Parse throws on invalid/empty values and then falls through to “unknown type” errors. A TryParse path is clearer and avoids exceptions during config application.

♻️ Safer enum assignment
-                            enumTypeConfig = Attribute.GetCustomAttribute(mf[0], typeof(UserConfiguredEnumTypeAttribute), false) as UserConfiguredEnumTypeAttribute;
-                            if (enumTypeConfig != null)
-                            {
-                                driverProp.SetValue(Driver, Enum.Parse(enumTypeConfig.EnumType, value));
-                                continue;
-                            }
+                            enumTypeConfig = Attribute.GetCustomAttribute(mf[0], typeof(UserConfiguredEnumTypeAttribute), false) as UserConfiguredEnumTypeAttribute;
+                            if (enumTypeConfig != null)
+                            {
+                                if (!string.IsNullOrEmpty(value) &&
+                                    Enum.TryParse(enumTypeConfig.EnumType, value, ignoreCase: true, out var enumValue))
+                                {
+                                    driverProp.SetValue(Driver, enumValue);
+                                }
+                                else
+                                {
+                                    Reporter.ToLog(eLogLevel.WARN, $"Invalid enum value '{value}' for '{DCP.Parameter}'");
+                                }
+                                continue;
+                            }
Please verify expected enum casing/values in existing configs and adjust logging/validation as needed.
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/RunLib/AgentOperations.cs` around lines 448 - 494, The
code currently uses Enum.Parse (inside the UserConfiguredEnumTypeAttribute
handling) and int.Parse/Convert.ToBoolean which can throw and produce misleading
logs; replace Enum.Parse with Enum.TryParse using the enum type from
UserConfiguredEnumTypeAttribute (preserving case-sensitivity as intended) and
only call driverProp.SetValue(Driver, parsedEnum) when TryParse succeeds (log or
handle invalid values instead of relying on exceptions), and similarly use
Int32.TryParse for the "Int32" case and Boolean.TryParse for "Boolean" (fall
back to the existing default true behavior only when parsing fails if that
behaviour is desired), updating the blocks around
UserConfiguredEnumTypeAttribute, driverProp.SetValue, Enum.Parse, int.Parse and
Convert.ToBoolean accordingly.

}
}

// Fallback to WinExplorer synchronous API

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

add else instead if foundElement == null

@ravirk91
ravirk91 requested a review from MeniKadosh1 January 21, 2026 13:21
tanushah added 2 commits January 23, 2026 16:41
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.
@ravirk91
ravirk91 changed the base branch from master to Releases/Beta January 23, 2026 11:12
{
// Clone to ensure the original bitmap is not locked and to use a compatible pixel format
using var clone = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
using (var g = System.Drawing.Graphics.FromImage(clone))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

pls check if this code is required

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

🤖 Fix all issues with AI agents
In `@Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs`:
- Line 30: Remove the unused using directive "using System.Linq;" from the top
of PomAllElementsPage.xaml.cs; it is not referenced by any methods or types in
that file (e.g., PomAllElementsPage class) so simply delete that line and run a
quick build to ensure no missing references remain.

In
`@Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs`:
- Around line 1709-1801: EnsureDeviceBounds currently returns early when
ElementInfo.Properties contains a "bounds" entry or ei.Width/ei.Height > 0,
leaving Width/Height unset for XML-sourced elements; update EnsureDeviceBounds
to, before returning, check Properties for a bounds ControlProperty (Name equals
"bounds", case-insensitive) or separate "x"/"y"/"width"/"height" properties,
parse those values into integers and populate ei.X, ei.Y, ei.Width, ei.Height
(and ensure ControlProperty list exists) so SetRectangleProperties gets correct
size; keep existing parsing logic for "[l,t][r,b]" but also handle "[l,t,r,b]"
and individual numeric attrs, and only return early after filling the missing
fields (use the existing LearnElementInfoDetails fallback and exception handling
unchanged).
- Around line 2167-2212: The Android TV default of 1080x1920 is forcing
portrait; update the logic in GenericAppiumDriver (where ScreenshotWidth,
ScreenshotHeight, DevicePlatformType, customeWidth and customeHeight are
handled) to respect actual TV orientation: if both ScreenshotWidth/Height are
null for eDevicePlatformType.AndroidTv, query the device's real display size or
orientation (e.g., realDisplaySize / GetDeviceScreenSize / ScreenOrientation)
and set customeWidth/customeHeight to the device's native resolution (landscape
1920x1080 when the device reports landscape); if you cannot obtain the real
size, keep both as null (Auto) instead of forcing portrait so
scaling/hit-testing aren’t skewed. Ensure you still log the decision via
Reporter.ToLog.
- Around line 4232-4275: The current Tap handling always calls TapXY((int)x,
(int)y) which will fail on non-touch Android TV devices; add a touch-capability
check (e.g., implement a helper like HasTouchSupport or IsTouchDevice that
queries session/device capabilities for "android.hardware.touchscreen" or uses
ADB/driver capabilities) in GenericAppiumDriver before calling TapXY, and when
touch is absent use a DPAD fallback (implement a method like
PerformDPadTap/SendDPadNavigation that navigates to the target or sends
DPAD_CENTER/DPAD_LEFT/RIGHT/UP/DOWN key events via the Appium
driver/sendKeyEvent) so recordings (IsRecording, GetElementAtMousePosition,
RecordingEvent) remain unchanged but the actual interaction uses DPAD on TV
devices; update the try block to branch: if HasTouchSupport -> TapXY(...) else
-> PerformDPadTap(...) and ensure errors are still logged in the existing catch.

In `@Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js`:
- Around line 205-208: The empty catch in the static init hides errors from
define_GingerLibLiveSpy(); update the catch to capture and surface the error:
catch the exception from define_GingerLibLiveSpy, log it conditionally (e.g.,
console.error or processLogger.error when available) and optionally store it in
a module-scoped variable (e.g., lastDefine_GingerLibLiveSpyError) so callers or
dev tools can inspect it later; modify the block around
define_GingerLibLiveSpy() to implement these minimal changes.
- Around line 137-160: The falsy check in GingerLibLiveSpy.ElementFromPoint
incorrectly treats X or Y equal to 0 as missing; change the guard to explicitly
detect invalid coordinates by testing for NaN/undefined instead of using (!X ||
!Y). Specifically, when using GetXPoint()/GetYPoint() and variables X and Y,
replace the existing falsy check with an explicit condition like isNaN(X) ||
isNaN(Y) or X == null || Y == null so the Android TV fallback to
CurrentFocusedElement only runs when coordinates are actually invalid.
- Around line 107-132: The code contains inconsistent method naming: misspelled
StartEventListner and StartClickEventListner vs correctly spelled
StartFocusEventListener and StartKeyEventListener; because C# drivers
(SeleniumDriver.cs, GingerWebDriver.cs) call the misspelled names, add
correctly‑spelled wrapper/alias functions (e.g., StartEventListener and
StartClickEventListener) that internally call the existing StartEventListner and
StartClickEventListner, and add the reverse alias or deprecation warning on the
old functions (console.warn or comment) to guide migration; also update
GingerHTMLHelper.js to provide the same aliasing for StartEventListnerFrame →
StartEventListenerFrame and add brief in-file comments documenting the
deprecation and required coordination with C# callers.

using GingerWPF.WizardLib;
using System;
using System.Collections.Specialized;
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.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for LINQ extension method usage in PomAllElementsPage.xaml.cs
rg -n '\b(Where|Select|SelectMany|FirstOrDefault|First|LastOrDefault|Last|Any|All|Count\s*\(|Sum\s*\(|Average|Min|Max|OrderBy|OrderByDescending|GroupBy|Join|Skip|Take|Distinct|Union|Intersect|Except|Aggregate|ToList|ToArray|ToDictionary|Cast|OfType)\s*\(' Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 50


🏁 Script executed:

head -35 Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 1167


🏁 Script executed:

# Check file size
wc -l Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs

# Broader LINQ search - look for common LINQ patterns
rg -i 'linq|\.where|\.select|\.first|\.last|\.any|\.all|\.count\s*\(|\.tolist|\.toarray' Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 289


🏁 Script executed:

# Search for LINQ extension method calls with proper context
rg '\.(Where|Select|FirstOrDefault|Any|All|Count|ToList|OrderBy|GroupBy|Take|Skip|Distinct)\s*\(' Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs

Repository: Ginger-Automation/Ginger

Length of output: 50


Remove the unused using System.Linq; directive.

The using System.Linq; statement at line 30 is not used anywhere in this file. Collection operations use only non-LINQ methods (.Contains(), .Count property) available on ObservableList<T> without requiring LINQ extensions.

🤖 Prompt for AI Agents
In `@Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs` at
line 30, Remove the unused using directive "using System.Linq;" from the top of
PomAllElementsPage.xaml.cs; it is not referenced by any methods or types in that
file (e.g., PomAllElementsPage class) so simply delete that line and run a quick
build to ensure no missing references remain.

Comment on lines +1709 to +1801
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
}
}

// Last resort: if driver can enrich ElementInfo (server-side), try calling LearnElementInfoDetails
try
{
var enriched = LearnElementInfoDetails(ei);
if (enriched != null)
{
ei.X = enriched.X;
ei.Y = enriched.Y;
ei.Width = enriched.Width;
ei.Height = enriched.Height;
if (enriched.Properties != null)
{
ei.Properties = enriched.Properties;
}
}
}
catch { /* ignore */ }
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.WARN, "EnsureDeviceBounds 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 | 🟠 Major

EnsureDeviceBounds leaves Width/Height unset when only XML attrs exist.
When ElementInfo comes from XML (Android TV), Properties often include bounds or x/y/width/height but Width/Height stay 0; EnsureDeviceBounds returns early and SetRectangleProperties then renders a 1px rectangle. Parse the bounds property (or XmlNode attrs) when size is missing.

🛠️ Suggested fix
-                // 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;
-                }
+                // If we already have concrete width/height, we're done
+                if (ei.Width > 0 && ei.Height > 0)
+                {
+                    return;
+                }
+
+                var boundsProp = ei.Properties?.FirstOrDefault(p =>
+                    string.Equals(p.Name, "bounds", StringComparison.InvariantCultureIgnoreCase));
-                string boundsAttr = null;
-                if (ei.ElementObject is IWebElement we)
+                string boundsAttr = boundsProp?.Value;
+                if (string.IsNullOrEmpty(boundsAttr) && ei.ElementObject is IWebElement we)
                 {
                     try
                     {
                         boundsAttr = we.GetAttribute("bounds");
                     }
                     catch { boundsAttr = null; }
                 }
+
+                if (string.IsNullOrEmpty(boundsAttr) && ei.ElementObject is XmlNode xn)
+                {
+                    var ax = xn.Attributes?["x"]?.Value;
+                    var ay = xn.Attributes?["y"]?.Value;
+                    var aw = xn.Attributes?["width"]?.Value;
+                    var ah = xn.Attributes?["height"]?.Value;
+                    if (int.TryParse(ax, out var x) &&
+                        int.TryParse(ay, out var y) &&
+                        int.TryParse(aw, out var w) &&
+                        int.TryParse(ah, 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;
+                    }
+                }

Also applies to: 5137-5211

🤖 Prompt for AI Agents
In
`@Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs`
around lines 1709 - 1801, EnsureDeviceBounds currently returns early when
ElementInfo.Properties contains a "bounds" entry or ei.Width/ei.Height > 0,
leaving Width/Height unset for XML-sourced elements; update EnsureDeviceBounds
to, before returning, check Properties for a bounds ControlProperty (Name equals
"bounds", case-insensitive) or separate "x"/"y"/"width"/"height" properties,
parse those values into integers and populate ei.X, ei.Y, ei.Width, ei.Height
(and ensure ControlProperty list exists) so SetRectangleProperties gets correct
size; keep existing parsing logic for "[l,t][r,b]" but also handle "[l,t,r,b]"
and individual numeric attrs, and only return early after filling the missing
fields (use the existing LearnElementInfoDetails fallback and exception handling
unchanged).

Comment on lines +2167 to +2212
// Interpret user configured width
if (!string.IsNullOrEmpty(ScreenshotWidth) && !ScreenshotWidth.Trim().Equals("auto", StringComparison.OrdinalIgnoreCase))
{
//convert from int
int userConfiguredWidth;
if (int.TryParse(ScreenshotWidth, out userConfiguredWidth))
if (int.TryParse(ScreenshotWidth.Trim(), out int w) && w >= 200)
{
//validate user configured width is at least 300 pixels, if not than use the calculated width and write Warn message
if (userConfiguredWidth < 200)
{
Reporter.ToUser(eUserMsgKey.StaticWarnMessage, "The user configured screenshot width is less than 200 pixels, using the calculated width '" + mWindowWidth.ToString() + "' instead.");
}
else
{
customeWidth = userConfiguredWidth;
}
customeWidth = w;
}
else
{
Reporter.ToUser(eUserMsgKey.StaticWarnMessage, "The user configured screenshot width is not valid, using the calculated width.");
Reporter.ToUser(eUserMsgKey.StaticWarnMessage, "The user configured screenshot width is not valid or is less than 200 pixels, using the calculated width.");
}
}
if (ScreenshotHeight.ToLower().Trim() != "auto")

// Interpret user configured height
if (!string.IsNullOrEmpty(ScreenshotHeight) && !ScreenshotHeight.Trim().Equals("auto", StringComparison.OrdinalIgnoreCase))
{
//convert from int
int userConfiguredHeight;
if (int.TryParse(ScreenshotHeight, out userConfiguredHeight))
if (int.TryParse(ScreenshotHeight.Trim(), out int h) && h >= 200)
{
//validate user configured height is at least 300 pixels, if not than use the calculated height and write Warn message
if (userConfiguredHeight < 200)
{
Reporter.ToUser(eUserMsgKey.StaticWarnMessage, "The user configured screenshot height is less than 200 pixels, using the calculated height '" + mWindowHeight.ToString() + "' instead.");
}
else
{
customeHeight = userConfiguredHeight;
}
customeHeight = h;
}
else
{
Reporter.ToUser(eUserMsgKey.StaticWarnMessage, "The user configured screenshot height is not valid or is less than 200 pixels, using the calculated height.");
}
}

// Special default for Android TV: if user left both as Auto/empty, enforce 1080x1920
if (DevicePlatformType == eDevicePlatformType.AndroidTv)
{
if (customeWidth == null && customeHeight == null)
{
// Use portrait 1080x1920 as requested
customeWidth = 1080;
customeHeight = 1920;
Reporter.ToLog(eLogLevel.DEBUG, "Android TV detected and no custom screenshot size provided -> using default 1080x1920.");
}
else
{
Reporter.ToUser(eUserMsgKey.StaticWarnMessage, "The user configured screenshot height is not valid, using the calculated height");
// If user provided only one dimension, respect the provided and keep the other auto (null)
Reporter.ToLog(eLogLevel.DEBUG, $"Android TV custom screenshot size applied: width={customeWidth?.ToString() ?? "Auto"}, height={customeHeight?.ToString() ?? "Auto"}.");
}
}

// For Android (non-TV) and iOS: keep Auto when user didn't set explicit sizes (return nulls)
return new Tuple<int?, int?>(customeWidth, customeHeight);

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

Verify Android TV default size (1080×1920) matches device orientation.
Most TVs are landscape (e.g., 1920×1080); forcing portrait can skew scaling and hit‑testing. If that isn’t intentional, consider using deviceInfo realDisplaySize or keep Auto.

🤖 Prompt for AI Agents
In
`@Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs`
around lines 2167 - 2212, The Android TV default of 1080x1920 is forcing
portrait; update the logic in GenericAppiumDriver (where ScreenshotWidth,
ScreenshotHeight, DevicePlatformType, customeWidth and customeHeight are
handled) to respect actual TV orientation: if both ScreenshotWidth/Height are
null for eDevicePlatformType.AndroidTv, query the device's real display size or
orientation (e.g., realDisplaySize / GetDeviceScreenSize / ScreenOrientation)
and set customeWidth/customeHeight to the device's native resolution (landscape
1920x1080 when the device reports landscape); if you cannot obtain the real
size, keep both as null (Auto) instead of forcing portrait so
scaling/hit-testing aren’t skewed. Ensure you still log the decision via
Reporter.ToLog.

Comment on lines +4232 to 4275
try
{
//ElementInfo elemInfo = GetElementAtPoint(x, y).Result;
ElementInfo elemInfo = GetElementAtMousePosition();

if (elemInfo != null)
// Recording: keep existing behavior (try to map clicked point to element for recording)
if (IsRecording)
{
RecordingEventArgs args = new RecordingEventArgs
// Try to get the element under the mouse (used for recording)
ElementInfo elemInfo = GetElementAtMousePosition();

if (elemInfo != null)
{
EventType = eRecordingEvent.ElementRecorded
};
RecordingEventArgs args = new RecordingEventArgs
{
EventType = eRecordingEvent.ElementRecorded
};

ElementActionCongifuration configArgs = new ElementActionCongifuration();
ElementActionCongifuration configArgs = new ElementActionCongifuration();

if (TestLocatorOutput(elemInfo, elemInfo.Locators.FirstOrDefault(l => l.LocateBy == eLocateBy.ByXPath)))
{
configArgs.LocateBy = eLocateBy.ByXPath;
configArgs.LocateValue = elemInfo.Locators.FirstOrDefault(l => l.LocateBy == eLocateBy.ByXPath).LocateValue;
}
else
{
configArgs.LocateBy = eLocateBy.ByXY;
configArgs.LocateValue = string.Format("{0},{1}", elemInfo.X, elemInfo.Y);
}
configArgs.ElementValue = elemInfo.Value;
configArgs.Type = elemInfo.ElementTypeEnum;
configArgs.LearnedElementInfo = elemInfo;
configArgs.Operation = ActUIElement.eElementAction.Click.ToString();
if (TestLocatorOutput(elemInfo, elemInfo.Locators.FirstOrDefault(l => l.LocateBy == eLocateBy.ByXPath)))
{
configArgs.LocateBy = eLocateBy.ByXPath;
configArgs.LocateValue = elemInfo.Locators.FirstOrDefault(l => l.LocateBy == eLocateBy.ByXPath).LocateValue;
}
else
{
configArgs.LocateBy = eLocateBy.ByXY;
configArgs.LocateValue = string.Format("{0},{1}", elemInfo.X, elemInfo.Y);
}
configArgs.ElementValue = elemInfo.Value;
configArgs.Type = elemInfo.ElementTypeEnum;
configArgs.LearnedElementInfo = elemInfo;
configArgs.Operation = ActUIElement.eElementAction.Click.ToString();

args.EventArgs = configArgs;
RecordingEvent?.Invoke(this, args);
args.EventArgs = configArgs;
RecordingEvent?.Invoke(this, args);
}
}

// Unified behavior: always perform a normal tap (no TV-specific DPAD fallback)
TapXY((int)x, (int)y);
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.ERROR, "Failed to perform tap operation", 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 | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, let's find the file and examine its full context around the specified lines
fd -t f "GenericAppiumDriver.cs" --exec wc -l {} \;

Repository: Ginger-Automation/Ginger

Length of output: 192


🏁 Script executed:

# Search for DPAD or remote-related code in the file
rg -i "dpad|remote" Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs -B 2 -A 2

Repository: Ginger-Automation/Ginger

Length of output: 192


🏁 Script executed:

# Look for Android TV handling patterns in the codebase
rg -i "androidtv|android tv" --type cs | head -20

Repository: Ginger-Automation/Ginger

Length of output: 192


🏁 Script executed:

# Search for device capability checks
rg -i "capability|device\s*type" Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs | head -20

Repository: Ginger-Automation/Ginger

Length of output: 192


🏁 Script executed:

# Check if there's git history showing what was replaced in this section
git log --oneline -n 20 -- Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs 2>/dev/null || echo "Git history not available"

Repository: Ginger-Automation/Ginger

Length of output: 192


🌐 Web query:

Android TV non-touch device Appium automation DPAD remote input

💡 Result:

For Android TV (non-touch) Appium automation, you typically drive the UI the same way a remote does: DPAD key events (focus-based navigation) plus SELECT/BACK/HOME.

1) Send DPAD keys via Appium “pressKey / pressKeyCode”

Use Android keycodes like DPAD_UP/DOWN/LEFT/RIGHT/DPAD_CENTER (select). BrowserStack’s Smart TV docs show both the Java pressKey API (with AndroidKey) and the numeric pressKeycode alternative (e.g., 20 = DPAD_DOWN, 22 = DPAD_RIGHT). [1] The Appium Java client exposes these as AndroidKey.DPAD_* constants. [2]

Java (UiAutomator2)

driver.pressKey(new KeyEvent(AndroidKey.DPAD_DOWN));
driver.pressKey(new KeyEvent(AndroidKey.DPAD_RIGHT));
driver.pressKey(new KeyEvent(AndroidKey.DPAD_CENTER)); // select
driver.pressKey(new KeyEvent(AndroidKey.BACK));

(Uses the AndroidKey constants list, including DPAD_CENTER/DPAD_DOWN/DPAD_LEFT/DPAD_RIGHT.) [2]

Python

driver.press_keycode(20)  # DPAD_DOWN
driver.press_keycode(22)  # DPAD_RIGHT
driver.press_keycode(23)  # DPAD_CENTER

(Example pattern shown in the same Smart TV doc.) [1]

Appium also documents the generic pressKeyCode/press_keycode endpoint for Android keycodes. [3]

2) If needed: inject remote keys through ADB (mobile: shell input keyevent …)

When key injection via the client APIs isn’t enough (or you want to exactly mimic adb shell input keyevent), UiAutomator2 supports the mobile: shell extension. [4] This is security-gated: you must enable the adb_shell insecure feature. [5] (In Appium 3 / UiAutomator2 driver docs, mobile: shell is enabled only when the server allows the adb_shell feature.) [4][5]

Example:

driver.executeScript("mobile: shell", Map.of(
  "command", "input",
  "args", List.of("keyevent", "20")   // DPAD_DOWN
));

3) Practical notes for Android TV

  • TV UIs are usually focus-driven (Leanback): DPAD moves focus; DPAD_CENTER activates the focused item—so your locators often validate focus, then “select”.
  • Ensure you’re running with UiAutomator2 (common default for modern Android/Appium TV testing), since that driver supports the key + shell approaches above. [4]

Sources: BrowserStack Smart TV remote navigation (DPAD examples) [1]; Appium Java client AndroidKey constants [2]; Appium pressKeyCode docs [3]; UiAutomator2 driver mobile: shell extension docs [4]; Appium server security / adb_shell feature [5].


🌐 Web query:

Appium Android TV automation fallback input methods

💡 Result:

For Android TV (Leanback) apps, Appium often can’t rely on “normal” sendKeys() + soft-keyboard behavior, so the usual fallback input methods are remote-style key events and ADB/IME-based text injection:

1) DPAD/remote navigation via key events (most reliable on TV)

  • Send DPAD keys (UP/DOWN/LEFT/RIGHT/CENTER), BACK, HOME, etc. using Appium key APIs such as pressKeyCode. [2]
  • In UiAutomator2 you can also use the mobile: pressKey extension to emulate a single Android key press. [6], [7]

2) Execute ADB input commands via Appium (mobile: shell)

When Appium interactions aren’t enough (focus issues, OEM launchers, etc.), run ADB commands through Appium:

  • adb shell input keyevent <KEYCODE> (DPAD/ENTER/BACK, etc.)
  • adb shell input text "..." (limited; can be flaky depending on IME/app)
    This is commonly done using mobile: shell, which requires starting Appium with --relaxed-security enabled. [1]
    (Community examples also point to using mobile: shell for input keyevent fallbacks.) [5]

3) Switch to a test-friendly IME for text/clipboard (IME fallback)

If text entry is problematic on TV, a common workaround is to switch the device IME to an automation-friendly keyboard (e.g., “ADBKeyboard”-style IMEs) and then inject text/clipboard. The key idea is: text injection depends on the active input method. [3]

Practical rule of thumb

  • Prefer DPAD key events for navigation/selection on TV. [2]
  • Use mobile: shell + input keyevent when the app/device ignores Appium-level key events. [1]
  • Use an automation IME when you truly need reliable text entry. [3]

🌐 Web query:

Android TV touch capability detection Appium driver

💡 Result:

Appium (UiAutomator2) doesn’t expose a single “touchscreenPresent” flag in session capabilities, so the usual approach on Android TV is to query Android’s own feature/input APIs via ADB, invoked from Appium with mobile: shell.

1) Check declared system features (recommended)

Android reports touch capability via PackageManager features like:

  • android.hardware.touchscreen (FEATURE_TOUCHSCREEN)
  • android.hardware.faketouch (FEATURE_FAKETOUCH) = no physical touchscreen, but can emulate basic touch events (common on TV/remotes)
    (and multitouch variants) [1]

From Appium, run:

  • pm list features and look for android.hardware.touchscreen / android.hardware.faketouch, or
  • cmd package has-feature android.hardware.touchscreen

Example (JS):

const out = await driver.executeScript('mobile: shell', {
  command: 'pm',
  args: ['list', 'features']
});
// out contains lines like: feature:android.hardware.touchscreen

mobile: shell is an Appium extension that executes adb shell-equivalent commands; it’s disabled by default and requires enabling insecure features (e.g., --relaxed-security depending on your Appium setup). [2][3]

2) Check actual input device classes (more “physical”, good fallback)

Use Android’s input service dump and look for touchscreen-related classes/devices:

const dump = await driver.executeScript('mobile: shell', {
  command: 'dumpsys',
  args: ['input']
});

Android documents using dumpsys input to inspect whether expected input devices (including touch) are present and correctly classified. [4]

Practical rule for Android TV

  • If you see android.hardware.touchscreen → real touchscreen is declared.
  • If you don’t see touchscreen but do see android.hardware.faketouch → treat it as non-touch for UX, but Appium touch actions may still be synthesized by the platform. [1]

Sources:
[1] Android PackageManager feature constants (touchscreen/faketouch).
[2] Appium docs: executing Android shell commands via mobile: shell (requires relaxed security).
[3] UiAutomator2 driver mobile: shell argument/behavior reference.
[4] Android Developers: using dumpsys input to inspect input devices/state.


Android TV devices require DPAD/remote key handling for tap operations.

Non-touch Android TV devices cannot perform touch-based operations like TapXY. These devices rely on DPAD navigation (UP/DOWN/LEFT/RIGHT/CENTER) and remote key events to interact with the UI. The unified TapXY approach will fail on such devices.

Implement either:

  • A fallback to DPAD/center-key navigation for non-touch devices, or
  • Capability detection (check android.hardware.touchscreen feature) to gate TapXY calls and use DPAD as the fallback for devices without touch capability.
🤖 Prompt for AI Agents
In
`@Ginger/GingerCoreNET/Drivers/CoreDrivers/Mobile/Appium/GenericAppiumDriver.cs`
around lines 4232 - 4275, The current Tap handling always calls TapXY((int)x,
(int)y) which will fail on non-touch Android TV devices; add a touch-capability
check (e.g., implement a helper like HasTouchSupport or IsTouchDevice that
queries session/device capabilities for "android.hardware.touchscreen" or uses
ADB/driver capabilities) in GenericAppiumDriver before calling TapXY, and when
touch is absent use a DPAD fallback (implement a method like
PerformDPadTap/SendDPadNavigation that navigates to the target or sends
DPAD_CENTER/DPAD_LEFT/RIGHT/UP/DOWN key events via the Appium
driver/sendKeyEvent) so recordings (IsRecording, GetElementAtMousePosition,
RecordingEvent) remain unchanged but the actual interaction uses DPAD on TV
devices; update the try block to branch: if HasTouchSupport -> TapXY(...) else
-> PerformDPadTap(...) and ensure errors are still logged in the existing catch.

Comment on lines 107 to +132
GingerLibLiveSpy.StartEventListner = function () {
console.log("Event started");
if (document.addEventListener) {
document.addEventListener("mouseover", getMousePos);
}
else if (document.attachEvent)// Add to support erlier Version on IE .
{
// ✅ Keep mouseover + add mousemove for accuracy
document.addEventListener("mouseover", getMousePos, true);
document.addEventListener("mousemove", getMousePos, true);
} else if (document.attachEvent) {
document.attachEvent("onmouseover", getMousePos);
}
}
};

GingerLibLiveSpy.StartClickEventListner = function () {
console.log("Event started");
if (document.addEventListener) {
document.addEventListener("click", getMouseClickedPos);

}
else if (document.attachEvent)// Add to support earlier Version on IE .
{
document.attachEvent("click", getMouseClickedPos);
document.addEventListener("click", getMouseClickedPos, true);
} else if (document.attachEvent) {
document.attachEvent("onclick", getMouseClickedPos);
}
}
};

// ✅ Android TV
GingerLibLiveSpy.StartFocusEventListener = function () {
document.addEventListener("focus", getFocusedElement, true);
};

GingerLibLiveSpy.StartKeyEventListener = function () {
document.addEventListener("keydown", getRemoteClick, true);
};

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:

rg -n "StartEventListner|StartClickEventListner|StartFocusEventListener|StartKeyEventListener" --type cs --type js

Repository: Ginger-Automation/Ginger

Length of output: 1959


Inconsistent method naming: "Listner" vs "Listener".

The existing methods StartEventListner and StartClickEventListner use the typo "Listner", while newer methods StartFocusEventListener and StartKeyEventListener use the correct spelling "Listener". Additionally, GingerHTMLHelper.js also defines methods with the same typo pattern (StartEventListner, StartEventListnerFrame).

These misspelled methods are actively invoked from C# driver code (SeleniumDriver.cs and GingerWebDriver.cs), making any renaming a breaking change requiring coordination across multiple call sites.

Consider documenting this transition, using aliases for backward compatibility, or planning a deprecation migration path to move callers to the correctly-spelled method names.

🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js` around lines 107
- 132, The code contains inconsistent method naming: misspelled
StartEventListner and StartClickEventListner vs correctly spelled
StartFocusEventListener and StartKeyEventListener; because C# drivers
(SeleniumDriver.cs, GingerWebDriver.cs) call the misspelled names, add
correctly‑spelled wrapper/alias functions (e.g., StartEventListener and
StartClickEventListener) that internally call the existing StartEventListner and
StartClickEventListner, and add the reverse alias or deprecation warning on the
old functions (console.warn or comment) to guide migration; also update
GingerHTMLHelper.js to provide the same aliasing for StartEventListnerFrame →
StartEventListenerFrame and add brief in-file comments documenting the
deprecation and required coordination with C# callers.

Comment on lines 137 to +160
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);
var X = +GingerLibLiveSpy.GetXPoint();
var Y = +GingerLibLiveSpy.GetYPoint();

if (depth < currentDepth) {
depth = currentDepth;
resultElementFromPoint = element;
}
});
// ✅ Android TV fallback
if ((!X || !Y) && CurrentFocusedElement) {
return CurrentFocusedElement;
}

var element = document.elementFromPoint(X, Y);
element = normalizeNode(element);

if (!resultElementFromPoint) {
return document.elementFromPoint(X, Y);
// ✅ Dynamic shadow DOM support (SAFE)
var shadowRoots = getAllShadowRoots(document, []);
for (var i = 0; i < shadowRoots.length; i++) {
try {
var el = shadowRoots[i].elementFromPoint(X, Y);
if (el) element = normalizeNode(el);
} catch (e) { }
}

return resultElementFromPoint;
}
return element;
};

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

Falsy check incorrectly treats coordinates (0, y) or (x, 0) as invalid.

The condition (!X || !Y) at line 143 will be true when either coordinate is 0 (a valid screen edge position). This causes the Android TV fallback to trigger incorrectly for mouse positions at the top or left edge of the viewport.

Use explicit checks for NaN or undefined instead of relying on falsy evaluation.

🐛 Proposed fix
     GingerLibLiveSpy.ElementFromPoint = function () {

         var X = +GingerLibLiveSpy.GetXPoint();
         var Y = +GingerLibLiveSpy.GetYPoint();

         // ✅ Android TV fallback
-        if ((!X || !Y) && CurrentFocusedElement) {
+        if ((isNaN(X) || isNaN(Y)) && CurrentFocusedElement) {
             return CurrentFocusedElement;
         }
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js` around lines 137
- 160, The falsy check in GingerLibLiveSpy.ElementFromPoint incorrectly treats X
or Y equal to 0 as missing; change the guard to explicitly detect invalid
coordinates by testing for NaN/undefined instead of using (!X || !Y).
Specifically, when using GetXPoint()/GetYPoint() and variables X and Y, replace
the existing falsy check with an explicit condition like isNaN(X) || isNaN(Y) or
X == null || Y == null so the Android TV fallback to CurrentFocusedElement only
runs when coordinates are actually invalid.

Comment on lines +205 to +208
// ✅ Initialize once (NO recursion)
try {
define_GingerLibLiveSpy();
} catch (e) { }

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 adding error logging for debugging purposes.

The empty catch block silently swallows initialization errors, which could make debugging difficult in development. Consider adding conditional logging or storing the error for retrieval.

💡 Optional: Add error capture
 // ✅ Initialize once (NO recursion)
+var GingerLibLiveSpyInitError = null;
 try {
     define_GingerLibLiveSpy();
-} catch (e) { }
+} catch (e) { 
+    GingerLibLiveSpyInitError = e;
+}
🤖 Prompt for AI Agents
In `@Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js` around lines 205
- 208, The empty catch in the static init hides errors from
define_GingerLibLiveSpy(); update the catch to capture and surface the error:
catch the exception from define_GingerLibLiveSpy, log it conditionally (e.g.,
console.error or processLogger.error when available) and optionally store it in
a module-scoped variable (e.g., lastDefine_GingerLibLiveSpyError) so callers or
dev tools can inspect it later; modify the block around
define_GingerLibLiveSpy() to implement these minimal changes.

@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

Caution

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

⚠️ Outside diff range comments (1)
Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs (1)

314-334: Fix Android TV capability mapping (bundleId/Safari leak).

SetDeviceCapabilities deletes appium:bundleId for Android TV, but SetApplicationCapabilities still treats Android TV as iOS, re-adding bundleId and setting Safari for web apps. That will generate invalid capabilities for Android TV sessions. Update SetApplicationCapabilities (and the web branch) to treat AndroidTv like Android so appPackage/appActivity and Chrome are used.

✅ Proposed fix (update Android checks)
-            if (mDevicePlatformType.Value == nameof(eDevicePlatformType.Android))
+            if (mDevicePlatformType.Value == nameof(eDevicePlatformType.Android) ||
+                mDevicePlatformType.Value == nameof(eDevicePlatformType.AndroidTv))
             {
                 if (!init)
                 {
                     SetCurrentCapabilityValue(appPackage);
                     SetCurrentCapabilityValue(appActivity);
                 }
                 AddOrUpdateCapability(appPackage);
                 AddOrUpdateCapability(appActivity);
                 DeleteCapabilityIfExist(bundleId.Parameter);
             }
             else
             {
                 if (!init)
                 {
                     SetCurrentCapabilityValue(bundleId);
                 }
                 AddOrUpdateCapability(bundleId);
                 DeleteCapabilityIfExist(appPackage.Parameter);
                 DeleteCapabilityIfExist(appActivity.Parameter);
             }
...
-                if (mDevicePlatformType.Value == nameof(eDevicePlatformType.Android))
+                if (mDevicePlatformType.Value == nameof(eDevicePlatformType.Android) ||
+                    mDevicePlatformType.Value == nameof(eDevicePlatformType.AndroidTv))
                 {
                     browserName.Value = "Chrome";
                 }
                 else
                 {
                     browserName.Value = "Safari";
                 }
🤖 Fix all issues with AI agents
In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs`:
- Around line 188-202: In SetPlatformCapabilities(), when
mDevicePlatformType.Value equals nameof(eDevicePlatformType.AndroidTv) update
the platformName parameter to use "Android" (not "AndroidTV") so
platformName.Value is set to "Android" while keeping automationName.Value as
"UiAutomator2"; modify the branch that handles eDevicePlatformType.AndroidTv to
assign platformName.Value = "Android".
♻️ Duplicate comments (2)
Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs (2)

599-615: Fire-and-forget Task.Run still hides failures.

This block is still non-awaited and can silently fail or race with subsequent UI changes. Consider tracking/awaiting the Task or surfacing status to the UI.


767-770: Don’t swallow Page_Loaded errors silently.

The empty catch hides initialization failures; please log via Reporter.ToLog(eLogLevel.ERROR, ...). As per coding guidelines, log errors using Reporter.ToLog(eLogLevel.ERROR, message).

Comment on lines 188 to +202
private void SetPlatformCapabilities()
{
DriverConfigParam platformName = new DriverConfigParam() { Parameter = "platformName", Description = "Which mobile OS platform to use" };
DriverConfigParam platformName = new DriverConfigParam() { Parameter = "platformName", Description = "Which OS platform to use" };
DriverConfigParam automationName = new DriverConfigParam() { Parameter = "appium:automationName", Description = "Which automation engine to use" };
if (mDevicePlatformType.Value == nameof(eDevicePlatformType.Android))
{
platformName.Value = "Android";
automationName.Value = "UiAutomator2";
}

else if(mDevicePlatformType.Value == nameof(eDevicePlatformType.AndroidTv))
{
platformName.Value = "AndroidTV";
automationName.Value = "UiAutomator2";
}

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

🌐 Web query:

Appium 2 platformName capabilities Android TV valid values

💡 Result:

For Android TV in Appium 2, platformName should be Android (case-insensitive; many examples also show android). There is no separate platformName like AndroidTV/Android TV in core Appium—Android TV devices are still automated under the Android platform (e.g., via the UiAutomator2 driver). [1], [2], [3]

Example (W3C-style namespaced caps):

{
  "platformName": "Android",
  "appium:automationName": "UiAutomator2"
}

Sources: Appium UiAutomator2 driver docs (states platformName = Android) [1]; Appium 2 UiAutomator2 quickstart (driver supports platformNames ["Android"]) [2]; Suitest Appium integration (treats Android TVs under "Android") [3].


Change platformName for Android TV from "AndroidTV" to "Android".

Appium 2 does not support "AndroidTV" as a platformName value. Android TV devices are automated under the "Android" platform with UiAutomator2 driver. Setting an invalid platformName will cause Appium sessions to fail. Update line 196 to use platformName.Value = "Android";.

🤖 Prompt for AI Agents
In `@Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml.cs`
around lines 188 - 202, In SetPlatformCapabilities(), when
mDevicePlatformType.Value equals nameof(eDevicePlatformType.AndroidTv) update
the platformName parameter to use "Android" (not "AndroidTV") so
platformName.Value is set to "Android" while keeping automationName.Value as
"UiAutomator2"; modify the branch that handles eDevicePlatformType.AndroidTv to
assign platformName.Value = "Android".

}

// if we don't have a valid scale or image sizes yet bail out
if (scaleFactor <= 0 || DeviceScreenShotImageBK.ActualWidth == 0)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Please validate if this changes required or not

MicroFoucsUFTMLab = 1,
Kobiton = 2
Kobiton = 2,
LambdaTest = 3,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Pls remove LambdaTest

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.

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

Caution

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

⚠️ Outside diff range comments (1)
Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js (1)

169-199: Critical: Duplicate function definition overwrites Android TV support and references undefined variable.

This second ElementFromPoint definition (lines 169-199) completely overwrites the first implementation (lines 144-167), causing multiple critical issues:

  1. Undefined variable: allShadowRoots on line 184 is never defined—this will throw a ReferenceError at runtime. It should be getAllShadowRoots(document, []).

  2. Lost functionality: The first implementation includes Android TV fallback logic (CurrentFocusedElement), shadow DOM iteration with try-catch, and normalizeNode() calls—all lost when overwritten.

  3. Null dereference: Line 186 calls getCurrentDepth(element) but element can be null if elementFromPoint returns nothing.

  4. Inconsistent syntax: Uses ES6 (const, let, arrow functions) while the rest of the file uses ES5, which may cause compatibility issues.

Remove this duplicate definition or merge the logic into a single, correct implementation.

🐛 Proposed fix: Remove duplicate and fix first implementation
     GingerLibLiveSpy.ElementFromPoint = function () {

         var X = +GingerLibLiveSpy.GetXPoint();
         var Y = +GingerLibLiveSpy.GetYPoint();

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

         var element = document.elementFromPoint(X, Y);
         element = normalizeNode(element);

         // ✅ Dynamic shadow DOM support (SAFE)
         var shadowRoots = getAllShadowRoots(document, []);
         for (var i = 0; i < shadowRoots.length; i++) {
             try {
                 var el = shadowRoots[i].elementFromPoint(X, Y);
                 if (el) element = normalizeNode(el);
             } catch (e) { }
         }

         return element;
     };
-
-    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;
-    }
♻️ Duplicate comments (4)
Ginger/GingerCoreCommon/Drivers/CoreDrivers/Mobile/MobileDriverCommon.cs (1)

28-35: Inconsistent enum member naming: AndroidTV should be AndroidTv.

The eDeviceSource.AndroidTV uses ALLCAPS for "TV", which is inconsistent with eDevicePlatformType.AndroidTv (line 25) and other usages throughout the codebase. Additionally, there's an extra blank line at line 34 inside the enum body that should be removed.

Suggested fix
 public enum eDeviceSource
 {
     LocalAppium = 0,
     MicroFoucsUFTMLab = 1,
     Kobiton = 2,
-    AndroidTV = 3
-
+    AndroidTv = 3
 }
Ginger/GingerCoreNET/Resources/JavaScripts/GingerLiveSpy.js (3)

114-139: Inconsistent method naming already flagged.

The spelling inconsistency between "Listner" and "Listener" in method names was addressed in a previous review. Consider the migration path suggested there.


149-152: Falsy check issue already flagged.

The condition (!X || !Y) incorrectly treats coordinate 0 as invalid, which was addressed in a previous review.


244-247: Empty catch block already flagged.

The silent error swallowing in the initialization was addressed in a previous review with a suggested fix to capture errors for debugging.

@ravirk91
ravirk91 merged commit 8f99e6c into Releases/Beta Jan 23, 2026
18 of 20 checks passed
@ravirk91
ravirk91 deleted the Feature/android_Tv_automation_support branch January 23, 2026 14:04
ravirk91 added a commit that referenced this pull request Feb 3, 2026
* 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]>
@coderabbitai coderabbitai Bot mentioned this pull request Feb 4, 2026
15 tasks
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.

9 participants