Hi,
Something to add to what was said by Robert:
Exact solution on how to do a verification depends on the actual design and behaviour of your tested application. You may need to spend some time to figure this out or/and talk with developers and work-out an approach that will work for you and them.
Verification of dynamic objects on the web page is one of the most complex and unstable activities. The case is that in order to do a validation, TestComplete must: a) find the object (this requires some time) and b) process the found object as needed (and this also requires some time). The above two actions must be done within the life span of the tested object, otherwise the object either will not be found or there will be an error if the object is destroyed while TestComplete tries to access some of its properties.
Don't forget, that all the above happens in the concurrent environment and that Windows is not a realtime OS. This means that the less your test machine is loaded with the processes that are not required for the actual test, the higher the chances that the browser will have enough time to create and display required object and that TestComplete will have time to find and process this object.
As for the possible implementation:
If the popup message always exists on the page but is just made hidden or visible, then your task is easier. You may get a reference to the popup beforehand and than use a call to the WaitProperty() method (see help for more details) to wait for the message to become visible within some time interval. (Note, you need to investigate or ask developers about what must be checked to guarantee that the message is visible because different (inconsistent) methods may be used by developers to hide and display the element on the web page.)
If the popup message does not exist all the time on the page but is created dynamically at some moment of time, then the task is more prone to false results. In this case you must wait for the object existence for some time (via FindChildEx() or WaitAliasChild() methods) and proceed correspondingly.
Much better option for both cases is to talk to developers and ask them to implement some hidden property on the page and set this property to, say, false on page load and switch it to true after the message was shown. In this case, as the property exists on the page all the time, you will just need to check its value from your test code. The only disadvantage of this approach is that it is not guaranteed that the message was actually displayed on the screen. Your best action in this case is to wait for the property value change in the loop and within this loop check if the message is displayed on the screen. If the message was displayed, then everything is fine. If the value of the property was changed from false to true but test code did not detect message on the screen, you may post a warning to test log to draw your attention to this fact and later manual investigation.