Given I am using an RDKE device with RDK App Managers enabled, and no apps are currently loaded
When I call startSystemApp with an appId of type other than string {"jsonrpc":"2.0","id":"3","method": "org.rdk.AppManager.startSystemApp", "params":{"appId": YouTube}}
Then I validate that an error is returned {"jsonrpc":"2.0","id":1001,"error":{"code":1,"message":"ERROR_GENERAL"}}
And I validate that the app is not launched
activateSystemApp
activateSystemApp - Called for App Not in Active State
Steps
No steps found
activateSystemApp - Called for App in Active State
Steps
No steps found
activateSystemApp - appId of Type Other Than String
Steps
No steps found
activateSystemApp - No appId Passed
Steps
No steps found
deactivateSystemApp
activateSystemApp - Called for App in Active State
Steps
No steps found
activateSystemApp - appId of Type Other Than String
Steps
No steps found
activateSystemApp - Called for App Not in Active State
Steps
No steps found
...
Steps
No steps found
hibernateSystemApp
hibernateSystemApp - Called for Loaded App
Steps
No steps found
hibernateSystemApp - Called for App That is Not Loaded
Steps
No steps found
hibernateSystemApp - No appId Passed
Steps
No steps found
hibernateSystemApp - appId of Type Other Than String
Steps
No steps found
sendIntent
sendIntent -
...
Steps
No steps found
sendIntent - No appId Passed
Steps
No steps found
sendIntent - Called for App Not in Active State
...
Given I am using an RDKE device with RDK App Managers enabled
When I send a call to register for onAppUnloaded events {"jsonrpc":"2.0","id":"3","method":"org.rdk.AppManager.register", "params": {"event":"onAppUnloaded", "id": "client.events.1"}}
Then I validate that a successful response is returned {"jsonrpc":"2.0","id":3,"result":0}
And I launch an installed app {"jsonrpc":"2.0","id":"3","method": "org.rdk.AppManager.launchApp", "params":{"appId": "YouTube", "intent": "{"action":"launch","context":{"source":"voice"}}", "launchArgs":"{}"}}
And I wait for the app to finish launching
And I send a terminateApp call to close the app {"jsonrpc":"2.0","id":"3","method": "org.rdk.AppManager.terminateApp", "params":{"appId": "YouTube"}}
And I validate that an onAppUnloaded event is emitted {"jsonrpc":"2.0","method":"client.events.1.onAppUnloaded","params":{"appId":"YouTube","appInstanceId":"a76fedf1-12a2-4012-9209-279af27bbddb"}}
And I validate that the event contains an appId and appInstanceId
...
stopSystemApp - appId of Type Other Than String
Steps
No steps found
stopSystemApp - Called for Loaded App
Steps
No steps found
stopSystemApp - Called for App That is Not Loaded
Steps
No steps found
stopSystemApp - No appId Passed
Steps
No steps found
killApp
killApp - No appId Passed
...
Given I am using an RDK-E build with PackageManagerRDKEMS enabled and activated
And I note the downloadId that is returned in the response {"jsonrpc": "2.0","id": 1001,"result": {"downloadid": "1002"}}
And I send a pause call to PackageManagerRDKEMS to pause the in-progress download, passing the downloadId returned in the previous step {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.pause","params": {"downloadId": "1002"}}
And I send a progress call {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.progress","params": {"downloadId": "1002"}}
And I validate that the response contains the current progress of the download as a value of a "progress" field {"jsonrpc":"2.0","id":1001,"result":{"progress":37}}
install
install
...
Called Without packageId Param
Steps
Given I am using
Steps
No steps found
install Failed - invalidMetadataFailure
Steps
No steps found
install Failed - persistenceFailure
Steps
No steps found
install Called Without packageId Param
Steps
Given I am using an RDK-E build which includes PackageManagerRDKEMS & StorageManager and both plugins are activated
When I send a install call without a packageId param {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.install","params": {"version":"2.2.7.53", "additionalMetadata":[{"name":"test1","value":"testValue1"},{"name":"test2","value":"testValue2"}],"fileLocator":"/opt/CDL/package1001"}}
Then I result an error is returned {"jsonrpc":"2.0","id":1001,"error":{"code":1,"message":"ERROR_GENERAL"}}
...
Given I am using an RDK-E build which includes PackageManagerRDKEMS & StorageManager and both plugins are activated
When I send a install call with a fileLocator param of type other than String {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.install","params": {"packageId":"NetflixApp", "version":"2.2.7.53", "additionalMetadata":[{"name":"test1","value":"testValue1"},{"name":"test2","value":"testValue2"}],"fileLocator":/opt/CDL/package1001}}
Then I result an error is returned {"jsonrpc":"2.0","id":1001,"error":{"code":1,"message":"ERROR_GENERAL"}}
install Failed - signatureVerificationFailure
Steps
...
install Called With version Param of Type Other Than String
...
Given I am using an RDK-E build which includes PackageManagerRDKEMS & StorageManager and both plugins are activated
And I note the downloadId in the response {"jsonrpc": "2.0","id": 1001,"result": {"downloadid": "1001"}}
And I send an install call to install the app {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.install","params": {"packageId":"NetflixApp", "version":"2.2.7.53", "additionalMetadata":[{"name":"test1","value":"testValue1"},{"name":"test2","value":"testValue2"}],"fileLocator":"/opt/CDL/package1001.wgt"}}
And I send a packageState call while the app is still installing {"jsonrpc": "2.0","id": 1002, "method": "org.rdk.PackageManagerRDKEMS.packageState", "params": {"packageId":"NetflixApp", "version": "2.2.7.53"} }
Then I validate that a successful response is returned and the result shows "Installing" {"jsonrpc":"2.0","id":1002,"result":"Installing"}
packageState Called While State is
...
Steps
No steps found
packageState Called While State is UnInstalling
Steps
Given I am using an RDK-E build which includes PackageManagerRDKEMS & StorageManager and both plugins are activated
And I note the downloadId in the response {"jsonrpc": "2.0","id": 1001,"result": {"downloadid": "1001"}}
And I send an install call to install the app {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.install","params": {"packageId":"NetflixApp", "version":"2.2.7.53", "additionalMetadata":[{"name":"test1","value":"testValue1"},{"name":"test2","value":"testValue2"}],"fileLocator":"/opt/CDL/package1001.wgt"}}
And I wait for the app to finish installing
And I send an uninstall call to uninstall the app {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.uninstall","params": {"packageId":"NetflixApp"}}
And I send a packageState call while the app is still uninstalling {"jsonrpc": "2.0","id": 1002, "method": "org.rdk.PackageManagerRDKEMS.packageState", "params": {"packageId":"NetflixApp", "version": "2.2.7.53"} }
Then I validate that a successful response is returned and the result shows "Uninstalling" {"jsonrpc":"2.0","id":1002,"result":"Uninstalling"}
...
Given I am using an RDK-E build which includes PackageManagerRDKEMS & StorageManager and both plugins are activated
And I note the downloadId in the response {"jsonrpc": "2.0","id": 1001,"result": {"downloadid": "1001"}}
And I send an install call to install the app {"jsonrpc": "2.0","id": 1001,"method": "org.rdk.PackageManagerRDKEMS.install","params": {"packageId":"NetflixApp", "version":"2.2.7.53", "additionalMetadata":[{"name":"test1","value":"testValue1"},{"name":"test2","value":"testValue2"}],"fileLocator":"/opt/CDL/package1001.wgt"}}
And I wait for the app to be installed
And I send a config call with "packageId":"NetflixApp" & "version": "2.2.7.53" {"jsonrpc": "2.0","id": 1002, "method": "org.rdk.PackageManagerRDKEMS.config", "params": {"packageId":"NetflixApp", "version": "2.2.7.53"} }
Then I validate that a successful response is returned and the result is a configObject {"jsonrpc":"2.0","id":1002,"result":{"dial":false,"wanLanAccess":false,"thunder":false,"systemMemoryLimit":0,"gpuMemoryLimit":0,"envVars":"","userId":0,"groupId":0,"dataImageSize":0,"resourceManagerClientEnabled":false,"dialId":"","command":"","appType":0,"appPath":"","runtimePath":"","fireboltVersion":"","enableDebugger":false}}
onAppInstallationStatus
onAppInstallationStatus Emitted When State Changes to uninstallFailure
Steps
...
onAppInstallationStatus Emitted When State Changes to Installed
...
Given I am using an RDK-E build with StorageManager enabled and activated
When I uninstall an app {"jsonrpc": "2.0","id": 1002, "method": "org.rdk.PackageManagerRDKEMS.uninstall", "params": {"packageId":"uktv"} }
Then I validate that deleteStorage is called 2025-10-01T14:42:35.252Z WPEFramework[3756]: [3770] INFO [StorageManagerImplementation.cpp:160] DeleteStorage: Entered DeleteStorage Implementation
And I validate that deleteStorage is successful 2025-10-01T14:42:35.265Z WPEFramework[3756]: [3770] INFO [StorageManagerImplementation.cpp:174] DeleteStorage: Storage deleted successfully for appId: uktv
And I validate that the uktv app storage folder was deleted ls /opt/persistent/storageManager/uktv ls: /opt/persistent/storageManager/uktv: No such file or directory
...
createStorage
startPreinstall
...
createStorage - Called When an App is Installed
Steps
Given I am using an
RDKE device and PreinstallManager is activated
And no version of YouTube is currently installed
And a YouTube widget is on the device at location /opt/preinstall/YouTube/package.wgt
RDK-E build with StorageManager enabled and activated
When I download a widget
When I send a startPreinstall call with forceInstall: false
{"jsonrpc": "2.0","id":
"3"
1001,"method": "org.rdk.
PreinstallManager
PackageManagerRDKEMS.
startPreinstall
download","params": {"
forceInstall": false}}
Then I validate that the YouTube widget in /opt/preinstall/YouTube is successfully installed
startPreinstall - forceInstall true - App With Older Version Installed
Steps
Given I am using an RDKE device and PreinstallManager is activated
And YouTube is currently installed and has a version less than 100.1.59 url for widget which can be used to fulfill this:
And I install the widget (using the downloadId returned in the download response for the package number in the fileLocator) {"jsonrpc": "2.0","id": 1001, "method": "org.rdk.PackageManagerRDKEMS.install", "params": {"packageId":"uktv", "version":"0.8.1.2100", "additionalMetadata":[{"name":"test1","value":"testValue1"},{"name":"test2","value":"testValue2"}],"fileLocator":"/opt/CDL/package1001"} }
Then I validate using logs in /opt/logs/wpeframework.log that a createStorage call was made 2025-10-01T14:21:35.022Z WPEFramework[3756]: [3771] INFO [StorageManagerImplementation.cpp:113] CreateStorage: Entered CreateStorage Implementation appId: uktv
And I validate that createStorage was successful 2025-10-01T14:21:35.022Z WPEFramework[3756]: [3771] INFO [StorageManagerImplementation.cpp:127] CreateStorage: Storage created successfully for appId: uktv
...
PreinstallManager
startPreinstall
startPreinstall - forceInstall false - App not currently installed
Steps
Given I am using an RDKE device and PreinstallManager is activated
And no version of YouTube is currently installed
And a YouTube widget is on the device at location /opt/preinstall/YouTube/package.wgt
When I send a startPreinstall call with forceInstall: false {"jsonrpc":"2.0","id":"3","method": "org.rdk.PreinstallManager.startPreinstall", "params":{"forceInstall": false}}
Then I validate that the YouTube widget in /opt/preinstall/YouTube is successfully installed
startPreinstall - forceInstall true - App With Older Version Installed
Steps
Given I am using an RDKE device and PreinstallManager is activated
When I send a startPreinstall call with forceInstall: true {"jsonrpc":"2.0","id":"3","method": "org.rdk.PreinstallManager.startPreinstall", "params":{"forceInstall": true}}
Then I validate that the YouTube widget in /opt/preinstall/YouTube is successfully installed (version 100.1.59+hibernate)
...
Given I am usinig an RDKE device with RDK App Managers enabled, and enableInactivityReporting is currently disabled
When I register for onUserInactivity events {"jsonrpc":"2.0","id":"3","method":"org.rdk.RDKWindowManager.register", "params": {"event":" onUserInactivity ", "id": "client. events .1"}}
And I set the inactivity interval to 1 minute {"jsonrpc":"2.0","id":"3","method": "org.rdk.RDKWindowManager.setInactivityInterval", "params":{"interval":1}}
And I send a enableInactivityReporting call to enable inactivity reporting {"jsonrpc":"2.0","id":"3","method": "org.rdk.RDKWindowManager.enableInactivityReporting", "params":{"enable":true}}
Then I validate that a successful response is returned {"jsonrpc":"2.0","id":3,"result":null}
And I wait 1 minute
And I validate that an onUserInactivity event is emitted
StorageManager,StorageManager
createStorage
createStorage - Called When an App is Installed
Steps
Given I am using an RDK-E build with StorageManager enabled and activated
Then I validate that a successful response is returned {"
name
jsonrpc":"
test2
2.0","
value
id":
"testValue2"}]
3,"
fileLocator
result":
"/opt/CDL/package1001"} }
Then I validate using logs in /opt/logs/wpeframework.log that a createStorage call was made 2025-10-01T14:21:35.022Z WPEFramework[3756]: [3771] INFO [StorageManagerImplementation.cpp:113] CreateStorage: Entered CreateStorage Implementation appId: uktv
And I validate that createStorage was successful 2025-10-01T14:21:35.022Z WPEFramework[3756]: [3771] INFO [StorageManagerImplementation.cpp:127] CreateStorage: Storage created successfully for appId: uktv
null}
And I wait 1 minute
And I validate that an onUserInactivity event is emitted