From e80f21121969d79cb981b6de764924bb3a993ffa Mon Sep 17 00:00:00 2001 From: Jon Harmon Date: Thu, 26 Jun 2025 09:30:20 -0500 Subject: [PATCH] Test virtualSelectInput with shinytest2 I pinned shiny to v1.10.0 until they push 1.11.1. This test fails with 1.11.0 (which is most of the point of this test!). --- DESCRIPTION | 5 +- .../virtualSelectInput-change-multiple.json | 11 +++ .../virtualSelectInput-change-multiple_.png | Bin 0 -> 620 bytes .../virtualSelectInput-change-single.json | 8 ++ .../virtualSelectInput-change-single_.png | Bin 0 -> 566 bytes .../virtualSelectInput-init.json | 7 ++ .../virtualSelectInput-init_.png | Bin 0 -> 18046 bytes tests/testthat/apps/virtualSelectInput/app.R | 73 ++++++++++++++++++ tests/testthat/helper-shinytest2.R | 7 ++ tests/testthat/test-virtual-select.R | 38 +++++++++ 10 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 tests/testthat/_snaps/virtual-select/virtualSelectInput-change-multiple.json create mode 100644 tests/testthat/_snaps/virtual-select/virtualSelectInput-change-multiple_.png create mode 100644 tests/testthat/_snaps/virtual-select/virtualSelectInput-change-single.json create mode 100644 tests/testthat/_snaps/virtual-select/virtualSelectInput-change-single_.png create mode 100644 tests/testthat/_snaps/virtual-select/virtualSelectInput-init.json create mode 100644 tests/testthat/_snaps/virtual-select/virtualSelectInput-init_.png create mode 100644 tests/testthat/apps/virtualSelectInput/app.R create mode 100644 tests/testthat/helper-shinytest2.R create mode 100644 tests/testthat/test-virtual-select.R diff --git a/DESCRIPTION b/DESCRIPTION index b99701dc..08f885ac 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -37,4 +37,7 @@ Suggests: DT, scales, shinydashboard, - shinydashboardPlus + shinydashboardPlus, + shinytest2 (>= 0.4.1) +Remotes: + shiny=rstudio/shiny@v1.10.0 diff --git a/tests/testthat/_snaps/virtual-select/virtualSelectInput-change-multiple.json b/tests/testthat/_snaps/virtual-select/virtualSelectInput-change-multiple.json new file mode 100644 index 00000000..769a488a --- /dev/null +++ b/tests/testthat/_snaps/virtual-select/virtualSelectInput-change-multiple.json @@ -0,0 +1,11 @@ +{ + "input": { + "multiple": [ + "Jan", + "Feb" + ] + }, + "output": { + "res_multiple": "[1] \"Jan\" \"Feb\"" + } +} diff --git a/tests/testthat/_snaps/virtual-select/virtualSelectInput-change-multiple_.png b/tests/testthat/_snaps/virtual-select/virtualSelectInput-change-multiple_.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3d4978fe1e5416c8c3469186ca86a0fb8b913e GIT binary patch literal 620 zcmV-y0+aoTP)^c)0006rNkl`TN%;dp?!2wWe4!DCh-Q8h7FRYqaznLGe4BC{qBunvXE6V$IDaOvIB z(gI88-t#lb9Kz{g=HK(tvOAy8fFPUlYwG|I1XYN<0H{J_d%OyrN_mU0w{Nh*A54|I ze==3BUl+ltlyhPGb-e(rxO&qg0U#53`?HOXMzG;Er_w~$5M<>kCY_N9V+2^ii+iqV z7(mnQsdr!n&$TyRI-UlhwBH9Iy?ORp0REYtkKmC2kcqsFU9f`Za4fSTsb;vRlmHC_ z`0Na=h+8=vo^%?76bMWcz_$Rdecjd!0GYt33Yjnlz^S__Zxj-rObh_ft)mPRRG*%# z;8mD4Qq~tqiwVO30Ek}~31FC`2loMV0GY^3OeZ8h8PAc*qHngetoEfb zrp#bqosG`v;fm~( z@mJohtMl4=X?@t>xiH#dWIC(H^_N)fml%gNZ>VT+SaX0RVu+wBS64 zwk|Sndyiz^7Q`saf;lt!b1+e6Y0{VE{!we`Z9!I^P=xETYu{#YDosA$r|ZlLUW8c0 zkY#v@85#M{8K|)R0b|-fc=-nH8}iSx!}kl3&B2O{Y|j_FrWrMlI#bgC0000^c)0005~Nkl*hr14v50wA_ z9Is%F0hTj8*knIw7Bk~|w=zrX$=yYZ_9Hn?oLyW&S@z&&YClbng1e@9BN&;L^>oqp zbpU9a-hVnFd!~nR&}<(PGHK)E;#H(>&Re{`>|)m(^^LSXf~IJF^?Ccy*E+u_L_f&l zT=+Uc5^LVYDuGknX44x0WfnrWi=##Eaux~|0sxF%Pm4DBy2pzumq^0sqzzoDK-=}! z6dFB|H~@-zmg@ZeM>-1Lu;XDC zq33L1MMnR7Q&Cx5^6u#bZqE&u=k07*qoM6N<$ Ef@s_SIRF3v literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/virtual-select/virtualSelectInput-init.json b/tests/testthat/_snaps/virtual-select/virtualSelectInput-init.json new file mode 100644 index 00000000..e2c1a1db --- /dev/null +++ b/tests/testthat/_snaps/virtual-select/virtualSelectInput-init.json @@ -0,0 +1,7 @@ +{ + "input": { + "multiple": null, + "onclose": null, + "single": "January" + } +} diff --git a/tests/testthat/_snaps/virtual-select/virtualSelectInput-init_.png b/tests/testthat/_snaps/virtual-select/virtualSelectInput-init_.png new file mode 100644 index 0000000000000000000000000000000000000000..c16870fe101beae9ce89c4484a4644dbf67d44a5 GIT binary patch literal 18046 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�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