test_app {shinytest2}R Documentation

Test Shiny applications with testthat

Description

This is a helper method that wraps around testthat::test_dir() to test your Shiny application or Shiny runtime document. This is similar to how testthat::test_check() tests your R package but for your app.

Usage

test_app(app_dir = missing_arg(), ..., check_setup = TRUE)

Arguments

app_dir

The base directory for the Shiny application.

  • If app_dir is missing and test_app() is called within the ./tests/testthat.R file, the parent directory ("../") is used.

  • Otherwise, the default path of "." is used.

...

Parameters passed to testthat::test_dir()

check_setup

If TRUE, the app will be checked for the presence of ./tests/testthat/setup.R. This file must contain a call to load_app_env().

Details

When setting up tests for your app,

Example usage:

## Interactive usage
# Test Shiny app in current working directory
shinytest2::test_app()

# Test Shiny app in another directory
path_to_app <- "path/to/app"
shinytest2::test_app(path_to_app)

## File: ./tests/testthat.R
# Will find Shiny app in "../"
shinytest2::test_app()

## File: ./tests/testthat/test-shinytest2.R
# Test a shiny application within your own {testthat} code
test_that("Testing a Shiny app in a package", {
  shinytest2::test_app(path_to_app)
})

Uploading files

When testing an application, all non-temp files that are uploaded should be located in the ./tests/testthat directory. This allows for tests to be more portable and self contained.

When recording a test with record_test(), for every uploaded file that is located outside of ./tests/testthat, a warning will be thrown. Once the file path has be fixed, you may remove the warning statement.

Different ways to test

test_app() is an opinionated testing function that will only execute testthat tests in the ./tests/testthat folder. If (for some rare reason) you have other non-testthat tests to execute, you can call shiny::runTests(). This method will generically run all test runners and their associated tests.

# Execute a single Shiny app's {testthat} file such as `./tests/testthat/test-shinytest2.R`
test_app(filter = "shinytest2")

# Execute all {testthat} tests
test_app()

# Execute all tests for all test runners
shiny::runTests()

See Also


[Package shinytest2 version 0.1.1 Index]