Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Android] Scrollview item wrongly considered visible #4500

Open
1 of 2 tasks
lclnrd opened this issue May 28, 2024 · 2 comments
Open
1 of 2 tasks

[Android] Scrollview item wrongly considered visible #4500

lclnrd opened this issue May 28, 2024 · 2 comments

Comments

@lclnrd
Copy link

lclnrd commented May 28, 2024

What happened?

Given a simple screen composed of a Scrollview and a sibling BottomView at the bottom of the screen.

When we run a test to scroll to the last ScrollView item until the item is 100% visible.

Then test is passing BUT item-13 is still "hidden" by the BottomView.

Note 1: The test scrolls slowly to be able to really see the behavior.

Note 2: This issue is not only related to ScrollView. This happens with our production build when using a SectionList or ScrollView. But it's working when using a FlatList.

What was the expected behaviour?

The test should succeed and the item-13 should be 100% visible.

Was it tested on latest Detox?

  • I have tested this issue on the latest Detox release and it still reproduces.

Did your test throw out a timeout?

Help us reproduce this issue!

I made a reproductible repo available here.
Detox is supposed to use the AVD Pixel_4_XL_API_34. Feel free to test it with other AVDs.
Just build and run the test as usual.

In what environment did this happen?

Detox version: 20.22.2 and 20.20.2
React Native version: 0.74.1 and 0.73.6
Has Fabric (React Native's new rendering system) enabled: No
Node version: v18.19.1
Device model: Every model tested (Sim and physical phones)
Android version: 15 (SDK 34)
Test-runner (select one): jest

Detox logs

Note: Removed app install logs.

Detox logs
13:23:01.821 detox[14725] i ws-client send message
  data: {"type":"invoke","params":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxAssertion"},"method":"waitForAssertMatcherWithSearchAction","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":"matcherForTestId","args":["item-13",{"type":"boolean","value":false}]}}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForSufficientlyVisible","args":[{"type":"Integer","value":100}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxAction"},"method":"scrollInDirectionStaleAtEdge","args":[{"type":"Integer","value":4},{"type":"Double","value":50},{"type":"Double","value":-1},{"type":"Double","value":-1}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForTestId","args":["scrollview",{"type":"boolean","value":false}]}}]},"messageId":1}
13:23:01.822 detox[14725] B ws-client wait for expectation while scroll 50 pixels down
  data: {
    "target": {
      "type": "Class",
      "value": "com.wix.detox.espresso.DetoxAssertion"
    },
    "method": "waitForAssertMatcherWithSearchAction",
    "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": "matcherForTestId",
                "args": [
                  "item-13",
                  {
                    "type": "boolean",
                    "value": false
                  }
                ]
              }
            }
          ]
        }
      },
      {
        "type": "Invocation",
        "value": {
          "target": {
            "type": "Class",
            "value": "com.wix.detox.espresso.DetoxMatcher"
          },
          "method": "matcherForSufficientlyVisible",
          "args": [
            {
              "type": "Integer",
              "value": 100
            }
          ]
        }
      },
      {
        "type": "Invocation",
        "value": {
          "target": {
            "type": "Class",
            "value": "com.wix.detox.espresso.DetoxAction"
          },
          "method": "scrollInDirectionStaleAtEdge",
          "args": [
            {
              "type": "Integer",
              "value": 4
            },
            {
              "type": "Double",
              "value": 50
            },
            {
              "type": "Double",
              "value": -1
            },
            {
              "type": "Double",
              "value": -1
            }
          ]
        }
      },
      {
        "type": "Invocation",
        "value": {
          "target": {
            "type": "Class",
            "value": "com.wix.detox.espresso.DetoxMatcher"
          },
          "method": "matcherForTestId",
          "args": [
            "scrollview",
            {
              "type": "boolean",
              "value": false
            }
          ]
        }
      }
    ]
  }
  stack: Object.scroll (/e2e/starter.test.js:14:8)
  Generator.next (<anonymous>)
  asyncGeneratorStep (/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
  _next (/node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9)
  /node_modules/@babel/runtime/helpers/asyncToGenerator.js:27:7
  new Promise (<anonymous>)
  Object.<anonymous> (/node_modules/@babel/runtime/helpers/asyncToGenerator.js:19:12)
  Promise.then.completed (/node_modules/jest-circus/build/utils.js:298:28)
  new Promise (<anonymous>)
  callAsyncCircusFn (/node_modules/jest-circus/build/utils.js:231:10)
  _callCircusTest (/node_modules/jest-circus/build/run.js:316:40)
  processTicksAndRejections (node:internal/process/task_queues:95:5)
  _runTest (/node_modules/jest-circus/build/run.js:252:3)
  _runTestsForDescribeBlock (/node_modules/jest-circus/build/run.js:126:9)
  _runTestsForDescribeBlock (/node_modules/jest-circus/build/run.js:121:9)
  run (/node_modules/jest-circus/build/run.js:71:3)
  runAndTransformResultsToJestFormat (/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
  jestAdapter (/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
  runTestInternal (/node_modules/jest-runner/build/runTest.js:367:16)
  runTest (/node_modules/jest-runner/build/runTest.js:444:34)

 RUNS  e2e/starter.test.js
13:23:01.826 detox[14722] i ws-server@61325 get
  data: {"type":"invoke","params":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxAssertion"},"method":"waitForAssertMatcherWithSearchAction","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":"matcherForTestId","args":["item-13",{"type":"boolean","value":false}]}}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForSufficientlyVisible","args":[{"type":"Integer","value":100}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxAction"},"method":"scrollInDirectionStaleAtEdge","args":[{"type":"Integer","value":4},{"type":"Double","value":50},{"type":"Double","value":-1},{"type":"Double","value":-1}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForTestId","args":["scrollview",{"type":"boolean","value":false}]}}]},"messageId":1}
13:23:01.826 detox[14722] i ws-server@61411 send
  data: {
    "type": "invoke",
    "params": {
      "target": {
        "type": "Class",
        "value": "com.wix.detox.espresso.DetoxAssertion"
      },
      "method": "waitForAssertMatcherWithSearchAction",
      "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": "matcherForTestId",
                  "args": [
                    "item-13",
                    {
                      "type": "boolean",
                      "value": false
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "Invocation",
          "value": {
            "target": {
              "type": "Class",
              "value": "com.wix.detox.espresso.DetoxMatcher"
            },
            "method": "matcherForSufficientlyVisible",
            "args": [
              {
                "type": "Integer",
                "value": 100
              }
            ]
          }
        },
        {
          "type": "Invocation",
          "value": {
            "target": {
              "type": "Class",
              "value": "com.wix.detox.espresso.DetoxAction"
            },
            "method": "scrollInDirectionStaleAtEdge",
            "args": [
              {
                "type": "Integer",
                "value": 4
              },
              {
                "type": "Double",
                "value": 50
              },
              {
                "type": "Double",
                "value": -1
              },
              {
                "type": "Double",
                "value": -1
              }
            ]
          }
        },
        {
          "type": "Invocation",
          "value": {
            "target": {
              "type": "Class",
              "value": "com.wix.detox.espresso.DetoxMatcher"
            },
            "method": "matcherForTestId",
            "args": [
              "scrollview",
              {
                "type": "boolean",
                "value": false
              }
            ]
          }
        }
      ]
    },
13:23:03.093 detox[14725] i child-process:SPAWN_STDERR s_glBindAttribLocation: bind attrib 0 name position
s_glBindAttribLocation: bind attrib 1 name color
s_glBindAttribLocation: bind attrib 2 name localCoord

13:23:11.821 detox[14725] i ws-client send message
  data: {"type":"currentStatus","params":{},"messageId":2}

 RUNS  e2e/starter.test.js
13:23:11.821 detox[14722] i ws-server@61325 get
  data: {"type":"currentStatus","params":{},"messageId":2}
13:23:11.822 detox[14722] i ws-server@61411 send
  data: {
    "type": "currentStatus",
    "params": {},
    "messageId": 2
 RUNS  e2e/starter.test.js
13:23:12.008 detox[14722] i ws-server@61411 get
  data: {"messageId":2,"type":"currentStatusResult","params":{"status":{"app_status":"idle"}}}
13:23:12.008 detox[14722] i ws-server@61325 send
  data: {
    "messageId": 2,
    "type": "currentStatusResult",
    "params": {
      "status": {
        "app_status": "idle"
      }
13:23:12.008 detox[14725] i ws-client get message
  data: {"messageId":2,"type":"currentStatusResult","params":{"status":{"app_status":"idle"}}}
   
13:23:12.011 detox[14725] i ws-client:APP_STATUS The app seems to be idle
13:23:22.012 detox[14725] i ws-client send message
  data: {"type":"currentStatus","params":{},"messageId":3}

 RUNS  e2e/starter.test.js
13:23:22.013 detox[14722] i ws-server@61325 get
  data: {"type":"currentStatus","params":{},"messageId":3}
13:23:22.013 detox[14722] i ws-server@61411 send
  data: {
    "type": "currentStatus",
    "params": {},
    "messageId": 3
  }
13:23:22.024 detox[14722] i ws-server@61411 get
  data: {"messageId":3,"type":"currentStatusResult","params":{"status":{"app_status":"busy","busy_resources":[{"name":"looper","description":{"thread":"\"LooperIdlingResource-81-mqt_js\" (JS Thread)","execution_type":"JavaScript code"}}]}}}
13:23:22.024 detox[14722] i ws-server@61325 send
  data: {
    "messageId": 3,
    "type": "currentStatusResult",
    "params": {
      "status": {
        "app_status": "busy",
        "busy_resources": [
          {
            "name": "looper",
            "description": {
              "thread": "\"LooperIdlingResource-81-mqt_js\" (JS Thread)",
              "execution_type": "JavaScript code"
            }
          }
        ]
      }
13:23:22.025 detox[14725] i ws-client get message
  data: {"messageId":3,"type":"currentStatusResult","params":{"status":{"app_status":"busy","busy_resources":[{"name":"looper","description":{"thread":"\"LooperIdlingResource-81-mqt_js\" (JS Thread)","execution_type":"JavaScript code"}}]}}}
   
13:23:22.025 detox[14725] i ws-client:APP_STATUS The app is busy with the following tasks:
• "LooperIdlingResource-81-mqt_js" (JS Thread) is executing (JavaScript code).

 RUNS  e2e/starter.test.js
13:23:22.601 detox[14722] i ws-server@61411 get
  data: {"messageId":1,"type":"invokeResult","params":{"result":null}}
13:23:22.601 detox[14722] i ws-server@61325 send
  data: {
    "messageId": 1,
    "type": "invokeResult",
    "params": {
      "result": null
13:23:22.601 detox[14725] i ws-client get message
  data: {"messageId":1,"type":"invokeResult","params":{"result":null}}
   
13:23:22.602 detox[14725] E ws-client wait for expectation while scroll 50 pixels down
13:23:22.602 detox[14725] E lifecycle test_fn
13:23:22.603 detox[14725] B artifacts-manager onTestDone
  args: ({"title":"should scroll to the last item","fullName":"Example should scroll to the last item","status":"passed","invocations":1})
13:23:22.603 detox[14725] E artifacts-manager onTestDone
13:23:22.604 detox[14725] E lifecycle should scroll to the last item
13:23:22.604 detox[14725] i lifecycle Example: should scroll to the last item [OK]
13:23:22.605 detox[14725] B artifacts-manager onRunDescribeFinish
  args: ({"name":"Example"})
13:23:22.606 detox[14725] E artifacts-manager onRunDescribeFinish
13:23:22.606 detox[14725] E lifecycle Example

13:23:22.606 detox[14725] B artifacts-manager onRunDescribeFinish
  args: ({"name":"ROOT_DESCRIBE_BLOCK"})
13:23:22.606 detox[14725] E artifacts-manager onRunDescribeFinish
13:23:22.606 detox[14725] E lifecycle run the tests
13:23:22.608 detox[14725] B lifecycle tear down environment
13:23:22.609 detox[14725] B artifacts-manager onBeforeCleanup
  args: ()
13:23:22.609 detox[14725] E artifacts-manager onBeforeCleanup
13:23:22.612 detox[14725] i ws-client send message
  data: {"type":"cleanup","params":{"stopRunner":true},"messageId":-49642}

 RUNS  e2e/starter.test.js
13:23:22.613 detox[14722] i ws-server@61325 get
  data: {"type":"cleanup","params":{"stopRunner":true},"messageId":-49642}
13:23:22.613 detox[14722] i ws-server@61411 send
  data: {
    "type": "cleanup",
    "params": {
      "stopRunner": true
    },
    "messageId": -49642
  }
13:23:22.618 detox[14722] i ws-server@61411 get
  data: {"messageId":-49642,"type":"cleanupDone","params":{}}
13:23:22.618 detox[14722] i ws-server@61325 send
  data: {
    "messageId": -49642,
    "type": "cleanupDone",
13:23:22.618 detox[14725] i ws-client get message
  data: {"messageId":-49642,"type":"cleanupDone","params":{}}
   

 RUNS  e2e/starter.test.js
13:23:22.621 detox[14722] i ws-server tester exited session a0cc53bb-f88b-1ff5-2aab-d10b1451b4f7
13:23:22.621 detox[14722] i ws-server@61411 send
  data: {
    "type": "testerDisconnected",
    "messageId": -1
13:23:22.622 detox[14725] i child-process:SPAWN_KILL sending SIGINT to: /Users/llienard/Library/Android/sdk/platform-tools/adb -s emulator-17774 shell am instrument -w -r -e detoxServer ws://localhost:61318 -e detoxSessionId a0cc53bb-f88b-1ff5-2aab-d10b1451b4f7 -e debug false com.awesomeproject.test/androidx.test.runner.AndroidJUnitRunner

13:23:22.625 detox[14725] i child-process:SPAWN_END /Users/llienard/Library/Android/sdk/platform-tools/adb -s emulator-17774 shell am instrument -w -r -e detoxServer ws://localhost:61318 -e detoxSessionId a0cc53bb-f88b-1ff5-2aab-d10b1451b4f7 -e debug false com.awesomeproject.test/androidx.test.runner.AndroidJUnitRunner terminated with SIGINT

13:23:22.625 detox[14725] i child-process:EXEC_CMD "/Users/llienard/Library/Android/sdk/platform-tools/adb" -s emulator-17774 reverse --remove tcp:61318
13:23:22.627 detox[14725] i ipc dispatching event to  primary-14722 /tmp/detox.primary-14722  :  deallocateDevice , {
  deviceCookie: {
    id: 'emulator-17774',
    adbName: 'emulator-17774',
    name: 'emulator-17774 (Pixel_4_XL_API_34)'
  }
}

 RUNS  e2e/starter.test.js
13:23:22.628 detox[14722] i ipc received event of :  deallocateDevice {
  deviceCookie: {
    id: 'emulator-17774',
    adbName: 'emulator-17774',
    name: 'emulator-17774 (Pixel_4_XL_API_34)'
  }
}
13:23:22.628 detox[14722] B device@0 free: emulator-17774
  data: {}
13:23:22.631 detox[14725] i ipc ## received events ##7774
13:23:22.632 detox[14725] i ipc detected event deallocateDeviceDone {}
13:23:22.632 detox[14725] E lifecycle tear down environment
13:23:22.632 detox[14725] E lifecycle e2e/starter.test.js
 PASS  e2e/starter.test.js (33.899 s)
  Example
    ✓ should scroll to the last item (21226 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        34.112 s
Ran all test suites.
13:23:22.639 detox[14725] i ipc dispatching event to  primary-14722 /tmp/detox.primary-14722  :  reportTestResults , {
  testResults: [
    {
      success: true,
      testFilePath: '/Users/llienard/WebstormProjects/exampleSectionList/AwesomeProject/e2e/starter.test.js',
      testExecError: undefined,
      isPermanentFailure: false
    }
  ]
}
13:23:22.639 detox[14722] i ipc received event of :  reportTestResults {
  testResults: [
    {
      success: true,
      testFilePath: '/Users/llienard/WebstormProjects/exampleSectionList/AwesomeProject/e2e/starter.test.js',
      isPermanentFailure: false
    }
  ]
}
13:23:22.640 detox[14722] i ipc dispatching event to socket  :  reportTestResultsDone {
  testResults: [
    {
      success: true,
      testFilePath: '/Users/llienard/WebstormProjects/exampleSectionList/AwesomeProject/e2e/starter.test.js',
      isPermanentFailure: false
    }
  ]
}
13:23:22.640 detox[14725] i ipc ## received events ##
13:23:22.640 detox[14722] i ipc broadcasting event to all known sockets listening to  /tmp/detox.primary-14722  :   sessionStateUpdate {
  testResults: [
    {
      success: true,
      testFilePath: '/Users/llienard/WebstormProjects/exampleSectionList/AwesomeProject/e2e/starter.test.js',
      isPermanentFailure: false
    }
  ]
}
13:23:22.641 detox[14725] i ipc detected event reportTestResultsDone {
  testResults: [
    {
      success: true,
      testFilePath: '/Users/llienard/WebstormProjects/exampleSectionList/AwesomeProject/e2e/starter.test.js',
      isPermanentFailure: false
    }
  ]
}
13:23:22.655 detox[14725] i ipc connection closed primary-14722 /tmp/detox.primary-14722 0 tries remaining of 0
13:23:22.655 detox[14725] i ipc secondary-14725 exceeded connection rety amount of  or stopRetrying flag set.
13:23:22.656 detox[14722] i ipc socket disconnected secondary-14725
13:23:22.677 detox[14725] i child-process:EXEC_SUCCESS 
13:23:22.749 detox[14722] E lifecycle jest --config e2e/jest.config.js
13:23:22.749 detox[14722] B device cleanup
  args: ()
13:23:23.119 detox[14722] E device cleanup
13:23:23.120 detox[14722] i ws-server Detox server has been closed gracefully

Device logs

Device logs
--------- beginning of main
05-28 13:15:05.011  3372  3438 D CompatibilityChangeReporter: Compat change id reported: 289878283; UID 10438; state: ENABLED
05-28 13:15:05.018  3372  3372 D Detox.RNMarker: CONTENT_APPEARED (AwesomeProject)
05-28 13:15:05.055  3372  3372 I Detox   : Wait is over: App is now idle!
05-28 13:15:05.055  3372  3406 I DetoxWSClient: Sending out action 'ready' (ID #-1000)
05-28 13:15:05.056  3372  3406 I DetoxDispatcher: Done with action 'isReady'
05-28 13:15:05.177  3372  3410 D DetoxWSClient: Received action 'reactNativeReload' (ID #-1000, params={})
05-28 13:15:05.177  3372  3406 I DetoxDispatcher: Handling action 'reactNativeReload' (ID #-1000)...
05-28 13:15:05.183  3372  3406 I DetoxRNExt: Reloading React Native
05-28 13:15:05.183  3372  3406 D IdlingRegistry: Unregistering idling resources: [com.wix.detox.reactnative.idlingresources.timers.TimersIdlingResource@6910670, com.wix.detox.reactnative.idlingresources.BridgeIdlingResource@6560de9, com.wix.detox.reactnative.idlingresources.uimodule.UIModuleIdlingResource@6171a6e, com.wix.detox.reactnative.idlingresources.AnimatedModuleIdlingResource@f7f50f]
05-28 13:15:05.184  3372  3406 D IdlingRegistry: Unregistering idling resources: [com.wix.detox.reactnative.idlingresources.NetworkIdlingResource@ed8199c]
05-28 13:15:05.191  3372  3372 D Detox.RNMarker: DOWNLOAD_START (null)
05-28 13:15:05.220  3372  3417 E OpenGLRenderer: Unable to match the desired swap behavior.
05-28 13:15:05.513  3372  3426 D Detox.RNMarker: DOWNLOAD_END ({"url":"http:\/\/localhost:8081\/index.bundle?platform=android&dev=true&lazy=true&minify=false&app=com.awesomeproject&modulesOnly=false&runModule=true","filesChangedCount":0})
05-28 13:15:05.513  3372  3372 W WindowOnBackDispatcher: sendCancelIfRunning: isInProgress=falsecallback=android.view.ViewRootImpl$$ExternalSyntheticLambda17@34c72cb
05-28 13:15:05.519  3372  3372 D Detox.RNMarker: REACT_BRIDGE_LOADING_START (null)
05-28 13:15:05.521  3372  3372 D Detox.RNMarker: DESTROY_CATALYST_INSTANCE_START (null)
05-28 13:15:05.521  3372  3372 W unknown:ReactNative: Packager connection already open, nooping.
05-28 13:15:05.525  3372  3506 D Detox.RNMarker: CREATE_REACT_CONTEXT_START (HermesExecutorDebug)
05-28 13:15:05.525  3372  3506 D Detox.RNMarker: PROCESS_PACKAGES_START (null)
05-28 13:15:05.528  3372  3506 D Detox.RNMarker: CREATE_MODULE_START (JSCHeapCapture)
05-28 13:15:05.528  3372  3506 D Detox.RNMarker: CREATE_MODULE_END (JSCHeapCapture)
05-28 13:15:05.534  3372  3506 D Detox.RNMarker: CREATE_MODULE_START (FrescoModule)
05-28 13:15:05.534  3372  3506 D Detox.RNMarker: CREATE_MODULE_END (FrescoModule)
05-28 13:15:05.535  3372  3506 D Detox.RNMarker: PROCESS_PACKAGES_END (null)
05-28 13:15:05.535  3372  3506 D Detox.RNMarker: CREATE_CATALYST_INSTANCE_START (null)
05-28 13:15:05.553  3372  3506 D Detox.RNMarker: CREATE_CATALYST_INSTANCE_END (null)
05-28 13:15:05.554  3372  3508 D Detox.RNMarker: CREATE_REACT_CONTEXT_END (null)
05-28 13:15:05.554  3372  3506 D Detox.RNMarker: PRE_RUN_JS_BUNDLE_START (null)
05-28 13:15:05.554  3372  3508 D Detox.RNMarker: RUN_JS_BUNDLE_START (/index.bundle?platform=android&dev=true&lazy=true&minify=false&app=com.awesomeproject&modulesOnly=false&runModule=true)
05-28 13:15:05.558  3372  3372 W unknown:ReactNative: Packager connection already open, nooping.
05-28 13:15:05.558  3372  3509 D Detox.RNMarker: CREATE_MODULE_START (UIManager)
05-28 13:15:05.562  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.debuggingoverlay.DebuggingOverlayManager
05-28 13:15:05.568  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.uimanager.LayoutShadowNode
05-28 13:15:05.573  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.drawer.ReactDrawerLayoutManager
05-28 13:15:05.578  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.scroll.ReactHorizontalScrollViewManager
05-28 13:15:05.580  3372  3511 W unknown:ReactNative: CatalystInstanceImpl.destroy() end
05-28 13:15:05.580  3372  3511 D Detox.RNMarker: DESTROY_CATALYST_INSTANCE_END (null)
05-28 13:15:05.584  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.scroll.ReactHorizontalScrollContainerViewManager
05-28 13:15:05.586  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.progressbar.ReactProgressBarViewManager
05-28 13:15:05.588  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.progressbar.ProgressBarShadowNode
05-28 13:15:05.590  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.scroll.ReactScrollViewManager
05-28 13:15:05.594  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.switchview.ReactSwitchManager
05-28 13:15:05.597  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.switchview.ReactSwitchManager$ReactSwitchShadowNode
05-28 13:15:05.598  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.swiperefresh.SwipeRefreshLayoutManager
05-28 13:15:05.600  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.frescosupport.FrescoBasedReactTextInlineImageViewManager
05-28 13:15:05.602  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.frescosupport.FrescoBasedReactTextInlineImageShadowNode
05-28 13:15:05.604  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.image.ReactImageManager
05-28 13:15:05.607  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.modal.ReactModalHostManager
05-28 13:15:05.609  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.modal.ModalHostShadowNode
05-28 13:15:05.610  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.ReactRawTextManager
05-28 13:15:05.611  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.ReactRawTextShadowNode
05-28 13:15:05.612  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.textinput.ReactTextInputManager
05-28 13:15:05.618  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.textinput.ReactTextInputShadowNode
05-28 13:15:05.622  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.ReactTextViewManager
05-28 13:15:05.625  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.ReactTextShadowNode
05-28 13:15:05.626  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.view.ReactViewManager
05-28 13:15:05.632  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.ReactVirtualTextViewManager
05-28 13:15:05.633  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.ReactVirtualTextShadowNode
05-28 13:15:05.634  3372  3509 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.unimplementedview.ReactUnimplementedViewManager
05-28 13:15:05.636  3372  3509 D Detox.RNMarker: CREATE_MODULE_END (UIManager)
05-28 13:15:05.637  3372  3509 D Detox.RNMarker: REACT_BRIDGE_LOADING_END (null)
05-28 13:15:05.637  3372  3372 D DetoxRNLoading: Listener-proxy method called: onReactContextInitialized
05-28 13:15:05.637  3372  3372 I DetoxRNLoading: Got new RN-context async'ly through listener
05-28 13:15:05.639  3372  3372 D DetoxRNLoading: Listener-proxy method called: equals
05-28 13:15:05.639  3372  3406 I DetoxRNIdleRes: Setting up Espresso Idling Resources for React Native
05-28 13:15:05.640  3372  3406 D IdlingRegistry: Unregistering idling resources: [null, null, null, null]
05-28 13:15:05.641  3372  3372 D Detox.RNMarker: CREATE_MODULE_START (Timing)
05-28 13:15:05.642  3372  3372 D Detox.RNMarker: CREATE_MODULE_END (Timing)
05-28 13:15:05.642  3372  3406 D IdlingRegistry: Registering idling resources: [com.wix.detox.reactnative.idlingresources.timers.TimersIdlingResource@6c3a4bb, com.wix.detox.reactnative.idlingresources.BridgeIdlingResource@1204dd8, com.wix.detox.reactnative.idlingresources.uimodule.UIModuleIdlingResource@f892531, com.wix.detox.reactnative.idlingresources.AnimatedModuleIdlingResource@b9ff416]
05-28 13:15:05.643  3372  3406 D Detox.RNMarker: CREATE_MODULE_START (Networking)
05-28 13:15:05.644  3372  3406 D Detox.RNMarker: CREATE_MODULE_END (Networking)
05-28 13:15:05.645  3372  3406 D IdlingRegistry: Registering idling resources: [com.wix.detox.reactnative.idlingresources.NetworkIdlingResource@e7dd197]
05-28 13:15:05.645  3372  3406 D AsyncStorageIR: Checking whether a custom IR for Async-Storage is required... (legacy=false)
05-28 13:15:05.645  3372  3406 D DetoxRNHelpers: Native RN module resolution (class com.reactnativecommunity.asyncstorage.AsyncStorageModule): no such class
05-28 13:15:05.645  3372  3406 D AsyncStorageIR: Checking whether a custom IR for Async-Storage is required... (legacy=true)
05-28 13:15:05.646  3372  3406 D DetoxRNHelpers: Native RN module resolution (class com.facebook.react.modules.storage.AsyncStorageModule): no such class
05-28 13:15:05.647  3372  3372 I Detox   : UIManagerModule is busy
05-28 13:15:05.648  3372  3372 D Detox.RNMarker: CREATE_MODULE_START (NativeAnimatedModule)
05-28 13:15:05.648  3372  3372 D Detox.RNMarker: CREATE_MODULE_END (NativeAnimatedModule)
05-28 13:15:05.649  3372  3406 I DetoxWSClient: Sending out action 'ready' (ID #-1000)
05-28 13:15:05.649  3372  3406 I DetoxDispatcher: Done with action 'reactNativeReload'
05-28 13:15:05.664  3372  3410 D DetoxWSClient: Received action 'invoke' (ID #1, params={"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxAssertion"},"method":"waitForAssertMatcherWithSearchAction","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":"matcherForTestId","args":["item-13",{"type":"boolean","value":false}]}}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForSufficientlyVisible","args":[{"type":"Integer","value":100}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxAction"},"method":"scrollInDirectionStaleAtEdge","args":[{"type":"Integer","value":4},{"type":"Double","value":50},{"type":"Double","value":-1},{"type":"Double","value":-1}]}},{"type":"Invocation","value":{"target":{"type":"Class","value":"com.wix.detox.espresso.DetoxMatcher"},"method":"matcherForTestId","args":["scrollview",{"type":"boolean","value":false}]}}]})
05-28 13:15:05.667  3372  3406 I DetoxDispatcher: Handling action 'invoke' (ID #1)...
05-28 13:15:05.670  3372  3406 D Detox   : class com.wix.detox.espresso.DetoxMatcher, matcherForTestId, [item-13, false]
05-28 13:15:05.674  3372  3406 D Detox   : class androidx.test.espresso.Espresso, onView, [(view.getTag() is "item-13" and view has effective visibility <VISIBLE>)]
05-28 13:15:05.674  3372  3406 D CompatibilityChangeReporter: Compat change id reported: 247079863; UID 10438; state: ENABLED
05-28 13:15:05.675  3372  3406 D Detox   : class com.wix.detox.espresso.DetoxMatcher, matcherForSufficientlyVisible, [100]
05-28 13:15:05.676  3372  3406 D Detox   : class com.wix.detox.espresso.DetoxAction, scrollInDirectionStaleAtEdge, [4, 50.0, -1.0, -1.0]
05-28 13:15:05.677  3372  3406 D Detox   : class com.wix.detox.espresso.DetoxMatcher, matcherForTestId, [scrollview, false]
05-28 13:15:05.678  3372  3406 D Detox   : class com.wix.detox.espresso.DetoxAssertion, waitForAssertMatcherWithSearchAction, [androidx.test.espresso.ViewInteraction@3386f84, (view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area), com.wix.detox.espresso.scroll.DetoxScrollActionStaleAtEdge@519e36d, (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)]
05-28 13:15:05.682  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (NativePerformanceCxx)
05-28 13:15:05.685  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (NativePerformanceObserverCxx)
05-28 13:15:05.691  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (PlatformConstants)
05-28 13:15:05.691  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (PlatformConstants)
05-28 13:15:05.691  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (PlatformConstants)
05-28 13:15:05.697  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (PlatformConstants)
05-28 13:15:05.699  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (LogBox)
05-28 13:15:05.699  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (LogBox)
05-28 13:15:05.700  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (LogBox)
05-28 13:15:05.701  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (LogBox)
05-28 13:15:05.738  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (Timing)
05-28 13:15:05.739  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (Timing)
05-28 13:15:05.757  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (AppState)
05-28 13:15:05.757  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (AppState)
05-28 13:15:05.758  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (AppState)
05-28 13:15:05.759  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (AppState)
05-28 13:15:05.763  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (SourceCode)
05-28 13:15:05.764  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (SourceCode)
05-28 13:15:05.764  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (SourceCode)
05-28 13:15:05.765  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (SourceCode)
05-28 13:15:05.767  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (BlobModule)
05-28 13:15:05.768  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (BlobModule)
05-28 13:15:05.768  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (BlobModule)
05-28 13:15:05.770  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (BlobModule)
05-28 13:15:05.771  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (WebSocketModule)
05-28 13:15:05.772  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (WebSocketModule)
05-28 13:15:05.772  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (WebSocketModule)
05-28 13:15:05.774  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (WebSocketModule)
05-28 13:15:05.781  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (DevSettings)
05-28 13:15:05.782  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (DevSettings)
05-28 13:15:05.782  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (DevSettings)
05-28 13:15:05.785  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (DevSettings)
05-28 13:15:05.786  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (DevToolsSettingsManager)
05-28 13:15:05.787  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (DevToolsSettingsManager)
05-28 13:15:05.787  3372  3513 D TrafficStats: tagSocket(106) with statsTag=0xffffffff, statsUid=-1
05-28 13:15:05.788  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (DevToolsSettingsManager)
05-28 13:15:05.790  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (DevToolsSettingsManager)
05-28 13:15:05.794  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (RedBox)
05-28 13:15:05.798  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (Networking)
05-28 13:15:05.799  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (Networking)
05-28 13:15:05.802  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (Appearance)
05-28 13:15:05.802  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (Appearance)
05-28 13:15:05.802  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (Appearance)
05-28 13:15:05.804  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (Appearance)
05-28 13:15:05.805  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (DevLoadingView)
05-28 13:15:05.805  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (DevLoadingView)
05-28 13:15:05.805  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (DevLoadingView)
05-28 13:15:05.806  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (DevLoadingView)
05-28 13:15:05.809  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (BugReporting)
05-28 13:15:05.812  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (HeadlessJsTaskSupport)
05-28 13:15:05.813  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (HeadlessJsTaskSupport)
05-28 13:15:05.813  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (HeadlessJsTaskSupport)
05-28 13:15:05.814  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (HeadlessJsTaskSupport)
05-28 13:15:05.820  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (UIManager)
05-28 13:15:06.094  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (UIManager)
05-28 13:15:06.106  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (DeviceInfo)
05-28 13:15:06.106  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (DeviceInfo)
05-28 13:15:06.107  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (DeviceInfo)
05-28 13:15:06.110  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (DeviceInfo)
05-28 13:15:06.136  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (ImageLoader)
05-28 13:15:06.136  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (ImageLoader)
05-28 13:15:06.136  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (ImageLoader)
05-28 13:15:06.138  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (ImageLoader)
05-28 13:15:06.144  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (SoundManager)
05-28 13:15:06.145  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (SoundManager)
05-28 13:15:06.145  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (SoundManager)
05-28 13:15:06.146  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (SoundManager)
05-28 13:15:06.153  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (IntentAndroid)
05-28 13:15:06.153  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (IntentAndroid)
05-28 13:15:06.154  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (IntentAndroid)
05-28 13:15:06.155  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (IntentAndroid)
05-28 13:15:06.157  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (LinkingManager)
05-28 13:15:06.163  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (DeviceEventManager)
05-28 13:15:06.164  3372  3508 D Detox.RNMarker: CREATE_MODULE_START (DeviceEventManager)
05-28 13:15:06.164  3372  3508 D Detox.RNMarker: CREATE_MODULE_END (DeviceEventManager)
05-28 13:15:06.165  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (DeviceEventManager)
05-28 13:15:06.171  3372  3508 D Detox.RNMarker: RUN_JS_BUNDLE_END (/index.bundle?platform=android&dev=true&lazy=true&minify=false&app=com.awesomeproject&modulesOnly=false&runModule=true)
05-28 13:15:06.178  3372  3508 I ReactNativeJS: Running "AwesomeProject" with {"rootTag":31}
05-28 13:15:06.183  3372  3515 D TrafficStats: tagSocket(106) with statsTag=0xffffffff, statsUid=-1
05-28 13:15:06.341  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (NativeReactNativeFeatureFlagsCxx)
05-28 13:15:06.343  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (NativeAnimatedModule)
05-28 13:15:06.348  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_END (NativeAnimatedModule)
05-28 13:15:06.370  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (FrameRateLogger)
05-28 13:15:06.374  3372  3508 D Detox.RNMarker: NATIVE_MODULE_SETUP_START (KeyboardObserver)
05-28 13:15:06.588  3372  3372 I Detox   : UIManagerModule is busy
05-28 13:15:06.601  3372  3372 D Detox.RNMarker: CONTENT_APPEARED (AwesomeProject)
05-28 13:15:06.626  3372  3417 D EGL_emulation: app_time_stats: avg=778.42ms min=9.15ms max=1544.70ms count=4
05-28 13:15:06.652  3372  3372 I Detox   : UIManagerModule is busy
05-28 13:15:06.669  3372  3372 W .awesomeproject: Accessing hidden method Landroid/view/WindowManagerGlobal;->getInstance()Landroid/view/WindowManagerGlobal; (unsupported, reflection, allowed)
05-28 13:15:06.669  3372  3372 W .awesomeproject: Accessing hidden field Landroid/view/WindowManagerGlobal;->mViews:Ljava/util/ArrayList; (unsupported, reflection, allowed)
05-28 13:15:06.669  3372  3372 W .awesomeproject: Accessing hidden field Landroid/view/WindowManagerGlobal;->mParams:Ljava/util/ArrayList; (unsupported, reflection, allowed)
05-28 13:15:06.672  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:06.679  3372  3406 I UiAutomation: Initialized for user 0 on display 0
05-28 13:15:06.687  3372  3516 V UiAutomation: Init UiAutomation@ab8ece5[id=2, displayId=0, flags=0]
05-28 13:15:06.690  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:07.056  3372  3406 W ContextImpl: Failed to ensure /dev/null/Android/media/com.awesomeproject: java.lang.SecurityException: Invalid mkdirs path: /dev/null/Android/media/com.awesomeproject is not a known app path.
05-28 13:15:07.233  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:07.234  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:07.235  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:07.235  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:07.634  3372  3417 D EGL_emulation: app_time_stats: avg=88.80ms min=9.90ms max=734.61ms count=11
05-28 13:15:07.817  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:08.449  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:08.452  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:08.749  3372  3417 D EGL_emulation: app_time_stats: avg=31.68ms min=14.02ms max=283.40ms count=33
05-28 13:15:09.019  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:09.019  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:09.020  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:09.020  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:09.801  3372  3417 D EGL_emulation: app_time_stats: avg=24.26ms min=1.38ms max=199.70ms count=39
05-28 13:15:10.247  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:10.249  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:10.802  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:10.803  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:10.803  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:10.804  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:11.000  3372  3417 D EGL_emulation: app_time_stats: avg=33.27ms min=1.31ms max=265.39ms count=35
05-28 13:15:11.381  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:12.098  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:12.100  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:12.116  3372  3417 D EGL_emulation: app_time_stats: avg=28.11ms min=1.46ms max=148.13ms count=38
05-28 13:15:12.619  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:12.619  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:12.620  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:12.620  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:13.116  3372  3417 D EGL_emulation: app_time_stats: avg=31.82ms min=15.12ms max=232.64ms count=30
05-28 13:15:13.197  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:13.833  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:13.835  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:14.132  3372  3417 D EGL_emulation: app_time_stats: avg=33.12ms min=14.38ms max=282.87ms count=29
05-28 13:15:14.401  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:14.402  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:14.402  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:14.403  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:14.999  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:15.150  3372  3417 D EGL_emulation: app_time_stats: avg=25.88ms min=11.55ms max=201.22ms count=38
05-28 13:15:15.628  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:15.630  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:15.654  3372  3410 D DetoxWSClient: Received action 'currentStatus' (ID #2, params={})
05-28 13:15:15.655  3372  3407 I DetoxDispatcher: Handling action 'currentStatus' (ID #2)...
05-28 13:15:15.658  3372  3407 I DetoxWSClient: Sending out action 'currentStatusResult' (ID #2)
05-28 13:15:15.658  3372  3407 I DetoxDispatcher: Done with action 'currentStatus'
05-28 13:15:16.166  3372  3417 D EGL_emulation: app_time_stats: avg=26.78ms min=1.27ms max=267.20ms count=34
05-28 13:15:16.184  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:16.185  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:16.185  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:16.186  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:16.764  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:17.185  3372  3417 D EGL_emulation: app_time_stats: avg=27.53ms min=14.84ms max=203.57ms count=34
05-28 13:15:17.395  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:17.396  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:17.968  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:17.968  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:17.969  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:17.969  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:18.185  3372  3417 D EGL_emulation: app_time_stats: avg=34.21ms min=1.16ms max=299.89ms count=27
05-28 13:15:18.535  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:19.186  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:19.188  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:19.200  3372  3417 D EGL_emulation: app_time_stats: avg=22.36ms min=1.31ms max=82.27ms count=39
05-28 13:15:19.787  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:19.788  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:19.788  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:19.788  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:20.241  3372  3417 D EGL_emulation: app_time_stats: avg=28.41ms min=1.16ms max=285.39ms count=27
05-28 13:15:20.998  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:21.000  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:21.299  3372  3417 D EGL_emulation: app_time_stats: avg=27.48ms min=1.31ms max=283.74ms count=32
05-28 13:15:21.568  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:21.569  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:21.569  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:21.569  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:22.317  3372  3417 D EGL_emulation: app_time_stats: avg=26.02ms min=13.84ms max=201.19ms count=38
05-28 13:15:22.782  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:22.785  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:23.317  3372  3417 D EGL_emulation: app_time_stats: avg=28.78ms min=1.13ms max=283.15ms count=32
05-28 13:15:23.351  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:23.351  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:23.352  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:23.352  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:23.951  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:24.317  3372  3417 D EGL_emulation: app_time_stats: avg=27.35ms min=14.04ms max=200.53ms count=34
05-28 13:15:24.579  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:24.581  3372  3372 D takeScreenshot: Found 1 global views to redraw
05-28 13:15:25.136  3372  3372 I ViewInteraction: Performing 'scrollInDirectionStaleAtEdge' action on view (view.getTag() is "scrollview" and view has effective visibility <VISIBLE>)
05-28 13:15:25.136  3372  3372 D DetoxScrollHelper: prescroll amountDP=50.0 amountPx=175 scrollableRangePx=2269 times=0 remainder=175
05-28 13:15:25.137  3372  3372 D DetoxScrollHelper: System gesture insets: Insets{left=0, top=84, right=0, bottom=168} minX=0 minY=84 maxX=1433.0 maxY=2697.0 currentX=720 currentY=2434
05-28 13:15:25.137  3372  3372 D DetoxScrollHelper: scroll Point(720, 2518) --> Point(720, 2315)
05-28 13:15:25.334  3372  3417 D EGL_emulation: app_time_stats: avg=35.00ms min=1.64ms max=266.60ms count=27
05-28 13:15:25.665  3372  3410 D DetoxWSClient: Received action 'currentStatus' (ID #3, params={})
05-28 13:15:25.666  3372  3407 I DetoxDispatcher: Handling action 'currentStatus' (ID #3)...
05-28 13:15:25.669  3372  3407 I DetoxWSClient: Sending out action 'currentStatusResult' (ID #3)
05-28 13:15:25.670  3372  3407 I DetoxDispatcher: Done with action 'currentStatus'
05-28 13:15:25.685  3372  3372 W UiControllerImpl: Waiting for: MOTION_INJECTION_HAS_COMPLETED for 100 iterations.
05-28 13:15:26.363  3372  3372 I ViewInteraction: Checking 'MatchesViewAssertion(Detox){viewMatcher=(view has effective visibility <VISIBLE> and view.getGlobalVisibleRect() covers at least <100> percent of the view's area)}' assertion on view (view.getTag() is "item-13" and view has effective visibility <VISIBLE>)
05-28 13:15:26.363  3372  3406 I DetoxWSClient: Sending out action 'invokeResult' (ID #1)
05-28 13:15:26.364  3372

More data, please!

Mobile state when test succeeds:

image
@lclnrd lclnrd changed the title Scrollview item wrongly considered visible [Android] Scrollview item wrongly considered visible May 28, 2024
@MaxTibs
Copy link

MaxTibs commented May 29, 2024

Same issue here.

I've found a workaround to this issue seems to be to use getAttributes function from the target and scrollview elements, then check if the target is within the scroll view.

However, I'm quite surprise this is not handled by detox toBeVisible function. Improvement to be made?

Copy link

Hello! We appreciate you bringing this issue to our attention.
It looks like this could be a valuable addition or fix to our project.
We believe that this feature would benefit greatly from contributions from the community,
even from first-time contributors.

If you're interested in contributing to this feature,
please take a look at our contribution guide.
It has all the information you need to know about how to submit a pull request and contribute to our project.

You're also welcome to join our Discord server
and discuss this feature with the collaborators or other contributors under the channel 'contributions'.

Please feel free to reach out to us if you have any questions, or need help with anything.
We appreciate your feedback and look forward to working with you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants