diff --git a/tests/testthat/helper_vignettes.R b/tests/testthat/helper_vignettes.R
index 1f24851a8764d83e96d3c5f179a5c6fd8828546f..53d32a862e414c7d6253a6a2ff65717f9422cdf2 100644
--- a/tests/testthat/helper_vignettes.R
+++ b/tests/testthat/helper_vignettes.R
@@ -57,4 +57,20 @@ RunRmdChunks <-  function(fileRmd,
   writeLines(sTxt, output)
   # Silently run the chunks
   invisible(capture.output(suppressMessages(suppressWarnings(source(output))), type="output"))
+  return(TRUE)
 }
+
+
+#' Test if conversion from Q in mm per day into Q in L/s is good in BasinObs
+#'
+#' @param BasinObs A dataframe containing columns Qmm and Qls
+#' @param BasinArea Area of the basin in km2
+#' @param tolerance See ?all.equal
+#'
+#' @return 
+TestQmmQlsConversion <- function(BasinObs, BasinArea, tolerance = 1E-7) {
+  Conversion = BasinArea * 1000^2 / 1000 * 1000 # km2 -> m2, mm -> m and m3 -> L
+  Conversion = Conversion / 86400 # Day -> seconds
+  notNA = which(!is.na(BasinObs$Qmm))
+  expect_equal(BasinObs$Qmm[notNA] * Conversion, BasinObs$Qls[notNA], tolerance=tolerance)
+}
\ No newline at end of file
diff --git a/tests/testthat/test-vignettes.R b/tests/testthat/test-vignettes.R
index 93b51d3d8e7a105a8f3cfdd6f2ae012d2e955a93..90e892914f4febb24958d23623827ba8c51daff6 100644
--- a/tests/testthat/test-vignettes.R
+++ b/tests/testthat/test-vignettes.R
@@ -3,39 +3,47 @@ context("Test vignette chunks")
 test_that("V01_get_started works", {
   skip_on_cran()
   rm(list=ls())
-  RunRmdChunks("../../vignettes/V01_get_started.Rmd")
-  # Test Qmm -> Qls conversion in input
-  notNA = which(!is.na(BasinObs$Qmm))
-  expect(
-    all(abs(BasinObs$Qmm[notNA] * BasinInfo$BasinArea / 86400 * 1E6 - BasinObs$Qls[notNA]) < 1E-7),
-    "Error in conversion Qmm -> Qls"
-  )
+  expect_true(RunRmdChunks("../../vignettes/V01_get_started.Rmd"))
+  TestQmmQlsConversion(BasinObs, BasinInfo$BasinArea)
 })
 
 test_that("V02.1_param_optim works", {
   skip_on_cran()
   skip("hydroPSO not working presently")
   rm(list=ls())
-  RunRmdChunks("../../vignettes/V02.1_param_optim.Rmd")
+  expect_true(RunRmdChunks("../../vignettes/V02.1_param_optim.Rmd"))
 })
 
 test_that("V02.2_param_mcmc works", {
   skip_on_cran()
   rm(list=ls())
-  RunRmdChunks("../../vignettes/V02.2_param_mcmc.Rmd")
-
+  load(system.file("vignettesData/vignetteParamMCMC.rda", package = "airGR"))
+  rda_gelRub <- gelRub
+  rda_multDRAM <- multDRAM
+  expect_true(RunRmdChunks("../../vignettes/V02.2_param_mcmc.Rmd"))
+  expect_equal(gelRub, rda_gelRub, tolerance=1E-7)
+  expect_equal(multDRAM, rda_multDRAM, tolerance=1E-7)
 })
 
 test_that("V03_param_sets_GR4J works", {
   skip_on_cran()
   rm(list=ls())
-  RunRmdChunks("../../vignettes/V03_param_sets_GR4J.Rmd")
+  expect_true(RunRmdChunks("../../vignettes/V03_param_sets_GR4J.Rmd"))
 
 })
 
 test_that("V04_cemaneige_hysteresis works", {
   skip_on_cran()
   rm(list=ls())
-  RunRmdChunks("../../vignettes/V04_cemaneige_hysteresis.Rmd")
-
+  load(system.file("vignettesData/vignetteCNHysteresis.rda", package = "airGR"))
+  rda_OutputsCrit_Cal <- OutputsCrit_Cal
+  rda_OutputsCrit_Cal_NoHyst <- OutputsCrit_Cal_NoHyst
+  rda_OutputsCrit_Val <- OutputsCrit_Val
+  rda_OutputsCrit_Val_NoHyst <- OutputsCrit_Val_NoHyst
+  expect_true(RunRmdChunks("../../vignettes/V04_cemaneige_hysteresis.Rmd"))
+  TestQmmQlsConversion(BasinObs, BasinInfo$BasinArea)
+  expect_equal(OutputsCrit_Cal, rda_OutputsCrit_Cal, tolerance=1E-7)
+  expect_equal(OutputsCrit_Cal_NoHyst, rda_OutputsCrit_Cal_NoHyst, tolerance=1E-7)
+  expect_equal(OutputsCrit_Val, rda_OutputsCrit_Val, tolerance=1E-7)
+  expect_equal(OutputsCrit_Val_NoHyst, rda_OutputsCrit_Val_NoHyst, tolerance=1E-7)
 })