context("shinytest")
skip_on_cran()
skip_if_not_installed("shinytest")
skip_if_not_installed("callr")
skip_if_not_installed("ggplot2")
skip_if_not_installed("lattice")
# Run tests on release version of R
skip_if_not(as.logical(Sys.getenv("SHINYTEST_RUN_TESTS", "true")))
# a la shinycoreci:::platform()
shinytest_suffix <- function() {
if (.Platform$OS.type == "windows") {
return("win")
}
sys <- Sys.info()[["sysname"]]
if (sys == "Darwin") {
return("mac")
}
if (sys == "Linux") {
return("linux")
}
stop("unknown platform")
}
test_app <- function(appDir) {
getFromNamespace("r", "callr")(
function(appDir, suffix) {
getFromNamespace("testApp", "shinytest")(appDir, suffix = suffix)
},
list(appDir = appDir, suffix = shinytest_suffix())
)
}
expect_app_doppelganger <- function(appDir) {
getFromNamespace("expect_pass", "shinytest")(
test_app(appDir)
)
}
test_that("Custom fonts with ragg", {
skip_if_not_installed("ragg")
expect_app_doppelganger("agg_png")
})
test_that("runtime: shiny auto-theming", {
skip_if_not(identical("win", shinytest_suffix()))
expect_app_doppelganger("shiny_runtime")
})
# The remaining tests rely on showtext to render custom fonts
skip_if_not_installed("showtext")
test_that("Auto theming in shiny works", {
# These shiny apps currently use remote urls to import Google fonts
skip_if_offline()
skip_if_not(capabilities()[["aqua"]])
expect_app_doppelganger("auto_theme_shiny/base")
expect_app_doppelganger("auto_theme_shiny/lattice")
expect_app_doppelganger("auto_theme_shiny/ggplot2")
expect_app_doppelganger("auto_theme_shiny/local_theme")
expect_app_doppelganger("auto_theme_shiny/with_theme")
})
test_that("Custom fonts with Cairo package", {
skip_if_not_installed("Cairo")
expect_app_doppelganger("CairoPNG")
})
test_that("Custom fonts with quartz device", {
skip_if_not(capabilities()[["aqua"]])
expect_app_doppelganger("quartz_png")
})
test_that("Custom fonts with cairo capabilities", {
skip_if_not(capabilities()[["cairo"]])
expect_app_doppelganger("cairo_png")
# TODO: figure out why this is failing on mac
skip_if_not(!identical(shinytest_suffix(), "mac"))
expect_app_doppelganger("cairo_svg")
})
# Remaining tests are rmarkdown specific
skip_if_not_installed("rmarkdown")
test_that("Auto theming in rmarkdown works", {
skip_if_not(capabilities()[["aqua"]])
expect_app_doppelganger("auto_theme_rmd/darkly_rmd")
})
test_that("Can render non-custom fonts in rmarkdown with quartz png", {
skip_if_not(capabilities()[["aqua"]])
expect_app_doppelganger("quartz_png_rmd")
})
test_that("Can render non-custom fonts in rmarkdown with CairoPNG", {
skip_if_not_installed("Cairo")
expect_app_doppelganger("CairoPNG_rmd")
})
test_that("pdf_document compiles without error", {
skip_if_not(!identical("win", shinytest_suffix()))
outfile <- rmarkdown::render("pdf.Rmd", quiet = TRUE)
expect_true(file.exists(outfile))
unlink(outfile)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.