diff --git a/end2end-tests/tests/cucumber_tests.rs b/end2end-tests/tests/cucumber_tests.rs
index 80a1772ac1ad1c1b5be78707b590a993721047bc..06b8acba6d98017ac74d93dd33e74f29f2951371 100644
--- a/end2end-tests/tests/cucumber_tests.rs
+++ b/end2end-tests/tests/cucumber_tests.rs
@@ -18,7 +18,7 @@ mod common;
 
 use async_trait::async_trait;
 use common::*;
-use cucumber::{given, then, when, World, WorldInit};
+use cucumber::{given, then, when, FailureWriter, World, WorldInit};
 use sp_keyring::AccountKeyring;
 use std::convert::Infallible;
 use std::path::PathBuf;
@@ -636,7 +636,7 @@ async fn main() {
     })
     .expect("Error setting Ctrl-C handler");
 
-    DuniterWorld::cucumber()
+    let summarize = DuniterWorld::cucumber()
         //.fail_on_skipped()
         .max_concurrent_scenarios(4)
         .before(|feature, _rule, scenario, world| {
@@ -660,8 +660,12 @@ async fn main() {
             Box::pin(std::future::ready(()))
         })
         .with_cli(opts)
-        .run_and_exit(features_path)
+        .run(features_path)
         .await;
+
+    if summarize.hook_errors() > 0 {
+        panic!("Could not run tests correctly (hook errors)");
+    }
 }
 
 fn genesis_conf_name(feature_tags: &[String], scenario_tags: &[String]) -> String {