v2026.08.31
TL;DR
Failed runs now land in an Inbox instead of getting missed, test cases get an activity log, and the sidebar’s been restructured. Furthermore, you can now set a test set to run on a recurring schedule, select and act on several test steps at once, and find all project configurations in one place.
FEATURE
- Inbox: Thunders now has a new notification center where it tells you when a run fails across test cases and test sets, as long as you're the owner.
- Scheduled test set runs: set a test set to run automatically on a recurring schedule from its own settings, instead of only on demand or from CI.
- Bulk select, copy, and delete test steps: check off multiple steps in the Test Case Editor to delete them together, with a confirmation showing how many, or copy them as a group to paste elsewhere.
- One configuration hub per project: the project configuration pages are consolidated into a single unified settings area instead of being scattered.
- A restructured navigation sidebar: navigation is rebuilt around a sidebar shell, with your profile and account controls moved into its footer.
- Test case activity history: every test case keeps a record of what changed on it and who changed it, so you can see how it got to its current state instead of guessing.
- An admin System Health page: see the status of the components your deployment depends on, the database, Browserless and the AI providers, in one place instead of inferring an outage from failing runs.
- Data file per test case: associate a data file with a test case and it runs once per row automatically, no manual iteration setup needed. CI pipelines can now opt into this per-test-case data-file mode too.
- Set execution order for test cases in a test set: control the order in which Test Cases are executed inside a Test Set when using sequential execution.
- Visual Compare against an earlier step: point the comparison at a file your test captured earlier in the run, instead of only a pre-uploaded asset.
- See when and why your new app's URL isn't reachable: when you add a new app and its URL returns an HTTP error, Thunders now detects it and tells you what's wrong, the same way it already does for DNS, TLS, and firewall issues, with a suggested fix and a retry button.
- Close a specific browser tab: the Close Tab step takes an optional tab number. Leave it empty and it still closes the active tab.
- Export a test run as a zip: download a run's debugging artifacts, its HTML, screenshots and executed steps, as a single file to share or work through offline. Self-hosted deployments have this on by default.
- PDF export from a test set or test plan: export a run to PDF from the Runs tab of a test set or test plan, not just from an individual run.
- Name what a capture step produces: give a capture step's output file its own name and publish it straight to Test Assets, instead of hunting for a generated name.
- Use variables in the web step (previously browser step) Value field: type / or use the brackets button to insert a variable.
- Thunders MCP: Custom MCP servers now report an explicit display name to AI clients, and show their own icon in the Connectors list and in Thunders AI.
IMPROVEMENT
- Thunders AI follows the test case names you give it: ask for a specific name when you request a test case and it now uses it, instead of overwriting it with its own guess.
- Alerts surface automatically: a step that passes while still carrying an alert, like a console exception or a newly opened tab, now expands so you see it immediately.
- Live run status: a test case's run status refreshes on its own, with no page reload.
- Clearer failure messaging: the cause of an interrupted run is surfaced directly in the failure message, and a self-closing print window no longer ends the run, it shows as a warning instead.
- More integrations tagged as knowledge sources: Jira Data Center, Azure DevOps, ClickUp, and Shortcut are tagged correctly instead of showing as bug-reporting destinations only.
- Accessibility checks go further: the AI review of image alt text for RGAA is now on for everyone instead of being held back, the color-contrast rule is split across four tests by weight and size, and the underlying axe-core engine is upgraded.
- More accurate assertions: an appearance assertion that fails is re-checked against a crop of the element it matched, and a displayed [VAR]=[value] assertion is routed to the strategy that can actually read it.
- Thunders coaches you toward test steps that work: before you run, suggestions tighten up steps whose wording is ambiguous, just from how they are written. After it runs, they get richer, grounded in what your app actually did. They also stop repeating themselves on steps that have been passing consistently, and explain exact-match quoting rather than simply proposing quotes.
- Clearer PDF reports: resolved variable values now appear in the test-run PDF export, and the export language is pre-selected from the language you are using rather than defaulting elsewhere.
- Sharper file and image comparisons: File Compare findings are scoped to the step's own guidance, its PDF text extraction is layout-aware so columns stop being misread, and Visual Compare rows no longer show a per-section duration that meant nothing.
- Test case activity feed: prerequisite-flag changes on a test case now show up there.
FIX
- Environment cloning: cloning a project no longer drops the environment's init scripts.
- Steadier test runs: a batch of reliability fixes across selector resolution and frame handling cut down on flaky failures.
- App no longer freezes on a Redis stall: a Redis stall used to freeze every authenticated request.
- Steadier app boot: a network blip during startup now retries instead of hard-failing the load, and the app no longer serves a cached shell after an upgrade, so you see the version you just deployed.
- Self-hosted version stamp and calendar: the sidebar shows your deployment's version again, and the calendar version uses the UTC date.
- Live run updates and the Inbox work on self-hosted deployments: real-time connections were being made anonymously, so joining a run's update channel was refused. Live run reports rendered their steps but never their statuses or screenshots, and the Inbox received nothing. Both work now, and a run report that loses its real-time channel keeps rendering instead of stalling.
- Relay namespaces with a scheme prefix connect: an Azure Relay namespace written with a leading scheme is accepted instead of failing to connect.
- Workflow polish: pressing Enter in the project setup wizard advances it instead of starting over, the browser preview zooms one notch at a time, tool-call durations read in the language you have chosen, a notification arriving twice updates in place instead of being dropped, the test runs list keeps paging until it fills the view, and the bulk delete dialog keeps its count correct while deleting.
- Configured app URLs resolve again: an app carrying a legacy status value no longer stops its configured URL from resolving.
- Xray sync timestamps: a synced run shows the true sync time instead of one shifted by the timezone it was read in.
- Native dialogs stay visible: a dialog raised during a plain run is no longer hidden behind the run overlay, and the console error step names the call that actually failed.
- Test Runs page: the grid no longer crashes on an empty row, the page reads its data once per load, and the run event feed recovers on its own.
- Editor stays on your restored version: switching to an earlier test case version no longer bounces you back to the latest one.
- UI polish: browser tabs in a run keep a stable identity when one is closed, a deleted test case redirects with a message instead of erroring, a newly created device pool is no longer auto-selected as the default, File Compare stops showing a false "0s" duration, console log entries resolve the real failed URL, and assorted breadcrumb, column, and localized-link fixes.
- Steadier test runs: reliability work across selector resolution, frames, shadow DOM and nested iframes, hot reload resuming after a failed Visual Compare step, a browser crash reporting as failed instead of interrupted, and a dead session naming the step it was running.
Ready to ship faster with smarter testing?
