Published versions and upcoming versions of Agilitest

This changelog presents you with the list of latest developments, additions and bug fixes in Agilitest.

Upcoming version :

We are working !

We are currently working on further evolutions and added values, without any prospected publication date, come back soon for new updates.

Changelog :

Version :
3.1.4
Publication date:  
26/6/2026
  • Added :
    • Remote-browser web testing — Selenium Grid, BrowserStack and Sauce Labs
      • Agilitest now runs your web tests on remotely-hosted browsers. Declare your providers (Selenium Grid, BrowserStack, Sauce Labs) in a dedicated explorer, set the OS and version per browser, then launch the run on the provider of your choice from the command-lines window — with no project edits.

    • AI help for JavaScript conditions and property verification
      • The condition selector's AI button now generates pure JavaScript that evaluates the described rule. The new property-verification mode shows the property's live value on the page first, then suggests several validation regexes at different strictness levels.

    • Native Linux execution
      • agi-container now runs natively on Linux: the container stack runs through a root systemd service (containerd/nerdctl), CNI bridge networking is bundled, and installation only needs sudo once (everyday use stays sudo-less). Pull, run and suite execution all work end-to-end.

    • Built-in self-update: agi-container update
      • New 'agi-container update' command that re-runs the official installer to download and install the latest published version, stop the daemon, replace the binaries and restart the service, then prints the installed version. It cleanly handles replacing its own running executable.

    • Image cache management: auto-prune and prune command
      • ATS images are ~6 GB, so every re-pull of a moved tag left dangling layers that filled the disk ('no space left on device'). Now every successful pull auto-prunes dangling images, and the new 'agi-container prune [--all]' command allows manual cleanup, never touching pinned tags.

    • Parallelism control: container cap and CPU pinning
      • Parallel mode now caps the number of concurrent containers (--max-parallel, defaulting from cores and RAM); excess suites queue and start as slots free up. Each Linux container is also pinned to its own CPU group (--cpuset-cpus), preventing CPU spikes from bleeding across neighbours and causing intermittent timeouts.

    • CLI available to all users and version banner
      • Install now publishes the CLI to /usr/local/bin so non-root accounts (gitlab-runner, jenkins...) can run agi-container, and a validated sudoers rule allows starting the daemon. Every CI run prints a prominent version banner at the top and warns loudly when CLI and daemon versions are out of sync.

    • Host-network option for Linux containers (--net-host)
      • Under heavy parallelism, the bridge network's NAT could become a bottleneck (slow page loads, idle CPU). The new --net-host option (off by default) runs Linux containers directly on the host network, with no NAT.

    • Run web tests on remote browsers via a named provider
      • Launch web tests on Selenium Grid, BrowserStack or Sauce Labs by simply naming the provider (command line, environment variable, suite parameter or channel-start option); the OS and browser version come from the project configuration. If the provider doesn't offer the target browser, execution falls back to local with a clear warning.

    • All browsers routed through remote execution
      • Safari, Brave, Vivaldi and Opera can now run on a remote provider, alongside Chrome, Edge, Firefox and IE. A remote Safari session gets the correct capabilities (browserName=safari) instead of defaulting to Chrome.

    • Group management directly from the HTML report
      • The execution report now lets you assign or remove a test from a group, and edit a playlist's "Execute / Do-not-execute" zones (drag between zones, add, remove) — in both single-run and concatenated reports. Each action is persisted by the editor.

    • Richer, customizable project dashboard
      • The project dashboard offers a section include/exclude model (theme-grouped TOC) and new stats: contributor activity, locator robustness, browser/channel coverage, web-service usage and maintenance risk. Git contributions are linked to Agilitest users (pseudo + avatar) via email, name and declared Git aliases.

    • Dashboard gamification (levels, quests, badges, Hall of fame)
      • A new playful theme shows the project level (Bronze→Diamond), actionable quests, an outcome-weighted contributor "karma" leaderboard, badges (MVP, Fixer, Builder, Organizer…) and a "Hall of fame" with project records (fastest fix, most reliable test, etc.), each badge explained by a tooltip.

    • Custom dashboards designed visually
      • A custom dashboard can be designed in the editor, then generated and compiled on the fly by ats-core against the project's static data (scripts, actions, health, Git, activity), with a shared dark theme. A missing or broken custom dashboard never breaks a run.

    • Dashboard menu grouping custom dashboard generation and editing
      • A 'Dashboard' menu now groups two distinct actions: Generate and Edit, the latter opening the visual custom dashboard designer.

    • Run an execution on a remote browser provider
      • The command-lines popup now offers a browser-provider selector. The chosen provider is passed through to the run (via -Dats-browser-provider / browser-provider), so you can launch a test on a browser hosted on a Selenium Grid, BrowserStack or Sauce Labs without hand-editing the project.

    • Startup splash screen with real progress
      • At launch, Agilitest now shows a small centered splash window (logo, animation and status label) while the main window prepares itself. The status follows the real startup phases (UI init, licensing init, project loading) so you get immediate feedback on progress.

    • Restore open script tabs across sessions
      • Open ATS script tabs are remembered per project on close and restored at restart, in the same order and with the same active tab. Loading is lazy: only the current tab is loaded immediately, the others when first clicked, so project opening isn't slowed down.

    • Built-in graphical installer and uninstaller
      • A new graphical installer is embedded in Agilitest and drives install, update and reinstall without depending on PowerShell. It adds an in-place ATS refresh with a progress bar (without closing the editor), an editor-only reinstall, and a real uninstall (confirmation screen then a live operation log). The UI also works on GPU-less Windows Server / RDP.

    • Richer user identity: role, Git identities and local avatars
      • The identity popup gains a Role field (with suggestions) and a 'Git identities' field to declare the extra emails/names you commit under, so the dashboard can link all commits to the right account. The avatar can be picked from a preset grid now bundled locally (so it works offline), from an image, or from the webcam. User cards now show the role and the system user@machine.

    • Toast notifications when copying / pasting actions
      • Copying or pasting actions now shows a notification indicating the number of actions involved and the source or target script, giving you a clear visual confirmation of the operation.

    • $ats(stepscount) special value
      • The Insert Special Value menu now offers the executed-steps count via $ats(stepscount), alongside the test description, id and groups. The value is resolved at runtime.

    • Dashboard section customization
      • A popup lets you include or exclude sections of the generated dashboard, grouped by theme (accordions and toggle switches, with a per-theme count). The selection is saved in the project properties and honored at generation time. The catalog covers the new themes (correlations, gamification, hall of fame, team...) aligned with the generation engine.

    • Rancher Desktop container engine support
      • Rancher Desktop is now recognized as a container engine (for clients who can't install Docker Desktop) and treated like Docker thanks to its compatible CLI. Detection, menus and the containers/images views all integrate it, and dedup avoids duplicates on a machine that has both Docker and Rancher.

    • One-command install and automatic updates
      • Install ats-tracker with a single command (install.sh / 'irm install.ps1 | iex') that fetches and configures the latest version. The tracker then self-updates weekly (toggle in settings), with a manual Update button and a version panel.
  • Changed :
  • Evolution :
    • Detailed remote environment in the execution report
      • For a remote channel (Grid/cloud), the report now shows a full environment line: provider, browser and OS as icon + name + version (Selenium-Grid-UI style), plus a browser pill (OS icon, browser icon, version). The local orchestrating machine stays shown above.

    • Richer concatenated report (logo, parameters, groups, JUnit/TestNG)
      • The concatenated (parallel) report now restores the logo, watermark, playlist parameters, group filters and chips like the standard report, and merges junitreports/ and testng-results.xml so CI integrations (GitLab JUnit reports) also work in parallel mode.

    • Mobile capture: icon labels and innerText made reliable
      • Mobile element capture now retrieves icon-button and tab labels via contentDescription/hintText/value when text() is empty, and a container's innerText joins its children's text with a tab (the #elem convention) instead of returning empty text.

    • Modernized OAuth2 authentication and Jackson dependencies removed
      • API OAuth2 authentication was rewritten on the standard Java HTTP stack (dropping scribejava and the obsolete OctoPerf feature), and all JSON processing migrated from Jackson to Gson — fully removing Jackson from the distribution for a lighter, safer build. Driver responses are also parsed more leniently.

    • Tolerance for license-server connectivity drops
      • A flaky connection no longer flags a validated user as unlicensed too quickly. Reconnect backoff is lengthened and a 15-minute offline grace window is added: as long as the last validation is under 15 minutes old, the user stays enabled while retries continue. Explicit server denials (revoked, too many devices) still block immediately.

    • Browser providers management: clickable URL and robust naming
      • In the providers explorer, the endpoint URL becomes a clickable link opening the default browser. Creating/editing requires a unique, non-empty name restricted to safe characters (letters, digits, hyphen, underscore), with an inline message on duplicates.

    • Scrollable suite dropdown
      • The execution suite picker now scrolls when the list is long instead of overflowing the window, with a maximum height adapted to the application window.

    • Date-order picker in suite configuration

      • The free-text date-order field is replaced by a picker limited to the three real-world conventions (YMD default, DMY, MDY) and fully localized. The chosen order is displayed next to the suite wherever it appears, but only when it differs from the default ISO format.

    • Automatic script re-attribution on name change
      • When a user changes their name, all scripts they authored or modified are automatically re-attributed to the new name, with a progress popup during the operation (done in batches to keep the UI responsive).

    • JDK lookup and JDK 21 minimum
      • JDK detection now prefers a JDK installed under the local Agilitest tools folder, and the messages clearly state that the minimum required version is now JDK 21.

    • Lower CPU usage and memory-leak fixes
      • An audit fixed many never-removed event listeners, orphan processes and timers left running, and replaced several permanent loops with on-demand mechanisms. The result is lower CPU usage when the editor is idle and a more stable memory footprint over long sessions.

    • Automatic SAP driver update from the server
      • The SAP driver now updates itself like the web drivers: before each launch it compares its local version against the latest version published on the server and automatically downloads the newer one when needed. No more manual driver updates.

    • Works behind a TLS reverse proxy and accepts large imports
      • The dashboard now auto-derives ws/wss from the page URL so it works directly or behind an nginx TLS proxy. The request body limit was raised to 64 MB so full database exports import successfully.
  • Fixed :
    • Reports and test files always accessible after a Linux run
      • After a Linux run, reports and files written into the project are handed back to the host user (chown) with sane permissions, and the project directory is made writable to the container during the run. No more root-owned reports you can't delete and no more 'Operation not permitted' errors.

    • No more orphaned containers when a CI job is cancelled
      • When a CI job was cancelled, the containers it launched kept running under the daemon (orphans) and kept the run count above zero, which blocked updates. The CLI now names and stops its containers on SIGTERM/SIGINT, even when reparented, and restores ownership of target/.

    • Install/update no longer kill an in-progress run
      • install/update/uninstall now refuse to run while the daemon is serving runs (the restart would abort them), with a --force override; the daemon exposes the active run count in /health. Orphaned runs are also reaped so that count can't leak and block installation.

    • Automatic recovery from a zombie containerd
      • After an unclean daemon restart, containerd could stay alive but lose its socket, making every nerdctl call fail (pull stuck at 0% forever). agi-container now detects this, kills the zombie, clears the stale socket and starts a fresh containerd.

    • WSL correctly detected under the Agilitest editor
      • Launched by the editor (a 32-bit AIR app) with a sanitized PATH, the daemon couldn't find wsl.exe and wrongly reported 'WSL is not installed'. wsl.exe is now resolved by absolute path (System32, with a Sysnative fallback for the 32-bit case), covering every call at once.

    • Reliable suite counts and logs in parallel mode
      • Per-suite counts (passed/failed/filtered) are now read from ats-results.json instead of scraped from logs (which showed 0/0/0 in silent mode), and reports from multiple sub-suites per container no longer collide at merge time. Each suite's logs are also streamed to disk and kept as artifacts to diagnose failures.

    • Opera: windows and tabs made reliable
      • Several fixes make Opera multi-window/tab tests deterministic: new windows opened via window.open (avoids a multi-minute operadriver hang), Opera internal pages filtered out, stable tab order, guaranteed landing on a real content tab after close, and cleanup of only the channel's own process tree on close.

    • Multi-channel Firefox without profile leak or collision
      • Two Firefox channels in the same test can now coexist on every OS: the first channel reuses the configured profile, further channels get a unique profile, and each geckodriver is stopped when its channel closes to avoid process pile-up in long sequential runs.

    • Safari: fast and reliable channel startup
      • The Safari channel re-navigated to the start page on every wait-loop iteration, preventing the page from settling and causing a "timeout when loading start page" failure after ~28s. Navigation is no longer restarted during the wait: Safari now starts in ~5s.

    • Accurate capture in scaled or padded iframes
      • The capture/selection rectangle was offset and mis-sized for elements inside nested iframes with a CSS transform scale or padding (e.g. GraphTalk/DXC). Capture, element lookup and position refresh now account for each iframe's render scale and content origin, to sub-pixel accuracy.

    • Correct entered text in reports from the Linux driver
      • The .atsv file is a concatenation of independent AMF3 streams; the string and class-descriptor reference tables were not reset between actions, so a property name (e.g. "timeLine") leaked into the report's "Entered text" column. The tables are now reset before each action

    • Simplified tracker connection (TLS, wss://, URL honored)
      • The CLI runner now accepts the tracker's TLS certificate without configuration (on-prem trackers behind an internal CA or proxy), supports wss:// trackers, and uses the supplied URL as-is (scheme and port honored) instead of forcing http:// and port 3000.

    • Report robust to duplicate suites and inconsistent results
      • The report no longer crashes when an output folder contains same-named suites (most recent wins) and reconciles cases where TestNG reports a failure without a failed ATS action, removing the "Inconsistency in execution results" banner in the editor. Suite parameters now reflect command-line overrides (-A:).

    • Software WebGL enabled in GPU-less containers
      • In Docker/headless and under Xvfb, Chrome refused to create a WebGL context with no GPU, crashing WebGL libraries (MapLibre, Three.js) and leaving the page blank. The software SwiftShader fallback is now enabled on every launch branch, at no cost for non-WebGL tests.

    • Harmless driver noise no longer shown as an error
      • Harmless stderr lines (Firefox sandbox "CanCreateUserNamespace … EPERM" in containers, malformed stack frames emitted by Chrome over BiDi) are no longer flagged as driver errors: they stay visible in traces without alarming, and console-log capture is no longer broken by a negative column number.

    • Clear error when starting an empty channel
      • An undefined ${WebBrowser} parameter or an empty channel-start value produced a cryptic error ("no window found … after N ms") surfacing late in the system driver. Startup now fails fast with a message pointing at the real cause.

    • Robust API channel startup and correct SAP messages
      • An API channel no longer crashes with a NullPointerException when the WebSocket log stream can't be created (e.g. unwritable folder in CI), thanks to a no-op fallback stream. Also, the "SAP not installed" message now surfaces cleanly instead of an NPE caused by a field-casing mismatch in the Windows driver.

    • Close the running capture when opening a new channel
      • Opening a new channel did not close the active capture on the current channel (unlike channel switching): during web capture, opening an API channel left the web capture overlay open. The running capture is now closed before launching any new channel.

    • Containers view: per-container engine and more robust viewer
      • The containers/images view no longer showed running containers correctly after the dedup rework: the engine is now shown per container (not per image), dedup keeps the real engine, and opening a viewer no longer closes other containers' tabs nor crashes when the viewer executable is missing (it falls back to the browser viewer).

    • Remove a script from its group and missing files
      • A script can again be removed from a group via its row's trash button, with the list, count and filters refreshed. Also, a script whose .ats file was deleted during the session now correctly shows the missing-file icon.

    • Group and execution links in the report
      • ats:// links to groups, executions and scripts from the report were misparsed and raised a 'project not found' error. Link parsing is fixed, and new group add/remove links are handled and open the corresponding group panel.

    • No more stray console window on image build
      • Cleaning up dangling Docker images popped a console window after every image build. It now runs in the background with no visible window. Additionally, the commands suggested after an image build now correctly use the real engine CLI (docker/podman).

    • Two simultaneous Firefox channels now work on Linux
      • Running two Firefox channels in a single test failed with "Session is already started". Each Firefox channel now gets its own geckodriver with a unique marionette port, and the geckodriver is released when the channel closes — with no process leak on long cross-browser scenarios.

    • Retention no longer wipes imported data
      • Imported records stored their date as text, so the retention sweep treated every imported row as old and deleted it on the next pass. Dates are now cast to a real datetime on import.

    • No more random recording corruption in multi-channel sessions
      • Recording on several channels at once could randomly corrupt the capture stream and crash recording ("Element node expected, EndElement found"). Recorder operations are now serialized, eliminating these failures.

    • Two simultaneous Firefox channels now work
      • A second Firefox channel failed with "Session is already started" and could even close the already-open first Firefox. Each Firefox channel now gets its own geckodriver, and closing a channel immediately releases its driver.

    • Reliable Firefox binary detection on fast and virtual machines
      • On fast or virtual runners, Firefox detection could return a wrong path (ntdll.dll), causing "binary is not a Firefox executable". The real executable path is now read via WMI, making it correct immediately and disambiguating multiple Firefox installs.

    • Mobile recording: fast and reliable screenshots
      • The mobile recorder could stall up to 30 s per screenshot, drop the received images and produce reports with empty actions. Responses are now read according to Content-Length: recording a 7-action mobile scenario drops from 226 s to 24 s, with real screenshots in the report.

    • More robust SAP startup
      • Every SAP channel start triggered a useless download that failed, and an immediate SAP driver exit surfaced an opaque, unreadable error. SAP startup is now hardened and real failure causes are reported correctly.
Version :
3.1.3
Publication date:  
8/6/2026
  • Added :
    • Project cleanup tool from the editor
      • New CleanProjectTask exposed in the editor-listener, callable from the IDE to clean the project workspace (build artifacts, temporary captures, abandoned recording state) without touching versioned files

    • Modern dropdown skin set in agilitest-components
      • The agilitest-components library ships IconDropDownList + ModernDropDownItemRenderer skins, reused across the action editors and explorer panels for a consistent look-and-feel
  • Changed :
    • ATSV report: screenshot uses the last captured frame
      • The per-action screenshot in the HTML report now uses the last ATSV frame captured for that action, which captures the result of a keyboard or click (the dropdown actually opened, the text actually entered) rather than the state right before the input

    • ATSV report: post-keyboard / post-click frame
      • A new frame is captured right after a keyboard or click action so the report always shows the resulting page state. Entered text is also recorded before the post-keyboard frame, so the screenshot caption matches what is actually visible

    • Keyboard: decimal point in number inputs
      • Typing a decimal value (12.5 or 12,5) into a type=number input now works regardless of the user's locale — previously a French keyboard could send the comma to an input expecting the dot (or vice versa), leaving the input rejected as invalid

    • REPL: resolve $pass, $prj and $env variables
      • REPL sessions now resolve $pass-*, $prj-* and $env-* variables, matching the resolution done at script execution. Useful for interactive exploration of scripts that depend on project parameters

    • REPL goto-url: file:// URL for local assets
      • getAssetsFilePath now returns a proper file:// URL when the asset is a local file, so a REPL goto-url step on a local HTML file actually navigates to it instead of trying to interpret the bare path

    • Console capture tolerates malformed BiDi frames
      • Console capture used to throw when Selenium's BiDi log model received a malformed stack frame (e.g. a Chrome extension injecting log lines with non-standard fields). Capture now bypasses the strict model and tolerates the malformed entry — the log line is recorded with the missing fields left empty instead of being dropped or crashing the capture

    • In-process eval[java] compile/link
      • eval[java] actions now compile and link properly when ats-core runs in-process (e.g. inside the editor's listener), where the classpath is provided by the host JVM rather than via the ats-core launcher

    • Suite parameters reflect -A: command-line overrides
      • The execution report's suite parameters block now reflects values passed via the -A:key=value command-line override, matching what the run actually used instead of the default values declared in the suite XML

    • Project.getAtsScripts sequential stream
      • Project.getAtsScripts() now uses a sequential stream instead of parallelStream, fixing a sporadic data-loss issue where two threads could race on the same script-id slot

    • Overview report: faster JSON generation
      • Overview report JSON generation could be very slow on large campaigns (hundreds of suites). Generation is now significantly faster, with per-report timings logged so a slow generation can be diagnosed

    • Ragged CSV data files
      • Named-header CSV data files now tolerate ragged rows (rows with fewer cells than the header), filling the missing cells with empty strings instead of failing the load

    • AI provider resolved from project only
      • AI provider configuration is now resolved exclusively from the active project, eliminating the case where a workspace-level provider could shadow the project-level selection

    • Installer hardening + update window kept open on error
      • Several users reported install-agilitest.ps1 closing silently before finishing on slow connections or with strict execution policies. The script is now hardened with: a top-level trap handler that keeps the window open when an error is raised; synchronous Stop-NamedProcesses (agilitest-agent, electrondriver, ats-automated-testing) with WaitForExit before replacing binaries; an admin-rights check with early exit when installing to Program Files without elevation; a 3-attempts download retry loop with exponential backoff; TLS 1.3 added to the supported protocol list with fallback; Get-ExeVersion wrapped in Start-Process + timeout; Start Menu shortcut creation wrapped in try/catch; per-component failure tracking that surfaces a non-zero exit code at the end of the script. The companion update-agilitest.bat now also pauses on error so the user can read the diagnostic before the window closes
    • Execution panel: variables sorted A→Z, case-insensitive
      • Variables in the Execution panel are now sorted alphabetically (A→Z, case-insensitive) for faster lookup

    • Conditioned property-get / AI: return variable preserved
      • When a property-get or AI action has an execution condition that evaluates to false, the action's return variable is no longer cleared. Previously, conditioning an action that filled a variable would empty the variable as soon as the condition failed, breaking downstream actions that relied on its previous value

    • Main documentation URL
      • Documentation link in the editor's Help menu fixed (pointed to an old domain)
  • Evolution :
    • Pedagogical mode in the AI agent — keep the human in the loop
      • New 'Pedagogical mode' toggle in the agent's settings. Agilitest's stance on AI is that it should augment the test engineer, not replace them — the human stays in the loop, decides, and learns. When this mode is enabled, every answer the AI produces is accompanied by a short, plain-language explanation of what each part of the result does and why: for a regex, what each character class matches and why that quantifier was chosen; for a date format, what each token means; for a JavaScript condition, what the expression evaluates to and the alternatives that were considered. The goal is explicit: instruct and train the engineers who use Agilitest so that each interaction with the agent leaves them slightly more autonomous on regexes, date/time formats and JS expressions, instead of blindly copy-pasting an opaque answer. Off by default so the regular output stays terse for power users; engineers wanting to grow their skills (or onboarding teammates) can switch it on at any time. The preference is persisted alongside the existing 'Show at startup' setting

    • AI agent: upfront sanity check on date / hour inputs
      • When asked to suggest a date or hour format and the source value clearly is not a date/time (random text, identifier, etc.), the agent now warns upfront in a yellow banner before producing any format suggestion. Variable references (e.g. $prj-MY_VAR) are detected and pass through unchanged

    • AI agent: enterprise-friendly Copilot / Cursor defaults
      • GitHub Copilot setups can now leave the Base URL blank — the agent falls back to https://api.githubcopilot.com (and https://api.cursor.sh/v1 for Cursor) instead of erroring out. The API key is also marked as optional in the agent UI for these two providers: corporate gateways that handle auth at the network or TLS layer (mTLS, IP allowlist, SSO pass-through) can leave the key empty

    • AI agent: Vision reuses the chat provider
      • The separate Vision provider configuration was removed. Modern LLMs (GPT-4o / 4.1, Claude Sonnet / Opus, Gemini 2.x...) all accept image inputs natively, so screenshot description and vision-based requests now reuse the LLM provider/model already selected for chat. Old config files still carrying a 'vision' key are silently ignored

    • Electron application as a first-class channel type
      • Electron desktop apps are now testable just like Chrome or Firefox, via the new electron://<path-to-exe> channel URL. The whole capture pipeline was adapted: the visual recorder treats Electron as a headless target (the capture comes from the BrowserWindow content area, not the OS desktop), the overlay rectangle aligns with the application client area (title bar + dev-tools dock accounted for), the initial window resize works the moment the channel starts, the window is reliably brought to the front, and the application icon shown by Agilitest matches the bundled executable

    • Test-by-test navigation in execution reports
      • Execution reports gain prev/next buttons that jump from test to test without going back to the suite index. Combined with the existing status / group filters, navigating a large campaign is now far quicker

    • RGAA 4.1 coverage matrix
      • The doc folder now ships an RGAA 4.1 coverage matrix that cross-references each criterion with the corresponding Check-RGAA check, and the in-code check tables are aligned with the official wording

    • Per-input AI sparkle on AI-capable fields
      • Action fields that can be improved by the Agilitest AI agent (regex, date format, hour format, the JS expression in <lang>_eval transformers, the JavaScript condition of the execute-condition selector...) now show an animated violet sparkle in place of the static cog icon. Clicking the sparkle sends the field's current value, transformer kind and surrounding script context to the agent and opens the agent panel pre-filled with a relevant prompt. The sparkle only appears when AI is enabled in the Agilitest license — for offline / no-AI installs, the cog icon is preserved
    • Faster project load — headers-only by default
      • Project load now uses a headers-only lazy-parse path by default (-Dload.headersOnly=true). When opening a project only the script header info (description, parameters, return variable signatures) is parsed up front; each script body is loaded on demand when actually opened. On large projects (hundreds of scripts) cold-load time drops from several seconds to a fraction of a second. The open-a-single-script path was also reworked to avoid the double LoadScriptProcess that used to happen when a body was lazy-loaded. The full pipeline trace is unified with separate Java-load and AMF-deserialization timings, plus a 'java CACHED' marker when the editor-listener served from cache

    • Command lines popup: env-var forwarding + Linux/Windows picker
      • Polish pass on the agi-container tab of the command lines popup: in single-test mode the parallel toggle and 3-choice OS dropdown are hidden, replaced by a simple Linux/Windows picker that emits --os linux|win. AI provider env-var placeholders (${VAR} in apiKey/apiUrl) are forwarded into docker/podman/agi-container as -e VAR=%VAR% (cmd) or -e VAR=$env:VAR (PowerShell), so a provider key never has to be written into the project file
    • AtsLauncher honors ATS_HOME on Linux containers
      • AtsLauncher now honors the ATS_HOME environment variable on Linux containers, so libs and drivers pre-cached at /home/ats-user/ats/cache/<version> are picked up instead of /root/ats/cache — eliminating the useless re-download that used to happen on every container start in CI
  • Fixed :
Version :
3.0.8
Publication date:  
1/6/2026
  • Added :
    • Dashboard with tracker data
      • When generating the dashboard, select a tracker declared in Agilitest that is online and connected to enrich the dashboard with execution history recorded by the tracker

    • ATS Tracker management
      • Manage test execution trackers directly from Agilitest Settings. See https://actiontestscript.org/tools/ats-tracker

    • Image recognition algorithms
      • 3 algorithms available: ATS (pixel diff), ATS-NCC (Normalized Cross-Correlation) and ATS-MS (Multi-Scale NCC) for different DPI/zoom levels

    • OAuth2 support
      • Built-in OAuth2 authentication protocol for API testing and secured web applications

    • JS file path in Scripting action
      • Add file path reference for JavaScript scripting actions

    • JS file drag and drop
      • Drag and drop JavaScript files directly onto scripting actions to set the file path

    • Standalone installer script
      • install-agilitest.ps1 can install or reinstall Agilitest. Located at the root of the install directory or download and run with PowerShell: irm https://agilitest.app/installer.php | iex
  • Changed :
  • Evolution :
    • New sidebar and menus
      • Agilitest editor modernization with a new sidebar. Customize the location of menus using the configuration button

    • New execution console
      • The new console is resizable, features dark and light themes, allows log filtering and keyword search

    • Command line execution redesign
      • Redesigned popup with additional parameters: ATSV report, log velocity, tracker settings, and more

    • REPL keyboard on root
      • Keyboard actions can now be sent without specifying an element selector in the REPL (uses root element)

    • Improved AI directives
      • AI directives saved in an ATS project are improved at Agilitest startup

    • Emojis in reports
      • Support for emoji characters in functional steps (comment-step) and report summaries for better readability

    • Validate ATS scripts
      • Validate and convert old ATS action formats to the current syntax. Compare scripts content, increment counter, ignore timestamp/author fields

    • Project users management
      • Edit users, show at bottom of the editor, updated layout and buttons

    • HTML editor for comments
      • Clean redundant font tags, fix empty U and I tags in plain text mode

    • HelpContent and AboutPopup redesign
      • Changelog and licenses moved to AboutPopup, responsive layout

    • ATSV HTML Player redesign
      • Modernized home screen with integrated test info, 3 playback speeds (0.5x, 1x, 2x), restart from beginning at end of playback, and improved timeline UX

  • Fixed :
    • ShadowDOM in iFrames
      • Fixed capture and interaction with Shadow DOM elements nested inside iframes

    • Selection shift in iFrames
      • Fixed element position offset when using the capture tool on elements inside iframes

    • Screenshot selection rectangles
      • Fixed selection rectangles being misaligned or missing during screenshot capture

    • Select element in report
      • Fixed visual highlight rectangle not displaying correctly for select (dropdown) elements in the HTML report

    • Keyboard F keys and Enter
      • Fixed F1-F12 and Enter key not being sent correctly during keyboard actions

    • isEmpty/isNotEmpty with spaces
      • Fixed isEmpty and isNotEmpty operators incorrectly handling values containing only whitespace characters

    • Frozen variables
      • Fixed frozen variable values being lost after script reload

    • Numeric variables
      • Fixed incorrect default value handling for numeric type variables

    • Geckodriver quit on Firefox failure
      • Fixed geckodriver process not terminating properly when a test fails on Firefox browser

    • Capture elements map performance
      • Optimized element map building: removed unnecessary parallel/sort operations, sequential recalculation, and direct element flattening

    • Decimal numeric variable default
      • Fixed decimal default value not being applied correctly when creating numeric variables

    • User ID picture click
      • Fixed click event not working on user profile picture in the editor

    • Tracker ID update
      • Fixed tracker identifier not being updated correctly when modifying tracker configuration

    • Mouse scroll
      • Fixed mouse scroll behavior in the editor panels and script view

    • Opera swipe action
      • Fixed swipe action on Opera browser producing incorrect offsets due to Opera's getCartesianOffset shift

    • ATSV HTML Player animations
      • Fixed focus label and mouse arrow staying visible between consecutive actions in the animated report
Version :
3.1.2
Publication date:  
23/5/2026
  • Added :
    • Duplicate an execution suite (right-click → Duplicate)
      • In the editor's Execution window, right-clicking an execution suite (the XML files in src/exec used by TestNG) now offers a "Duplicate" option that creates a plain copy of the file: the new suite is an independent duplicate of the original (same scripts, same variables, same order) and can be freely modified, with no link back to the source. Handy for starting from an existing campaign and taking it in a different direction

    • Shadow clone suite (right-click → Shadow clone)
      • Still through the context menu on a suite in the Execution window, a second "Shadow clone" option creates a shadow suite that permanently mirrors the test list of its reference suite — any change made to the script list in the source suite is automatically reflected in the shadow. The shadow does, however, own its own suite variables, which makes it possible to replay the exact same campaign in a different context (acceptance environment, alternate data set, etc.) without maintaining two parallel lists. Note: you cannot shadow a shadow — that would make no sense, the chain is limited to one level
  • Changed :
  • Evolution :
    • About popup: customer code entry for demo users
      • Users discovering Agilitest through an evaluation license can now enter the customer code provided by their sales contact directly from the About window. No more editing a configuration file: input happens in the UI, the code is validated live and the demo license is activated immediately

    • License connection: unified terminology, no more "alternate" or "degraded" jargon
      • When the workstation connects to the Agilitest license server through the HTTPS fallback path (instead of the direct secure WebSocket channel, sometimes blocked by enterprise proxies), the editor used to display "degraded" or "alternate" labels that could worry the IT department. The status is now simply shown as "connected" in green as soon as the license responds, regardless of the channel used. No functional change — just a clearer, more reassuring UI

    • Ollama icons in the components library
      • The official Ollama icon set has been added to the shared component library used by the editor. These icons now appear next to Ollama / AgiLlama AI providers in the project properties, making it easy to identify the connection type at a glance

    • ATS Launcher: integrated test suite execution
      • The internal tool that runs test suites (AtsLauncher) has been reworked to perform Java compilation, TestNG launch and result packaging to .tar.gz without going through external commands. Faster startup, fewer dependencies, clearer logs on failure. No visible change for scripts: it is simply faster, more reliable, and crucially no longer triggers security alerts in some vulnerability scanning environments

    • AgiLlama: dedicated AI provider type
      • AgiLlama becomes a first-class AI provider type in the project properties, distinct from the generic Ollama provider. Under the hood it is OpenAI-compatible, but the editor is aware of the AgiLlama server specifics (model list, request format). Model selection draws from an "ats-auto" catalogue curated by Agilitest, and the rest of the models installed on the server are fetched live

    • AI provider: capability badges, environment variables and link to web admin
      • The AI provider edit screen now shows colored badges summarizing what each provider can do: text, vision (image analysis), tools (tool use), structured JSON output, and so on. The API key can be referenced through an environment variable (e.g. ${MY_KEY}) to avoid exposing secrets in the versioned project file. A direct link to the provider's web administration interface (Anthropic, OpenAI, etc.) makes quota and model management easier

    • SAP recording: channel state managed explicitly
      • The recording state of the SAP channel is now handled explicitly and idempotently: re-enabling an already-active recording has no effect (instead of producing duplicates), and the state is reset cleanly when the channel is closed. From the user's perspective: no more duplicated recorded actions if you click the Record button twice, and reliable start/stop

    • macOS update: "Update Now" button functional again + installer fixes
      • On macOS, the "Update Now" button in the update notification popup did not trigger the installation. Several installer bugs also prevented the automatic update depending on the install path (~/Applications vs /Applications). Everything is now working: the update kicks in with a single click, just like on Windows

    • Check Security and Check RGAA actions: stop/continue control visible in the editor
      • The security and accessibility (RGAA) check actions now clearly display in their editor the behavior to apply on failure: continue the script (the result is recorded in the report, the test continues) or stop the execution. The overall UI of these actions has been refreshed to make configuration easier

    • RGAA criteria viewer and selector
      • New component to browse and select RGAA criteria (Référentiel Général d'Amélioration de l'Accessibilité — the French general accessibility improvement framework) to apply in a Check RGAA action. Criteria are presented by theme (visual, semantic, interaction, media) with their official label and description. No more need to memorize the framework codes

    • Stepper UI component: fixes
      • Fixed the behavior of the stepper component (the small +/- fields for numeric input, found for example in the "try" and "delay" parameters of an action): the ENTER key now validates input, limit values are handled properly, and placeholder text rendering works. The fix benefits every action editor that uses this component

    • Containers and mobile explorer: UI and features
      • The container explorer (the window that walks the structure of a web page, a desktop application or a mobile app to pick an element) gets several improvements: more effective filters, attribute preview on hover, easier selection. On mobile, the iOS and Android explorers now display elements in a more readable tree with their native properties
  • Fixed :
    • Recording input in a SAP combobox
      • When recording input into a SAP combobox, the captured action could be incorrect: empty-value selection preamble, duplicate, or undetected re-click. Capture is now clean from the first try, with a single "select" event that exactly reflects the value the user chose

    • Actions recorded on SAP screens
      • Several cases where actions were not recorded at all, or recorded with incorrect parameters, when using the recorder on certain SAP screens — particularly after popups appeared or after a window was abruptly closed. The recorder is now far more reliable in these scenarios, with no phantom keystrokes or duplicated Enter events

    • Try / delay parameter behavior
      • The "try" (number of attempts before failure) and "delay" (wait time between attempts) parameters of an action did not always behave as expected, particularly on the first execution right after a channel was opened. The behavior now matches the documentation: the full try × delay budget is respected

    • ATS code generated for RGAA actions
      • The ATS code generated for RGAA check actions contained a few serialization errors (conformance level and threshold sometimes incorrect, especially after duplicating an action). Generation is now clean and the produced scripts can be replayed unchanged
Version :
3.1.1
Publication date:  
26/4/2026
  • Added :
    • macOS Update
      • A macOS updater ported to bash (equivalent to the Windows install-agilitest.ps1), with support for .dmg archives for installing and updating the Agilitest editor. Automatic management of ~/Applications and /Applications paths, detection of the macOS system proxy, and clean termination of processes before replacing binaries.

    • CMD installation command
      • A new pure batch installation command (install-agilitest.bat) is available to complement the PowerShell script, for users whose company policy prohibits the execution of PowerShell scripts. It relies on curl.exe and tar.exe (built-in Windows 10+), detects the IE/Edge system proxy in the registry, and uses Windows' built-in NTLM/Negotiate authentication. It is displayed alongside the PowerShell command in the mini installation popup accessible from the Command button in the About window.

    • AI provider language selection
      • A new language field (French/English) is available when creating/editing an AI provider in the project properties. The language is passed to the provider with each call so that AI diagnoses, healing suggestions, and reports are generated in the chosen language.

    • Updated list of AI models (April 2026)
      • Refreshed list of models available by provider: Anthropic (claude-opus-4-7, claude-opus-4-6), OpenAI (gpt-5.5, gpt-5.5-pro, gpt-5.4, gpt-5.3-codex, gpt-5 and mini/nano versions), Google Gemini (gemini-pro-latest, gemini-flash-latest, gemini-3.1-pro-preview, gemini-3-pro-preview, gemini-2.5-pro/flash), DeepSeek (deepseek-v4, deepseek-v4-flash, deepseek-v3.2), Mistral (devstral-2-latest in addition to large/medium/small/codestral)

    • Mobile button in the wandering panel
      • A mobile button can be added to the roving buttons bar, always positioned next to the Container button. It can be configured from the sidebar button management window.

    • Logically sized iOS mobile capture
      • The iOS capture viewer now displays the live preview at the device's logical size (iOS points) instead of the raw pixel size, making the preview more faithful to what the end user sees, with structured JSON parsing from the new iOS driver.
  • Changed :
  • Evolution :
    • AI-powered self-healing of actions
      • New project-level healing option: When an ATS action fails due to a broken selector or a missing element, the AI ​​provider configured for the project is called during execution to propose a correction to the selector or interaction strategy, and the action is automatically replayed with the new strategy. The healing trace appears in the execution report. This can be enabled per project (ats.aiproviders @healing) only when at least one provider is configured; it is automatically disabled if all providers are removed.

    • Verification of CVEs of project dependencies
      • A new Check CVEs option, activatable per suite (variable ats.cve.check), scans the ats-libs/drivers/JDK dependencies used by the execution and cross-checks their versions against the public vulnerability database (NVD/CVE). Detected vulnerabilities are reported in the execution HTML report with their CVSS and a direct link to the CVE page. This ensures that an automation campaign runs on an up-to-date stack.

    • Redesign of the About window
      • The About popup has been redesigned with a card-based layout (System, License, Capabilities) and a new standalone mode: when the editor is launched without a license server connection, the popup displays the metadata of the agilitest.lic file (ID, Issued by, Issued on, Licensed user, Maximum number of licenses), the activated products (Agilitest, AgiliDoc, AgiliPerf, AgiliSecOps, with a strikethrough for those not activated), and the AI/SAP status. A license server connection status indicator has been added to the top left of the logo (green = WSS, orange = HTTPS fallback, gray = standalone/unreachable).

    • WSS connection to the license server
      • New secure WebSocket (WSS) channel for real-time communication with the Agilitest license server, replacing the old TCP channel. Integrated system proxy detection, automatic failover to HTTPS fallback when the WSS channel is blocked, silent reconnection in case of brief network outages, and continued support for legacy systems for customers who have not yet migrated.
  • Fixed :
    • Infinite loop using the old callscript syntax
      • Fixed a bug that could cause an infinite loop when parsing a script using the old subscript call syntax. The parser now forces a sequential traversal of lines to avoid cross-recursion.

    • Random empty variable
      • Fixed a race condition that could leave an empty variable during execution in certain scenarios where the variable was assigned and then read in the same action.

    • Click on the execution error link
      • Fixed an issue where clicking error links in the execution report was not correctly reopening the relevant action in the editor.

    • Dependency updates
      • Upgrading Java dependencies (Selenium, Appium, HTTP libraries, JSON parser) to benefit from the latest security and performance patches

    • Renaming the "gradient" mode to "alternate" mode
      • The license client's connection mode when the direct channel is unavailable (restrictive corporate proxy, blocked WSS port) was called "degraded mode"—an anxiety-inducing term considering the application functions normally via the fallback HTTPS path. It has been renamed "alternative mode" throughout the UI: badge in the top right corner, information popup, logo badge tooltip, and execution log. No functional regression, just a clear renaming to reassure the user and their IT department.