Closed AshrafRizvi01 closed 1 year ago
In the device logs I am getting VERBOSE | Data frame has invalid ether type 0
@d4vidi any clues?
I have an hypothesis. Could you run, right after detox fails, the same exact command as detox does (adb shell... ps | grep
, etc.) and even things like adb shell ls
and see if it fails? If it does, terminate the emulator and start a new one manually (from command line or even android studio), then run those commands again.
Please share the results, including error messages.
Hi @d4vidi I have ran the commands and here are the results: `$adb shell ls
acct apex bin bugreports cache config d data data_mirror debug_ramdisk dev etc init init.environ.rc linkerconfig lost+found metadata mnt odm odm_dlkm oem postinstall proc product sdcard second_stage_resources storage sys system system_ext vendor vendor_dlkm`
And I got no errors for adb shell ps | grep <packagename>
and also no output.
@d4vidi I ran the app manually and tried again and the ps | grep command gave me the process id. My understanding is that detox is not able to launch the app and hence when querying the process_id it fails because the output is empty.
Here is my launch app code:
const beforeAllHook = async () => {
// eslint-disable-next-line no-console
console.log('[beforeAllHook]: Initialised. Launching app...');
await device.launchApp(DETOX_LAUNCH_CONFIG);
await device.disableSynchronization();
// eslint-disable-next-line no-console
console.log('[beforeAllHook]: Launched app');
};
And here is my config:
export const DETOX_LAUNCH_CONFIG: Detox.DeviceLaunchAppConfig = {
newInstance: true,
launchArgs: { detoxEnableSynchronization: 0 },
permissions: { notifications: 'YES', userTracking: 'YES' },
};
Logs:
13:45:38.644 detox[87649] i lifecycle world-in-brief.test.ts is assigned to emulator-13188 (pixel_3a)
13:45:38.646 detox[87649] i user [beforeAllHook]: Initialised. Launching app...
origin: at init.ts:7:13
13:45:38.651 detox[87649] i child-process:EXEC_CMD "/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 shell "am force-stop com.test.app"
13:45:38.711 detox[87649] i child-process:EXEC_CMD "/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 shell "date +\"%m-%d %T.000\""
13:45:38.757 detox[87649] i child-process:EXEC_CMD "/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 reverse tcp:58730 tcp:58730
13:45:38.785 detox[87649] i child-process:EXEC_CMD "/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 shell "pm list instrumentation"
13:45:38.836 detox[87649] i child-process:SPAWN_CMD /Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb -s emulator-13188 shell am instrument -w -r -e detoxServer ws://localhost:58730 -e detoxSessionId 17637b71-e5d2-0110-f887-3a0bc2e5f509 -e detoxEnableSynchronization 0 -e debug false com.test.app.test/androidx.test.runner.AndroidJUnitRunner
13:45:39.131 detox[87649] i child-process:SPAWN_END /Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb -s emulator-13188 shell am instrument -w -r -e detoxServer ws://localhost:58730 -e detoxSessionId 17637b71-e5d2-0110-f887-3a0bc2e5f509 -e detoxEnableSynchronization 0 -e debug false com.test.app.test/androidx.test.runner.AndroidJUnitRunner exited with code #0
13:45:39.132 detox[87649] i child-process:EXEC_CMD "/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 reverse --remove tcp:58730
13:45:39.338 detox[87649] i child-process:EXEC_CMD "/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 shell "ps | grep \"com\.economist\.darwin$\""
13:45:40.503 detox[87649] i child-process:EXEC_FAIL ""/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 shell "ps | grep \"com\.economist\.darwin$\""" failed with error = ChildProcessError: Command failed: "/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 shell "ps | grep \"com\.economist\.darwin$\""
`"/Users/ashrafiftekhar/Library/Android/sdk/platform-tools/adb" -s emulator-13188 shell "ps | grep \"com\.economist\.darwin$\""` (exited with error code 1) (code=1), stdout and stderr:
13:45:40.503 detox[87649] i child-process:EXEC_FAIL
So that sort of disproves my hypothesis. Could you share the device logs (i.e. Using adb logcat)
Hi @d4vidi , Please find the device logs as follows:
Hi @d4vidi
Sorry to bother you again, did you get a chance to look at the logs?
Hello, I am having the same issue. Is there any updates or fixes?
@AshrafRizvi01 looks like you were (almost) right, Android instrumentation fails to launch:
05-03 14:34:42.531 12533 12533 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{com.economist.darwin.test/androidx.test.runner.AndroidJUnitRunner}: java.lang.ClassNotFoundException: Didn't find class "androidx.test.runner.AndroidJUnitRunner" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.base.jar", zip file "/data/app/~~IAQxEJA_tEklTSqAbn7Qsg==/com.economist.darwin.test-FIp3x3nhNkqiv3DVUdSsEA==/base.apk", zip file "/data/app/~~7GFNqVggKWVp0UvLyPvNrw==/com.economist.darwin-WwIGg96ZVdMMNYsrYaIByg==/base.apk"],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64]]
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.app.ActivityThread.initInstrumentation(ActivityThread.java:6879)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6663)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.app.ActivityThread.access$1500(ActivityThread.java:247)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2053)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7839)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.test.runner.AndroidJUnitRunner" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.base.jar", zip file "/data/app/~~IAQxEJA_tEklTSqAbn7Qsg==/com.economist.darwin.test-FIp3x3nhNkqiv3DVUdSsEA==/base.apk", zip file "/data/app/~~7GFNqVggKWVp0UvLyPvNrw==/com.economist.darwin-WwIGg96ZVdMMNYsrYaIByg==/base.apk"],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64]]
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: at android.app.ActivityThread.initInstrumentation(ActivityThread.java:6875)
05-03 14:34:42.531 12533 12533 E AndroidRuntime: ... 10 more
I've never come across this specific issue; Are you 100% certain you've installed the test APK on the test device/emulator?
@d4vidi & @AshrafRizvi01 I fixed this by updating my testInstrumentationRunner
to androidx.test.runner.AndroidJUnitRunner
I had to check the emulator logs and saw it was erroring out because a class did not exist. The app would install on the emulator but fail to launch and immediately fail all the tests.
I've never come across this specific issue; Are you 100% certain you've installed the test APK on the test device/emulator?
Yes @d4vidi , I have installed the test binary. I can see it on the device. I am not sure how the same code works with the old binary but the new binary gets stuck.
@AshrafRizvi01 Sorry, I have nothing off the top of my head. There was nothing particularly Android-ish about the v20 release IIRC. Could you try to do the same with the basic v20 (20.0.0), just so as to try to get a better reference point?
In parallel, please try to inspect the content of your newly created test APK in android studio -- see if indeed AndroidJUnitRunner
is there or not. Could you by any chance building the test APK in release mode and therefore accidentally hitting code minification/obfuscation?
@d4vidi & @AshrafRizvi01 I fixed this by updating my
testInstrumentationRunner
toandroidx.test.runner.AndroidJUnitRunner
I had to check the emulator logs and saw it was erroring out because a class did not exist. The app would install on the emulator but fail to launch and immediately fail all the tests.
@nsimoncelli I don't entirely follow, as androidx.test.runner.AndroidJUnitRunner
is what you're suppose to be using for testInstrumentationRunner
according to our setup guide.
@d4vidi & @AshrafRizvi01 I fixed this by updating my
testInstrumentationRunner
toandroidx.test.runner.AndroidJUnitRunner
I had to check the emulator logs and saw it was erroring out because a class did not exist. The app would install on the emulator but fail to launch and immediately fail all the tests.@nsimoncelli I don't entirely follow, as
androidx.test.runner.AndroidJUnitRunner
is what you're suppose to be using fortestInstrumentationRunner
according to our setup guide.
Yes, I am already using it. I also added a dependency androidx.test:runner just in case it was not getting the classes. Still the same problem.
Hi @d4vidi I have tried adding a testRunner dependency. I also tried changing the emulator and also on the detox 20.0.0. I could not find anything changed at all from my previous setup. And still getting the "class not found" issue. The last thing I can do with the old and new test binary is to compare the dex. This one works:
This one does not.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you believe the issue is still relevant, please test on the latest Detox and report back.
Thank you for your contributions!
For more information on bots in this repository, read this discussion.
The issue has been closed for inactivity.
Any Update about this issue ?
What happened?
While running detox on android it failed to work after building the test apk again. The same config worked before using the old test binary. So seems like the update to 20 is the culprit.
What I have tried:
Updating to latest 20.7.0 and rebuilding test binary and re-running tests. Cleaning up the emulator and even creating a fresh one to check.
Even after that the same issue occurs.
What was the expected behaviour?
Should run the tests in the emulator.
Was it tested on latest Detox?
Did your test throw out a timeout?
Help us reproduce this issue!
The issue did not occur on detox 19 and only started happening on detox 20.
In what environment did this happen?
Detox version: 20.7.0 React Native version: 0.67 Has Fabric (React Native's new rendering system) enabled: (yes/no) no Node version: 16.14.0 Device model: Pixel 3A (API 31) Emulator Android version: API 31 Test-runner (select one): Jest
Detox logs
Detox logs
``` 10:54:50.197 detox[17454] i child-process:EXEC_FAIL 10:54:50.197 detox[17454] i child-process:EXEC_FAIL 10:54:50.698 detox[17454] i child-process:EXEC_CMD "/Users/XXX/Library/Android/sdk/platform-tools/adb" -s emulator-13740 shell "ps | grep \"com\.xxx\.pkg$\"" 10:54:52.053 detox[17454] i child-process:EXEC_FAIL ""/Users/XXX/Library/Android/sdk/platform-tools/adb" -s emulator-13740 shell "ps | grep \"com\.xxx\.pkg$\""" failed with error = ChildProcessError: Command failed: "/Users/XXX/Library/Android/sdk/platform-tools/adb" -s emulator-13740 shell "ps | grep \"com\.xxx\.pkg$\"" `"/Users/XXX/Library/Android/sdk/platform-tools/adb" -s emulator-13740 shell "ps | grep \"com\.xxx\.pkg$\""` (exited with error code 1) (code=1), stdout and stderr: ```Device logs
Device logs
``` paste your device.log here! ```More data, please!
No response