From 0dcd04ecb2c11de8b8e2d5ec7c4cc831db87789d Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Mon, 20 Mar 2023 10:57:49 -0400 Subject: [PATCH 1/9] Test flexdashbaord tab and page management with {bslib} --- .../309-flexdashboard-tabs-navs/index.Rmd | 58 +++++++++++ .../tests/testthat.R | 1 + .../tests/testthat/setup-shinytest2.R | 2 + .../tests/testthat/test-shinytest2.R | 97 +++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 inst/apps/309-flexdashboard-tabs-navs/index.Rmd create mode 100644 inst/apps/309-flexdashboard-tabs-navs/tests/testthat.R create mode 100644 inst/apps/309-flexdashboard-tabs-navs/tests/testthat/setup-shinytest2.R create mode 100644 inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R diff --git a/inst/apps/309-flexdashboard-tabs-navs/index.Rmd b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd new file mode 100644 index 0000000000..e1a12dcd89 --- /dev/null +++ b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd @@ -0,0 +1,58 @@ +--- +title: 309 +output: + flexdashboard::flex_dashboard: + orientation: row +runtime: shiny +--- + +Page 1 {data-test-id="Page 1"} +=================================== + +## Box 1-1 {.tabset data-test-id="Box 1-1"} + +### Tab 1-1a {data-test-id="Tab 1-1a"} + +Tab content, page 1, box 1, tab a + +### Tab 1-1b {data-test-id="Tab 1-1b"} + +Tab content, page 1, box 1, tab b + +## Box 1-2 {.tabset data-test-id="Box 1-2"} + +### Tab 1-2a {data-test-id="Tab 1-2a"} + +Tab content, page 1, box 2, tab a + +### Tab 1-2b {data-test-id="Tab 1-2b"} + +Tab content, page 1, box 2, tab b + + +Page 2 {data-navmenu="Other" data-test-id="Page 2"} +=================================== + +## Row + +### Box 2-1 {data-test-id="Box 2-1"} + +Content, page 2, box 1 + +### Box 2-2 {data-test-id="Box 2-2"} + +Content, page 2, box 2 + + +Page 3 {data-navmenu="Other" data-test-id="Page 3"} +=================================== + +## Row + +### Box 3-1 {data-test-id="Box 3-1"} + +Content, page 3, box 1 + +### Box 3-2 {data-test-id="Box 3-2"} + +Content, page 3, box 2 diff --git a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat.R b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat.R new file mode 100644 index 0000000000..7d25b5b9e4 --- /dev/null +++ b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat.R @@ -0,0 +1 @@ +shinytest2::test_app() diff --git a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/setup-shinytest2.R b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/setup-shinytest2.R new file mode 100644 index 0000000000..be65b4f035 --- /dev/null +++ b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/setup-shinytest2.R @@ -0,0 +1,2 @@ +# Load application support files into testing environment +shinytest2::load_app_env() diff --git a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R new file mode 100644 index 0000000000..8ab08e4e8e --- /dev/null +++ b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R @@ -0,0 +1,97 @@ +library(shinytest2) + +is_element_visible <- function(selector) { + sprintf( + "(function() { +const br = document.querySelector('%s').getBoundingClientRect() +return br.width > 0 && br.height > 0 && (br.x > 0 || br.y > 0) +})()", + selector + ) +} + +is_test_element_visible <- function(test_id) { + is_element_visible(sprintf('[data-test-id="%s"]', test_id)) +} + +for (bs_version in 3:5) { + test_that(paste0("309-flexdashboard-tabs-navs with BS", bs_version), { + app <- AppDriver$new( + name = "309-flexdashboard-tabs-navs", + seed = 62868, + height = 1292, + width = 798, + view = interactive(), + render_args = list(output_options = list(theme = list(version = bs_version))) + ) + + app$wait_for_idle() + app$wait_for_js(is_test_element_visible("Page 1")) + + expect_true(app$get_js(is_test_element_visible("Page 1"))) + expect_true(app$get_js(is_test_element_visible("Tab 1-1a"))) + expect_true(app$get_js(is_test_element_visible("Tab 1-2a"))) + for (tab in c("Tab 1-1a", "Tab 1-2a")) { + expect_true(app$get_js(is_test_element_visible(!!tab))) + } + + expect_false(app$get_js(is_test_element_visible("Page 2"))) + expect_false(app$get_js(is_test_element_visible("Page 3"))) + for (box in c("Box 2-1", "Box 2-2", "Box 3-1", "Box 3-2")) { + expect_false(app$get_js(is_test_element_visible(!!box))) + } + for (tab in c("Tab 1-1b", "Tab 1-2b")) { + expect_false(app$get_js(is_test_element_visible(!!tab))) + } + + # activate second tabs and check that visibility has switched + app$ + click(selector = '[data-test-id="Page 1"] .nav-tabs [href$="tab-1-1b"]')$ + wait_for_js(is_test_element_visible("Tab 1-1b")) + + app$ + click(selector = '[data-test-id="Page 1"] .nav-tabs [href$="tab-1-2b"]')$ + wait_for_js(is_test_element_visible("Tab 1-2b")) + + for (tab in c("Tab 1-1a", "Tab 1-2a")) { + expect_false(app$get_js(is_test_element_visible(!!tab))) + } + for (tab in c("Tab 1-1b", "Tab 1-2b")) { + expect_true(app$get_js(is_test_element_visible(!!tab))) + } + + # Go to page 2 + app$ + click(selector = ".nav .dropdown .dropdown-toggle")$ + wait_for_js(is_element_visible(".nav .dropdown .dropdown-menu"))$ + click(selector = '.nav .dropdown-item[href$="page-2"]')$ + wait_for_js(is_test_element_visible("Page 2")) + + expect_true(app$get_js(is_test_element_visible("Page 2"))) + expect_true(app$get_js(is_test_element_visible("Box 2-1"))) + expect_true(app$get_js(is_test_element_visible("Box 2-2"))) + + expect_false(app$get_js(is_test_element_visible("Page 1"))) + expect_false(app$get_js(is_test_element_visible("Page 3"))) + for (box in c("Box 1-1", "Box 1-2", "Box 3-1", "Box 3-2")) { + expect_false(app$get_js(is_test_element_visible(!!box))) + } + + # Go to page 3 + app$ + click(selector = ".nav .dropdown .dropdown-toggle")$ + wait_for_js(is_element_visible(".nav .dropdown .dropdown-menu"))$ + click(selector = '.nav .dropdown-item[href$="page-3"]')$ + wait_for_js(is_test_element_visible("Page 3")) + + expect_true(app$get_js(is_test_element_visible("Page 3"))) + expect_true(app$get_js(is_test_element_visible("Box 3-1"))) + expect_true(app$get_js(is_test_element_visible("Box 3-2"))) + + expect_false(app$get_js(is_test_element_visible("Page 1"))) + expect_false(app$get_js(is_test_element_visible("Page 2"))) + for (box in c("Box 1-1", "Box 1-2", "Box 2-1", "Box 2-2")) { + expect_false(app$get_js(is_test_element_visible(!!box))) + } + }) +} From c67820499d5248b5146e7bf17e6b83470e57fdf8 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Mon, 20 Mar 2023 11:12:44 -0400 Subject: [PATCH 2/9] Refactor: extract visibility expectations --- .../tests/testthat/test-shinytest2.R | 54 +++++++++++-------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R index 8ab08e4e8e..655da1ac73 100644 --- a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R +++ b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R @@ -14,6 +14,16 @@ is_test_element_visible <- function(test_id) { is_element_visible(sprintf('[data-test-id="%s"]', test_id)) } +expect_test_element_visible <- function(app, test_id) { + expect_true(app$get_js(is_test_element_visible(!!test_id))) + return(invisible(app)) +} + +expect_test_element_hidden <- function(app, test_id) { + expect_false(app$get_js(is_test_element_visible(!!test_id))) + return(invisible(app)) +} + for (bs_version in 3:5) { test_that(paste0("309-flexdashboard-tabs-navs with BS", bs_version), { app <- AppDriver$new( @@ -28,20 +38,20 @@ for (bs_version in 3:5) { app$wait_for_idle() app$wait_for_js(is_test_element_visible("Page 1")) - expect_true(app$get_js(is_test_element_visible("Page 1"))) - expect_true(app$get_js(is_test_element_visible("Tab 1-1a"))) - expect_true(app$get_js(is_test_element_visible("Tab 1-2a"))) + expect_test_element_visible(app, "Page 1") + expect_test_element_visible(app, "Tab 1-1a") + expect_test_element_visible(app, "Tab 1-2a") for (tab in c("Tab 1-1a", "Tab 1-2a")) { - expect_true(app$get_js(is_test_element_visible(!!tab))) + expect_test_element_visible(app, tab) } - expect_false(app$get_js(is_test_element_visible("Page 2"))) - expect_false(app$get_js(is_test_element_visible("Page 3"))) + expect_test_element_hidden(app, "Page 2") + expect_test_element_hidden(app, "Page 3") for (box in c("Box 2-1", "Box 2-2", "Box 3-1", "Box 3-2")) { - expect_false(app$get_js(is_test_element_visible(!!box))) + expect_test_element_hidden(app, box) } for (tab in c("Tab 1-1b", "Tab 1-2b")) { - expect_false(app$get_js(is_test_element_visible(!!tab))) + expect_test_element_hidden(app, tab) } # activate second tabs and check that visibility has switched @@ -54,10 +64,10 @@ for (bs_version in 3:5) { wait_for_js(is_test_element_visible("Tab 1-2b")) for (tab in c("Tab 1-1a", "Tab 1-2a")) { - expect_false(app$get_js(is_test_element_visible(!!tab))) + expect_test_element_hidden(app, tab) } for (tab in c("Tab 1-1b", "Tab 1-2b")) { - expect_true(app$get_js(is_test_element_visible(!!tab))) + expect_test_element_visible(app, tab) } # Go to page 2 @@ -67,14 +77,14 @@ for (bs_version in 3:5) { click(selector = '.nav .dropdown-item[href$="page-2"]')$ wait_for_js(is_test_element_visible("Page 2")) - expect_true(app$get_js(is_test_element_visible("Page 2"))) - expect_true(app$get_js(is_test_element_visible("Box 2-1"))) - expect_true(app$get_js(is_test_element_visible("Box 2-2"))) + expect_test_element_visible(app, "Page 2") + expect_test_element_visible(app, "Box 2-1") + expect_test_element_visible(app, "Box 2-2") - expect_false(app$get_js(is_test_element_visible("Page 1"))) - expect_false(app$get_js(is_test_element_visible("Page 3"))) + expect_test_element_hidden(app, "Page 1") + expect_test_element_hidden(app, "Page 3") for (box in c("Box 1-1", "Box 1-2", "Box 3-1", "Box 3-2")) { - expect_false(app$get_js(is_test_element_visible(!!box))) + expect_test_element_hidden(app, box) } # Go to page 3 @@ -84,14 +94,14 @@ for (bs_version in 3:5) { click(selector = '.nav .dropdown-item[href$="page-3"]')$ wait_for_js(is_test_element_visible("Page 3")) - expect_true(app$get_js(is_test_element_visible("Page 3"))) - expect_true(app$get_js(is_test_element_visible("Box 3-1"))) - expect_true(app$get_js(is_test_element_visible("Box 3-2"))) + expect_test_element_visible(app, "Page 3") + expect_test_element_visible(app, "Box 3-1") + expect_test_element_visible(app, "Box 3-2") - expect_false(app$get_js(is_test_element_visible("Page 1"))) - expect_false(app$get_js(is_test_element_visible("Page 2"))) + expect_test_element_hidden(app, "Page 1") + expect_test_element_hidden(app, "Page 2") for (box in c("Box 1-1", "Box 1-2", "Box 2-1", "Box 2-2")) { - expect_false(app$get_js(is_test_element_visible(!!box))) + expect_test_element_hidden(app, box) } }) } From a42ca46ec752aee0a5002bbc31acdcc26ef5b1ea Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Mon, 20 Mar 2023 15:47:23 -0400 Subject: [PATCH 3/9] Use jQuery's `:visible` selector Co-authored-by: Carson Sievert --- .../tests/testthat/test-shinytest2.R | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R index 655da1ac73..3fdfb5fea8 100644 --- a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R +++ b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R @@ -1,13 +1,7 @@ library(shinytest2) is_element_visible <- function(selector) { - sprintf( - "(function() { -const br = document.querySelector('%s').getBoundingClientRect() -return br.width > 0 && br.height > 0 && (br.x > 0 || br.y > 0) -})()", - selector - ) + sprintf("$('%s:visible').length > 0", selector) } is_test_element_visible <- function(test_id) { From f95bd226b0536c4a6a90763d430c1263bb839bfb Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Mon, 20 Mar 2023 15:54:16 -0400 Subject: [PATCH 4/9] Add testing instructions --- inst/apps/309-flexdashboard-tabs-navs/index.Rmd | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/inst/apps/309-flexdashboard-tabs-navs/index.Rmd b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd index e1a12dcd89..d78add9dda 100644 --- a/inst/apps/309-flexdashboard-tabs-navs/index.Rmd +++ b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd @@ -2,6 +2,8 @@ title: 309 output: flexdashboard::flex_dashboard: + theme: + version: 3 #<< set to 3, 4, 5, ... orientation: row runtime: shiny --- @@ -13,7 +15,15 @@ Page 1 {data-test-id="Page 1"} ### Tab 1-1a {data-test-id="Tab 1-1a"} -Tab content, page 1, box 1, tab a +**About this test**: This app tests our usage of Bootstrap's Tab plugin. +Test this app in all major versions of Bootstrap. + +1. Change the active tabs on this page. +2. Switch to Page 2 under "Other" +3. Switch to Page 3 under "Other" + +Verify that only the expected pages are visible +and that the active navbar menu state is correctly shown. ### Tab 1-1b {data-test-id="Tab 1-1b"} From 99b6d7fda7401b056d6bb6866a0221bd216fc285 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Tue, 21 Mar 2023 11:31:41 -0400 Subject: [PATCH 5/9] Include bootstrap version in the app output --- inst/apps/309-flexdashboard-tabs-navs/index.Rmd | 4 ++++ .../tests/testthat/test-shinytest2.R | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/inst/apps/309-flexdashboard-tabs-navs/index.Rmd b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd index d78add9dda..152272b375 100644 --- a/inst/apps/309-flexdashboard-tabs-navs/index.Rmd +++ b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd @@ -5,6 +5,8 @@ output: theme: version: 3 #<< set to 3, 4, 5, ... orientation: row +params: + bs_version: "" runtime: shiny --- @@ -25,6 +27,8 @@ Test this app in all major versions of Bootstrap. Verify that only the expected pages are visible and that the active navbar menu state is correctly shown. +This is Bootstrap `r params$bs_version`. + ### Tab 1-1b {data-test-id="Tab 1-1b"} Tab content, page 1, box 1, tab b diff --git a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R index 3fdfb5fea8..b8a4412263 100644 --- a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R +++ b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R @@ -26,7 +26,10 @@ for (bs_version in 3:5) { height = 1292, width = 798, view = interactive(), - render_args = list(output_options = list(theme = list(version = bs_version))) + render_args = list( + params = list(bs_version = bs_version), + output_options = list(theme = list(version = bs_version)) + ) ) app$wait_for_idle() @@ -97,5 +100,7 @@ for (bs_version in 3:5) { for (box in c("Box 1-1", "Box 1-2", "Box 2-1", "Box 2-2")) { expect_test_element_hidden(app, box) } + + app$stop() }) } From 7f28302be480a4108e335bccf89fb07b0ec2c220 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Tue, 21 Mar 2023 11:32:00 -0400 Subject: [PATCH 6/9] Set `flex_dashboard(resize_reload = FALSE)` --- inst/apps/309-flexdashboard-tabs-navs/index.Rmd | 1 + 1 file changed, 1 insertion(+) diff --git a/inst/apps/309-flexdashboard-tabs-navs/index.Rmd b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd index 152272b375..8e03a6dca8 100644 --- a/inst/apps/309-flexdashboard-tabs-navs/index.Rmd +++ b/inst/apps/309-flexdashboard-tabs-navs/index.Rmd @@ -5,6 +5,7 @@ output: theme: version: 3 #<< set to 3, 4, 5, ... orientation: row + resize_reload: false params: bs_version: "" runtime: shiny From ee8ad9a54969ea638fa9050308fd592db6bf5550 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Tue, 21 Mar 2023 11:56:16 -0400 Subject: [PATCH 7/9] Don't use for-loops to iterate over boxe state --- .../tests/testthat/test-shinytest2.R | 58 +++++++++++-------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R index b8a4412263..2f8f59f144 100644 --- a/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R +++ b/inst/apps/309-flexdashboard-tabs-navs/tests/testthat/test-shinytest2.R @@ -35,22 +35,28 @@ for (bs_version in 3:5) { app$wait_for_idle() app$wait_for_js(is_test_element_visible("Page 1")) + # ---- Page 1 ---- + # Page 1 and its boxes are visible expect_test_element_visible(app, "Page 1") + expect_test_element_visible(app, "Box 1-1") + expect_test_element_visible(app, "Box 1-2") + + # Check tab state on Page 1 (first tabs are visible) expect_test_element_visible(app, "Tab 1-1a") expect_test_element_visible(app, "Tab 1-2a") - for (tab in c("Tab 1-1a", "Tab 1-2a")) { - expect_test_element_visible(app, tab) - } + # second tabs are hidden + expect_test_element_hidden(app, "Tab 1-1b") + expect_test_element_hidden(app, "Tab 1-2b") + # Pages 2 and 3 and their elements are hidden expect_test_element_hidden(app, "Page 2") + expect_test_element_hidden(app, "Box 2-1") + expect_test_element_hidden(app, "Box 2-2") expect_test_element_hidden(app, "Page 3") - for (box in c("Box 2-1", "Box 2-2", "Box 3-1", "Box 3-2")) { - expect_test_element_hidden(app, box) - } - for (tab in c("Tab 1-1b", "Tab 1-2b")) { - expect_test_element_hidden(app, tab) - } + expect_test_element_hidden(app, "Box 3-1") + expect_test_element_hidden(app, "Box 3-2") + # ---- Page 1: Change Tabs ---- # activate second tabs and check that visibility has switched app$ click(selector = '[data-test-id="Page 1"] .nav-tabs [href$="tab-1-1b"]')$ @@ -60,46 +66,52 @@ for (bs_version in 3:5) { click(selector = '[data-test-id="Page 1"] .nav-tabs [href$="tab-1-2b"]')$ wait_for_js(is_test_element_visible("Tab 1-2b")) - for (tab in c("Tab 1-1a", "Tab 1-2a")) { - expect_test_element_hidden(app, tab) - } - for (tab in c("Tab 1-1b", "Tab 1-2b")) { - expect_test_element_visible(app, tab) - } + # now first tabs are hidden + expect_test_element_hidden(app, "Tab 1-1a") + expect_test_element_hidden(app, "Tab 1-2a") + # second tabs are visible + expect_test_element_visible(app, "Tab 1-1b") + expect_test_element_visible(app, "Tab 1-2b") - # Go to page 2 + # ---- Page 2 ---- app$ click(selector = ".nav .dropdown .dropdown-toggle")$ wait_for_js(is_element_visible(".nav .dropdown .dropdown-menu"))$ click(selector = '.nav .dropdown-item[href$="page-2"]')$ wait_for_js(is_test_element_visible("Page 2")) + # Page 2 is visible expect_test_element_visible(app, "Page 2") expect_test_element_visible(app, "Box 2-1") expect_test_element_visible(app, "Box 2-2") + # Pages 1 and 3 and their elements are hidden expect_test_element_hidden(app, "Page 1") + expect_test_element_hidden(app, "Box 1-1") + expect_test_element_hidden(app, "Box 1-2") expect_test_element_hidden(app, "Page 3") - for (box in c("Box 1-1", "Box 1-2", "Box 3-1", "Box 3-2")) { - expect_test_element_hidden(app, box) - } + expect_test_element_hidden(app, "Box 3-1") + expect_test_element_hidden(app, "Box 3-2") - # Go to page 3 + # ---- Page 3 ---- app$ click(selector = ".nav .dropdown .dropdown-toggle")$ wait_for_js(is_element_visible(".nav .dropdown .dropdown-menu"))$ click(selector = '.nav .dropdown-item[href$="page-3"]')$ wait_for_js(is_test_element_visible("Page 3")) + # Page 3 is visible expect_test_element_visible(app, "Page 3") expect_test_element_visible(app, "Box 3-1") expect_test_element_visible(app, "Box 3-2") + # Pages 1 and 2 and their elements are hidden expect_test_element_hidden(app, "Page 1") + expect_test_element_hidden(app, "Box 1-1") + expect_test_element_hidden(app, "Box 1-2") expect_test_element_hidden(app, "Page 2") - for (box in c("Box 1-1", "Box 1-2", "Box 2-1", "Box 2-2")) { - expect_test_element_hidden(app, box) - } + expect_test_element_hidden(app, "Box 2-1") + expect_test_element_hidden(app, "Box 2-2") app$stop() }) From 737170600cba0394336547665984f77b9ad8feb5 Mon Sep 17 00:00:00 2001 From: schloerke Date: Tue, 2 May 2023 18:41:23 +0000 Subject: [PATCH 8/9] Generate apps deps (GitHub Actions) --- R/data-apps-deps.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/data-apps-deps.R b/R/data-apps-deps.R index 2d7692dd21..43133d6921 100644 --- a/R/data-apps-deps.R +++ b/R/data-apps-deps.R @@ -58,4 +58,4 @@ apps_deps_map <- list(`001-hello` = "rsconnect", `012-datatables` = "ggplot2", "rversions", "sf", "withr"), `302-bootswatch-themes` = c("ggplot2", "progress", "rversions", "sf", "withr"), `304-bslib-card` = c("rlang", "rversions"), `305-bslib-value-box` = c("rlang", "rversions" - )) + ), `309-flexdashboard-tabs-navs` = "rmarkdown") From ccaad075e757b94f8a3646a21d67dbb05d1831d9 Mon Sep 17 00:00:00 2001 From: gadenbuie Date: Tue, 9 May 2023 17:37:48 +0000 Subject: [PATCH 9/9] Generate apps deps (GitHub Actions) --- R/data-apps-deps.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/R/data-apps-deps.R b/R/data-apps-deps.R index 43133d6921..86567fca64 100644 --- a/R/data-apps-deps.R +++ b/R/data-apps-deps.R @@ -58,4 +58,6 @@ apps_deps_map <- list(`001-hello` = "rsconnect", `012-datatables` = "ggplot2", "rversions", "sf", "withr"), `302-bootswatch-themes` = c("ggplot2", "progress", "rversions", "sf", "withr"), `304-bslib-card` = c("rlang", "rversions"), `305-bslib-value-box` = c("rlang", "rversions" - ), `309-flexdashboard-tabs-navs` = "rmarkdown") + ), `309-flexdashboard-tabs-navs` = "rmarkdown", `310-bslib-sidebar-dynamic` = c("rversions", + "testthat"), `311-bslib-sidebar-toggle-methods` = c("rversions", + "testthat"))