Test if the new plot matches a target (snapshot) plot
Source:R/expect_snapshot_plot.R
expect_snapshot_plot.RdThis expectation can be used with tinytest to check if the new plot matches
a target plot.
When the expectation is checked for the first time, the expectation fails and
a reference plot is saved to the inst/tinytest/_tinysnapshot folder.
When the expectation fails, the reference plot, the new plot, and a diff are
saved to the inst/tinytest/label folder. Call the review() function to compare.
To update a snapshot, delete the reference file from the _tinysnapshot
folder and run the test suite again.
See the package README file or website for detailed examples.
Usage
expect_snapshot_plot(
current,
label,
width = getOption("tinysnapshot_width", default = NULL),
height = getOption("tinysnapshot_height", default = NULL),
tol = getOption("tinysnapshot_tol", default = 0),
metric = getOption("tinysnapshot_metric", default = "AE"),
fuzz = getOption("tinysnapshot_fuzz", default = 0),
device = getOption("tinysnapshot_device", default = "svg"),
device_args = getOption("tinysnapshot_device_args", default = list()),
par_args = getOption("tinysnapshot_par_args", default = NULL),
style = getOption("tinysnapshot_plot_diff_style", default = c("old", "new", "diff")),
review = getOption("tinysnapshot_plot_review", default = TRUE),
os = getOption("tinysnapshot_os", default = Sys.info()["sysname"]),
skip = getOption("tinysnapshot_plot_skip", default = !interactive() &&
!identical(Sys.getenv("NOT_CRAN"), "true"))
)Arguments
- current
an object of class
ggplotor a function which returns a base R plot.- label
a string to identify the snapshot (alpha-numeric, hyphens, or underscores). Each plot in the test suite must have a unique label.
- width
of the snapshot. PNG default: 480 pixels. SVG default: 7 inches.
- height
of the snapshot. PNG default: 480 pixels. SVG default: 7 inches.
- tol
distance estimates larger than this threshold will trigger a test failure. Scale depends on the
metricargument. With the defaultmetric="AE"(absolute error), thetolerancecorresponds roughly to the number of pixels of difference between the plot and the reference image.- metric
string with a metric from
magick::metric_types()such as"AE"or"phash".- fuzz
relative color distance between 0 and 100 to be considered similar.
- device
"svg", "png", "ragg" or "svglite"
- device_args
list of arguments to pass to the device call (e.g.,
user_fontsforsvglitedevice).- par_args
named list of arguments to pass to
graphics::par()for setting graphical parameters. Only used whendeviceis "png" or "ragg". Default isNULL.- style
A character vector to control the panels of the diff image saved to file. The order and number of entries controls the side-by-side panels. Allowable values are: "old", "new", "diff".
- review
logical. TRUE if a a diff plot should be saved to file for review when the expectation fails.
- os
character vector of operating systems on which the test should be run (e.g., "Windows", "Linux", "Darwin"). Tests are skipped when no element of the vector matches the output of:
Sys.info()["sysname"]- skip
logical. If TRUE, the test is skipped. Default: TRUE when not interactive and NOT_CRAN environment variable is not "true".