Introduction

This report presents the results of the Installation Qualification (IQ) testing for the rpact.cloud package, conducted using the testthat package. The IQ process is essential for verifying that rpact.cloud is installed correctly and operates as intended in your target environment, ensuring compliance with GxP regulatory requirements. The tests performed are designed to validate the functionality and reliability of the package, providing confidence for its use in regulated settings.

System Information and Environment Details for Qualification

R Version

  • Version: R version 4.5.1 (2025-06-13)
  • Platform: x86_64-pc-linux-gnu
  • Running under: Ubuntu 22.04.4 LTS

Matrix Products

  • default

Locale

  • LC_CTYPE = C.UTF-8
  • LC_NUMERIC = C
  • LC_TIME = C.UTF-8
  • LC_COLLATE = C.UTF-8
  • LC_MONETARY = C.UTF-8
  • LC_MESSAGES = C.UTF-8
  • LC_PAPER = C.UTF-8
  • LC_NAME = C
  • LC_ADDRESS = C
  • LC_TELEPHONE = C
  • LC_MEASUREMENT = C.UTF-8
  • LC_IDENTIFICATION = C

Time Zone

  • Time Zone: Etc/UTC
  • TZCode Source: system (glibc)

Attached Base Packages

  • stats
  • graphics
  • grDevices
  • utils
  • datasets
  • methods
  • base

Other Attached Packages

  • rpact.cloud: 2.8.0.9099
  • shiny: 1.11.1
  • testthat: 3.2.3
  • withr: 3.0.2
  • htmltools: 0.5.8.1
  • writexl: 1.5.4
  • rmarkdown: 2.29
  • markdown: 2.0
  • knitr: 1.50
  • ggplot2: 4.0.0
  • pacman: 0.5.1

Loaded via a Namespace (and not attached)

  • remotes: 2.5.0
  • rlang: 1.1.6
  • magrittr: 2.0.4
  • compiler: 4.5.1
  • systemfonts: 1.2.3
  • vctrs: 0.6.5
  • profvis: 0.4.0
  • pkgconfig: 2.0.3
  • fastmap: 1.2.0
  • ellipsis: 0.3.2
  • fontawesome: 0.5.3
  • promises: 1.3.3
  • blastula: 0.3.6
  • rpact: 4.2.1
  • sessioninfo: 1.2.3
  • ragg: 1.5.0
  • purrr: 1.1.0
  • xfun: 0.53
  • cachem: 1.1.0
  • jsonlite: 2.0.0
  • later: 1.4.4
  • uuid: 1.2-1
  • R6: 2.6.1
  • bslib: 0.9.0
  • RColorBrewer: 1.1-3
  • shinybusy: 0.3.3
  • pkgload: 1.4.0
  • brio: 1.1.5
  • jquerylib: 0.1.4
  • Rcpp: 1.1.0
  • usethis: 3.2.1
  • httpuv: 1.6.16
  • tidyselect: 1.2.1
  • rstudioapi: 0.17.1
  • yaml: 2.3.10
  • codetools: 0.2-20
  • miniUI: 0.1.2
  • fresh: 0.2.2
  • pkgbuild: 1.4.8
  • tibble: 3.3.0
  • S7: 0.2.0
  • flextable: 0.9.10
  • askpass: 1.2.1
  • evaluate: 1.0.5
  • desc: 1.4.3
  • urlchecker: 1.0.1
  • zip: 2.3.3
  • xml2: 1.4.0
  • pillar: 1.11.0
  • shinycssloaders: 1.1.0
  • DT: 0.34.0
  • shinyjs: 2.1.0
  • plotly: 4.11.0
  • generics: 0.1.4
  • rprojroot: 2.1.1
  • bs4Dash: 2.3.5
  • scales: 1.4.0
  • chron: 2.3-62
  • xtable: 1.8-4
  • glue: 1.8.0
  • gdtools: 0.4.3
  • lazyeval: 0.2.2
  • tools: 4.5.1
  • data.table: 1.17.8
  • fs: 1.6.6
  • grid: 4.5.1
  • tidyr: 1.3.1
  • devtools: 2.4.5
  • cli: 3.6.5
  • config: 0.3.2
  • rappdirs: 0.3.3
  • textshaping: 1.0.3
  • officer: 0.7.0
  • fontBitstreamVera: 0.1.1
  • rhandsontable: 0.3.8
  • viridisLite: 0.4.2
  • dplyr: 1.1.4
  • gtable: 0.3.6
  • sass: 0.4.10
  • digest: 0.6.37
  • fontquiver: 0.2.1
  • htmlwidgets: 1.6.4
  • farver: 2.1.2
  • memoise: 2.0.1
  • lifecycle: 1.0.4
  • httr: 1.4.7
  • here: 1.0.2
  • mime: 0.13
  • fontLiberation: 0.1.0
  • openssl: 2.3.3

Test Results

1 assertions

1.1 returns invisible when no arguments are provided

1: ✅

1.2 warns for unknown arguments

2: ✅

1.3 does not warn for ignored arguments

3: ✅

1.4 stops for unknown arguments when exceptionEnabled is TRUE

4: ✅

1.5 returns invisible when value is within the interval

5: ✅

1.6 stops when value is below the interval

6: ✅

1.7 stops when value is above the interval

7: ✅

1.8 returns invisible when NA is allowed and value is NA

8: ✅

1.9 stops when NA is not allowed and value is NA

9: ✅

2 config-yml

2.1 config.yml is complete

10: ✅

3 design-comparison

3.1 test design comparison

11: ✅, 12: ✅

4 first-character-to-lower-case

4.1 converts first character to lower case for a single word

13: ✅

4.2 converts first character to lower case for a sentence

14: ✅

4.3 handles empty string input

15: ✅

4.4 handles NULL input

16: ✅

4.5 converts first character to lower case with additional arguments

17: ✅

4.6 converts first character to lower case with multiple additional arguments

18: ✅

4.7 handles numeric input as character

19: ✅

4.8 handles special characters

20: ✅

5 first-character-to-upper-case

5.1 converts first character to upper case for a single word

21: ✅

5.2 converts first character to upper case for a sentence

22: ✅

5.3 handles empty string input

23: ✅

5.4 handles NULL input

24: ✅

5.5 converts first character to upper case with additional arguments

25: ✅

5.6 converts first character to upper case with multiple additional arguments

26: ✅

5.7 handles numeric input as character

27: ✅

5.8 handles special characters

28: ✅

6 get-class-name

6.1 returns the class name for a numeric vector

29: ✅

6.2 returns the class name for a character vector

30: ✅

6.3 returns the class name for a data frame

31: ✅

6.4 returns the class name for a list

32: ✅

6.5 returns the class name for a matrix

33: ✅

6.6 returns the class name for a NULL value

34: ✅

7 get-concatenated-values

7.1 returns NULL when input is NULL

35: ✅

7.2 returns the same value when input length is 1

36: ✅

7.3 concatenates values with default separator

37: ✅

7.4 concatenates values with custom separator

38: ✅

7.5 concatenates values with ‘and’ mode

39: ✅

7.6 concatenates values with ‘or’ mode

40: ✅

7.7 concatenates values with ‘vector’ mode

41: ✅

7.8 handles edge case with empty string separator

42: ✅

7.9 handles edge case with single element and ‘and’ mode

43: ✅

7.10 handles edge case with single element and ‘or’ mode

44: ✅

8 integer-to-written-number

8.1 returns ‘one’ for input 1

45: ✅

8.2 returns ‘nine’ for input 9

46: ✅

8.3 returns the input as character for input greater than 9

47: ✅

8.4 returns the input as character for input less than 1

48: ✅

8.5 returns the input as character for non-integer numeric input

49: ✅

8.6 returns the input as character for NA input

50: ✅

8.7 returns the input as character for NULL input

51: ✅

8.8 returns the input as character for non-numeric input

52: ✅

9 is-local-developer-system

9.1 returns TRUE when the user is in the developers list

53: ✅

9.2 returns FALSE when the user is not in the developers list

54: ✅

9.3 returns FALSE when an error occurs

55: ✅

9.4 returns FALSE when the user is not in a custom developers list

56: ✅

10 shinytest2-default-design

10.1 Creation of new default design leads to expected summary

57: ✅

11 shinytest2-quick-start-menu-1kmax-means-1group

11.1 Create results for fixed designs: Means, Single Group

58: ✅, 59: ✅, 60: ✅, 61: ✅, 62: ✅, 63: ✅, 64: ✅, 65: ✅, 66: ✅, 67: ✅, 68: ✅, 69: ✅, 70: ✅, 71: ✅, 72: ✅, 73: ✅, 74: ✅, 75: ✅, 76: ✅, 77: ✅, 78: ✅, 79: ✅, 80: ✅, 81: ✅, 82: ✅, 83: ✅, 84: ✅, 85: ✅, 86: ✅, 87: ✅, 88: ✅, 89: ✅, 90: ✅, 91: ✅

12 shinytest2-quick-start-menu-1kmax-means-3groups

12.1 Perform fixed design calculations for three-group mean analysis

92: ✅, 93: ✅, 94: ✅, 95: ✅, 96: ✅, 97: ✅, 98: ✅, 99: ✅, 100: ✅, 101: ✅, 102: ✅, 103: ✅, 104: ✅, 105: ✅, 106: ✅, 107: ✅, 108: ✅, 109: ✅, 110: ✅, 111: ✅, 112: ✅, 113: ✅, 114: ✅, 115: ✅, 116: ✅, 117: ✅, 118: ✅, 119: ✅

13 shinytest2-quick-start-menu-1kmax-rates-1group

13.1 Create results for fixed designs: Rates, Single Group

120: ✅, 121: ✅, 122: ✅, 123: ✅, 124: ✅, 125: ✅, 126: ✅, 127: ✅, 128: ✅, 129: ✅, 130: ✅, 131: ✅, 132: ✅, 133: ✅, 134: ✅, 135: ✅, 136: ✅, 137: ✅, 138: ✅, 139: ✅, 140: ✅, 141: ✅, 142: ✅, 143: ✅, 144: ✅, 145: ✅, 146: ✅, 147: ✅, 148: ✅, 149: ✅, 150: ✅, 151: ✅, 152: ✅, 153: ✅, 154: ✅, 155: ✅, 156: ✅, 157: ✅, 158: ✅, 159: ✅

14 shinytest2-quick-start-menu-1kmax-survival-2groups

14.1 Create a result for one fixed design, survival, and two arms

160: ✅, 161: ✅, 162: ✅, 163: ✅, 164: ✅, 165: ✅, 166: ✅, 167: ✅, 168: ✅, 169: ✅, 170: ✅, 171: ✅, 172: ✅, 173: ✅, 174: ✅, 175: ✅, 176: ✅, 177: ✅, 178: ✅, 179: ✅, 180: ✅, 181: ✅

15 shinytest2-quick-start-menu-2kmax-survival-1group

15.1 Create a survival simulation result for two stages and two arms

182: ✅, 183: ✅, 184: ✅

16 shinytest2-report-generation

16.1 Creation of new default design leads to expected markdown report

185: ✅

17 shinytest2-rpact-package-result-comparison

17.1 Compare GUI-configured results with rpact package outputs

186: ✅, 187: ✅

18 string-utilities

18.1 returns NULL for missing input

188: ✅

18.2 returns NULL for NULL input

189: ✅

18.3 returns NA for single NA input

190: ✅

18.4 returns formatted string for named list

191: ✅

18.5 returns formatted string for nested list

192: ✅

18.6 returns formatted string for list with encapsulation

193: ✅

18.7 returns NULL for missing input

194: ✅

18.8 returns NULL for NULL input

195: ✅

18.9 returns NA for single NA input

196: ✅

18.10 returns class name for non-numeric input

197: ✅

18.11 returns formatted string for numeric vector

198: ✅

18.12 returns formatted string for character vector

199: ✅

18.13 returns formatted string for numeric matrix

200: ✅

18.14 returns formatted string for numeric vector with encapsulation

201: ✅

18.15 returns truncated string for long numeric vector

202: ✅

18.16 returns formatted string for numeric vector with rounding

203: ✅

18.17 trims trailing slash from URL

204: ✅

18.18 does not modify URL without trailing slash

205: ✅

18.19 trims whitespace and trailing slash from URL

206: ✅

18.20 handles empty string input

207: ✅

19 ui-utilities

19.1 returns default choices when config is not set

208: ✅

19.2 returns configured choices when config is set

209: ✅

19.3 assignSingleNumericIfValid works as expected

210: ✅, 211: ✅, 212: ✅, 213: ✅, 214: ✅, 215: ✅, 216: ✅, 217: ✅

19.4 groupNumberIsEqualTo works as expected

218: ✅, 219: ✅, 220: ✅, 221: ✅, 222: ✅, 223: ✅

19.5 isValidValue works as expected

224: ✅, 225: ✅, 226: ✅, 227: ✅, 228: ✅, 229: ✅, 230: ✅

19.6 isSelectedValue works as expected

231: ✅, 232: ✅, 233: ✅, 234: ✅, 235: ✅, 236: ✅, 237: ✅, 238: ✅, 239: ✅, 240: ✅

20 utilities

20.1 isLocalDeveloperSystem works as expected

241: ✅, 242: ✅, 243: ✅, 244: ✅

20.2 .getConcatenatedValues works as expected

245: ✅, 246: ✅, 247: ✅, 248: ✅, 249: ✅, 250: ✅, 251: ✅, 252: ✅, 253: ✅, 254: ✅, 255: ✅

Summary

The test ended at 14:49:00 on September 30, 2025.

A total of 255 tests were executed during the Installation Qualification:

The successful completion of all tests confirms that rpact.cloud is correctly installed and functioning properly in your environment. This means the package meets the required standards and is validated for use in GxP-compliant settings. You can now proceed with confidence to use rpact.cloud for reliable statistical planning, simulation, and analyses in regulated areas.

References

This report was generated automatically by rpact.cloud


For further assistance or questions regarding this report, please contact the RPACT support team at support@rpact.com.