Locale and timezone
Run the app in another language, region or timezone, to test translations, date formats and day boundaries.
device.locale and device.timezone change what the app formats dates, numbers and strings with. Both take null to put the setting back, and both are undone when the test ends.
await device.locale("fr-FR");
await device.timezone("Asia/Tokyo");
await app.open(); // iOS: the next launch picks both up| Member | Does |
|---|---|
locale(tag | null, { bundleId? }) | a BCP 47 tag ("fr-FR") for the app |
timezone(tz | null) | an IANA name ("Asia/Tokyo") |
Per platform
| iOS simulator | Android emulator | |
|---|---|---|
| Locale | applies to the app launched next (-AppleLanguages / -AppleLocale) | Android 13+ (API 33): per app, live |
| Timezone | applies to the app launched next (TZ); the result has appliesOnLaunch: true | live and device-wide |
On iOS, set both before app.open(), or relaunch the app.
In a suite
conditions: { locale: "fr-FR", timezone: "Asia/Tokyo" },By hand
warden ui locale fr-FR
warden ui timezone Asia/Tokyo
warden ui locale status
warden ui timezone resetOn iOS the change is staged for the next launch (staged: true and a warning): warden ui open --relaunch. Release clears the app locale and puts the timezone back.
Camera
Feed an image or video into the app's real camera on iOS simulators and Android emulators - preview, photo capture, video recording and QR scanning, in specs, suites and by hand.
Accessibility settings
Raise the text size, turn on bold text, contrast, reduce motion or a screen reader, and check the layout still holds.