fix: Update Android package name and improve test reliability

- Change package name from app.timesafari.app to app.timesafari
- Fix ADB connection issues with server restart and retries
- Add interactive test flow with user prompts between tests
- Generate test data locally instead of external script
- Add proper cleanup of readline interface
- Fix URL scheme registration in Android manifest

Technical changes:
1. Remove duplicate SDK suppression entries
2. Update Gradle and build configurations
3. Add retry logic for flaky ADB connections
4. Add proper error handling for test data generation
5. Update all package references consistently

The changes improve Android testing by:
1. Making package naming consistent
2. Adding reliability to ADB connections
3. Adding user control over test flow
4. Providing better test progress visibility
5. Improving error handling and logging
This commit is contained in:
Matthew Raymer
2025-03-21 08:31:55 +00:00
parent c760385dcf
commit aed1a9fea8
36 changed files with 324 additions and 660 deletions

190
package-lock.json generated
View File

@@ -4998,9 +4998,9 @@
}
},
"node_modules/@expo/cli": {
"version": "0.22.20",
"resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.20.tgz",
"integrity": "sha512-BU2ASlw0Gaj3ou/TxVsgvzK+XK8Z14Yq3mmLyvMcMAQrdExZLNmvMZ3A3x6q2uMgSJM3aoQBUuVXS/Ny+lYgDA==",
"version": "0.22.21",
"resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.21.tgz",
"integrity": "sha512-lLtH0CiNTwB+qgduew61Jocgj0B092QiQllBuPXigHI4VQms5VXYXHfQC2pMZ7KWFKhNjBIjLSD8A2n1dBMb1Q==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -7601,9 +7601,9 @@
}
},
"node_modules/@pkgr/core": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
"integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz",
"integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14515,9 +14515,9 @@
}
},
"node_modules/electron-to-chromium": {
"version": "1.5.122",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.122.tgz",
"integrity": "sha512-EML1wnwkY5MFh/xUnCvY8FrhUuKzdYhowuZExZOfwJo+Zu9OsNCI23Cgl5y7awy7HrUHSwB1Z8pZX5TI34lsUg==",
"version": "1.5.123",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz",
"integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==",
"devOptional": true,
"license": "ISC"
},
@@ -15557,24 +15557,24 @@
}
},
"node_modules/expo": {
"version": "52.0.39",
"resolved": "https://registry.npmjs.org/expo/-/expo-52.0.39.tgz",
"integrity": "sha512-EOnrgj8MHSt0o0SIBhM7jCim2QpJJNonbSATn9LqNtVgKtotIg718G/OrP5/g0GUAOBDyxHH9PfNu/aq9c0vDw==",
"version": "52.0.40",
"resolved": "https://registry.npmjs.org/expo/-/expo-52.0.40.tgz",
"integrity": "sha512-kRRXW0VRlnc49LiMO9csF5DjWmUQhQ0lHudNIi3m9Z4nvecJbDaKWI5nNxB5UG7Sqj0I/wsBMes5G6gEndeYlQ==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"@babel/runtime": "^7.20.0",
"@expo/cli": "0.22.20",
"@expo/cli": "0.22.21",
"@expo/config": "~10.0.11",
"@expo/config-plugins": "~9.0.17",
"@expo/fingerprint": "0.11.11",
"@expo/metro-config": "0.19.12",
"@expo/vector-icons": "^14.0.0",
"babel-preset-expo": "~12.0.9",
"expo-asset": "~11.0.4",
"expo-asset": "~11.0.5",
"expo-constants": "~17.0.8",
"expo-file-system": "~18.0.11",
"expo-file-system": "~18.0.12",
"expo-font": "~13.0.4",
"expo-keep-awake": "~14.0.3",
"expo-modules-autolinking": "2.0.8",
@@ -15606,15 +15606,15 @@
}
},
"node_modules/expo-asset": {
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.4.tgz",
"integrity": "sha512-CdIywU0HrR3wsW5c3n0cT3jW9hccZdnqGsRqY+EY/RWzJbDXtDfAQVEiFHO3mDK7oveUwrP2jK/6ZRNek41/sg==",
"version": "11.0.5",
"resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.5.tgz",
"integrity": "sha512-TL60LmMBGVzs3NQcO8ylWqBumMh4sx0lmeJsn7+9C88fylGDhyyVnKZ1PyTXo9CVDBkndutZx2JUEQWM9BaiXw==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"@expo/image-utils": "^0.6.5",
"expo-constants": "~17.0.7",
"expo-constants": "~17.0.8",
"invariant": "^2.2.4",
"md5-file": "^3.2.3"
},
@@ -15641,9 +15641,9 @@
}
},
"node_modules/expo-file-system": {
"version": "18.0.11",
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.11.tgz",
"integrity": "sha512-yDwYfEzWgPXsBZHJW2RJ8Q66ceiFN9Wa5D20pp3fjXVkzPBDwxnYwiPWk4pVmCa5g4X5KYMoMne1pUrsL4OEpg==",
"version": "18.0.12",
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.12.tgz",
"integrity": "sha512-HAkrd/mb8r+G3lJ9MzmGeuW2B+BxQR1joKfeCyY4deLl1zoZ48FrAWjgZjHK9aHUVhJ0ehzInu/NQtikKytaeg==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20064,9 +20064,9 @@
"license": "MIT"
},
"node_modules/metro": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro/-/metro-0.81.3.tgz",
"integrity": "sha512-upilFs7z1uLKvdzFYHiVKrGT/uC7h7d53R0g/FaJoQvLfA8jQG2V69jeOcGi4wCsFYvl1zBSZvKxpQb0nA3giQ==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro/-/metro-0.81.4.tgz",
"integrity": "sha512-78f0aBNPuwXW7GFnSc+Y0vZhbuQorXxdgqQfvSRqcSizqwg9cwF27I05h47tL8AzQcizS1JZncvq4xf5u/Qykw==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20092,18 +20092,18 @@
"jest-worker": "^29.7.0",
"jsc-safe-url": "^0.2.2",
"lodash.throttle": "^4.1.1",
"metro-babel-transformer": "0.81.3",
"metro-cache": "0.81.3",
"metro-cache-key": "0.81.3",
"metro-config": "0.81.3",
"metro-core": "0.81.3",
"metro-file-map": "0.81.3",
"metro-resolver": "0.81.3",
"metro-runtime": "0.81.3",
"metro-source-map": "0.81.3",
"metro-symbolicate": "0.81.3",
"metro-transform-plugins": "0.81.3",
"metro-transform-worker": "0.81.3",
"metro-babel-transformer": "0.81.4",
"metro-cache": "0.81.4",
"metro-cache-key": "0.81.4",
"metro-config": "0.81.4",
"metro-core": "0.81.4",
"metro-file-map": "0.81.4",
"metro-resolver": "0.81.4",
"metro-runtime": "0.81.4",
"metro-source-map": "0.81.4",
"metro-symbolicate": "0.81.4",
"metro-transform-plugins": "0.81.4",
"metro-transform-worker": "0.81.4",
"mime-types": "^2.1.27",
"nullthrows": "^1.1.1",
"serialize-error": "^2.1.0",
@@ -20120,9 +20120,9 @@
}
},
"node_modules/metro-babel-transformer": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.3.tgz",
"integrity": "sha512-ENqtnPy2mQZFOuKrbqHRcAwZuaYe43X+30xIF0xlkLuMyCvc0CsFzrrSK9EqrQwexhVlqaRALb0GQbBMcE/y8g==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.4.tgz",
"integrity": "sha512-WW0yswWrW+eTVK9sYD+b1HwWOiUlZlUoomiw9TIOk0C+dh2V90Wttn/8g62kYi0Y4i+cJfISerB2LbV4nuRGTA==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20156,25 +20156,25 @@
}
},
"node_modules/metro-cache": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.3.tgz",
"integrity": "sha512-6UelMQYjlto/79tTXu0vsTxAX4e+Bkf0tgtDL1BNx3wd68pBg8qKIYpJPaUlOIaNUzFXTBDjYwUverkEW0KAtA==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.4.tgz",
"integrity": "sha512-sxCPH3gowDxazSaZZrwdNPEpnxR8UeXDnvPjBF9+5btDBNN2DpWvDAXPvrohkYkFImhc0LajS2V7eOXvu9PnvQ==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"exponential-backoff": "^3.1.1",
"flow-enums-runtime": "^0.0.6",
"metro-core": "0.81.3"
"metro-core": "0.81.4"
},
"engines": {
"node": ">=18.18"
}
},
"node_modules/metro-cache-key": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.3.tgz",
"integrity": "sha512-KPsPSRUd6uRva7k7k/DqiiD8td7URQWx0RkX/Cj5+bed5zSXEg/XoQA+b+DmMxS5C7TqP61Fh3XvHx6TQRW82A==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.4.tgz",
"integrity": "sha512-3SaWQybvf1ivasjBegIxzVKLJzOpcz+KsnGwXFOYADQq0VN4cnM7tT+u2jkOhk6yJiiO1WIjl68hqyMOQJRRLg==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20186,9 +20186,9 @@
}
},
"node_modules/metro-config": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.3.tgz",
"integrity": "sha512-WpTaT0iQr5juVY50Y/cyacG2ggZqF38VshEQepT+ovPK8E/xUVxlbO5yxLSXUxxUXX3Hka9r6g64+y2WC6c/xQ==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.4.tgz",
"integrity": "sha512-QnhMy3bRiuimCTy7oi5Ug60javrSa3lPh0gpMAspQZHY9h6y86jwHtZPLtlj8hdWQESIlrbeL8inMSF6qI/i9Q==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20197,35 +20197,35 @@
"cosmiconfig": "^5.0.5",
"flow-enums-runtime": "^0.0.6",
"jest-validate": "^29.7.0",
"metro": "0.81.3",
"metro-cache": "0.81.3",
"metro-core": "0.81.3",
"metro-runtime": "0.81.3"
"metro": "0.81.4",
"metro-cache": "0.81.4",
"metro-core": "0.81.4",
"metro-runtime": "0.81.4"
},
"engines": {
"node": ">=18.18"
}
},
"node_modules/metro-core": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.3.tgz",
"integrity": "sha512-WZ+qohnpvvSWdPj1VJPUrZz+2ik29M+UUpMU6YrmzQUfDyZ6JYHhzlw5WVBtwpt/+2xTsIyrZ2C1fByT/DsLQA==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.4.tgz",
"integrity": "sha512-GdL4IgmgJhrMA/rTy2lRqXKeXfC77Rg+uvhUEkbhyfj/oz7PrdSgvIFzziapjdHwk1XYq0KyFh/CcVm8ZawG6A==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6",
"lodash.throttle": "^4.1.1",
"metro-resolver": "0.81.3"
"metro-resolver": "0.81.4"
},
"engines": {
"node": ">=18.18"
}
},
"node_modules/metro-file-map": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.3.tgz",
"integrity": "sha512-F+t4lnVRoauJxtr9xmI4pWIOE77/vl0IrHDGeJSI9cW6LmuqxkpOlZHTKpbs/hMAo6+KhG2JMJACQDvXDLd/GA==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.4.tgz",
"integrity": "sha512-qUIBzkiqOi3qEuscu4cJ83OYQ4hVzjON19FAySWqYys9GKCmxlKa7LkmwqdpBso6lQl+JXZ7nCacX90w5wQvPA==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20264,9 +20264,9 @@
"peer": true
},
"node_modules/metro-minify-terser": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.3.tgz",
"integrity": "sha512-912AYv3OmwcbUwzCdWbdQRk+RV6kXXluHKlhBdYFD3kr4Ece691rzlofU/Mlt9qZrhHtctD5Q8cFqOEf9Z69bQ==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.4.tgz",
"integrity": "sha512-oVvq/AGvqmbhuijJDZZ9npeWzaVyeBwQKtdlnjcQ9fH7nR15RiBr5y2zTdgTEdynqOIb1Kc16l8CQIUSzOWVFA==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20279,9 +20279,9 @@
}
},
"node_modules/metro-resolver": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.3.tgz",
"integrity": "sha512-XnjENY1c6jcsEfFVIjN/8McUIInCVgGxv5eva+9ZWeCTyiAE/L5HPj2ai/Myb349+6QuSMR0dscTkKCnOwWXdw==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.4.tgz",
"integrity": "sha512-Ng7G2mXjSExMeRzj6GC19G6IJ0mfIbOLgjArsMWJgtt9ViZiluCwgWsMW9juBC5NSwjJxUMK2x6pC5NIMFLiHA==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20293,9 +20293,9 @@
}
},
"node_modules/metro-runtime": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.3.tgz",
"integrity": "sha512-neuGRMC2pgGKIFPbmbrxW41/SmvL7OX4i1LN+saUY2t1cZfxf9haQHUMCGhO3498uEL2N+ulKRSlQrHt6XwGaw==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.4.tgz",
"integrity": "sha512-fBoRgqkF69CwyPtBNxlDi5ha26Zc8f85n2THXYoh13Jn/Bkg8KIDCdKPp/A1BbSeNnkH/++H2EIIfnmaff4uRg==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20308,9 +20308,9 @@
}
},
"node_modules/metro-source-map": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.3.tgz",
"integrity": "sha512-BHJJurmDQRn3hCbBawh/UHzPz3duMpwpE3ofImO2DoWHYzn6nSg/D4wfCN4y14d9fFLE4e0I+BAOX1HWNP4jsw==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.4.tgz",
"integrity": "sha512-IOwVQ7mLqoqvsL70RZtl1EyE3f9jp43kVsAsb/B/zoWmu0/k4mwEhGLTxmjdXRkLJqPqPrh7WmFChAEf9trW4Q==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20320,9 +20320,9 @@
"@babel/types": "^7.25.2",
"flow-enums-runtime": "^0.0.6",
"invariant": "^2.2.4",
"metro-symbolicate": "0.81.3",
"metro-symbolicate": "0.81.4",
"nullthrows": "^1.1.1",
"ob1": "0.81.3",
"ob1": "0.81.4",
"source-map": "^0.5.6",
"vlq": "^1.0.0"
},
@@ -20331,16 +20331,16 @@
}
},
"node_modules/metro-symbolicate": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.3.tgz",
"integrity": "sha512-LQLT6WopQmIz2SDSVh3Lw7nLzF58HpsrPYqRB7RpRXBYhYmPFIjiGaP8qqtKHXczM/5YAOJzpgt8t/OGZgh6Eg==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.4.tgz",
"integrity": "sha512-rWxTmYVN6/BOSaMDUHT8HgCuRf6acd0AjHkenYlHpmgxg7dqdnAG1hLq999q2XpW5rX+cMamZD5W5Ez2LqGaag==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6",
"invariant": "^2.2.4",
"metro-source-map": "0.81.3",
"metro-source-map": "0.81.4",
"nullthrows": "^1.1.1",
"source-map": "^0.5.6",
"vlq": "^1.0.0"
@@ -20353,9 +20353,9 @@
}
},
"node_modules/metro-transform-plugins": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.3.tgz",
"integrity": "sha512-4JMUXhBB5y4h3dyA272k7T7+U3+J4fSBcct0Y8Yur9ziZB/dK8fieEQg5ZPfEGsgOGI+54zTzOUqga6AgmZSNg==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.4.tgz",
"integrity": "sha512-nlP069nDXm4v28vbll4QLApAlvVtlB66rP6h+ml8Q/CCQCPBXu2JLaoxUmkIOJQjLhMRUcgTyQHq+TXWJhydOQ==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20372,9 +20372,9 @@
}
},
"node_modules/metro-transform-worker": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.3.tgz",
"integrity": "sha512-KZqm9sVyBKRygUxRm+yP4DguE9R1EEv28KJhIxghNp5dcdVXBYUPe1xHoc3QVdzD9c3tf8JFzA2FBlKTlwMwNg==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.4.tgz",
"integrity": "sha512-lKAeRZ8EUMtx2cA/Y4KvICr9bIr5SE03iK3lm+l9wyn2lkjLUuPjYVep159inLeDqC6AtSubsA8MZLziP7c03g==",
"license": "MIT",
"optional": true,
"peer": true,
@@ -20384,13 +20384,13 @@
"@babel/parser": "^7.25.3",
"@babel/types": "^7.25.2",
"flow-enums-runtime": "^0.0.6",
"metro": "0.81.3",
"metro-babel-transformer": "0.81.3",
"metro-cache": "0.81.3",
"metro-cache-key": "0.81.3",
"metro-minify-terser": "0.81.3",
"metro-source-map": "0.81.3",
"metro-transform-plugins": "0.81.3",
"metro": "0.81.4",
"metro-babel-transformer": "0.81.4",
"metro-cache": "0.81.4",
"metro-cache-key": "0.81.4",
"metro-minify-terser": "0.81.4",
"metro-source-map": "0.81.4",
"metro-transform-plugins": "0.81.4",
"nullthrows": "^1.1.1"
},
"engines": {
@@ -22001,9 +22001,9 @@
"license": "MIT"
},
"node_modules/ob1": {
"version": "0.81.3",
"resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.3.tgz",
"integrity": "sha512-wd8zdH0DWsn2iDVn2zT/QURihcqoc73K8FhNCmQ16qkJaoYJLNb/N+huOwdCgsbNP8Lk/s1+dPnDETx+RzsrWA==",
"version": "0.81.4",
"resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.4.tgz",
"integrity": "sha512-EZLYM8hfPraC2SYOR5EWLFAPV5e6g+p83m2Jth9bzCpFxP1NDQJYXdmXRB2bfbaWQSmm6NkIQlbzk7uU5lLfgg==",
"license": "MIT",
"optional": true,
"peer": true,