diff --git a/scripts/py_matter_yamltests/matter_yamltests/runner.py b/scripts/py_matter_yamltests/matter_yamltests/runner.py
index f87f94d..6f201c8 100644
--- a/scripts/py_matter_yamltests/matter_yamltests/runner.py
+++ b/scripts/py_matter_yamltests/matter_yamltests/runner.py
@@ -144,8 +144,8 @@
                 continue
 
             loop = asyncio.get_event_loop()
-            result = loop.run_until_complete(asyncio.wait_for(
-                self._run(parser, runner_config), parser.timeout))
+            result = loop.run_until_complete(
+                self._run_with_timeout(parser, runner_config))
             if isinstance(result, Exception):
                 raise (result)
             elif not result:
@@ -157,11 +157,20 @@
 
         return parser_builder.done
 
-    async def _run(self, parser: TestParser, config: TestRunnerConfig):
+    async def _run_with_timeout(self, parser: TestParser, config: TestRunnerConfig):
         status = True
         try:
             await self.start()
+            status = await asyncio.wait_for(self._run(parser, config), parser.timeout)
+        except Exception as exception:
+            status = exception
+        finally:
+            await self.stop()
+            return status
 
+    async def _run(self, parser: TestParser, config: TestRunnerConfig):
+        status = True
+        try:
             hooks = config.hooks
             hooks.test_start(parser.filename, parser.name, parser.tests.count)
 
@@ -214,5 +223,4 @@
         except Exception as exception:
             status = exception
         finally:
-            await self.stop()
             return status
