diff --git a/DESCRIPTION b/DESCRIPTION index 511fe844..12e9f410 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: shinytest2 Title: Testing for Shiny Applications -Version: 0.1.1.9000 +Version: 0.2.0 Authors@R: c( person("Barret", "Schloerke", role = c("cre", "aut"), email = "barret@rstudio.com", comment = c(ORCID = "0000-0001-9986-114X")), @@ -50,7 +50,8 @@ Suggests: shinyvalidate (>= 0.1.2), showimage, usethis, - vdiffr (>= 1.0.0) + vdiffr (>= 1.0.0), + spelling Config/Needs/check: rstudio/shiny Config/Needs/website: diff --git a/NEWS.md b/NEWS.md index d169c4d6..41d77342 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# shinytest2 (development version) +# shinytest2 0.2.0 ## Breaking changes diff --git a/R/app-driver-timeout.R b/R/app-driver-timeout.R index 041e485a..359c4408 100644 --- a/R/app-driver-timeout.R +++ b/R/app-driver-timeout.R @@ -61,7 +61,7 @@ timeout_value <- function( option_key, env_key, default_value, - timeout_name = checkmate::vname(x) + timeout_name = checkmate::vname(timeout) ) { # Handle both missing an NULL values rlang::maybe_missing(timeout, NULL) %||% # user provided diff --git a/R/app-driver.R b/R/app-driver.R index d1a10674..333cfa07 100644 --- a/R/app-driver.R +++ b/R/app-driver.R @@ -683,7 +683,7 @@ AppDriver <- R6Class( # nolint #' * If a [\code{content-disposition} \code{filename}](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) is provided, #' then a temp file containing this `filename` will be #' returned. - #' * Otherwise, a tempfile ending in `.download` will be returned. + #' * Otherwise, a temp file ending in `.download` will be returned. #' @examples #' \dontrun{ #' app_path <- system.file("examples/10_download", package = "shiny") @@ -1677,9 +1677,9 @@ AppDriver <- R6Class( # nolint #' Typically, this can be paired with a button that when clicked will call #' `shiny::stopApp(info)` to return `info` from the test app back to the #' main R session. - #' @param signal_timeout Milliseconds to wait between sending a SIGINT, - #' SIGTERM, and SIGKILL to the Shiny process. Defaults to 500ms and does - #' not utilize the resolved valur from `AppDriver$new(timeout=)`. However, + #' @param signal_timeout Milliseconds to wait between sending a `SIGINT`, + #' `SIGTERM`, and `SIGKILL` to the Shiny process. Defaults to 500ms and does + #' not utilize the resolved value from `AppDriver$new(timeout=)`. However, #' if \pkg{covr} is currently executing, then the `timeout` is set to #' 20,000ms to allow for the coverage report to be generated. #' @return The result of the background process if the Shiny application has diff --git a/cran-comments.md b/cran-comments.md index f933ab74..708dd33b 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,37 +1,25 @@ ## Comments -#### 2022-09-06 +#### 2022-09-19 -Releasing a patch to `{shinytest2}` which has documentation by the latest version of `{roxygen2}`. +Many bug fixes and enhancements. -Best, -Barret - -#### 2022-08-19 - -.... -R 4.2.0 switched to use HTML5 for documentation pages. Now validation -using HTML Tidy finds problems in the HTML generated from your Rd -files. - -To fix, in most cases it suffices to re-generate the Rd files using the -current CRAN version of roxygen2. -.... +Please let me know if there is anything else I can provide. Best, --k - +Barret ## Test environments * local macOS, R 4.1.3 +* r-hub * GitHub Actions * macOS - * 4.1 + * 4.2 * windows - * 4.1 + * 4.2 * ubuntu18 - * devel, 4.1, 4.0, 3.6, 3.5, 3.4 + * devel, 4.2, 4.1, 4.0, 3.6, 3.5 * devtools:: * check_win_devel() diff --git a/inst/WORDLIST b/inst/WORDLIST new file mode 100644 index 00000000..f3205fa4 --- /dev/null +++ b/inst/WORDLIST @@ -0,0 +1,63 @@ +AppDriver +CDN +CMD +Chromote +DOI +DOM +DT +DataTable +Devtools +GHA +JS +JSON +Lifecycle +POSIXct +PhantomJS +Prerendered +README +RGBA +Rmd +SIGINT +SIGKILL +SIGTERM +Shiny's +Shinyapps +UI +WebSocket +config +der +doubletap +ession +flexdashboard +htmlwidgets +iframe +incrementing +ing +io +javascript +js +lintr +lockfile +md +milli +mogwais +myfile +plotly +preprocessor +prerendered +prerendering +programmatically +reactives +renderer +renv +repo +reproducibility +selectize +serializable +shinyapps +shinycannon +shinytest +tempfile +testthat +websocket +yaml diff --git a/man/AppDriver.Rd b/man/AppDriver.Rd index 04ded283..ac49551f 100644 --- a/man/AppDriver.Rd +++ b/man/AppDriver.Rd @@ -1707,7 +1707,7 @@ Location logic: \item If a \href{https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition}{\code{content-disposition} \code{filename}} is provided, then a temp file containing this \code{filename} will be returned. -\item Otherwise, a tempfile ending in \code{.download} will be returned. +\item Otherwise, a temp file ending in \code{.download} will be returned. } } \subsection{Examples}{ @@ -3080,9 +3080,9 @@ main R session. \subsection{Arguments}{ \if{html}{\out{
}} \describe{ -\item{\code{signal_timeout}}{Milliseconds to wait between sending a SIGINT, -SIGTERM, and SIGKILL to the Shiny process. Defaults to 500ms and does -not utilize the resolved valur from \code{AppDriver$new(timeout=)}. However, +\item{\code{signal_timeout}}{Milliseconds to wait between sending a \code{SIGINT}, +\code{SIGTERM}, and \code{SIGKILL} to the Shiny process. Defaults to 500ms and does +not utilize the resolved value from \code{AppDriver$new(timeout=)}. However, if \pkg{covr} is currently executing, then the \code{timeout} is set to 20,000ms to allow for the coverage report to be generated.} } diff --git a/revdep/README.md b/revdep/README.md index abdba132..6e447ab1 100644 --- a/revdep/README.md +++ b/revdep/README.md @@ -10,14 +10,14 @@ |collate |en_US.UTF-8 | |ctype |en_US.UTF-8 | |tz |America/New_York | -|date |2022-09-06 | +|date |2022-09-19 | |pandoc |2.19.2 @ /usr/local/bin/pandoc | # Dependencies |package |old |new |Δ | |:-----------|:-----|:--------|:--| -|shinytest2 |0.1.0 |0.1.1 |* | +|shinytest2 |0.1.1 |0.2.0 |* | |AsioHeaders |NA |1.22.1-1 |* | # Revdeps diff --git a/tests/spelling.R b/tests/spelling.R new file mode 100644 index 00000000..7e15424a --- /dev/null +++ b/tests/spelling.R @@ -0,0 +1,8 @@ + +if (requireNamespace("spelling", quietly = TRUE)) { + spelling::spell_check_test( + vignettes = TRUE, + error = FALSE, + skip_on_cran = TRUE + ) +} diff --git a/tests/testthat/_snaps/app-shiny/app-shiny_app-001.json b/tests/testthat/_snaps/app-shiny/app-shiny_app-001.json deleted file mode 100644 index 04544db8..00000000 --- a/tests/testthat/_snaps/app-shiny/app-shiny_app-001.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "input": { - "greet": 1, - "name": "Barret" - }, - "output": { - "greeting": "Hello Barret!" - }, - "export": { - - } -} diff --git a/tests/testthat/_snaps/app-shiny/app-shiny_dir-001.json b/tests/testthat/_snaps/app-shiny/app-shiny_dir-001.json deleted file mode 100644 index e6b8dc59..00000000 --- a/tests/testthat/_snaps/app-shiny/app-shiny_dir-001.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "input": { - "bins": 20 - } -} diff --git a/tests/testthat/test-app-shiny.R b/tests/testthat/test-app-shiny.R index e68f71f3..029ac02e 100644 --- a/tests/testthat/test-app-shiny.R +++ b/tests/testthat/test-app-shiny.R @@ -29,8 +29,6 @@ test_that("AppDriver can receive a shiny.obj object", { app$set_inputs(name = "Barret") app$click("greet") - app$expect_values() - expect_true(fs::path_has_parent(app$get_dir(), tempdir())) }) @@ -42,7 +40,5 @@ test_that("AppDriver can receive a shinyAppDir object", { app$set_inputs(bins = 20) - app$expect_values(input = TRUE) - expect_true(fs::path_has_parent(app$get_dir(), tempdir())) }) diff --git a/vignettes/use-application-audit.Rmd b/vignettes/use-application-audit.Rmd index 6b022bbe..0aa021a8 100644 --- a/vignettes/use-application-audit.Rmd +++ b/vignettes/use-application-audit.Rmd @@ -91,7 +91,7 @@ A load test is composed a three phases: - Similarly to `{shinytest2}`, `{shinyloadtest}` records a user session with `shinyloadtest::record_session()`. - This session is subsequently replayed by a Java-based tool, `shinycannon`, -able to simulate multiple sessions during a choosen amount of time. +able to simulate multiple sessions during a chosen amount of time. - Sessions are analyzed by `shinyloadtest::load_runs()` and an HTML report generated with `shinyloadtest::shinyloadtest_report()`. @@ -315,7 +315,7 @@ We don't forget to clean the target app so as to kill the underlying process. Note that if you want to deploy the report on GitHub Pages, you have to name it `index.html`. -### Automating with Github Actions +### Automating with GitHub Actions Now, it is time to integrate the current pipeline in a CI/CD workflow. For convenience, we wrap all the previous steps in a single function: diff --git a/vignettes/zzz-faq.Rmd b/vignettes/zzz-faq.Rmd index 1c382a25..29d39e9b 100644 --- a/vignettes/zzz-faq.Rmd +++ b/vignettes/zzz-faq.Rmd @@ -104,7 +104,7 @@ If your R session is starting to feel more sluggish, you may want to call `app$s ## How can I open the test to see if bookmarks are working? -Testing Shiny bookmarks requires the browser to be loaded with specific query parameters. Luckily, you can use `{shinytest2}` to help you achieve this by running a local `AppDriver` and another `AppDriver` that uses a url with your specific query parameters! ([Original code](https://github.com/rstudio/shinytest2/issues/219#issuecomment-1149162328), [Working example](https://github.com/rstudio/shinytest2/blob/v0.2.0/tests/testthat/apps/download)) +Testing Shiny bookmarks requires the browser to be loaded with specific query parameters. Luckily, you can use `{shinytest2}` to help you achieve this by running a local `AppDriver` and another `AppDriver` that uses a url with your specific query parameters! ([Original code](https://github.com/rstudio/shinytest2/issues/219#issuecomment-1149162328), [Working example](https://github.com/rstudio/shinytest2/tree/v0.2.0/tests/testthat/apps/download)) File: `tests/testthat//test-bookmark.R` ```{r}