--- title: "Using chromote in CRAN tests" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Using chromote in CRAN tests} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ::: lead **We do not recommend using chromote in tests that you run on CRAN.** ::: We **do recommend** that you test your package's integration with chromote, just not on CRAN. Instead, use a continuous testing service, like [GitHub Actions](https://usethis.r-lib.org/reference/github_actions.html), and include `testthat::skip_on_cran()` in tests that require Chrome or chromote. There are a number of issues with testing package functionality based on chromote on CRAN: * By default, chromote uses the system installation of Chrome, which can change frequently and without warning. * chromote's API depends entirely on Chrome, which may change or break between releases. * There is no 100% reliable way to check or test which system-installed version of Chrome is used on CRAN. While `chromote_info()` can _generally_ provide this information, we use heuristics to gather the Chrome version that do not always work. * While chromote now provides features to download and use any version of Chrome, **these features should not be used on CRAN**. For one, downloading Chrome unnecessarily consumes CRAN's limited resources. Furthermore, testing against a pinned version of Chrome won't alert you to issues with the latest version. Given these challenges, we instead recommend: 1. Using `testthat::skip_on_cran()` for tests that rely on the availability of Chrome. 2. Run tests in a CI environment, ideally on a [weekly or monthly schedule](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#schedule). 3. Use the system version of Chrome provided by the CI environment, or use ```r local_chrome_version("latest-stable") ``` to ensure you're testing against the latest stable version of Chrome. ```r local_chrome_version("latest-stable", binary = "chrome-headless-shell") ``` is another valid choice. See `vignette("which-chrome")` for details.