Release Notes version 3.0.0 - General Availability
✨ What's New
- Shared Reusable Components — reusable components can now be shared across projects, with dependency tracking, migration support, and confirmation-guarded moves between Project and Shared scope.
- Test Plan Scenario Groups — organize Test Plan scenarios into named, persistent groups with drag-and-drop, plus a new persistent sort order for scenarios and test cases across Test Plan, Project Reusables, and Shared Reusables.
- API Workbench Proxy & Environment Management — per-request proxy configuration, Postman-style curl paste, right-click-to-assertion generation, and full API Environment management.
- Postman & Bruno collection import into INGenious Reusables.
- Per-Step Hard/Soft Assertion Controls — mark individual test steps as hard or soft, with hard failures stopping the current iteration immediately.
- Mobile Object Repository per-platform properties — independent Android/iOS property sets per object, with automatic migration from legacy XML.
- CLI migration tooling —
ingenious project upgrade(interactive modernisation wizard) andingenious project validate(quality dashboard with coverage scoring). - JSPath locator and Live Playwright Recording — a new JSPath attribute in the Web Object Repository, plus a reworked live-recording hook mechanism.
- Back up projects before first open — loading a project automatically and irreversibly migrates Test Cases from CSV to YAML and adds the new
Scopefield to Test Data. - Ensure your local development environment is updated to Java 17
- Renaming of
Run.bat/commandfiles toingenious.bat/commandintroduces a breaking change; update existing scripts, pipelines, and execution commands accordingly. - For users building the app from the source code, build the ingenious-api module before building and running the IDE.
- Object Repository XMLs will be automatically migrated to YAML. For custom setups, validate converted configurations files accordingly.
🚀 FEATURES AND IMPROVEMENTS
General
- Added inline "
+" buttons for quick row/column addition across test steps, test data sheets, settings, and configurations. - Implemented alphabetical sorting of test scenarios and test cases in the Test Lab.
- Popups now close on Esc keypress.
- Added rename and delete support for Test Case Tags.
- Reorganised the Configurations menu with clearer naming.
- Implemented Validation Error Red-Marking across trees, propagating errors through reusable dependencies.
- Object Repository now auto-selects the correct tab based on project type (Mobile/SAP/Structured-Data).
- Refreshed Workbench branding: redesigned toolbar/menu/dock buttons, larger colored dock tiles, "
API Workbench" renamed to "Workbench." - Improved TM Settings Test Connection button readability when the connection succeeds.
- Added API Workbench "+ New Request" button that creates requests without overwriting the current one.
- Allowed reordering of data tabs.
- Implemented Test Plan Scenario Groups with persistent organization — named group folders, stacked-folder icon, drag-and-drop between groups, and an automatic "Ungrouped" bucket.
- Implemented persistent sort order for scenarios and test cases across Test Plan, Project Reusables, and Shared Reusables, surviving create/delete/rename/drag-and-drop and restarts.
- Added automatic migration of Test Cases from CSV to YAML, and of the new Test Data
Scopefield, on project load. - Updated the Dashboard tree model to expand at the Test Release level on load.
- Enhanced the bulk Delete confirmation dialog to support scrolling for large selections of test cases, objects, releases, and test sets.
- Updated the list and display order of test cases in Test Data and Test Plan for improved, consistent usability.
- Corrected the misspelling "Reusabe" to "Reusable" throughout the UI.
- Updadated startup scripts now set
-Djdk.internal.httpclient.disableHostnameVerification=true(ingenious.bat/ingenious.command), aligning TLS behavior with Postman/Bruno when SSL verification is disabled elsewhere - Updated the INGenious sample project to include browser and API testing examples
Reusables / Test Design
- Implemented Shared Reusable Components for cross-project reusables — a dedicated UI section, visual distinction between project-local and shared reusables, shared Object Repository references, confirmation-guarded moves between Project and Shared scope, automatic dependency tracking/validation, and shared test data references with environment-specific data.
- Added a scope selector to the Create Reusable dialog for direct creation into Project or Shared Reusable Components.
- Reference column now auto-populates with a
[Project]or[Shared]prefix when creating reusables. - Extended impact analysis to include Shared Reusable test cases alongside Test Plan and Project Reusable impacts.
- Standardized Reusable Components UI with FXPanelHeader, matching Test Plan and Object Repository styling.
- Renamed the Shared Reusable tree root node to "
Shared Reusable Components". - Added cross-environment datasheet renaming, with a confirmation dialog.
- Ensured Shared Reusables continue to correctly reference and inherit their associated Test Datasheet scope.
assertVariablecan now assert runtime and global variables, not just test data.
Web / Object Repository
- Added
setAssertionTimeoutaction for runtime timeout configuration. - Implemented auto-save for object properties across all Object Repositories.
- Enhanced Web Object Repository role selection with dynamic filtering based on user-entered text.
Browser / Playwright
- Introduced
JSPathas a new locator attribute in the Web Object Repository, integrated with the Engine'sAutomationObjectfor runtime execution and marked[Discouraged]in the UI. - Implemented Live Playwright Recording with improved hook mechanisms for capturing test steps during execution.
API / Workbench
- Introduced a Proxy Tab in API Workbench with per-request proxy configuration, carried forward when converting a request to a test case.
- Enabled pasting
curlcommands directly into the API Workbench URL bar (Postman-style), with a shell-aware parser for methods, headers, body, auth, and query params. - Introduced right-click-to-assertion generation on API responses, auto-building JSON and XPath path assertions.
- Added Postman & Bruno collection import into INGenious Reusables.
- Introduced full API Workbench Environment Management to create, switch, and use environments and environment variables.
- Refactored
APIHttpClient.getHttpClient()for proxy and certificate support. - Converted
API WorkbenchAuthorization into a proper addHeader step. - Strengthened
SSL/TLS certificatevalidation and enhanced credential handling in proxy configuration. - Implemented color-formatted response payload in the HTML report, with a separate Headers section and copy buttons.
- Bundled
API Workbenchimprovements: fixed duplicate "(Copy) (Copy)" naming, added nested folder creation/deletion, added Delete/Add Request actions within folders, improved moving requests between collections, and mirrored the Bruno/VS Code object-tree click flow. - Renamed the "
⇢ Test" button to "⇢ Automation".
Mobile
- Implemented Mobile Object Repository per-platform (Android/iOS) properties — two independent property lists per object, a platform toggle, runtime platform detection, and automatic migration from legacy XML.
- Added a new Manage Devices tab with categorised LambdaTest capabilities, and a cleaner sectioned capabilities view.
- Renamed "LambdaTest Capabilities" to "LambdaTest Grid Capabilities".
- Unified mobile scroll behavior across Android and iOS.
Framework / CLI
- Introduced Per-Step Hard/Soft Assertion Controls — mark individual test steps as hard or soft assertion via context menu, with hard failures stopping the current iteration immediately.
- Introduced
ingenious project upgrade(4-step interactive modernisation wizard) andingenious project validate(quality dashboard with per-test-case/per-reusable classification and coverage scoring). - Added CLI override coverage audit with full CLI usage documentation.
- Implemented CLI overrides for all previously-missing prefixes, with typed flags and config prefixes help.
- Added CLI dispatcher routing for object/testset/data to picocli.
- Created a single-source CLI reference document.
- Refined nested loop iteration logic in TestCaseRunner, TestStepRunner, and DataProcessor.
- Improved error handling in TestDataComponent.
- Ensured build and test stability on
JDK 26(documentedJaCoCo/JDK 26incompatibility). - Improved the Reusable Scenario creation process.
APIjar is now auto-copied toDist/release/Engine/libon build.- Applied Prettier formatting updates across the codebase.
Reporting - Implemented an in-page HTML report Console Viewer with a working filter under
file://. - Fixed HTML summary clickable rows (Tabulator v6 compatibility).
- Updated report storage to reference resources in
Results/mediafor reduced disk usage.
🛠️ BUG FIXES
Object Repository / General
- Corrected Object Repository same-name rename being blocked incorrectly; case-only renames now work.
- Fixed the Object Repository "
Add Row (+)" button, and restricted it to first-column hover. - Enhanced Object Repository and Test Data sheet name validation to prevent duplicate names regardless of letter casing.
- Resolved issues with multi-object and multi-page copy-paste/cut-paste in the Object Repository; suffixing now applies only on genuine name collisions.
- Fixed column add/delete behavior in datasheets related to frozen columns.
- Fixed a crash in Test Datasheet renaming and Global Datasheet addition, and resolved general Test Datasheet creation/rename operations.
- Fixed the INGenious Launcher "ghost" menu/submenu remaining open when switching to other applications or interacting/navigating outside it; it now auto-closes.
Reusable Components
- Resolved issues with Test Datasheet references in Reusable Components.
- Fixed the context menu "
New Group" option for Reusable Component test cases. - Corrected Detailed Report cross-iteration reusable expand behavior, including the cross-iteration reusable dropdown in the Detailed HTML report.
- Fixed Test Data
Scopebeing reset or mismatched on project reload when duplicate scenario/test-case names exist; conversions now updateScopeexplicitly. - Fixed incorrect reusable-component reference resolution when using Param Loop with reusable components/test data.
- Fixed incorrect test-datasheet resolution when executing test cases that reference reusable components.
- Fixed Test Data sheet name validation to correctly prevent duplicate sheet names.
- Fixed
SAPObject copy-paste so paste behavior mirrors standard test-case paste behavior. - Allowed reuse of deleted scenarios in Project Reusable Components via "Make As TestCase".
Reporting
- Fixed HTML report step details disappearing from reports when Azure DevOps reporting is enabled, caused by
AzureTestCaseHandlerincorrectly becoming the primary report data source. - Fixed shared HTML report assets (
JS/CSS/fonts) not refreshing after an engine upgrade.
Recorder / Playwright
- Corrected Refactor_Object suffix handling when importing Playwright-recorded scripts.
- Preserved the ;exact modifier during
XML-to-YAMLObject Repository conversion. - Resolved an assertURLmatches pattern compile error.
- Fixed the accessibility report failing to load when
testAccessibilityruns inside a reusable component. - Fixed Playwright recorder exact-match attributes so live recording and file import produce consistent Object Repository values.
- Fixed overly strict test-case-name validation; names now only need to be unique within the same scenario.
- Added Enter-key support to the Start Recording dialog.
- Fixed an unwanted empty trailing step when the recording browser is closed externally.
- Fixed page/tab switch actions not being captured in multi-tab recording scenarios.
- Fixed iframe element detection during live recording to correctly populate frame-related attributes.
- Fixed Record From Here inserting steps at the start of a test case instead of after the selected step.
- Fixed the Live Recorder overwriting test cases with duplicate names; it now appends a suffix instead.
- Fixed Hard Assertions waiting for a timeout instead of failing immediately.
- Fixed Debug Mode resume behavior for reusable test case breakpoints.
Mobile / LambdaTest
- Added null-safe handling in
setLambdaStatusfor LambdaTest integration. - Resolved Manage Devices accordion scroll behavior.
- Fixed
platformVersionvalidation for LambdaTest and non-LambdaTest mobile configurations to accept only valid numeric values. - Fixed the LambdaTest Remote URL field cursor jumping to the start of the text when typing past the @ symbol.
- Fixed enabling/disabling the LambdaTest option in Manage Devices leaving the Properties table showing empty entries.
- Fixed the mobile Object Repository losing edits when switching between OR tabs mid-edit.
API / Webservice
- Resolved restricted-header handling when pasting curl commands (dropped client-managed headers silently, added defensive fallback in
APIHttpClient). - Fixed API Request → Test Case conversion to correctly transfer username/password for Basic Auth.
- Fixed Bruno importer parsing of
URLscontaining//. - Fixed
JSONparsing failures for API responses containing a security prefix (e.g.)]}') by stripping the prefix before parsing. - Updated
SSLcontext settings for webservice actions (community contribution). - Improved bearer token masking for security (community contribution).
- Fixed the
SQL QueryEditor error triggered by Beautify or manual line breaks (community contribution).
General / Framework
- Resolved global shortcut keys (Playwright recorder enablement, Run Test, Debug command).
- Fixed
File → Restartto properly relaunch INGenious on macOS/Windows/Linux. - Implemented auto-masking for Remote
URLcredentials on entry/paste. - Fixed focus loss on newly created scenarios/test cases (they now remain selected).
- Fixed Test Manager publish report to flow through the Console report (
console.txt). - Resolved Test Case Tags not persisting to YAML across reloads.
- Added missing Web Objects to the sample Tutorial project.
- Corrected the Save button becoming stuck disabled after Alt+Tab despite unsaved changes.
- Added the missing Test Manager option under the TM Settings dropdown.
- Fixed the delete confirmation message for Impacted Assets to show correct notification/confirmation behavior.
- Corrected project validate test-set coverage scoring to score at test-case granularity.
- Restored Synthetic Data actions that had gone missing.
- Fixed a unit test for EnvTest Data cross-environment rename.
- Fixed debug-mode breakpoint behavior inside loops and reusable test cases.
- Fixed remaining CLI --help output inconsistencies across commands.
- Fixed CLI object-repository/test-set command filetypes and file paths, and added a new ORCommand for Object Repository management via CLI.
🔒 Security
- Upgraded
Jettyfrom9.4.57to12.0.38, migrating the IDE's embedded Dashboard server to the Jetty 12 EE8 servlet/WebSocket APIs while retaining thejavax.servletnamespace (fixes CVE-2025-5115, CVE-2024-6763, CVE-2026-6790). - Upgraded
Jackson(jackson-core/databind/annotations/dataformat-xml/dataformat-yaml) from2.15.2to2.18.9, fixing async-parser DoS advisories GHSA-72hv-8253-57qq and GHSA-r7wm-3cxj-wff9. - Upgraded the
Appiumclient from10.0.0to10.1.1, fixing CVE-2026-43910 (SSRF viadirectConnect). - Upgraded
AssertJfrom3.26.3to3.27.7, fixing CVE-2026-24400 (XXE inisXmlEqualTo). - Upgraded
BouncyCastle(bcprov/bcpkix/bcutil-jdk18on, pinned transitively via the IBM MQ client) from1.83to1.85, fixing six CVEs including three Critical-severity issues. - Restored Har Compare static asset routing after Jetty 12 dropped its
"/*"→ root context-path normalization. - Resolved Har Compare static resources 404ing due to Jetty 12's stricter resource-alias checks.
- Fixed Har Compare WebSocket handshake failures by explicitly registering
JettyWebSocketServletContainerInitializer. - Fixed the Dashboard server incorrectly attempting to rebind its port on repeated Har Compare opens, by checking actual Jetty server state instead of thread liveness.
- Hardened the Dashboard server's port availability check against false positives from lingering
TIME_WAITsockets. - Fixed Har Compare throwing a
NullPointerExceptionwhenconfig.jsonwas empty or corrupted.
🗑️ REMOVED
- Manage Browser → Emulators is deprecated; existing users should migrate to the Manage Devices tab.
💥 KNOWN ISSUES
- Objects created during live recording may not update correctly in associated test steps when renamed immediately after recording; Workaround: Don't rename immediately. Restart once after recording.