From d94d6d71fcbc1bb4e73946c723fe32b25df85f6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Mon, 19 Oct 2026 14:59:55 +0100
Subject: [PATCH 1/8] feat: adds support for function argument in TealAppDriver
---
NEWS.md | 1 +
R/TealAppDriver.R | 24 +++++++++++-------------
2 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/NEWS.md b/NEWS.md
index ce42c65d97..1577814ede 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -3,6 +3,7 @@
### Enhancements
* Exported `select_decorators()` to help module developers resolve the decorators applied to a specific output (#1733).
+* Add support for function argument in `TealAppDriver$new(app)`.
### Bug fixes
diff --git a/R/TealAppDriver.R b/R/TealAppDriver.R
index d1c1a3fde2..dc2ca08715 100644
--- a/R/TealAppDriver.R
+++ b/R/TealAppDriver.R
@@ -51,7 +51,12 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
timeout = rlang::missing_arg(),
load_timeout = rlang::missing_arg(),
...) {
- checkmate::assert_class(app, "teal_app")
+ checkmate::assert(
+ combine = "or",
+ .var.name = "app",
+ checkmate::check_function(app),
+ checkmate::check_class(app, "teal_app")
+ )
checkmate::assert_list(teal_options, names = "named")
# Default timeout is hardcoded to 4s in shinytest2:::resolve_timeout
# New default is set with environment variables if not already set by user
@@ -61,16 +66,7 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
extra_envvar$SHINYTEST2_TIMEOUT <- "20000"
}
if (Sys.getenv("SHINYTEST2_LOAD_TIMEOUT") == "") {
- extra_envvar$SHINYTEST2_TIMEOUT <- "100000"
- }
-
- if (length(teal_options)) {
- orig_server <- app$server
- opts <- teal_options
- app$server <- function(input, output, session) {
- do.call(base::options, opts)
- orig_server(input, output, session)
- }
+ extra_envvar$SHINYTEST2_LOAD_TIMEOUT <- "100000"
}
rlang::check_installed("withr")
@@ -78,11 +74,13 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
withr::with_envvar(
new = extra_envvar,
code = super$initialize(
- shiny::shinyApp(ui = app$ui, server = app$server, options = options),
+ if (is.function(app)) app else shiny::shinyApp(ui = app$ui, server = app$server),
name = "teal",
variant = shinytest2::platform_variant(),
timeout = timeout,
- load_timeout = load_timeout
+ load_timeout = load_timeout,
+ shiny_args = options,
+ options = teal_options
)
)
)
From 85753c669a6b246ee8e612de6f3a3362f16a16a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Fri, 23 Oct 2026 12:58:26 +0100
Subject: [PATCH 2/8] docs: update
---
R/TealAppDriver.R | 9 +++++++--
man/TealAppDriver.Rd | 11 +++++++++--
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/R/TealAppDriver.R b/R/TealAppDriver.R
index dc2ca08715..f149c6f383 100644
--- a/R/TealAppDriver.R
+++ b/R/TealAppDriver.R
@@ -25,7 +25,12 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
#' @description
#' Initialize a `TealAppDriver` object for testing a `teal` application.
#'
- #' @param app (`teal_app`)
+ #' @param app (`teal_app` or `function`) The `teal` application to be tested.
+ #' This value can be 2 different things:
+ #' - A `teal_app` object, which is the result of calling `teal::init()`.
+ #' - A function that returns a `teal_app` object.
+ #'
+ #' Other values that [`shinytest2::AppDriver`] `new()` functions accepts are not yet supported.
#' @param options (`list`) passed to `shinyApp(options)`. See [shiny::shinyApp()].
#' @param timeout (`numeric`) Default number of milliseconds for any timeout or
#' timeout_ parameter in the `TealAppDriver` class.
@@ -126,7 +131,7 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
super$stop(...)
},
#' @description
- #' Append parent [`shinytest2::AppDriver`] `click` method with a call to `waif_for_idle()` method.
+ #' Append parent [`shinytest2::AppDriver`] `click` method with a call to `wait_for_idle()` method.
#' @param ... arguments passed to parent [`shinytest2::AppDriver`] `click()` method.
click = function(...) {
super$click(...)
diff --git a/man/TealAppDriver.Rd b/man/TealAppDriver.Rd
index ae28654951..266faffc03 100644
--- a/man/TealAppDriver.Rd
+++ b/man/TealAppDriver.Rd
@@ -96,7 +96,14 @@ driving a teal application for performing interactions for \code{shinytest2} tes
\subsection{Arguments}{
\if{html}{\out{
}}
\describe{
- \item{\code{app}}{(\code{teal_app})}
+ \item{\code{app}}{(\code{teal_app} or \code{function}) The \code{teal} application to be tested.
+This value can be 2 different things:
+\itemize{
+\item A \code{teal_app} object, which is the result of calling \code{teal::init()}.
+\item A function that returns a \code{teal_app} object.
+}
+
+Other values that \code{\link[shinytest2:AppDriver]{shinytest2::AppDriver}} \code{new()} functions accepts are not yet supported.}
\item{\code{options}}{(\code{list}) passed to \code{shinyApp(options)}. See \code{\link[shiny:shinyApp]{shiny::shinyApp()}}.}
\item{\code{teal_options}}{(\code{list}) named list of R options to set inside the spawned
Shiny process (e.g. \code{list(teal.enable_deep_linking = TRUE)}). Applied at session
@@ -145,7 +152,7 @@ if the \code{ACTIONS_STEP_DEBUG} environment variable is set to \code{true} (cas
\if{html}{\out{
}}
\if{latex}{\out{\hypertarget{method-TealAppDriver-click}{}}}
\subsection{\code{TealAppDriver$click()}}{
- Append parent \code{\link[shinytest2:AppDriver]{shinytest2::AppDriver}} \code{click} method with a call to \code{waif_for_idle()} method.
+ Append parent \code{\link[shinytest2:AppDriver]{shinytest2::AppDriver}} \code{click} method with a call to \code{wait_for_idle()} method.
\subsection{Usage}{
\if{html}{\out{
}}
\preformatted{TealAppDriver$click(...)}
From e7ac4ae49bc57212f91a6ff8a36cced73fdcb0f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Fri, 23 Oct 2026 13:06:14 +0100
Subject: [PATCH 3/8] docs: update news
---
NEWS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/NEWS.md b/NEWS.md
index a8afc630aa..a9b99257fe 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -3,7 +3,7 @@
### Enhancements
* Exported `select_decorators()` to help module developers resolve the decorators applied to a specific output (#1733).
-* Add support for function argument in `TealAppDriver$new(app)`.
+* Add support for function argument in `TealAppDriver$new(app)` (#1753).
### Bug fixes
From 9a54bf8ebf50360b6caab07640607b3256d171a3 Mon Sep 17 00:00:00 2001
From: "Bingjun (Benjamin) Wang"
Date: Mon, 26 Oct 2026 22:45:10 -0700
Subject: [PATCH 4/8] fix: start function apps in TealAppDriver and use the dev
package
---
R/TealAppDriver.R | 32 +++++++++++++++++++++++++++-----
man/TealAppDriver.Rd | 9 ++++++---
2 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/R/TealAppDriver.R b/R/TealAppDriver.R
index f149c6f383..2722ca70ae 100644
--- a/R/TealAppDriver.R
+++ b/R/TealAppDriver.R
@@ -28,7 +28,10 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
#' @param app (`teal_app` or `function`) The `teal` application to be tested.
#' This value can be 2 different things:
#' - A `teal_app` object, which is the result of calling `teal::init()`.
- #' - A function that returns a `teal_app` object.
+ #' - A function that returns a `teal_app` (or a `shiny.appobj`) object.
+ #' The function is executed in the background R process, so it must be self-contained:
+ #' call `library()` first and do not use objects defined outside of the function
+ #' (see [`shinytest2::AppDriver`] `new` method).
#'
#' Other values that [`shinytest2::AppDriver`] `new()` functions accepts are not yet supported.
#' @param options (`list`) passed to `shinyApp(options)`. See [shiny::shinyApp()].
@@ -44,8 +47,8 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
#' See [`shinytest2::AppDriver`] `new` method for more details on how to change it
#' via options or environment variables
#' @param teal_options (`list`) named list of R options to set inside the spawned
- #' Shiny process (e.g. `list(teal.enable_deep_linking = TRUE)`). Applied at session
- #' start so option-gated server logic sees them.
+ #' Shiny process (e.g. `list(teal.enable_deep_linking = TRUE)`). Applied before the app
+ #' is created, so option-gated logic in `init()` and in the server sees them.
#' @param ... Additional arguments to be passed to `shinytest2::AppDriver$new`
#'
#'
@@ -74,17 +77,36 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
extra_envvar$SHINYTEST2_LOAD_TIMEOUT <- "100000"
}
+ app <- if (is.function(app)) {
+ # The function is serialized to the background process. Detach it from the calling
+ # environment so that it doesn't reference (and load) the installed package namespace
+ # before `library()` is called inside the function.
+ environment(app) <- globalenv()
+ wrapper <- function() NULL
+ # shinytest2 only runs the result of the function if it is a `shiny.appobj`.
+ body(wrapper) <- rlang::expr({
+ x <- (!!app)()
+ if (inherits(x, "teal_app")) {
+ x <- shiny::shinyApp(ui = x$ui, server = x$server, options = !!options)
+ }
+ x
+ })
+ environment(wrapper) <- globalenv()
+ wrapper
+ } else {
+ shiny::shinyApp(ui = app$ui, server = app$server, options = options)
+ }
+
rlang::check_installed("withr")
suppressWarnings(
withr::with_envvar(
new = extra_envvar,
code = super$initialize(
- if (is.function(app)) app else shiny::shinyApp(ui = app$ui, server = app$server),
+ app,
name = "teal",
variant = shinytest2::platform_variant(),
timeout = timeout,
load_timeout = load_timeout,
- shiny_args = options,
options = teal_options
)
)
diff --git a/man/TealAppDriver.Rd b/man/TealAppDriver.Rd
index 266faffc03..e3f6d305ac 100644
--- a/man/TealAppDriver.Rd
+++ b/man/TealAppDriver.Rd
@@ -100,14 +100,17 @@ driving a teal application for performing interactions for \code{shinytest2} tes
This value can be 2 different things:
\itemize{
\item A \code{teal_app} object, which is the result of calling \code{teal::init()}.
-\item A function that returns a \code{teal_app} object.
+\item A function that returns a \code{teal_app} (or a \code{shiny.appobj}) object.
+The function is executed in the background R process, so it must be self-contained:
+call \verb{library()} first and do not use objects defined outside of the function
+(see \code{\link[shinytest2:AppDriver]{shinytest2::AppDriver}} \code{new} method).
}
Other values that \code{\link[shinytest2:AppDriver]{shinytest2::AppDriver}} \code{new()} functions accepts are not yet supported.}
\item{\code{options}}{(\code{list}) passed to \code{shinyApp(options)}. See \code{\link[shiny:shinyApp]{shiny::shinyApp()}}.}
\item{\code{teal_options}}{(\code{list}) named list of R options to set inside the spawned
-Shiny process (e.g. \code{list(teal.enable_deep_linking = TRUE)}). Applied at session
-start so option-gated server logic sees them.}
+Shiny process (e.g. \code{list(teal.enable_deep_linking = TRUE)}). Applied before the app
+is created, so option-gated logic in \code{init()} and in the server sees them.}
\item{\code{timeout}}{(\code{numeric}) Default number of milliseconds for any timeout or
timeout_ parameter in the \code{TealAppDriver} class.
Defaults to 20s.
From d4983973ae400bac0d5d3fc6ea561f45559f10e6 Mon Sep 17 00:00:00 2001
From: "Bingjun (Benjamin) Wang"
Date: Tue, 27 Oct 2026 20:56:03 -0700
Subject: [PATCH 5/8] add test cases
---
R/TealAppDriver.R | 13 ++----
man/TealAppDriver.Rd | 10 ++---
tests/testthat/test-shinytest2-init.R | 58 +++++++++++++++++++++++++++
3 files changed, 66 insertions(+), 15 deletions(-)
diff --git a/R/TealAppDriver.R b/R/TealAppDriver.R
index 2722ca70ae..c6c0304feb 100644
--- a/R/TealAppDriver.R
+++ b/R/TealAppDriver.R
@@ -28,10 +28,8 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
#' @param app (`teal_app` or `function`) The `teal` application to be tested.
#' This value can be 2 different things:
#' - A `teal_app` object, which is the result of calling `teal::init()`.
- #' - A function that returns a `teal_app` (or a `shiny.appobj`) object.
- #' The function is executed in the background R process, so it must be self-contained:
- #' call `library()` first and do not use objects defined outside of the function
- #' (see [`shinytest2::AppDriver`] `new` method).
+ #' - A function that returns a `teal_app` object. The function runs in a separate R process,
+ #' so it must call `library(teal)` and not use objects defined outside of it.
#'
#' Other values that [`shinytest2::AppDriver`] `new()` functions accepts are not yet supported.
#' @param options (`list`) passed to `shinyApp(options)`. See [shiny::shinyApp()].
@@ -47,8 +45,8 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
#' See [`shinytest2::AppDriver`] `new` method for more details on how to change it
#' via options or environment variables
#' @param teal_options (`list`) named list of R options to set inside the spawned
- #' Shiny process (e.g. `list(teal.enable_deep_linking = TRUE)`). Applied before the app
- #' is created, so option-gated logic in `init()` and in the server sees them.
+ #' Shiny process (e.g. `list(teal.enable_deep_linking = TRUE)`). Applied at session
+ #' start so option-gated server logic sees them.
#' @param ... Additional arguments to be passed to `shinytest2::AppDriver$new`
#'
#'
@@ -78,9 +76,6 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
}
app <- if (is.function(app)) {
- # The function is serialized to the background process. Detach it from the calling
- # environment so that it doesn't reference (and load) the installed package namespace
- # before `library()` is called inside the function.
environment(app) <- globalenv()
wrapper <- function() NULL
# shinytest2 only runs the result of the function if it is a `shiny.appobj`.
diff --git a/man/TealAppDriver.Rd b/man/TealAppDriver.Rd
index e3f6d305ac..fef247e1f1 100644
--- a/man/TealAppDriver.Rd
+++ b/man/TealAppDriver.Rd
@@ -100,17 +100,15 @@ driving a teal application for performing interactions for \code{shinytest2} tes
This value can be 2 different things:
\itemize{
\item A \code{teal_app} object, which is the result of calling \code{teal::init()}.
-\item A function that returns a \code{teal_app} (or a \code{shiny.appobj}) object.
-The function is executed in the background R process, so it must be self-contained:
-call \verb{library()} first and do not use objects defined outside of the function
-(see \code{\link[shinytest2:AppDriver]{shinytest2::AppDriver}} \code{new} method).
+\item A function that returns a \code{teal_app} object. The function runs in a separate R process,
+so it must call \code{library(teal)} and not use objects defined outside of it.
}
Other values that \code{\link[shinytest2:AppDriver]{shinytest2::AppDriver}} \code{new()} functions accepts are not yet supported.}
\item{\code{options}}{(\code{list}) passed to \code{shinyApp(options)}. See \code{\link[shiny:shinyApp]{shiny::shinyApp()}}.}
\item{\code{teal_options}}{(\code{list}) named list of R options to set inside the spawned
-Shiny process (e.g. \code{list(teal.enable_deep_linking = TRUE)}). Applied before the app
-is created, so option-gated logic in \code{init()} and in the server sees them.}
+Shiny process (e.g. \code{list(teal.enable_deep_linking = TRUE)}). Applied at session
+start so option-gated server logic sees them.}
\item{\code{timeout}}{(\code{numeric}) Default number of milliseconds for any timeout or
timeout_ parameter in the \code{TealAppDriver} class.
Defaults to 20s.
diff --git a/tests/testthat/test-shinytest2-init.R b/tests/testthat/test-shinytest2-init.R
index ffa56bcc23..f30cae90b0 100644
--- a/tests/testthat/test-shinytest2-init.R
+++ b/tests/testthat/test-shinytest2-init.R
@@ -147,3 +147,61 @@ testthat::describe("e2e: init reporter buttons", {
testthat::expect_length(app_driver$get_text(".report_add_wrapper .teal-reporter.action-button"), 0)
})
})
+
+testthat::describe("e2e: TealAppDriver accepts a function that creates the app", {
+ it("initializes a teal_app returned by the function", {
+ skip_if_too_deep(5)
+ app_driver <- TealAppDriver$new(
+ function() {
+ library(teal)
+ init(
+ data = teal_data(iris = iris),
+ modules = modules(example_module(label = "mod1"), example_module(label = "mod2"))
+ )
+ }
+ )
+ withr::defer(app_driver$stop())
+
+ app_driver$expect_no_shiny_error()
+ testthat::expect_equal(app_driver$get_value(input = "teal-teal_modules-active_module_id"), "mod1")
+ testthat::expect_identical(app_driver$get_active_filter_vars(), "iris")
+ })
+
+ it("initializes a shiny.appobj returned by the function", {
+ skip_if_too_deep(5)
+ app_driver <- TealAppDriver$new(
+ function() {
+ library(teal)
+ app <- init(data = teal_data(iris = iris), modules = example_module(label = "mod1"))
+ shiny::shinyApp(ui = app$ui, server = app$server)
+ }
+ )
+ withr::defer(app_driver$stop())
+
+ app_driver$expect_no_shiny_error()
+ testthat::expect_equal(app_driver$get_value(input = "teal-teal_modules-active_module_id"), "mod1")
+ })
+
+ it("applies teal_options in the app process", {
+ skip_if_too_deep(5)
+ app_driver <- TealAppDriver$new(
+ function() {
+ library(teal)
+ init(
+ data = teal_data(iris = iris),
+ modules = modules(example_module(label = "mod1"), example_module(label = "mod2"))
+ )
+ },
+ teal_options = list(teal.enable_deep_linking = TRUE)
+ )
+ withr::defer(app_driver$stop())
+
+ app_driver$navigate_teal_tab("mod2")
+
+ testthat::expect_match(app_driver$get_js("window.location.href"), "active_module=mod2")
+ })
+})
+
+testthat::test_that("TealAppDriver throws an error when app is neither a teal_app nor a function", {
+ testthat::expect_error(TealAppDriver$new("path/to/app"), "app")
+})
From 125c47a1119719ae6da78b6c28b1c9e92326ed83 Mon Sep 17 00:00:00 2001
From: "Bingjun (Benjamin) Wang"
Date: Wed, 28 Oct 2026 18:05:35 -0700
Subject: [PATCH 6/8] resolve comments
---
R/TealAppDriver.R | 24 +++++++++++++-----------
tests/testthat/test-shinytest2-init.R | 27 +++++++++++----------------
2 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/R/TealAppDriver.R b/R/TealAppDriver.R
index c6c0304feb..3eaea2c636 100644
--- a/R/TealAppDriver.R
+++ b/R/TealAppDriver.R
@@ -76,18 +76,20 @@ TealAppDriver <- R6::R6Class( # nolint: object_name.
}
app <- if (is.function(app)) {
+ # Avoid serializing the teal namespace, so the background process loads the dev package.
environment(app) <- globalenv()
- wrapper <- function() NULL
- # shinytest2 only runs the result of the function if it is a `shiny.appobj`.
- body(wrapper) <- rlang::expr({
- x <- (!!app)()
- if (inherits(x, "teal_app")) {
- x <- shiny::shinyApp(ui = x$ui, server = x$server, options = !!options)
- }
- x
- })
- environment(wrapper) <- globalenv()
- wrapper
+ # shinytest2 only runs the function's result if it is a `shiny.appobj`;
+ # `init()` returns a `teal_app`, so convert it in the background process.
+ local(
+ function() {
+ x <- app_fun()
+ if (inherits(x, "teal_app")) {
+ x <- shiny::shinyApp(ui = x$ui, server = x$server, options = shiny_options)
+ }
+ x
+ },
+ envir = list2env(list(app_fun = app, shiny_options = options), parent = globalenv())
+ )
} else {
shiny::shinyApp(ui = app$ui, server = app$server, options = options)
}
diff --git a/tests/testthat/test-shinytest2-init.R b/tests/testthat/test-shinytest2-init.R
index f30cae90b0..7a7fa0fad1 100644
--- a/tests/testthat/test-shinytest2-init.R
+++ b/tests/testthat/test-shinytest2-init.R
@@ -148,16 +148,13 @@ testthat::describe("e2e: init reporter buttons", {
})
})
-testthat::describe("e2e: TealAppDriver accepts a function that creates the app", {
- it("initializes a teal_app returned by the function", {
+testthat::describe("e2e: TealAppDriver with a function as `app`", {
+ it("starts the app when the function returns a teal_app", {
skip_if_too_deep(5)
app_driver <- TealAppDriver$new(
function() {
library(teal)
- init(
- data = teal_data(iris = iris),
- modules = modules(example_module(label = "mod1"), example_module(label = "mod2"))
- )
+ init(data = teal_data(iris = iris), modules = example_module(label = "mod1"))
}
)
withr::defer(app_driver$stop())
@@ -167,7 +164,7 @@ testthat::describe("e2e: TealAppDriver accepts a function that creates the app",
testthat::expect_identical(app_driver$get_active_filter_vars(), "iris")
})
- it("initializes a shiny.appobj returned by the function", {
+ it("starts the app when the function returns a shiny.appobj", {
skip_if_too_deep(5)
app_driver <- TealAppDriver$new(
function() {
@@ -182,26 +179,24 @@ testthat::describe("e2e: TealAppDriver accepts a function that creates the app",
testthat::expect_equal(app_driver$get_value(input = "teal-teal_modules-active_module_id"), "mod1")
})
- it("applies teal_options in the app process", {
+ it("sets teal_options in the app process", {
skip_if_too_deep(5)
app_driver <- TealAppDriver$new(
function() {
library(teal)
- init(
- data = teal_data(iris = iris),
- modules = modules(example_module(label = "mod1"), example_module(label = "mod2"))
- )
+ init(data = teal_data(iris = iris), modules = example_module(label = "mod1"))
},
teal_options = list(teal.enable_deep_linking = TRUE)
)
withr::defer(app_driver$stop())
- app_driver$navigate_teal_tab("mod2")
-
- testthat::expect_match(app_driver$get_js("window.location.href"), "active_module=mod2")
+ testthat::expect_match(app_driver$get_js("window.location.href"), "active_module=mod1")
})
})
testthat::test_that("TealAppDriver throws an error when app is neither a teal_app nor a function", {
- testthat::expect_error(TealAppDriver$new("path/to/app"), "app")
+ testthat::expect_error(
+ TealAppDriver$new("path/to/app"),
+ "Must be a function.*Must inherit from class 'teal_app'"
+ )
})
From 51b9b71c276a88be6183bd00b99783cfb139d240 Mon Sep 17 00:00:00 2001
From: "Bingjun (Benjamin) Wang"
Date: Thu, 29 Oct 2026 15:01:43 -0700
Subject: [PATCH 7/8] Update teal.slice URL in teal_slices docs
Co-Authored-By: Claude Opus 5.5
---
man/teal_slices.Rd | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/man/teal_slices.Rd b/man/teal_slices.Rd
index 1ef8b0b452..4e46b6c458 100644
--- a/man/teal_slices.Rd
+++ b/man/teal_slices.Rd
@@ -29,7 +29,7 @@ match names of data sets and vector elements match variable names in respective
specify which variables are allowed to be filtered; see \code{Details}.}
\item{count_type}{\emph{This is a new feature. Do kindly share your opinions on
-\href{https://github.com/insightsengineering/teal.slice/}{\code{teal.slice}'s GitHub repository}.}
+\href{https://github.com/pharmaverse/teal.slice/}{\code{teal.slice}'s GitHub repository}.}
(\code{character(1)}) string specifying how observations are tallied by these filter states.
Possible options:
From 82fee4d651024d083c260588183e1064a6c5c5e6 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 29 Oct 2026 22:05:02 +0000
Subject: [PATCH 8/8] [skip roxygen] [skip vbump] Roxygen Man Pages Auto Update
---
man/teal_slices.Rd | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/man/teal_slices.Rd b/man/teal_slices.Rd
index 4e46b6c458..1ef8b0b452 100644
--- a/man/teal_slices.Rd
+++ b/man/teal_slices.Rd
@@ -29,7 +29,7 @@ match names of data sets and vector elements match variable names in respective
specify which variables are allowed to be filtered; see \code{Details}.}
\item{count_type}{\emph{This is a new feature. Do kindly share your opinions on
-\href{https://github.com/pharmaverse/teal.slice/}{\code{teal.slice}'s GitHub repository}.}
+\href{https://github.com/insightsengineering/teal.slice/}{\code{teal.slice}'s GitHub repository}.}
(\code{character(1)}) string specifying how observations are tallied by these filter states.
Possible options: