tests/testthat/test-tabs.R

test_that("tabs are found, names are good", {
  sleep_on_ci()
  app <- ShinyDriver$new(test_path("apps/embedded-tabs"))
  sleep_on_ci()
  app$waitForValue("tabset1") # Wait for outer tab value to appear
  app$waitForValue("tabset11") # Wait for inner tab value to appear

  expect_equal(app$findWidget("tabset1")$listTabs(), c("tab1", "tab2"))
  expect_equal(
    app$findWidget("tabset11")$listTabs(),
    c("tab11", "tab12", "tab13")
  )
  expect_equal(
    app$findWidget("tabset12")$listTabs(),
    c("xxx", "tab22", "tab23", "tab24")
  )
})

test_that("getting and setting active tab", {
  sleep_on_ci()
  app <- ShinyDriver$new(test_path("apps/embedded-tabs"))
  sleep_on_ci()
  app$waitForValue("tabset1") # Wait for outer tab value to appear
  app$waitForValue("tabset11") # Wait for inner tab value to appear

  expect_equal(app$findWidget("tabset1")$getValue(), "tab1")
  expect_equal(app$findWidget("tabset11")$getValue(), "tab11")
  ## Invisible tabset still has an active tab
  expect_equal(app$findWidget("tabset12")$getValue(), "xxx")

  t1 <- app$findWidget("tabset1")
  t2 <- app$findWidget("tabset11")
  t3 <- app$findWidget("tabset12")

  t1$setValue("tab1")
  expect_equal(t1$getValue(), "tab1")
  expect_equal(t2$getValue(), "tab11")
  expect_equal(t3$getValue(), "xxx")

  t1$setValue("tab2")
  expect_equal(t1$getValue(), "tab2")
  expect_equal(t2$getValue(), "tab11")
  expect_equal(t3$getValue(), "xxx")

  t3$setValue("tab22")
  expect_equal(t1$getValue(), "tab2")
  expect_equal(t2$getValue(), "tab11")
  expect_equal(t3$getValue(), "tab22")

  t3$setValue("xxx")
  expect_equal(t1$getValue(), "tab2")
  expect_equal(t2$getValue(), "tab11")
  expect_equal(t3$getValue(), "xxx")

  t1$setValue("tab1")
  expect_equal(t1$getValue(), "tab1")
  expect_equal(t2$getValue(), "tab11")
  expect_equal(t3$getValue(), "xxx")
})

test_that("tabs in expectUpdate", {
  sleep_on_ci()
  app <- ShinyDriver$new(test_path("apps/006-tabsets-id"))

  expectUpdate(app, dist = "unif", output = "plot")
  expectUpdate(app, tabs = "Summary", output = "summary")
})

Try the shinytest package in your browser

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

shinytest documentation built on March 31, 2023, 11:09 p.m.