I know for certain that the parent item is visible (it's the whole page itself)
This does not mean that the item and the path to the item was added to the cache.
Only if the parent item or an item within the parent folder was used and found during the test the parent folder is added to the cache.
It seems strange to have to check for the parent exists first to get it into the cache.
This is only necessary if no item was used during the test and the parent doesn't exist in the cache.
which if it's three rooted folders level down for example, do I have to add that exists for each level?
No, if one of the child elements was found all repository level down should be added to the cache.
Parent item exists? TRUE - no need to wait 30 seconds, I know this instantly
Child item exists? FALSE - I will look for 2 seconds to if it's there. No need to wait the 30 seconds for the parent item as I know it's TRUE.
Only if the parent item was added to the cache Ranorex knows that this item already exists. If Ranorex has never searched the Parent element Ranorex has no idea which item cannot be found. That's the reason that Ranorex uses the effective timeout in order to search for the item.
I'm assuming it doesn't actually work that way, but if that's the case then what's the intended use of Use Cache?
If the setting "Use Cache" is disabled no items will be added to the cache and Ranorex will use the effective timeout for each element.
I hope I could answer your questions.