Skip to content

Find by label not working on React Native v0.60 #1539

Closed
@elyalvarado

Description

@elyalvarado

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.

  1. Any test that passes with a 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):

  • 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"

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions