Testing Your Package of Tutorials

David Kane

This vignette demonstrates how to use the tutorial.helpers package to “test” the tutorials in your package. I place “test” in quotes because the testing is not very extensive. We are merely ensuring that your tutorials can be knitted without error. I think that this guarantees that the tutorials will run when students press the “Start Tutorial” button, but I am not certain. This testing certainly does nothing to ensure that the substance of your tutorials is correct.

If you are using the testthat framework for testing, the tests directory would have a file called testthat.R which just contains:



Note how the name of your.package is not quoted with library() but is quoted with test_check().

Within the tests/testthat directory there will be a variety of testing scripts. Create a file called test-tutorials.R. (The file can be named whatever you want, consistent with testthat requirements.) It might contain:

tut_paths <- tutorial.helpers::return_tutorial_paths("your.package")

test_that("All tutorials can be knit without error", {

test_that("All tutorials have the expected components", {

The first step in testing the tutorials in your package is to determine the the full paths to all those tutorials. The return_tutorial_paths() returns a vector of those paths.

The second step is to confirm that all your tutorials knit without error. knit_tutorials(), perhaps the most useful function in the entire package, accomplishes this. If a tutorial does not knit, an error is generated and the test fails.

The third step is only relevant for tutorial creators who follow our advice concerning tutorial construction. In particular, check_tutorial_defaults() ensures that, somewhere in each tutorial, you have included the same key components as exist in the “Helpers Tutorial” R Markdown template.

check_tutorial_defaults() also fails if you do not have library(learnr) and library(tutorial.helpers) in your tutorial.

Both knit_tutorials() and check_tutorial_defaults() return NULL, which is why we use expect_null().