tests/testthat/test-use_shinyWidgets.R

test_that("Able to test updates to shinyWidgets using testServer", {
  skip_on_cran()
  skip_if_not(do.call(require, list("shinyWidgets")))

  testthat::local_mocked_bindings(
    updateColorPickr = create_test_update_fn("updateColorPickr", .package = "shinyWidgets"),
    .package = "shinyWidgets"
  )

  example_server_fn <- function(input, output, session) {
    observeEvent(input$trigger, {
      updateColorPickr(
        inputId = "result",
        label = "New Label",
        value = "#999999",
        action = "show"
      )
    })
  }

  shiny::testServer(
    app = example_server_fn,
    expr = {
      session$setInputs(trigger = 1L)

      expect_identical(input$result, "#999999")
      expect_identical(input$result.action, "show")
      expect_null(input$result.swatches)
    }
  )
})

test_that("Able to test updates to shinyWidgets using use_shiny_testers", {
  skip_on_cran()
  skip_if_not(do.call(require, list("shinyWidgets")))

  use_shiny_testers(.package = "shinyWidgets")

  example_server_fn <- function(input, output, session) {
    observeEvent(input$trigger, {
      updateColorPickr(
        inputId = "result",
        label = "New Label",
        value = "#999999",
        action = "show"
      )
    })
  }

  shiny::testServer(
    app = example_server_fn,
    expr = {
      session$setInputs(trigger = 1L)

      expect_identical(input$result, "#999999")
      expect_identical(input$result.action, "show")
      expect_null(input$result.swatches)
    }
  )
})

Try the shinytesters package in your browser

Any scripts or data that you put into this service are public.

shinytesters documentation built on Sept. 1, 2025, 5:10 p.m.