Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
1883a6b
Added utility functions for checking and installing packages; added f…
nasif-z Nov 12, 2025
a85dd63
Changed the package checking mechanism; added error output in package…
nasif-z Nov 12, 2025
9594c80
Added passing installation error message as response
nasif-z Nov 13, 2025
4983a99
Add emulator installation functionality and related changes
Zayadul-huq-afnan Nov 16, 2025
a3a80ec
Changed nodejs, appium, and cft install, check functons
Zayadul-huq-afnan Nov 17, 2025
c4bbdaf
Added taking user password for required items
Zayadul-huq-afnan Nov 18, 2025
c0bf337
Remove early exit so that edge installation can fall back to deb package
Zayadul-huq-afnan Nov 19, 2025
2c3d391
Added new installer utility class containing common installation func…
nasif-z Nov 22, 2025
7a7325a
Merge remote-tracking branch 'origin/Req-42-setup-automation-v2' into…
nasif-z Nov 22, 2025
b7fdd8d
Exclude Windows from Oracle in route
nasif-z Nov 22, 2025
ce1dac3
Added the snowflake db fearture in node to run node actions in snowfl…
ToWhiD073 Nov 19, 2025
3a45c7b
Added the uv lock automatic changes
ToWhiD073 Nov 19, 2025
f7085fa
Disable TLS certificate verification when installing nodejs or appium
sazid Nov 17, 2025
69ea5e6
Update version file
sazid Nov 17, 2025
562f268
Disable SSL check after nodejs has successfully installed
sazid Nov 17, 2025
887c353
Update version number
sazid Nov 17, 2025
ccb6142
Update selenium to latest
sazid Nov 17, 2025
a8e74bf
Update version number
sazid Nov 17, 2025
1788da1
Restore selenium to last known working version
sazid Nov 18, 2025
25e8731
electron app temp chromedriver path and remote debugging port added
Muntasib-creator Nov 13, 2025
c2497fe
install and manage chromeDriver with webdriver_manager for electron a…
Nov 19, 2025
4cb1ec8
Environment variable added fro arch differentiate in webdriver_manager
Nov 19, 2025
f26c03e
Change route.py to accept password in MariaDB install function
nasif-z Nov 23, 2025
5fb4268
node.js, appium installation function corrected. the install button w…
Zayadul-huq-afnan Nov 23, 2025
22aeb12
Fixed linux package installer function getting stuck when blank passw…
nasif-z Nov 23, 2025
d363c21
Merge remote-tracking branch 'origin/dev' into req-42-database-androi…
nasif-z Nov 23, 2025
332d4e5
Fix missing closing bracket for `pyee`, removed duplicate `pydivert`.
nasif-z Nov 23, 2025
f970528
Remove database connector libraries from `uv.lock`
nasif-z Nov 23, 2025
faf7e1e
Added appropriate response message for adb install
Zayadul-huq-afnan Nov 24, 2025
fd94a2b
Merge remote-tracking branch 'origin/dev' into req-42-database-androi…
nasif-z Nov 24, 2025
adeae6d
Change from cx_Oracle to oracledb library.
nasif-z Nov 25, 2025
dfc695c
Modify automated installer to install oracledb instead of cx_Oracle.
nasif-z Nov 25, 2025
4a40b5b
Added system info functionality
Zayadul-huq-afnan Nov 27, 2025
e6323bf
feat: added linux installation functionality
mahbd Nov 29, 2025
7e3ccae
Updated Category name and Service name
mahbd Nov 30, 2025
7aa3d84
Added iOS and macOS installation codes
mahbd Dec 1, 2025
3039fb7
fix: category parameter was not being used
mahbd Dec 1, 2025
e590d53
fixed macos_status not working
mahbd Dec 1, 2025
29dc3ab
changed the installation approach of firefox in linux. Test case now …
Zayadul-huq-afnan Dec 3, 2025
e71d241
Merge pull request #627 from AutomationSolutionz/task-1464-cxoracle-t…
Muntasib-creator Dec 4, 2025
308a14b
Merge branch 'dev' of https://github.com/AutomationSolutionz/Zeuz_Pyt…
Muntasib-creator Dec 4, 2025
3865ce0
Changed installation approach for firefox in windows. Test case now r…
Zayadul-huq-afnan Dec 4, 2025
73b7df6
Added device name for avd installation instead of system image. Remov…
Zayadul-huq-afnan Dec 5, 2025
1108560
new datastructure includes `version` and `timestamp`
Muntasib-creator Dec 6, 2025
27b4f37
feat: Restrict AT-SPI and XWD installations to X11 sessions only.
mahbd Dec 7, 2025
d557ae3
feat: Add iOS Simulator and WebDriverAgent installation support
mahbd Dec 7, 2025
6fa90ac
adjustments for status check
Muntasib-creator Dec 7, 2025
161d95f
fix: Enhance iOS Simulator installation and status checking logic
mahbd Dec 7, 2025
ce3fb89
Merge pull request #630 from AutomationSolutionz/installer-v2
Muntasib-creator Dec 7, 2025
dc1f052
`group` attribute added in route
Muntasib-creator Dec 7, 2025
a67d1f7
group status check and install implemented
Muntasib-creator Dec 7, 2025
8dbea98
Webdriver should be checked inside simulator
mahbd Dec 8, 2025
52f2fc9
successful installation of simulator and webdriver
mahbd Dec 8, 2025
26c1d21
Merge branch 'dev' into linux-installer
mahbd Dec 8, 2025
eb08430
Merge pull request #632 from AutomationSolutionz/installer-v2
Zayadul-huq-afnan Dec 8, 2025
c2f7352
Emulator launch function added
Zayadul-huq-afnan Dec 8, 2025
cd7eac7
installables attribute implemented
Muntasib-creator Dec 8, 2025
b906ed9
start simulator before checking status webdriver
mahbd Dec 8, 2025
7235b05
Merge branch 'req-42-database-android-web-password' into linux-installer
mahbd Dec 9, 2025
54146be
added group for v2
mahbd Dec 9, 2025
feed679
removed password requirements
mahbd Dec 9, 2025
fb54cb4
added emulator installation support
mahbd Dec 10, 2025
b0717c1
copy built app before deleting
mahbd Dec 10, 2025
58e6032
Merge pull request #633 from AutomationSolutionz/linux-installer
Muntasib-creator Dec 10, 2025
7ce506e
route.py file is updated with check_text
Muntasib-creator Dec 10, 2025
709cabc
Group Check and Install states
Muntasib-creator Dec 10, 2025
83dd1d6
print emulator info only on debug
Muntasib-creator Dec 10, 2025
15e2b44
Fixed adding emulator category 2 times
Zayadul-huq-afnan Dec 10, 2025
14903d7
group status last_updated time fix
Muntasib-creator Dec 10, 2025
b150bd8
ios emulator list not loading issue fixed
mahbd Dec 10, 2025
ae47dbf
Fix simulator deletion handling in InstallHandler
mahbd Dec 10, 2025
cbfb5dd
added more logging when launching
mahbd Dec 10, 2025
606ad1d
Merge pull request #634 from AutomationSolutionz/fix-ios-delete-issue
Muntasib-creator Dec 10, 2025
6a2150e
Fix updating the progress in modal while installing emulator
Zayadul-huq-afnan Dec 10, 2025
ad2ad7c
send new service list after installtion from node
mahbd Dec 11, 2025
17a7df7
send more information to frontend when creating and launching
mahbd Dec 11, 2025
037a536
update android and ios services list separately
Muntasib-creator Dec 13, 2025
ee1f302
show progress for android device download
Muntasib-creator Dec 13, 2025
00605e4
os check while group install and list emulators in separate command
Muntasib-creator Dec 13, 2025
85cdd69
list emulators and simulators implemented in group status check
Muntasib-creator Dec 13, 2025
6451b64
check_simulator_list added to route
Muntasib-creator Dec 13, 2025
1252b03
removed install all from ios, mac, database
Muntasib-creator Dec 14, 2025
ef9ccae
Merge branch 'req-42-database-android-web-password' of https://github…
Muntasib-creator Dec 14, 2025
939a7ec
Send Android Emulator list and iOS Simulator list to server when serv…
Muntasib-creator Dec 14, 2025
117ec23
Filtered out already installed avds from appearing in the available a…
Zayadul-huq-afnan Dec 14, 2025
07babed
Remove JDK from the list of android dependencies
sazid Dec 14, 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
33 changes: 15 additions & 18 deletions Framework/Built_In_Automation/Database/BuiltInFunctions.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,32 +277,29 @@ def db_get_connection(session_name):
)
CommonUtil.ExecLog(sModuleInfo, "Connected to Snowflake.", 1)
elif "oracle" in db_type:
import cx_Oracle

# https://cx-oracle.readthedocs.io/en/latest/api_manual/module.html#cx_Oracle.makedsn
if db_sid != 'zeuz_failed':
dsn = cx_Oracle.makedsn(
host=db_host,
port=db_port,
sid=db_sid
)
elif db_service_name != 'zeuz_failed':
dsn = cx_Oracle.makedsn(
host=db_host,
port=db_port,
service_name=db_service_name
)
import oracledb

# Construct the DSN (Data Source Name) using the Easy Connect syntax
dsn = None
if db_service_name and db_service_name != 'zeuz_failed':
# Use Service Name for connection: host:port/service_name
dsn = f"{db_host}:{db_port}/{db_service_name}"
elif db_sid and db_sid != 'zeuz_failed':
# Use SID for connection: host:port:sid
dsn = f"{db_host}:{db_port}:{db_sid}"
else:
CommonUtil.ExecLog(sModuleInfo, "Either db_sid or db_service must be provide.", 3)
CommonUtil.ExecLog(sModuleInfo, "Either db_sid or db_service must be provided.", 3)
return "zeuz_failed"

CommonUtil.ExecLog(sModuleInfo, f"Attempting Oracle connection using DSN: {dsn}", 1)

# Connect to db
# https://cx-oracle.readthedocs.io/en/latest/api_manual/module.html#cx_Oracle.connect
db_con = cx_Oracle.connect(
db_con = oracledb.connect(
user=db_user_id,
password=db_password,
dsn=dsn,
)
CommonUtil.ExecLog(sModuleInfo, "Connected to Oracle using python-oracledb.", 1)
else:
import pyodbc

Expand Down
130 changes: 127 additions & 3 deletions Framework/install_handler/android/adb.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,131 @@
async def check_status():
print("[adb] Checking status...")
import subprocess
import asyncio
import platform
import os
from Framework.install_handler.utils import send_response


async def check_status() -> bool:
"""Check if ADB (Android Debug Bridge) is installed."""
print("[installer][android-adb] Checking status...")

# Dynamically refresh ANDROID_HOME and PATH from registry on Windows
system = platform.system()
if system == "Windows":
try:
import winreg
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Environment", 0, winreg.KEY_READ) as key:
try:
android_home_reg, _ = winreg.QueryValueEx(key, "ANDROID_HOME")
if android_home_reg:
# Expand environment variables before checking if path exists
android_home_expanded = os.path.expandvars(android_home_reg)
if os.path.exists(android_home_expanded):
os.environ['ANDROID_HOME'] = android_home_expanded
# Update PATH with platform-tools (where ADB is located)
platform_tools = os.path.join(android_home_expanded, "platform-tools")
current_path = os.environ.get('PATH', '')
if platform_tools not in current_path:
os.environ['PATH'] = f"{platform_tools};{current_path}"
print(f"[installer][android-adb] Refreshed ANDROID_HOME from registry: {android_home_expanded}")
except FileNotFoundError:
pass

# Also check ANDROID_SDK_ROOT if ANDROID_HOME not found
if 'ANDROID_HOME' not in os.environ or not os.path.exists(os.environ.get('ANDROID_HOME', '')):
try:
android_sdk_root_reg, _ = winreg.QueryValueEx(key, "ANDROID_SDK_ROOT")
if android_sdk_root_reg:
# Expand environment variables before checking if path exists
android_sdk_root_expanded = os.path.expandvars(android_sdk_root_reg)
if os.path.exists(android_sdk_root_expanded):
os.environ['ANDROID_SDK_ROOT'] = android_sdk_root_expanded
# Update PATH with platform-tools (where ADB is located)
platform_tools = os.path.join(android_sdk_root_expanded, "platform-tools")
current_path = os.environ.get('PATH', '')
if platform_tools not in current_path:
os.environ['PATH'] = f"{platform_tools};{current_path}"
print(f"[installer][android-adb] Refreshed ANDROID_SDK_ROOT from registry: {android_sdk_root_expanded}")
except FileNotFoundError:
pass
except Exception as e:
print(f"[installer][android-adb] Failed to refresh from registry: {e}")

try:
loop = asyncio.get_event_loop()
result = await loop.run_in_executor(
None,
lambda: subprocess.run(
["adb", "version"],
capture_output=True,
text=True,
check=False
)
)

# If command succeeds (returncode = 0), ADB is installed
if result.returncode == 0:
version_output = (result.stdout or result.stderr).strip()
print(f"[installer][android-adb] Already installed")
await send_response({
"action": "status",
"data": {
"category": "Android",
"name": "ADB",
"status": "installed",
"comment": f"ADB is installed (version: {version_output.split()[0] if version_output else 'unknown'})",
}
})
return True
else:
print("[installer][android-adb] Not installed")
await send_response({
"action": "status",
"data": {
"category": "Android",
"name": "ADB",
"status": "not installed",
"comment": "Install ADB to use it.",
}
})
return False
except Exception as e:
print(f"[installer][android-adb] Error checking status: {e}")
await send_response({
"action": "status",
"data": {
"category": "Android",
"name": "ADB",
"status": "not installed",
"comment": "Unable to check ADB status.",
}
})
return False




async def install():
print("[adb] Installing...")
"""Install ADB - checks if already installed, otherwise prompts to install Android SDK."""
print("[installer][android-adb] Installing...")

# Check if ADB is already installed
if await check_status():
print("[installer][android-adb] ADB is already installed")
return

# ADB is not installed, send response to install Android SDK
print("[installer][android-adb] ADB is not installed. Install Android SDK to get ADB.")
await send_response({
"action": "status",
"data": {
"category": "Android",
"name": "ADB",
"status": "not installed",
"comment": "Install the Android SDK, it will automatically install ADB.",
}
})




Loading
Loading