You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
Finding any element by their accessibilityLabel using the by.label matcher is not working on Android when using React Native version .060.3
To Reproduce
I have tested this issue on the latest Detox release and it still reproduces
Provide the steps necessary to reproduce the issue. If you are seeing a regression, try to provide the last known version where the issue did not reproduce.
Any test that passes with a by.label matcher on iOS fails on Android.
Expected behavior
Tests should work as in iOS and previous versions.
Environment (please complete the following information):
Detox: 13.1.1
React Native: 0.60.3
Node: 10.16.0
Device: Android Emulator Nexus_5X_API_28
OS: Android 9
Device and Verbose Detox Logs
Provide the device and "trace" Detox logs so we can understand what happened. You can obtain them by passing the loglevel param: detox test --loglevel trace
Example: should find a view by accesibility label [FAIL]
Example: should find a button by accesibility label
detox[23640] TRACE: [Detox.js/DETOX_AFTER_EACH] failed test: "Example should find a view by accesibility label"
detox[23640] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onAfterEach({ title: 'should find a view by accesibility label',
fullName: 'Example should find a view by accesibility label',
status: 'failed',
timedOut: false })
detox[23640] TRACE: [Detox.js/DETOX_BEFORE_EACH] running test: "Example should find a button by accesibility label"
detox[23640] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onBeforeEach({ title: 'should find a button by accesibility label',
fullName: 'Example should find a button by accesibility label',
status: 'running' })
detox[23640] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"reactNativeReload","params":{},"messageId":-1000}
detox[23640] TRACE: [DetoxServer.js/MESSAGE] role=tester action=reactNativeReload (sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7)
detox[23640] TRACE: [DetoxServer.js/MESSAGE] role=testee action=ready (sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7)
detox[23640] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"messageId":-1000,"type":"ready","params":{}}
detox[23640] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"invoke","params":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxAssertion"},"method":"assertMatcher","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"androidx.test.espresso.Espresso"},"method":"onView","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForContentDescription","args":["See your changes button"]}}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForSufficientlyVisible","args":[]}}]},"messageId":4}
detox[23640] TRACE: [DetoxServer.js/MESSAGE] role=tester action=invoke (sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7)
detox[23640] TRACE: [DetoxServer.js/MESSAGE] role=testee action=error (sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7)
detox[23640] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"messageId":4,"type":"error","params":{"error":"'at least 75 percent of the view's area is displayed to the user.' doesn't match the selected view.\nExpected: at least 75 percent of the view's area is displayed to the user.\n Got: null\n"}}
Example: should find a button by accesibility label [FAIL]
detox[23640] TRACE: [Detox.js/DETOX_AFTER_EACH] failed test: "Example should find a button by accesibility label"
detox[23640] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onAfterEach({ title: 'should find a button by accesibility label',
fullName: 'Example should find a button by accesibility label',
status: 'failed',
timedOut: false })
detox[23640] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onAfterAll()
detox[23640] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"cleanup","params":{"stopRunner":false},"messageId":-49642}
detox[23640] TRACE: [DetoxServer.js/MESSAGE] role=tester action=cleanup (sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7)
detox[23640] TRACE: [DetoxServer.js/MESSAGE] role=testee action=cleanupDone (sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7)
detox[23640] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"messageId":-49642,"type":"cleanupDone","params":{}}
detox[23640] DEBUG: [exec.js/KILL] sending SIGINT to [pid = 23701]: /usr/local/share/android-sdk/platform-tools/adb -s emulator-5554 shell am instrument -w -r -e detoxServer ws://localhost:63683 -e detoxSessionId e83bc21c-1c07-cdef-1188-896c97b6b5f7 -e debug ZmFsc2U= com.detox603.test/androidx.test.runner.AndroidJUnitRunner
detox[23640] DEBUG: [DetoxServer.js/DISCONNECT] role=tester, sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7
detox[23640] DEBUG: [exec.js/KILL] sending SIGINT to [pid = 23701]: /usr/local/share/android-sdk/platform-tools/adb -s emulator-5554 shell am instrument -w -r -e detoxServer ws://localhost:63683 -e detoxSessionId e83bc21c-1c07-cdef-1188-896c97b6b5f7 -e debug ZmFsc2U= com.detox603.test/androidx.test.runner.AndroidJUnitRunner
detox[23640] TRACE: [exec.js/SPAWN_END, #15] /usr/local/share/android-sdk/platform-tools/adb -s emulator-5554 shell am instrument -w -r -e detoxServer ws://localhost:63683 -e detoxSessionId e83bc21c-1c07-cdef-1188-896c97b6b5f7 -e debug ZmFsc2U= com.detox603.test/androidx.test.runner.AndroidJUnitRunner terminated with SIGINT
detox[23640] DEBUG: [DetoxServer.js/DISCONNECT] role=testee, sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7
detox[23640] DEBUG: [DetoxServer.js/CANNOT_FORWARD] role=tester not connected, cannot fw action (sessionId=e83bc21c-1c07-cdef-1188-896c97b6b5f7)
detox[23640] DEBUG: [DetoxServer.js/WS_CLOSE] Detox server connections terminated gracefully
FAIL e2e/firstTest.spec.js (22.747s)
Example
✓ should have welcome screen (1273ms)
✓ should find an element by testID (1141ms)
✕ should find a view by accesibility label (1190ms)
✕ should find a button by accesibility label (1174ms)
● Example › should find a view by accesibility label
'at least 75 percent of the view's area is displayed to the user.' doesn't match the selected view.
Expected: at least 75 percent of the view's area is displayed to the user.
Got: null
13 |
14 | it('should find a view by accesibility label', async () => {
> 15 | await expect(element(by.label('Edit App.js Container'))).toBeVisible();
| ^
16 | });
17 |
18 | it('should find a button by accesibility label', async () => {
at Client.execute (../node_modules/detox/src/client/Client.js:92:28)
at InvocationManager.execute (../node_modules/detox/src/invoke.js:11:33)
at MatcherAssertionInteraction.execute (../node_modules/detox/src/android/expect.js:128:35)
at ExpectElement.toBeVisible (../node_modules/detox/src/android/expect.js:275:112)
at toBeVisible (firstTest.spec.js:15:62)
at tryCatch (../node_modules/regenerator-runtime/runtime.js:45:40)
at Generator.invoke [as _invoke] (../node_modules/regenerator-runtime/runtime.js:271:22)
at Generator.prototype.(anonymous function) [as next] (../node_modules/regenerator-runtime/runtime.js:97:21)
at tryCatch (../node_modules/regenerator-runtime/runtime.js:45:40)
at invoke (../node_modules/regenerator-runtime/runtime.js:135:20)
at ../node_modules/regenerator-runtime/runtime.js:170:11
at callInvokeWithMethodAndArg (../node_modules/regenerator-runtime/runtime.js:169:16)
at AsyncIterator.enqueue (../node_modules/regenerator-runtime/runtime.js:192:13)
at AsyncIterator.prototype.(anonymous function) [as next] (../node_modules/regenerator-runtime/runtime.js:97:21)
at Object.<anonymous>.exports.async (../node_modules/regenerator-runtime/runtime.js:216:14)
● Example › should find a button by accesibility label
'at least 75 percent of the view's area is displayed to the user.' doesn't match the selected view.
Expected: at least 75 percent of the view's area is displayed to the user.
Got: null
17 |
18 | it('should find a button by accesibility label', async () => {
> 19 | await expect(element(by.label('See your changes button'))).toBeVisible();
| ^
20 | });
21 | });
22 |
at Client.execute (../node_modules/detox/src/client/Client.js:92:28)
at InvocationManager.execute (../node_modules/detox/src/invoke.js:11:33)
at MatcherAssertionInteraction.execute (../node_modules/detox/src/android/expect.js:128:35)
at ExpectElement.toBeVisible (../node_modules/detox/src/android/expect.js:275:112)
at toBeVisible (firstTest.spec.js:19:64)
at tryCatch (../node_modules/regenerator-runtime/runtime.js:45:40)
at Generator.invoke [as _invoke] (../node_modules/regenerator-runtime/runtime.js:271:22)
at Generator.prototype.(anonymous function) [as next] (../node_modules/regenerator-runtime/runtime.js:97:21)
at tryCatch (../node_modules/regenerator-runtime/runtime.js:45:40)
at invoke (../node_modules/regenerator-runtime/runtime.js:135:20)
at ../node_modules/regenerator-runtime/runtime.js:170:11
at callInvokeWithMethodAndArg (../node_modules/regenerator-runtime/runtime.js:169:16)
at AsyncIterator.enqueue (../node_modules/regenerator-runtime/runtime.js:192:13)
at AsyncIterator.prototype.(anonymous function) [as next] (../node_modules/regenerator-runtime/runtime.js:97:21)
at Object.<anonymous>.exports.async (../node_modules/regenerator-runtime/runtime.js:216:14)
detox[23639] ERROR: [cli.js] Error: Command failed: node_modules/.bin/jest --config=e2e/config.json --maxWorkers=1 '--testNamePattern=^((?!:ios:).)*$' "e2e"
The text was updated successfully, but these errors were encountered:
And was fixed in RN 0.60.5 which includes the following PR: #25963
Anyone having one of the affected versions (0.60.0-0.60.4) can as a work-around conditionally add a comma at the end of the label to match if the platform is Android.
Describe the bug
Finding any element by their accessibilityLabel using the
by.label
matcher is not working on Android when using React Native version .060.3To Reproduce
Provide the steps necessary to reproduce the issue. If you are seeing a regression, try to provide the last known version where the issue did not reproduce.
by.label
matcher on iOS fails on Android.Demo project reproducing the issue
Expected behavior
Tests should work as in iOS and previous versions.
Environment (please complete the following information):
Device and Verbose Detox Logs
Provide the device and "trace" Detox logs so we can understand what happened. You can obtain them by passing the loglevel param:
detox test --loglevel trace
The text was updated successfully, but these errors were encountered: