mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
89c7536850
* feat(ios): support explicit iOS simulator keychain reset `settings clear-app-state` never touched keychain-backed credentials (e.g. Firebase auth), so a customer's fresh-install reset via the CLI left an app signed in when their in-app reset button did not (#2282). simctl exposes no per-app keychain reset, only a whole-simulator one (`simctl keychain <device> reset`), so this ships as a separate, explicit `settings reset-keychain clear` command rather than folding it into `clear-app-state` — callers opt in knowing the scope is the whole simulator, not just the app under test. Split the pre-existing `apps.test.ts` and `snapshot-handler.test.ts` suites along the `app-settings.ts`/`snapshot-settings.ts` modules they actually mirror, since both were already over the test-file-size tripwire and could not grow further. * fix(ios): reject extra reset-keychain arguments and add live-tested keychain fixture settings reset-keychain clear <extra-arg> silently dropped the extra argument in both the CLI reader and the direct-daemon parser, so a caller expecting per-app scoping could get a whole-simulator wipe without any signal something was off. Reject it instead in both places, with tests proving no settings mutation happens. Also add a small keychain-backed "auth" fixture to the test-app's automation lab (expo-secure-store) so the settings reset-keychain guarantee has a real regression surface: authenticate, verify the credential survives clear-app-state and a plain relaunch, then verify reset-keychain actually clears it. Validated live against a disposable iOS simulator. * fix(ci): stop a bare gradle.properties append from corrupting the last line expo prebuild's generated android/gradle.properties has no trailing newline, so `echo "org.gradle.jvmargs=-Xmx4g" >> gradle.properties` appended directly onto its last line instead of a new one, producing expo.inlineModules.watchedDirectories=[]org.gradle.jvmargs=-Xmx4g. Gradle's JSON.parse of that property then fails at configure time, before any real compilation runs -- the exact "Process 'command 'node'' finished with non-zero exit value 1" failure this branch hit on Android Release and the Smoke Tests fixture-app fallback build. This was a dormant bug: the Android build-cache job only runs on a fingerprint miss, and no PR had changed the test-app's native dependencies in a while. Adding expo-secure-store (#2282's keychain fixture) was enough to trigger it. Reproduced locally against a clean install with the exact CI script, confirmed the corrupted property, and confirmed the printf-based fix builds cleanly (870/870 tasks).
45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
const accessorySetupConfig = require('./accessory-setup.config.json');
|
|
|
|
const accessoryInfoPlist = {
|
|
NSAccessorySetupBluetoothServices: [accessorySetupConfig.serviceUuid],
|
|
NSAccessorySetupKitSupports: ['Bluetooth'],
|
|
};
|
|
|
|
module.exports = {
|
|
expo: {
|
|
name: 'Agent Device Tester',
|
|
slug: 'agent-device-test-app',
|
|
scheme: 'agent-device-test-app',
|
|
version: '1.0.0',
|
|
orientation: 'default',
|
|
userInterfaceStyle: 'automatic',
|
|
// Local `expo run:*` caches the native build on disk, keyed by the Expo
|
|
// fingerprint, so a second run with no native change reuses it instead of
|
|
// rebuilding. CI does not rely on this — it builds Release and shares the
|
|
// result through GitHub artifacts (see .github/workflows/test-app-build-cache.yml).
|
|
buildCacheProvider: { plugin: 'expo-build-disk-cache' },
|
|
plugins: [
|
|
'expo-router',
|
|
'expo-secure-store',
|
|
[
|
|
'expo-audio',
|
|
{
|
|
microphonePermission:
|
|
'Allow Agent Device Tester to exercise microphone permission recovery.',
|
|
recordAudioAndroid: true,
|
|
},
|
|
],
|
|
],
|
|
ios: {
|
|
supportsTablet: true,
|
|
bundleIdentifier: 'com.callstack.agentdevicelab',
|
|
infoPlist: accessoryInfoPlist,
|
|
},
|
|
android: {
|
|
package: 'com.callstack.agentdevicelab',
|
|
predictiveBackGestureEnabled: false,
|
|
softwareKeyboardLayoutMode: 'pan',
|
|
},
|
|
},
|
|
};
|