Localisation testing
Check your app in several languages by preparing one snapshot per locale and running the same plain-English task on each, with screenshots and video to compare.
ARTEMIS reads the screen the way a person does, so the same instruction works whatever language the UI is in. That makes it a good fit for localisation checks: truncated buttons, untranslated strings, layouts that break with long German words or right-to-left Arabic.
There is no locale parameter when creating a device; every device boots in English (United States). You set the language once per locale on a device and save it as a snapshot.
1. Prepare one snapshot per locale#
For each locale, start a device, set the language with a task, install your app, and snapshot it.
API=https://akaphone.abhgnx-417.workers.dev
AUTH="Authorization: Bearer $AKAPHONE_API_KEY"
DEVICE_ID=$(curl -sf -X POST "$API/v1/devices" -H "$AUTH" -H "Content-Type: application/json" \
-d '{"name": "prep-de-DE", "wait": true}' | jq -r .id)
curl -sf -X POST "$API/v1/devices/$DEVICE_ID/tasks" -H "$AUTH" -H "Content-Type: application/json" \
-H "X-Model-Key: $MODEL_API_KEY" \
-d '{"profile": "pro", "instruction": "Open Settings > System > Languages. Add Deutsch (Deutschland) and move it to the top of the list so it becomes the system language. Confirm the Settings app is now in German."}'When the task has succeeded, install your APK, then:
curl -sf -X POST "$API/v1/devices/$DEVICE_ID/snapshot" -H "$AUTH" -H "Content-Type: application/json" \
-d '{"name": "locale-de-DE"}'Wait until the snapshot is ready in GET /v1/snapshots, stop the device, and repeat for each locale. On the Free plan you can hold one snapshot; Dev allows 5 and Team 20.
2. Run the same check in every locale#
Restore one device per locale and give each the same instruction. Write it in English and describe elements by purpose rather than by label:
Open the Example Shop app. Go through onboarding, open the product list and the cart. On each screen, report any text that is cut off, overlaps other elements, or is still in English. Reply PASS if there are none, otherwise FAIL and a list of problems with the screen they are on.
for SNAP in "$SNAP_DE" "$SNAP_JA" "$SNAP_AR"; do
DEV=$(curl -sf -X POST "$API/v1/snapshots/$SNAP/restore" -H "$AUTH" \
-H "Content-Type: application/json" -d '{"wait": true}' | jq -r .id)
curl -sf -X POST "$API/v1/devices/$DEV/tasks" -H "$AUTH" -H "Content-Type: application/json" \
-H "X-Model-Key: $MODEL_API_KEY" \
-d "$(jq -n --arg i "$INSTRUCTION" '{instruction: $i, profile: "pro"}')" | jq -r .id
doneThis starts the devices in parallel, up to your plan's concurrency limit (3 on Dev, 5 on Team). Poll each task with GET /v1/tasks/:id, then collect its artifacts with GET /v1/tasks/:id/artifacts: the video and the before/after screenshots make a side-by-side review quick. Stop each device when its task is done.
Tips#
- Use
profor locale checks. Judging truncation and stray English needs the more careful profile. - Check right-to-left separately. Ask explicitly whether the layout is mirrored for Arabic or Hebrew.
- Keep instructions in English. ARTEMIS works fine with an English instruction on a German screen, and your results stay comparable across locales.
- Rebuild snapshots per release of your app, or install the new APK on a restored device before the check.
- Remember snapshots live on one host. If a snapshot is
lost, rerun step 1 for that locale.