@@ -22,34 +22,72 @@ test_that("{shinytest2} recording: accordion-select", {
2222 app $ wait_for_idle()
2323 }
2424
25+ set_selected <- function (x , expected = x ) {
26+ app $
27+ set_inputs(selected = x )$
28+ wait_for_idle()
29+
30+ expect_selected(expected )
31+ }
32+
33+ expect_selected <- function (x ) {
34+ expect_equal(app $ get_value(input = " selected" ), !! x )
35+ }
36+
37+ set_displayed <- function (x ) {
38+ app $
39+ set_inputs(displayed = x )$
40+ wait_for_idle()
41+
42+ displayed <- app $ get_js(
43+ " [...document.querySelectorAll('#acc .accordion-item')].map(el => el.dataset.value)"
44+ )
45+ displayed <- unlist(displayed )
46+ expect_equal(displayed , x )
47+ }
48+
2549 # Test accordion_panel_set()
26- set_inputs( selected = c(" A" , " D" ))
27- set_inputs( selected = c(" A" , " D" , " H" ))
28- app $ expect_screenshot()
50+ set_selected( c(" A" , " D" ))
51+ set_selected( c(" A" , " D" , " H" ))
52+ app $ expect_screenshot(threshold = 5 )
2953
3054 # Test accordion_panel_remove()
31- set_inputs(displayed = c(" D" , " F" ))
55+ set_displayed(c(" D" , " F" ))
56+ expect_selected(" D" )
57+
3258 # Test accordion_panel_insert()
33- set_inputs(displayed = c(" A" , " D" , " F" ))
34- set_inputs(displayed = c(" A" , " D" , " F" , " Z" ))
59+ set_displayed(c(" A" , " D" , " F" ))
60+ expect_selected(" D" )
61+ set_displayed(c(" A" , " D" , " F" , " Z" ))
62+ expect_selected(" D" )
63+
3564 # Test accordion_panel_insert() + accordion_panel_open()
3665 set_inputs(open_on_insert = TRUE )
37- set_inputs(displayed = c(" A" , " D" , " F" , " J" , " Z" ))
38- set_inputs(displayed = c(" A" , " D" , " F" , " J" , " K" , " Z" ))
39- app $ expect_screenshot()
66+ set_displayed(c(" A" , " D" , " F" , " J" , " Z" ))
67+ expect_selected(c(" D" , " J" ))
68+
69+ set_displayed(c(" A" , " D" , " F" , " J" , " K" , " Z" ))
70+ expect_selected(c(" D" , " J" , " K" ))
71+ app $ expect_screenshot(threshold = 5 )
4072
4173 # redo tests with accordion(autoclose = TRUE)
4274 set_inputs(open_on_insert = FALSE )
4375 set_inputs(multiple = FALSE )
4476
4577 # Last one (D) should be selected
46- set_inputs(selected = " B" )
47- set_inputs(selected = c(" C" , " D" ))
48- app $ expect_screenshot()
78+ set_selected(" B" , expected = " B" )
79+ set_selected(c(" C" , " D" ), expected = " D" )
80+ app $ expect_screenshot(threshold = 5 )
81+
82+ set_displayed(c(" A" , " D" , " F" , " Z" ))
83+ expect_selected(" D" )
4984
50- set_inputs( displayed = c( " A " , " D " , " F " , " Z " ))
85+ # Inserting a new open panel with multiple=FALSE selects just that panel
5186 set_inputs(open_on_insert = TRUE )
52- set_inputs(displayed = c(" A" , " D" , " F" , " J" , " Z" ))
53- set_inputs(displayed = c(" A" , " D" , " F" , " J" , " K" , " Z" ))
54- app $ expect_screenshot()
87+ set_displayed(c(" A" , " D" , " F" , " J" , " Z" ))
88+ expect_selected(" J" )
89+
90+ set_displayed(c(" A" , " D" , " F" , " J" , " K" , " Z" ))
91+ expect_selected(" K" )
92+ app $ expect_screenshot(threshold = 5 )
5593})
0 commit comments