diff --git a/test/samples/Tester.cpp b/test/samples/Tester.cpp
index ed1b16458710a9a37d6016368c442d373fac9b3d..99f9b1fb03534b8f66eb09cca13d4aebc412b453 100644
--- a/test/samples/Tester.cpp
+++ b/test/samples/Tester.cpp
@@ -61,7 +61,7 @@ bool MockCallback::waitForParsingComplete()
     std::unique_lock<compat::Mutex> lock{ m_parsingMutex };
     // Wait for a while, generating snapshots can be heavy...
     return m_parsingCompleteVar.wait_for( lock, std::chrono::seconds{ 20 }, [this]() {
-        return m_parserDone;
+        return m_parserDone && m_discoveryCompleted;
     });
 }
 
@@ -109,18 +109,18 @@ void MockCallback::onDiscoveryCompleted()
 {
     std::lock_guard<compat::Mutex> lock( m_parsingMutex );
     m_discoveryCompleted = true;
+    m_parsingCompleteVar.notify_all();
 }
 
 void MockCallback::onParsingStatsUpdated( uint32_t done, uint32_t scheduled )
 {
-    if ( done == scheduled )
-    {
-        std::lock_guard<compat::Mutex> lock( m_parsingMutex );
-        if ( m_discoveryCompleted == false )
-            return;
-        m_parserDone = true;
-        m_parsingCompleteVar.notify_all();
-    }
+    std::lock_guard<compat::Mutex> lock( m_parsingMutex );
+
+    m_parserDone = done == scheduled;
+    if ( m_parserDone == false )
+        return;
+
+    m_parsingCompleteVar.notify_all();
 }
 
 void MockCallback::onMediaThumbnailReady( MediaPtr media, ThumbnailSizeType,