-
-
Notifications
You must be signed in to change notification settings - Fork 147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create UI tests with roku-test-automation
#1538
Comments
Maintainers please LMK if you agree with the goals. Also, When launching the app programatically, I encountered this crash:
What the script is doing is running A solution I found is adding this code to ' show clock based on user setting
m.hideClock = m.global.session.user.settings["ui.design.hideclock"]
if m.hideClock = invalid ' <<< new check
m.hideClock = false
end if
if not m.hideClock
' ...
end if But I'm not sure if |
I think this sounds great. One thing to document and keep in mind is the demo site does reset every hour, so there may be times the tests fail because the user happened to have run them at a moment the site was down. |
This is a user setting, so you can check the settings.json file and see what the default value for the setting is. You could then do a isValid() check on the setting and |
I am loading default values from the json settings file on |
Yes, for the initial tests I'll try to implement general behavior checks that have to happen regardless of the content provided. I.e: Won't test state changes because the initial state can't be guaranteed. |
I'd like to help figure out this crash you are having. Can you add a print statement above the crash to print out the current user settings? These should all be set to their default values from settings.json. print "m.global.session.user.settings = ", m.global.session.user.settings Also, how exactly are you launching the app?
It was either by accident or I thought we didn't need the zip. Feel free to change it if it makes sense and improves your workflow somehow. |
@cewert I found the issue. RTA lets you deploy with a command like so await device.deploy({ project: './bsconfig-rta.json', rootDir: './build/staging' }); By including
Adding the await device.deploy({
project: './bsconfig-rta.json', rootDir: './build/staging', files: [
"manifest",
"source/**/*.*",
"components/**/*.*",
"images/**/*.*",
"resources/**/*.*",
"locale/**/*.*",
"settings/*.*"
]
});
I will submit an issue to |
@cewert @1hitsong any ideas on critical paths untied to server state that would be good to cover for? |
You mean what can we test without connecting to and depending on a server? The only part of our app that functions without a server connection would be the "server select screen" that is displayed on first boot aka |
No, what I mean is: Are there any behaviors that can be replicated regardless of the current contents of the server? For example, if it's guaranteed that the server will always return 3 categories in "My media", and that more than 1 video is sent for the "Movies" category, we can check that the values for the title, metadata and description change when you select another element from the movies list. For one video (any video) we can check that clicking on it and then on "play" starts video playback. Those kinds of things, where specific values don't matter and instead it's important that the server sends a consistent amount of data. |
Oh gotcha. That's a much harder question I need to think about this 😄 There's no guarantee that the server has any media at all even after we connect to it. and if it does have media it could be of any type. I think we would have to make some assumptions about server state to get to what you're wanting to test. For your example, we would have to assume there is at least one library created and there is at least one library with content type of "movies". |
Feature Description
Use the roku-test-automation library to define UI tests for the Jellyfin Roku client. These tests would simulate real user key presses and do assertions over the content's of the Node tree (i.e: what the user can see).
Additional context
Goals
https://demo.jellyfin.org/stable
as a source of information.Pre-requisite PRs:
type=module
in package.json #1535. This enables the usage ofimport
statements in.js
files, which will make test development with RTA easier.Set credentials onbsconfig.json
instead of the VSCode user configuration #1537. RTA requires a reference to the device'shost
andpassword
. Currently Roku Jellyfin developers set that on their VSCode user configuration. This change enables credentials configuration frombsconfig.json
, which is equally easy to deal with as the VSCode config, but it's also a place that RTA can access to get the credentials.The text was updated successfully, but these errors were encountered: