diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Revision history for ogma-cli
 
+## [1.9.0] - 2025-08-06
+
+* Version bump 1.9.0 (#284).
+* Extend ROS command with flags to control testing package (#280).
+* Bump upper version constraint on optparse-applicative (#279).
+
 ## [1.8.0] - 2025-07-13
 
 * Version bump 1.8.0 (#275).
diff --git a/ogma-cli.cabal b/ogma-cli.cabal
--- a/ogma-cli.cabal
+++ b/ogma-cli.cabal
@@ -32,7 +32,7 @@
 build-type:          Simple
 
 name:                ogma-cli
-version:             1.8.0
+version:             1.9.0
 homepage:            https://github.com/nasa/ogma
 bug-reports:         https://github.com/nasa/ogma/issues
 license:             OtherLicense
@@ -152,11 +152,11 @@
   build-depends:
       base                 >= 4.11.0.0 && < 5
     , aeson                >= 2.0.0.0  && < 2.3
-    , optparse-applicative >= 0.14     && < 0.19
+    , optparse-applicative >= 0.14     && < 0.20
     , microstache          >= 1.0      && < 1.1
     , text                 >= 1.2.3.1  && < 2.2
 
-    , ogma-core            >= 1.8.0 && < 1.9
+    , ogma-core            >= 1.9.0 && < 1.10
 
   hs-source-dirs:
     src
diff --git a/src/CLI/CommandROSApp.hs b/src/CLI/CommandROSApp.hs
--- a/src/CLI/CommandROSApp.hs
+++ b/src/CLI/CommandROSApp.hs
@@ -43,7 +43,7 @@
   where
 
 -- External imports
-import Options.Applicative ( Parser, help, long, metavar, optional, short,
+import Options.Applicative ( Parser, help, long, metavar, many, optional, short,
                              showDefault, strOption, value )
 
 -- External imports: command results
@@ -68,6 +68,8 @@
   , rosAppPropFormat   :: String
   , rosAppPropVia      :: Maybe String
   , rosAppTemplateVars :: Maybe String
+  , rosAppTestingApps  :: [String]
+  , rosAppTestingVars  :: [String]
   }
 
 -- | Create <https://www.ros.org/ Robot Operating System> (ROS) applications
@@ -90,8 +92,17 @@
                 , Command.ROSApp.commandPropFormat  = rosAppPropFormat c
                 , Command.ROSApp.commandPropVia     = rosAppPropVia c
                 , Command.ROSApp.commandExtraVars   = rosAppTemplateVars c
+                , Command.ROSApp.commandTestingApps = appNames
+                , Command.ROSApp.commandTestingVars = rosAppTestingVars c
                 }
 
+    -- Turn the qualified app names into tuples of package and node name.
+    appNames = map splitAppName $ rosAppTestingApps c
+
+    splitAppName name = Command.ROSApp.Node package (drop 1 nodeT)
+      where
+        (package, nodeT) = break (== ':') name
+
 -- * CLI
 
 -- | ROS command description
@@ -181,6 +192,19 @@
             <> help strROSAppTemplateVarsArgDesc
             )
         )
+  <*> many (strOption
+              (  long "testing-app"
+              <> metavar "package:node"
+              <> help strROSAppROSNodesTestingListArgDesc
+              )
+           )
+  <*> many (strOption
+              (  long "testing-vars"
+              <> metavar "variable_name"
+              <> showDefault
+              <> help strROSAppHandlerListArgDesc
+              )
+           )
 
 -- | Argument target directory to ROS app generation command
 strROSAppDirArgDesc :: String
@@ -232,3 +256,13 @@
 strROSAppTemplateVarsArgDesc :: String
 strROSAppTemplateVarsArgDesc =
   "JSON file containing additional variables to expand in template"
+
+-- | Argument packages to tested list to ROS app generation command
+strROSAppROSNodesTestingListArgDesc :: String
+strROSAppROSNodesTestingListArgDesc =
+  "Turn on ROS2 package node during testing"
+
+-- | Argument variables to be tested list to ROS app generation command
+strROSAppVarsTestingListArgDesc :: String
+strROSAppVarsTestingListArgDesc =
+  "Limit random input generation to these variables"
