tests/testthat/test-plots-snap.R

# vdiffr snapshot tests for every exported plot function. Each plot is
# rendered to SVG and diffed against a baseline in
# tests/testthat/_snaps/plots-snap/. Snapshots are tied to a small
# fixed-seed demo_fit() / demo_run() so they stay deterministic and tiny.
# If a plot's appearance shifts (e.g. a ggplot2 / base-R rendering tweak,
# a palette change, an off-by-one ordering bug) the test fails AND vdiffr
# ships a Shiny app for visual diff review (`vdiffr::manage_cases()`).


test_that("plot.bayesqm_fit matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-bayesqm-fit",
                              function() plot(fit))
})


test_that("plot_loading_posterior matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-loading-posterior",
                              function() plot_loading_posterior(fit))
})


test_that("plot_zscore_posterior matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-zscore-posterior",
                              function() plot_zscore_posterior(fit, statement = 1))
})


test_that("plot_membership matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-membership",
                              function() plot_membership(fit))
})


test_that("plot_elpd matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  run <- demo_run(K_max = 4, k_peak = 3, k_sivula = 2,
                  case = "gap", seed = 1L)
  vdiffr::expect_doppelganger("plot-elpd",
                              function() plot_elpd(run))
})


test_that("plot_ppc matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-ppc",
                              function() plot_ppc(fit))
})


test_that("plot_tucker matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-tucker",
                              function() plot_tucker(fit))
})


test_that("plot_dist_cons matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-dist-cons",
                              function() plot_dist_cons(fit))
})


test_that("plot_hyper matches snapshot", {
  skip_if_not_installed("vdiffr")
  skip_on_ci()
  fit <- demo_fit(N = 10, J = 14, K = 2, seed = 1L)
  vdiffr::expect_doppelganger("plot-hyper",
                              function() plot_hyper(fit))
})

Try the bayesqm package in your browser

Any scripts or data that you put into this service are public.

bayesqm documentation built on June 18, 2026, 1:07 a.m.