Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
164aedf
almost finished fixing the first issue with the runset variables, cur…
NoahNegevDegen Aug 6, 2025
f711286
Run Set - "Mapped Runtime Value" has now the option of
NoahNegevDegen Aug 11, 2025
aec18f2
Value option when editing the Run Set will now support number Variables
NoahNegevDegen Aug 14, 2025
6da64d3
now Value option under "Mapped Runtime Value" supports list variables…
NoahNegevDegen Aug 18, 2025
a9191d4
make the start of a headless driver for unixShell
Aug 21, 2025
22ef824
"Value" feature (on runset Edit Business Flow Configurations) now sup…
NoahNegevDegen Aug 26, 2025
bd11802
date time var now allows past dates
NoahNegevDegen Sep 4, 2025
9612b77
removed "variable" option from Mapped Runtime Value
NoahNegevDegen Sep 4, 2025
dc2fca8
removed pop up "edit variable" window from edit runset configurations
NoahNegevDegen Sep 4, 2025
f411648
Changed gingerCore console Drivers so the unix shell will run on the …
Sep 8, 2025
f5a855e
"input" checkbox now hidden for some var types, and "Customized?" col…
NoahNegevDegen Sep 10, 2025
a3cf019
edit variable UI is more compact and the general details expand defau…
NoahNegevDegen Sep 11, 2025
27de7b1
fixed json run set sync
NoahNegevDegen Sep 14, 2025
939a571
removed the frontEnd mentions from the ConsoleDriverBase
Sep 15, 2025
e27dbe1
fixed problem where the output wasn't returned proparly
Sep 17, 2025
065664b
migrated the Console command action and drivers code to the CoreNet
Sep 28, 2025
41204cf
adding variable and execution changes
NoahNegevDegen Oct 12, 2025
1797f3b
now compatible with previous version (xml variable support)
NoahNegevDegen Oct 12, 2025
5ef7168
Merge branch 'simply_runset_variables_costumization' into runset_vari…
NoahNegevDegen Oct 12, 2025
fcfed2f
Merge pull request #4348 from Ginger-Automation/Releases/Published-Of…
Maheshkale447 Oct 18, 2025
25bec05
finished fixing up getting old version xml runset into the new versio…
NoahNegevDegen Oct 19, 2025
76be19e
moved the windows Ginger from GingerCore
Oct 19, 2025
37c7dda
Merging Code changes done so far
Oct 19, 2025
6d56eb0
Merge pull request #4350 from Ginger-Automation/Releases/Official-Rel…
Maheshkale447 Oct 19, 2025
17f8f26
Merge pull request #4351 from Ginger-Automation/Releases/Published-Of…
Maheshkale447 Oct 19, 2025
159054d
migrated the Console command action and drivers code to the CoreNet
Sep 28, 2025
66f536b
Merge branch 'master' into runset_variable_customization_simplification
noahdegen Oct 21, 2025
0e7e33f
Merge remote-tracking branch 'origin/master' into runset_variable_cus…
NoahNegevDegen Oct 21, 2025
09cd5c2
Merge branch 'runset_variable_customization_simplification' of https:…
NoahNegevDegen Oct 21, 2025
1775fa4
Fixing Release related bugs:
MeniKadosh1 Oct 22, 2025
6b8048c
Merge remote-tracking branch 'origin/Releases/Published-Official-Rele…
MeniKadosh1 Oct 22, 2025
1d06fbd
Merge pull request #4353 from Ginger-Automation/Fix-2025.4-release-bugs
MeniKadosh1 Oct 22, 2025
39c7b65
changeed the namespaces of the classes so the unix driver opens the w…
Oct 26, 2025
002964a
Update pull request template and add comprehensive Copilot instructions
Oct 28, 2025
a931def
Merge pull request #4354 from Ginger-Automation/Releases/Published-Of…
Maheshkale447 Oct 28, 2025
958675a
Security Testing Action Margin fix
AmanPrasad43 Oct 29, 2025
9c6030b
Merge branch 'master' into UpdateConsoleDriverAndAction
omri1911 Nov 5, 2025
6d57691
the Console driver window now shows the console buffer(still no usabl…
omri1911 Nov 5, 2025
671b3eb
Merge pull request #4355 from Ginger-Automation/BugFix/SecurityTestin…
Maheshkale447 Nov 7, 2025
034daf2
made the console window a bit prettier
omri1911 Nov 10, 2025
e90d3cf
Merge branch 'master' into runset_variable_customization_simplification
Maheshkale447 Nov 11, 2025
55a24e5
Merge branch 'master' into UpdateConsoleDriverAndAction
Maheshkale447 Nov 11, 2025
edfbb17
MainFrame Support Added for F13 to F24 keys
prashelke Nov 11, 2025
308f01b
Message Updated
prashelke Nov 11, 2025
1b27b68
Updated dll referance
prashelke Nov 11, 2025
f0fdb1c
migrated the DosConsoleDriver to the gingerCoreNet
omri1911 Nov 11, 2025
14b4321
Merge branch 'UpdateConsoleDriverAndAction' of https://github.com/Gin…
omri1911 Nov 11, 2025
2adedb5
added an option to saveBuffer and return it in the action
omri1911 Nov 11, 2025
73b3500
Updated
prashelke Nov 11, 2025
b95cc4a
Updated Code to read Mapped Output value instead of Value
Nov 11, 2025
7b04dd9
Merge pull request #4357 from Ginger-Automation/Enhancement/MainFrame…
prashelke Nov 11, 2025
73b3395
made the New Action on the ConsoleWindow work again
omri1911 Nov 11, 2025
a58e9e4
Suggestions implemented
Nov 12, 2025
e299329
Merge pull request #4330 from Ginger-Automation/runset_variable_custo…
Maheshkale447 Nov 12, 2025
946ea71
made the UI of the ConsoleDriverWindow and the ConsoleNewActionPage m…
omri1911 Nov 12, 2025
924751b
Merge branch 'master' into UpdateConsoleDriverAndAction
Maheshkale447 Nov 13, 2025
0f1c872
Fixed Code rabbit comment and resolved codacy issue
prashelke Nov 13, 2025
7253c87
Updated Changes
prashelke Nov 13, 2025
8bc6378
updated
prashelke Nov 13, 2025
8ffbae0
Updated code
prashelke Nov 13, 2025
46ced1d
Updated
prashelke Nov 13, 2025
a892a8b
Merge pull request #4356 from Ginger-Automation/UpdateConsoleDriverAn…
Maheshkale447 Nov 13, 2025
649aad6
Merge pull request #4358 from Ginger-Automation/master
Maheshkale447 Nov 13, 2025
4d3a3c5
Update version to 25.5.1.0 in csproj file
Maheshkale447 Nov 17, 2025
918b2eb
Commit pending changes before .NET upgrade
Nov 17, 2025
bc0eb9d
Updated Solution file
Nov 17, 2025
5e59d95
removed GingerSikuliStandard project
Nov 17, 2025
823a5c1
Merge branch 'Releases/Beta' into upgrade-to-NET8
Maheshkale447 Nov 17, 2025
2d953ee
Update UIAComWrapperHelper.cs
Maheshkale447 Nov 17, 2025
225a60d
Merge pull request #4361 from Ginger-Automation/upgrade-to-NET8
Maheshkale447 Nov 17, 2025
262895d
Java code refactor
GokulBothe99 Nov 18, 2025
1e912d9
Java version Upgrade 25
GokulBothe99 Nov 19, 2025
ca0ede4
Merge pull request #4362 from Ginger-Automation/Feature/JavaAgentCode…
Maheshkale447 Nov 19, 2025
26e5248
Console Log Related fixed
prashelke Nov 19, 2025
9b8588c
Updated
prashelke Nov 20, 2025
6c669be
added missing switch case
prashelke Nov 20, 2025
8aef164
Merge branch 'Releases/Beta' into BugFix/ConsoleDriverFix
prashelke Nov 20, 2025
c002f3e
Merge pull request #4364 from Ginger-Automation/BugFix/ConsoleDriverFix
Maheshkale447 Nov 20, 2025
5270db2
support jdk 25
GokulBothe99 Nov 20, 2025
5f53a7a
Merge branch 'Releases/Beta' into Feature/JDK25_Support
GokulBothe99 Nov 20, 2025
19c9308
removed unwanted code
GokulBothe99 Nov 20, 2025
d5b07a8
handled codecy comment
GokulBothe99 Nov 20, 2025
45a2836
mahesh suggested chages
GokulBothe99 Nov 20, 2025
d21d806
codecy comment
GokulBothe99 Nov 20, 2025
2f575ce
Merge pull request #4363 from Ginger-Automation/Feature/JDK25_Support
Maheshkale447 Nov 20, 2025
f4840ba
revoed code
GokulBothe99 Nov 20, 2025
80ace3d
Merge branch 'Releases/Beta' into Feature/JDK25_Support
GokulBothe99 Nov 20, 2025
ae03099
Merge pull request #4365 from Ginger-Automation/Feature/JDK25_Support
Maheshkale447 Nov 20, 2025
43d1cf4
Updated build xml to remove java referene
Nov 20, 2025
175e889
D57008_D57038 Defect fixed
prashelke Nov 21, 2025
93a6d00
Data Source fix
AmanPrasad43 Nov 21, 2025
dec159c
Updated
prashelke Nov 21, 2025
36d9b1b
Close New Launch window from Dos, console, unixshell
prashelke Nov 21, 2025
43377ad
Merge pull request #4367 from Ginger-Automation/BugFix/DataSource
Maheshkale447 Nov 21, 2025
76b5d6e
Merge branch 'Releases/Beta' into BugFix/MobilePageSource
prashelke Nov 21, 2025
dacb0de
Updated Changes
prashelke Nov 21, 2025
528d31a
Update core common version
Nov 21, 2025
defacd2
Merge pull request #4366 from Ginger-Automation/BugFix/MobilePageSource
Maheshkale447 Nov 21, 2025
332b442
added 1.6 build file
GokulBothe99 Nov 21, 2025
d6ff9bf
Merge pull request #4368 from Ginger-Automation/BugFix/javaVersion1.6
Maheshkale447 Nov 21, 2025
e24d4aa
Updated dotnet from 8.0.0 to 8.0.22
Nov 21, 2025
0b49dc3
Merge pull request #4369 from Ginger-Automation/Releases/Beta-Publish…
Maheshkale447 Nov 24, 2025
5677bf0
Mobile accessibility issue for ios - fix
AmanPrasad43 Nov 27, 2025
d8accb8
added CodeQL WF
Nov 27, 2025
d229ede
Update codeql-analysis.yml
mohd-amdocs Nov 27, 2025
7c1325d
Update codeql-analysis.yml
mohd-amdocs Nov 27, 2025
8786d3b
Update codeql-analysis.yml
mohd-amdocs Nov 27, 2025
b5a6fe8
Update codeql-analysis.yml
mohd-amdocs Nov 27, 2025
ca6e19e
removed macOS build steps
mohd-amdocs Nov 27, 2025
b6ffcfa
Merge pull request #4371 from Ginger-Automation/security-scan
Maheshkale447 Nov 28, 2025
4d432af
Java Explorer issue fix
GokulBothe99 Dec 1, 2025
71452b8
Update codeql-analysis.yml
MeniKadosh1 Dec 2, 2025
8d87582
Update README.md
MeniKadosh1 Dec 2, 2025
2c32eb4
Merge pull request #4373 from Ginger-Automation/MeniKadosh1-patch-1
MeniKadosh1 Dec 2, 2025
f3c9a79
mobily accessibility locators identification issue fix
AmanPrasad43 Dec 5, 2025
226adde
codeql related updates
Dec 5, 2025
532f5b9
Merge pull request #4374 from Ginger-Automation/codeql-updates
Maheshkale447 Dec 5, 2025
ae1512b
coderabbit comments handled
AmanPrasad43 Dec 7, 2025
b0e21c8
Fix: GitHub SecurityAlerts 198,199, 200, 201, 202
Dec 8, 2025
f6470b3
its tested and working
GokulBothe99 Dec 8, 2025
6974e11
Codecy suggestions
Dec 8, 2025
6ade640
CodeRabit Suggestions
Dec 8, 2025
7bf4492
CodeRabbit suggestions
Dec 8, 2025
8d4359a
CodeRabbit Suggestions
Dec 8, 2025
5599647
Fix for Git Security Alert 181
Dec 8, 2025
944bd18
Merge branch 'master' into BugFix/JavaExplorerFix
ravirk91 Dec 8, 2025
57e0787
codacy suggestions
Dec 8, 2025
e9a1771
Merge pull request #4375 from Ginger-Automation/GitSecurityAlerts
ravirk91 Dec 8, 2025
3dee952
RemovedUnusedMethod
Dec 9, 2025
14984bb
Pull all variables except password variables
Dec 9, 2025
87af84e
Merge branch 'master' into GitHubAlertFix-74
rathimayur Dec 9, 2025
c62b142
Removing code that passes Ginger variables to Robot script using temp…
Dec 9, 2025
13ab6cd
Merge remote-tracking branch 'origin/master' into GitHubAlertFix-74
Dec 9, 2025
8909917
Merge branch 'GitHubAlertFix-74' of https://github.com/Ginger-Automat…
Dec 9, 2025
f79bd52
Revert "Removing code that passes Ginger variables to Robot script us…
Dec 9, 2025
b1b6c93
Merge pull request #4377 from Ginger-Automation/GitHubAlertFix-74
ravirk91 Dec 9, 2025
54e2de3
Fixed DBoperations Git Alerts
Dec 10, 2025
2aef88e
Build Errors Fixed
Dec 10, 2025
80d6bb9
Removed Unused GingerExecutionReport folder from Ginger also handled …
Dec 10, 2025
844ca5f
Code Issues
Dec 10, 2025
8b925e8
Merge pull request #4379 from Ginger-Automation/DBOperations-GitAlert…
ravirk91 Dec 11, 2025
9a7a169
Enabled only Windows build for CodeQL
mohd-amdocs Dec 12, 2025
877037e
added variable option
GokulBothe99 Dec 12, 2025
7ba3098
Merge pull request #4381 from Ginger-Automation/mohd-amdocs-patch-1
ravirk91 Dec 15, 2025
f7211b5
MSSQL Fix Test
Dec 15, 2025
b680dfd
Test Changes
Dec 15, 2025
04e16b1
Bar user inputted connection string.
Dec 15, 2025
19c2958
Merge pull request #4382 from Ginger-Automation/MSSQL-Alert-Fix
rathimayur Dec 15, 2025
0255db3
Not using GetConnectionString method
Dec 16, 2025
5fac81d
Merge pull request #4383 from Ginger-Automation/CodeQL-OracleDBAlertFix
rathimayur Dec 16, 2025
3cc4a77
added removing variable value code
GokulBothe99 Dec 16, 2025
76342a0
Merge branch 'master' into BugFix/StoreToEnabledIssue
GokulBothe99 Dec 16, 2025
4912e71
code rabbit suggested changes
GokulBothe99 Dec 16, 2025
7c44668
code rabbit changes
GokulBothe99 Dec 16, 2025
9762e99
Merge branch 'BugFix/JavaExplorerFix' of https://github.com/Ginger-Au…
GokulBothe99 Dec 16, 2025
f28d0f5
Merge branch 'master' into BugFix/JavaExplorerFix
GokulBothe99 Dec 16, 2025
9a83e09
Do not assign the Expression to mValueCalculated if it was failed to …
Dec 16, 2025
64b31f2
Codacy issues
Dec 17, 2025
4f1c848
Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0
Dec 17, 2025
db227a4
codacy
Dec 17, 2025
5ce2759
Merge pull request #4384 from Ginger-Automation/CodeQL-ALert-Fix---Un…
rathimayur Dec 17, 2025
02f7c24
Merge branch 'master' into BugFix/JavaExplorerFix
ravirk91 Dec 17, 2025
c73bfdd
Merge pull request #4372 from Ginger-Automation/BugFix/JavaExplorerFix
ravirk91 Dec 17, 2025
23eb837
removed unwanted check
GokulBothe99 Dec 17, 2025
a1a2527
Merge branch 'master' into Dependabot-alerts-Fix
rathimayur Dec 17, 2025
12611ad
Merge branch 'master' into BugFix/StoreToEnabledIssue
ravirk91 Dec 17, 2025
a66aa40
Merge pull request #4376 from Ginger-Automation/BugFix/StoreToEnabled…
ravirk91 Dec 17, 2025
02ad643
Merge pull request #4386 from Ginger-Automation/Dependabot-alerts-Fix
Maheshkale447 Dec 18, 2025
e143853
Merge branch 'master' into BugFix/MobileAccessibilityIssueForIOS
ravirk91 Dec 18, 2025
d85b70e
Merge pull request #4370 from Ginger-Automation/BugFix/MobileAccessib…
ravirk91 Dec 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# Ginger Automation AI Coding Agent Guide

## Project Overview
Ginger is a comprehensive automation IDE supporting multiple platforms (Web, Mobile, APIs, Java, Windows, PowerBuilder, Linux/Unix, Mainframe). It uses a drag-and-drop approach enabling users with or without coding skills to create automation flows.

## Core Architecture Concepts

### 1. Execution Hierarchy
The fundamental execution structure follows this hierarchy:
```
Solution → RunSet → Runner → BusinessFlow → Activity → Action (Act)
```

- **BusinessFlow**: Top-level test scenario container (`GingerCoreCommon/Repository/BusinessFlowLib/BusinessFlow.cs`)
- **Activity**: Group of related actions within a BusinessFlow (`GingerCoreCommon/Repository/BusinessFlowLib/Activity.cs`)
- **Act/Action**: Individual executable step (`GingerCoreCommon/Actions/Act.cs`)
- **Agent**: Driver wrapper that connects to target applications (`GingerCoreCommon/RunLib/Agent.cs`)

### 2. Key Project Structure
- **Ginger/**: Main WPF application (UI)
- **GingerCoreCommon/**: Shared models and base classes
- **GingerCoreNET/**: .NET execution engine and CLI components
- **GingerRuntime/**: Console application entry point
- **GingerCore/**: Legacy core components (being migrated to GingerCoreNET)

### 3. Driver Architecture
Each platform has dedicated drivers under `GingerCore/Drivers/`:
- `SeleniumDriver` for web automation
- `JavaDriver` for Java applications
- `ConsoleDriverLib` for command-line interfaces
- `WindowsAutomation` for Windows applications
- Agents (`Agent.cs`) act as wrappers providing unified interface
Comment on lines +27 to +32

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:

#!/bin/bash
# Search for JavaDriver, SeleniumDriver, ConsoleDriver classes
echo "=== Searching for class definitions ==="
find . -name "*.cs" -type f | head -100 | xargs grep -l "class JavaDriver\|class SeleniumDriver\|class.*ConsoleDriver\|class WindowsAutomation" 2>/dev/null | head -20

echo ""
echo "=== Checking for ConsoleDriverLib directory ==="
find . -type d -name "*Console*" 2>/dev/null | head -20

echo ""
echo "=== Checking directory structure under Drivers ==="
find . -type d -path "*/Drivers/*" 2>/dev/null | head -30

Repository: Ginger-Automation/Ginger

Length of output: 2062


🏁 Script executed:

#!/bin/bash
# Search for specific class definitions in discovered directories
echo "=== JavaDriver in GingerCore/Drivers/JavaDriverLib ==="
find ./Ginger/GingerCore/Drivers/JavaDriverLib -name "*.cs" -type f -exec grep -l "class.*JavaDriver" {} \; 2>/dev/null

echo ""
echo "=== ConsoleDriver in GingerCore/Drivers/ConsoleDriverLib ==="
find ./Ginger/GingerCore/Drivers/ConsoleDriverLib -name "*.cs" -type f -exec grep -l "class.*ConsoleDriver" {} \; 2>/dev/null

echo ""
echo "=== ConsoleDriver in GingerCoreNET/Drivers/CoreDrivers/Console ==="
find ./Ginger/GingerCoreNET/Drivers/CoreDrivers/Console -name "*.cs" -type f -exec grep -l "class.*ConsoleDriver\|class.*Console" {} \; 2>/dev/null

echo ""
echo "=== SeleniumDriver location ==="
find ./Ginger -name "*SeleniumDriver*.cs" -type f 2>/dev/null | head -5

echo ""
echo "=== WindowsAutomation ==="
find ./Ginger -name "*WindowsAutomation*.cs" -type f 2>/dev/null | head -5
find ./Ginger -type d -name "*Windows*" 2>/dev/null | grep -i driver | head -10

Repository: Ginger-Automation/Ginger

Length of output: 733


🏁 Script executed:

#!/bin/bash
# Check contents of legacy ConsoleDriverLib
echo "=== Files in GingerCore/Drivers/ConsoleDriverLib ==="
find ./Ginger/GingerCore/Drivers/ConsoleDriverLib -type f -name "*.cs" 2>/dev/null | head -20

echo ""
echo "=== Check if ConsoleDriverLib directory is empty or deprecated ==="
ls -la ./Ginger/GingerCore/Drivers/ConsoleDriverLib 2>/dev/null

echo ""
echo "=== Verify copilot-instructions.md current content ==="
cat ./Ginger/.github/copilot-instructions.md 2>/dev/null | head -50

Repository: Ginger-Automation/Ginger

Length of output: 498


🏁 Script executed:

#!/bin/bash
echo "=== Full copilot-instructions.md content ==="
cat ./Ginger/.github/copilot-instructions.md

echo ""
echo "=== Check for WindowsDriver or Windows-related driver classes ==="
find ./Ginger/GingerCore/Drivers/WindowsLib -name "*.cs" -type f -exec grep -l "class.*Windows" {} \; 2>/dev/null | head -5

Repository: Ginger-Automation/Ginger

Length of output: 325


🏁 Script executed:

#!/bin/bash
echo "=== Find copilot-instructions.md in the repo ==="
find ./Ginger -name "copilot-instructions.md" -type f 2>/dev/null

echo ""
echo "=== Search all .github directories ==="
find ./Ginger -type d -name ".github" 2>/dev/null

Repository: Ginger-Automation/Ginger

Length of output: 156


🏁 Script executed:

#!/bin/bash
echo "=== Check if .github directory exists anywhere ==="
find . -type d -name ".github" 2>/dev/null

echo ""
echo "=== Search for any copilot or instructions files ==="
find ./Ginger -iname "*copilot*" -o -iname "*instruction*" 2>/dev/null | grep -v node_modules

echo ""
echo "=== Check git status and recent files ==="
cd ./Ginger && git ls-files | grep -i copilot | head -10

Repository: Ginger-Automation/Ginger

Length of output: 225


🏁 Script executed:

#!/bin/bash
echo "=== Contents of .github directory ==="
ls -la ./.github/

echo ""
echo "=== Check if copilot-instructions.md file exists ==="
test -f ./.github/copilot-instructions.md && echo "File exists" || echo "File does not exist"

echo ""
echo "=== Try different paths ==="
find . -name "*.md" -path "*/.github/*" 2>/dev/null

Repository: Ginger-Automation/Ginger

Length of output: 611


🏁 Script executed:

#!/bin/bash
echo "=== Full copilot-instructions.md content ==="
cat ./.github/copilot-instructions.md

echo ""
echo "=== Check specific line range (27-32) ==="
sed -n '27,32p' ./.github/copilot-instructions.md

Repository: Ginger-Automation/Ginger

Length of output: 5791


Update driver paths to reflect actual post-refactoring locations.

Lines 27–32 reference driver locations that are now outdated. SeleniumDriver and ConsoleDriver implementations have been migrated to GingerCoreNET:

  • SeleniumDriver is located in GingerCoreNET/Drivers/CoreDrivers/Web/Selenium/, not GingerCore/Drivers/
  • Console driver implementations (DOSConsoleDriver, UnixShellDriver) are located in GingerCoreNET/Drivers/CoreDrivers/Console/, not under GingerCore/Drivers/ConsoleDriverLib
  • JavaDriver remains in GingerCore/Drivers/JavaDriverLib/ (accurate)
  • Update WindowsAutomation to WindowsDriver for consistency with actual class names and the {Platform}Driver naming pattern
🤖 Prompt for AI Agents
.github/copilot-instructions.md around lines 27 to 32: update the outdated
driver path references to the post-refactor locations and naming: change the
SeleniumDriver path to GingerCoreNET/Drivers/CoreDrivers/Web/Selenium/, move
Console drivers to GingerCoreNET/Drivers/CoreDrivers/Console/ (include
DOSConsoleDriver and UnixShellDriver), keep JavaDriver at
GingerCore/Drivers/JavaDriverLib/, and rename WindowsAutomation to WindowsDriver
to follow the {Platform}Driver naming pattern.


## Development Workflows

### Building & Testing
```powershell
# Main build (Windows)
dotnet build Ginger/Ginger.sln

# Run tests
./TestDotNetFramework.ps1 # Framework tests
./CLITests.ps1 # CLI functionality tests

# Console execution
cd Ginger/GingerRuntime/bin/Release/net8.0/publish/
dotnet GingerConsole.dll run -s "path/to/solution" -e "Environment" -r "RunSet"
```

### CLI Commands
**Windows:**
- `ginger.exe help` or `dotnet ginger.dll help` - Show CLI help
- `ginger.exe run -s <solution> -e <env> -r <runset>` - Execute automation
- `ginger.exe analyze -s <solution>` - Analyze solution
- `ginger.exe grid --port <port>` - Start grid mode

**Linux:**
- `dotnet gingerruntime.dll help` - Show CLI help
- `dotnet gingerruntime.dll run -s <solution> -e <env> -r <runset>` - Execute automation
- `dotnet gingerruntime.dll analyze -s <solution>` - Analyze solution
- `dotnet gingerruntime.dll grid --port <port>` - Start grid mode

## Project Conventions

### 1. File Organization
- Actions inherit from `Act` class and implement platform-specific logic
- Repository objects use `[IsSerializedForLocalRepository]` attribute for persistence
- Test files end with `Test.cs` and use MSTest framework with `[TestClass]` and `[TestMethod]`

### 2. Naming Patterns
- Actions: `Act{PlatformType}{ActionType}` (e.g., `ActBrowserElement`, `ActConsoleCommand`)
- Drivers: `{Platform}Driver` (e.g., `SeleniumDriver`, `JavaDriver`)
- Pages/Windows: `{Feature}Page` or `{Feature}Window`

### 3. Error Handling
- Use `Reporter.ToLog(eLogLevel.ERROR, message)` for logging
- Actions set `act.Error` and `act.Status = eRunStatus.Failed` on failure
- Execution continues based on `Activity.ActionRunOption` setting

## Integration Points

### 1. Solution Structure
Solutions are XML-based with this folder structure:
```
Solution/
├── BusinessFlows/ # Test scenarios
├── Activities/ # Reusable activity groups
├── Actions/ # Shared actions
├── Agents/ # Driver configurations
├── Environments/ # Environment settings
├── DataSources/ # Test data
└── Applications/ # Target application definitions
```

### 2. Execution Engine
- `RunsetExecutor` orchestrates execution (`GingerCoreNET/Run/RunsetExecutor.cs`)
- `GingerExecutionEngine` handles individual runner execution
- Execution logging via `ExecutionLogger` implementations
- Supports parallel execution across multiple agents

### 3. Plugin Architecture
- Legacy drivers implement `DriverBase`
- New plugins use `Agent.eAgentType.Service` with `PluginId`/`ServiceId`
- External integrations via `ALM` (Application Lifecycle Management) connectors
- Plugin packages defined by `Ginger.PluginPackage.json` manifest
- Managed through `PluginsManager` (`GingerCoreNET/PlugInsLib/PluginsManager.cs`)

## Critical Development Notes

- **Target Framework**: .NET 8.0 with Windows 10.0.17763.0 compatibility
- **WPF Dependencies**: Main UI uses WPF; console components are cross-platform
- **XML Serialization**: Repository objects serialize to XML using custom attributes
- **Multi-Threading**: Execution engine supports parallel runners; use thread-safe patterns
- **Memory Management**: Dispose drivers properly; avoid memory leaks in long-running executions

## Testing Strategy
- Unit tests in `*Test.cs` files use dependency injection patterns
- Integration tests use `TestResources/Solutions/` for test data
- CLI tests verify command-line interface functionality
- Use `mConsoleMessages` pattern for testing CLI output capture

When working with this codebase, focus on the execution hierarchy and understand how Actions flow through Activities within BusinessFlows, executed by Agents that wrap platform-specific drivers.
Comment on lines +1 to +122

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

Fix Markdown formatting to comply with style guide.

The file has systematic formatting violations that should be corrected before merge:

  1. Blank lines around headings (MD022): All heading levels lack blank lines above their introductory text or preceding sections
  2. Blank lines around code blocks (MD031): Multiple fenced code blocks lack surrounding blank lines
  3. Language identifiers in code blocks (MD040): Both Solution → RunSet... blocks (lines 10, 84) are missing language identifiers
  4. Trailing newline (MD047): File should end with a single newline
🔎 Proposed fixes for Markdown formatting

Add blank lines before all headings and major sections, specify language identifiers, and add trailing newline. Example pattern:

-## Project Overview
-Ginger is a comprehensive automation IDE...
+
+## Project Overview
+
+Ginger is a comprehensive automation IDE...

For code blocks without a language:

-```
-Solution → RunSet → Runner → BusinessFlow → Activity → Action (Act)
-```
+
+```
+Solution → RunSet → Runner → BusinessFlow → Activity → Action (Act)
+```

Apply these patterns consistently throughout lines 1–122 and ensure the file ends with a newline.

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

3-3: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


8-8: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


10-10: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


10-10: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


19-19: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


26-26: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


36-36: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


37-37: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


50-50: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


65-65: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


70-70: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


75-75: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


82-82: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


84-84: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


84-84: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


95-95: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


101-101: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


116-116: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


122-122: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 Prompt for AI Agents
.github/copilot-instructions.md lines 1-122: the Markdown violates
MD022/MD031/MD040/MD047; fix by adding a blank line before each heading and
before/after every fenced code block, add explicit language identifiers (e.g.,
"text" or "bash") to the two code blocks at the Solution → RunSet... occurrences
(around lines ~10 and ~84), ensure all fenced blocks have surrounding blank
lines, and terminate the file with a single trailing newline.

8 changes: 2 additions & 6 deletions .github/workflows/Build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ jobs:
echo $save > .\Ginger\GingerCoreCommon/GingerCoreCommon.csproj
$save=(Get-Content .\Ginger\GingerInstallerScript.iss) -replace '#define MyAppVersion "*.*.*.*"','#define MyAppVersion "${{ env.gingernumber}}"'
echo $save > .\Ginger\GingerInstallerScript.iss
$save=(Get-Content .\Ginger\GingerCore\Drivers\JavaDriverLib\GingerJavaAgent\agent\com\amdocs\ginger\GingerAgent.java) -replace 'public static final String GINGER_JAVA_AGENT_VERSION="*.*.*.*";','public static final String GINGER_JAVA_AGENT_VERSION="${{ env.gingernumber}}";'
echo $save > .\Ginger\GingerCore\Drivers\JavaDriverLib\GingerJavaAgent\agent\com\amdocs\ginger\GingerAgent.java
$save=(Get-Content .\Ginger\GingerInstallerScriptGithub.iss) -replace '#define MyAppVersion "*.*.*.*"','#define MyAppVersion "${{ env.gingernumber}}"'
echo $save > .\Ginger\GingerInstallerScriptGithub.iss

Expand All @@ -77,17 +75,15 @@ jobs:
run: |
sed -i 's/<AssemblyVersion>.*<\/AssemblyVersion>/<AssemblyVersion>${{ env.gingernumber}}<\/AssemblyVersion>/' ./Ginger/GingerCoreCommon/GingerCoreCommon.csproj
sed -i 's/<FileVersion>.*<\/FileVersion>/<FileVersion>${{ env.gingernumber}}<\/FileVersion>/' ./Ginger/GingerCoreCommon/GingerCoreCommon.csproj
sed -i 's/#define MyAppVersion ".*"/#define MyAppVersion "${{ env.gingernumber}}"/' ./Ginger/GingerInstallerScript.iss
sed -i 's/public static final String GINGER_JAVA_AGENT_VERSION=".*";/public static final String GINGER_JAVA_AGENT_VERSION="${{ env.gingernumber}}";/' ./Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/GingerAgent.java
sed -i 's/#define MyAppVersion ".*"/#define MyAppVersion "${{ env.gingernumber}}"/' ./Ginger/GingerInstallerScript.iss
sed -i 's/#define MyAppVersion ".*"/#define MyAppVersion "${{ env.gingernumber}}"/' ./Ginger/GingerInstallerScriptGithub.iss

- name: 'Update Assembly - macOS'
if: ${{github.workflow == 'CD' && runner.os == 'macOS'}}
run: |
sed -i '' 's/<AssemblyVersion>.*<\/AssemblyVersion>/<AssemblyVersion>${{ env.gingernumber}}<\/AssemblyVersion>/' ./Ginger/GingerCoreCommon/GingerCoreCommon.csproj
sed -i '' 's/<FileVersion>.*<\/FileVersion>/<FileVersion>${{ env.gingernumber}}<\/FileVersion>/' ./Ginger/GingerCoreCommon/GingerCoreCommon.csproj
sed -i '' 's/#define MyAppVersion ".*"/#define MyAppVersion "${{ env.gingernumber}}"/' ./Ginger/GingerInstallerScript.iss
sed -i '' 's/public static final String GINGER_JAVA_AGENT_VERSION=".*";/public static final String GINGER_JAVA_AGENT_VERSION="${{ env.gingernumber}}";/' ./Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/GingerAgent.java
sed -i '' 's/#define MyAppVersion ".*"/#define MyAppVersion "${{ env.gingernumber}}"/' ./Ginger/GingerInstallerScript.iss
sed -i '' 's/#define MyAppVersion ".*"/#define MyAppVersion "${{ env.gingernumber}}"/' ./Ginger/GingerInstallerScriptGithub.iss

- name: 'Print OS type'
Expand Down
70 changes: 0 additions & 70 deletions .github/workflows/Old/codeql-analysis.yml

This file was deleted.

112 changes: 112 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Security Scan"


on:
push:
branches: [ master, Features/Linux-Migration, Releases/*, Releases/*/*]
pull_request:
branches: [ master ]
schedule:
- cron: '0 0 * * 0'

jobs:
analyze:
name: CodeQL - ${{ matrix.language }} - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'csharp', 'javascript' ]
os: [windows-latest]

# ------------------------------------------------------------------------------------------------------
# Checkout Ginger Repository
# ------------------------------------------------------------------------------------------------------

steps:
- name: Checkout repository
uses: actions/checkout@v3

# ------------------------------------------------------------------------------------------------------
# Initialize CodeQL
# ------------------------------------------------------------------------------------------------------

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
config-file: ./.github/workflows/codeql-config.yml

# ------------------------------------------------------------------------------------------------------
# Install .Net core SDK 8.0.100
# ------------------------------------------------------------------------------------------------------

- name: Install .NET 8
uses: actions/setup-dotnet@v3
with:
dotnet-version: '8.0.100'

# ------------------------------------------------------------------------------------------------------
# Install Mono - for Ubuntu & macOS as pre-requisite for building Ginger
# ------------------------------------------------------------------------------------------------------

- name: Install Mono - Linux
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y mono-complete

- name: 'Install Mono - macOS'
if: runner.os == 'macOS'
run: brew install mono

# ------------------------------------------------------------------------------------------------------
# Build && Publish Ginger Solution
# ------------------------------------------------------------------------------------------------------

- name: Setup Nuget
uses: Nuget/setup-nuget@v1.0.5

- name: Restore Nuget Packages
run: nuget restore ./Ginger/Ginger.sln

- name: Add msbuild to PATH
if: runner.os == 'windows'
uses: microsoft/setup-msbuild@v1.0.2

- name: Build Windows Ginger Solution
if: runner.os == 'windows'
run: msbuild ./Ginger/Ginger.sln /p:DebugSymbols=true /p:DebugType=full /p:Configuration=Release

- name: Publish GingerRuntime - Linux
if: runner.os == 'Linux'
run: dotnet publish ./Ginger/GingerRuntime/GingerRuntime.csproj --runtime linux-x64 --self-contained true -c Release

- name: Publish GingerRuntime - macOS
if: runner.os == 'macOS'
run: dotnet publish ./Ginger/GingerRuntime/GingerRuntime.csproj --runtime osx-x64 --self-contained true -c Release

# ------------------------------------------------------------------------------------------------------
# Security Scan with CodeQL
# ------------------------------------------------------------------------------------------------------

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"
33 changes: 33 additions & 0 deletions .github/workflows/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: "CodeQL Config"

paths:
- 'Ginger' # Only scan the Ginger directory for CodeQL

paths-ignore:

# ignore build outputs
- '**/bin/**'
- '**/obj/**'
- '**/Release/**'
- '**/Debug/**'

# ignore test projects
- 'Ginger/GingerAutoPilotTest/**'
- 'Ginger/GingerConsoleTest/**'
- 'Ginger/GingerCoreCommonTest/**'
- 'Ginger/GingerCoreNETUnitTest/**'
- 'Ginger/GingerCoreTest/**'
- 'Ginger/GingerPluginCoreTest/**'
- 'Ginger/GingerTest/**'
- 'Ginger/GingerUtilsTest/**'
- 'Ginger/GingerWPFDriverWindowTest/**'

# more optional files to ignore
# - '**/*.Designer.cs' # Auto-generated designer files
# - '**/*.g.cs' # Auto-generated files
# - '**/*.g.i.cs' # Auto-generated intermediate files
# - '**/AssemblyInfo.cs' # Assembly info files
# - '**/packages/**' # NuGet packages
# - '**/node_modules' # JavaScript dependencies
# - '**/*.min.js' # Minified JavaScript
# - '**/*.min.css' # Minified CSS
Binary file not shown.
Binary file not shown.
4 changes: 2 additions & 2 deletions Ginger/Ginger.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32319.34
# Visual Studio Version 18
VisualStudioVersion = 18.0.11205.157
Comment on lines +3 to +4

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

Verify Visual Studio 2026 (Version 18) requirement is intentional.

The solution file has been updated to target Visual Studio 2026 (Version 18), which began rolling out on November 11, 2025. Ensure this is intentional for the 2025 RC release, as it may impact developers who haven't upgraded to Visual Studio 2026 yet. While the MinimumVisualStudioVersion remains at 10.0.40219.1 allowing older VS versions to open the solution, some features may require the newer version.

🤖 Prompt for AI Agents
In Ginger/Ginger.sln around lines 3 to 4, the solution file now lists
VisualStudioVersion = 18.0.11205.157 (Visual Studio 2026); verify this is
intentional for the 2025 RC release and either confirm and document the
requirement or revert to the previous supported IDE version to avoid forcing
upgrades. If intentional: keep the version but add a note to the repo
README/CONTRIBUTING that VS 2026 is required for certain features and update
CI/docs; if not intentional: change VisualStudioVersion to the prior supported
value (e.g., 17.x) and ensure MinimumVisualStudioVersion remains unchanged, then
run a quick solution open/test on VS 17 to validate compatibility.

MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GingerCoreCommon", "GingerCoreCommon\GingerCoreCommon.csproj", "{9D569B65-EC6C-4677-A59B-CF12C24B5EB0}"
EndProject
Expand Down
1 change: 1 addition & 0 deletions Ginger/Ginger/Actions/ActionEditPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ limitations under the License.
using Amdocs.Ginger.Common.Expressions;
using Amdocs.Ginger.Common.GeneralLib;
using Amdocs.Ginger.Common.UIElement;
using Amdocs.Ginger.CoreNET.ActionsLib;
using Amdocs.Ginger.CoreNET.Execution;
using Amdocs.Ginger.Repository;
using Ginger.Actions.UserControls;
Expand Down
Loading
Loading