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
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.
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:
The text was updated successfully, but these errors were encountered:
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?
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!
What happened?
Given a simple screen composed of a
Scrollview
and a siblingBottomView
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 theBottomView
.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 aSectionList
orScrollView
. But it's working when using aFlatList
.What was the expected behaviour?
The test should succeed and the
item-13
should be 100% visible.Was it tested on latest Detox?
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
Device logs
Device logs
More data, please!
Mobile state when test succeeds:
The text was updated successfully, but these errors were encountered: