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
MemberDoes
locale(tag | null, { bundleId? })a BCP 47 tag ("fr-FR") for the app
timezone(tz | null)an IANA name ("Asia/Tokyo")

Per platform

iOS simulatorAndroid emulator
Localeapplies to the app launched next (-AppleLanguages / -AppleLocale)Android 13+ (API 33): per app, live
Timezoneapplies to the app launched next (TZ); the result has appliesOnLaunch: truelive and device-wide

On iOS, set both before app.open(), or relaunch the app.

In a suite

warden.config.ts
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 reset

On 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.

On this page