Qalti Release 0.5.7

Nov 4, 2025

We gave the agent access to Bash to make your life easier

We’ve shipped Qalti 0.5.7 — a lean update that lets your tests invoke Bash directly from natural language, adds iPadcoverage, supports long taps, and makes runs faster and more reliable by executing multiple actions in sequence with fewer “no-comment” detours.

Now you can run preconditions

Write your preconditions in plain English and let the agent pull them in from files or docs. For example:

In your test:

Read and execute steps from ./tests/preconditions.test
Open app 'MyApp'
Log in with example@myapp.test and example7512PASSWord
Check that the username is 'Test User'

./tests/preconditions.test

Open app 'MyApp'
If the app is not opened on the welcome screen, tap user icon, scroll down, and tap 'log out' button
Open Settings app
Tap 'search'
Input 'MyApp'
If the 'MyApp' is found, Go to the 'MyApp' page, and toggle on all disabled switches
Open home screen

What happens: the agent runs cat ./tests/preconditions.test, ingests the file as additional steps, executes them, and continues your scenario from a deterministic state.


Or set up the test user in 2 seconds

Generate credentials in Bash and let the agent use them immediately.

Script ./generate_test_user.sh:

#!/usr/bin/env bash
# Creates a throwaway user and prints creds for the agent to reuse
random_number=$(( $(od -An -N4 -tu4 /dev/urandom) % 1000001 ))
email="user${random_number}@example.com"
password=$(LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 13)
payload=$(printf '{"email":"%s","password":"%s"}' "$email" "$password")
code=$(curl -sS -o /dev/null -w "%{http_code}" -X POST 'https://api.test.example.com/v1/add-user' -H 'Content-Type: application/json' -d "$payload")
if [ "$code" -eq 200 ]; then
  printf '%s\n%s\n' "$email" "$password"
fi

In your test:


What happens: the agent executes the script, captures stdout (login=… / password=…), and fills the login form with them.


Or do whatever you want

Because tests can call Bash, you can reach for low-level tools when needed — for example, push a notification inside the simulator to poke the app.

In your test:

Just run the bash command:
echo '{"aps": {"alert": {"title": "Qalti is amazing","subtitle": "It can run bash now","body": "Get your manual tests automated with qalti.com !"}}}' | xcrun simctl push booted com.apple.Preferences

What happens: the agent runs the xcrun simctl push booted com.apple.preferences -, feeds the payload into stdin, and voila, the push notification appears!


Now on iPad, too

Run the same tests on physical iPads and iPad simulators to validate split views, tablet-specific layouts, and adaptive navigation — no test changes required.


Long taps for hidden actions

Some flows only appear on press-and-hold: context menus, drag handles, alternate actions. You can now say:

Long press messages app icon, then tap “New message” in the pop-up

The agent performs a timed long-press and proceeds with your selection.


And finally: a better system prompt

We refined the agent’s core prompt so it chains multiple actions in sequence from a single instruction and skips the initial idle screen. The result is faster tests and far fewer “no-comment” actions — a major reliability win, since “no-comment” states often led to the agent doing something silly off-script. Expect earlier first actions on the timeline, tighter step attribution, and more deterministic runs.

Ready to automate your app tests?