February 2026

Updated by Kashif Hussain

Specify Build Before Device Acquisition: Our revamped device acquisition flow now allows you to select a build other than the latest before acquiring a device in Sofy Lab. This helps maximize debugging efficiency and eliminates unnecessary build switching during authoring sessions.

Re-Run Individual Suites in Scheduled Runs: You can now re-run specific failed or problematic suites within a scheduled run without re-running the entire schedule, saving execution time and accelerating failure triage.

Upload Assets for Testing (File Manager): Sofy’s File Manager now allows you to upload and manage JPEG, PNG and PDF files directly to devices for use during ad-hoc or scheduled executions.

Precise Step Insertion in Test Cases & Templates: You can now insert steps at a specific position within a test case or template by selecting the step after which new steps should be added instead of only appending to the end. This significantly reduces manual restructuring and maintenance effort.

Indexing Capability in Manual Override: Manual Override criteria now support element indexing, allowing you to select a specific instance among multiple matching elements. Execution results also display total number of matching instances and which indexed element was selected to provide greater precision and transparency in complex UI scenarios.

Tagging Testing Data: Testing Data now supports tag-based organization, allowing teams to categorize and filter datasets more effectively for improved discoverability, reuse, and large-scale data management.

Improved Testing Data – Numeric Pattern Update: The Numeric Pattern random generator now excludes 0 from generated values to better align with real-world data scenarios and prevent edge-case validation failures.

Improved Clean Cache OFF Behavior: When Clean Cache is turned OFF, Sofy will no longer uninstall and reinstall iOS apps, avoiding unnecessary certificate trust flows and device navigation. This improves execution stability, reduces test time, and aligns behavior with user expectations when cache is preserved.


How did we do?