rokudev / automated-channel-testing Goto Github PK
View Code? Open in Web Editor NEWRoku Automated Channel Testing: Selenium-based WebDriver + Robot Framework + JS Framework + Samples
License: Other
Roku Automated Channel Testing: Selenium-based WebDriver + Robot Framework + JS Framework + Samples
License: Other
Since, Roku WebDriver is only supporting only sideloaded app automation. So, can we expect automation support for production channel, where we are not having sideloadable zip.
I'm currently seeing an issue with the @ symbol, regardless of which version of the framework, through "Send word" in RobotFramework (but again, also effects the other platforms that can be used). If I use the string "[email protected]", it'll type the word "something" on screen, then skip to the next operation.
I'm trying to use Webdriver API for automated-channel-testing
v1/session/:sessionId/press
But I'm unable to keypress on a Roku remote control for (⏪, ⏩, *)
Are there commands for rewind, fast forward and options?
{
"button_sequence": ["rewind"]
}
{
"button_sequence": ["fast forward"]
}
{
"button_sequence": ["options"]
}
The documentation for input
uses the launch
command.
The documentation for getElements is missing an example.
The documentation for getFocusedElement is missing an example.
The documentation for getDevinceInfo is missing an example.
"web_driver.verify_is_screen_loaded"
Method getting 500 error but text present on the screen
Please give the solution
_- - [ ] # _@git4c
``
Hi!
I'm trying to use a date object I declared in Variables as the following;
${d}= Get Current Date result_format=epoch
with 'Send word', e.g,
Send word ${d}
but it wouldn't let me to do so. Is this something that should work? If not, is there any workaround? Appreciate any input. Thank you in advance for your help!
Cheers,
Kazue
Hi guys,
With the sample apps provided in the repository I'm able to see full page content when decoding the response of the "/source" endpoint. However, on the app I actually want to test I only get one line, something like:
<?xml version=\"1.0\" encoding=\"UTF-8\" ?> <app-ui> <status>OK</status> <topscreen> <plugin id=\"dev\" name=\"MyApp\"/> <screen focused=\"true\" type=\"RoScreenWrapper\"/> </topscreen> </app-ui>
Any idea what might be the issue?
Thank you
Hello guys:
In point six it said:
So the main executable file doesn't appear in the repo, please help me.
Tksx
When I'm on the playing a content, I'd like to check the Roku Caption mode value. Is there any way to access this value or it is going to be part of a future evolution?
Thanks
could github action have the limitation of web driver (https://github.com/rokudev/automated-channel-testing) running ? such as docker won’t allow to run the server with port 9000 or 8060. I have error 500 (internal server error) after test case running. getting a few ecp command working such as session, load , current_app etc but some other not such as press , element etc .. github action and remote Roku device are binding and works well. If i do use curl with press ecp from Github Action, it works. I am not good at golang.
The other situation likely running from my local machine, all test cases are working well.
Running those test case and same webdriver is no issue when running in local machine. So less chance code is wrong. Adding background story. We do work with Jenkins and fully worked. But migration to github. Then github action seems terminate or controling job thread and shows limitation.
I have this issue
cannot find package "httpServer" in any of: /usr/local/Cellar/go/1.14.3/libexec/src/httpServer (from $GOROOT)
when
I want to run
go build main.go
I followed the path of the issue and I don't see any httpServer file or folder, can somebody help me?
More info:
MacBook-Pro:src fernandamedina$ go version
go version go1.14.3 darwin/amd64
MacBook-Pro:src fernandamedina$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN="/somewhere/else/bin"
GOCACHE="/Users/fernandamedina/Library/Caches/go-build"
GOENV="/Users/fernandamedina/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/fernandamedina/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.14.3/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.14.3/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/bh/6765jwl10tl6hq1p9zcz9fjw0000gn/T/go-build916815074=/tmp/go-build -gno-record-gcc-switches -fno-common"
Able to create session and launch app. All interactions with app content are not working for me. Any idea on how I should debug this? Thank you
Currently utilizing the jsLibrary version for testing and having to split my test runs between a pre and post login state.
While I can utilize the sideload per .js test file, the app data is persistent through those loads. Is there a way (or feature request) to support clearing the app data via the js library so I can run all tests at once as opposed to two different test suites?
Currently, launching a channel only allows for adding deeplink params. It would be useful to be able to add custom parameters for starting the dev channel with optional flags, such as clearRegistry=true
PR is up hoping to get some visibility on this
#6
With the advent of Roku os 11, certain ecp endpoints seem to have been removed (like /query/app-ui or /launch). These are essential for the functioning of this webdriver implementation (as well as other tools I developed myself).
Was the removal of these endpoints intentional? Are there yet-to-be-documented replacements for their functionality?
Hi,
I would like to understand if there's any interest to receive contributions from the community in this repo, I recently submitted a pair of PRs that are still pending to receive feedback. Meanwhile, to my surprise, I can see that recently @jduval23 commited code to master and posted in the blog this https://blog.roku.com/developer/test-automation-software-v2-3 highlighting a new feature Added possibility to run webdriver on a specific port which is exactly the code I delivered in one of my PRs (#26).
I have other stuff ready to deliver, namely the ability to get screenshots from the device which is something I consider very useful when a test fails to attach to the report. I would love to contribute to the community but I appreciate some respect when we are delivering code that is then "officially" released.
Best regards
After sending a zip archive of a build to my roku device I get a "socket hang up" error. After some digging i discovered that it most likely has to do with CORS and strict-origin-when-cross-origin header.
I assume that the session drops after attempting to load a zip file from my local machine to the device because of security measures taken to prevent CSRF attacks.
Is there a workaround?
Is there any way to access a Rectangle node color? There is an attribute "color" for Label nodes font only.
{
"XMLName": {
"Space": "",
"Local": "Rectangle"
},
"Attrs": [
{
"Name": {
"Space": "",
"Local": "bounds"
},
"Value": "{0, 0, 2, 88}"
},
{
"Name": {
"Space": "",
"Local": "index"
},
"Value": "0"
},
{
"Name": {
"Space": "",
"Local": "name"
},
"Value": "InternalRectangle"
}
],
"Nodes": null
}
]
}
Hello,
Just I can not find any more information how to get/make/run webdriver from ReadMe.
It just guide to test Web Driver without running.
The js library folder is not a valid npm package, as it lacks name
and version
fields.
automated-channel-testing/jsLibrary/package.json
Lines 1 to 12 in 9e9f5df
Adding them would allow the users to install it via npm (with the help of https://gitpkg.vercel.app/ ), without the need to publish the jsLibrary to npmjs
In RobotLibrary/Library/RobotLibrary.py
, the function getCurrentChannelInfo()
currently loads the json response into the variable res
at line 138. At line 139, the value of res
's key "value" (res['value']
is stored in the channel
variable. At line 140, channel
is returned. This does not follow the same style as other functions in the same file, where they instead just return the value without first storing it in a variable.
See getDeviceInfo()
or getElement()
Proposed solution (starting at line 134):
@keyword("Get current channel info")
def getCurrentChannelInfo(self):
app_response = self._client.get_current_app()
self._checkResponse(app_response)
res = json.loads(app_response.text)
return res['value']
Is there a possibility to see the js library being released on npm?
OS: macOs mojave
Python 3.7.5
Even running Sample Basic_tests.robot Im getting side load failure 3 or 4 times before it works normally:
Status: | FAIL (critical) |
---|---|
Post "http://192.168.0.13/plugin_install": http: ContentLength=305 with Body length 0 |
I get the following error when I run this command, could somebody please tell me where I am going wrong? Thank you
python3 /Users/aad64/Downloads/automated-channel-testing-master/sample/script/main.py
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connection.py", line 156, in _new_conn
conn = connection.create_connection(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/util/connection.py", line 84, in create_connection
raise err
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/util/connection.py", line 74, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 387, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1230, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1276, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1225, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1004, in _send_output
self.send(msg)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 944, in send
self.connect()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connection.py", line 184, in connect
conn = self._new_conn()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connection.py", line 168, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x10f829040>: Failed to establish a new connection: [Errno 61] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/util/retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=9000): Max retries exceeded with url: /v1/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10f829040>: Failed to establish a new connection: [Errno 61] Connection refused'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/aad64/Downloads/automated-channel-testing-master/sample/script/main.py", line 19, in
web_driver = WebDriver("10.189.174.14")
File "/Users/aad64/Downloads/automated-channel-testing-master/sample/script/webDriver.py", line 25, in init
response = self._post(request_url, data)
File "/Users/aad64/Downloads/automated-channel-testing-master/sample/script/webDriver.py", line 56, in _post
return requests.post(url = request_url, data = json.dumps(data))
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/api.py", line 116, in post
return request('post', url, data=data, json=json, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=9000): Max retries exceeded with url: /v1/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10f829040>: Failed to establish a new connection: [Errno 61] Connection refused'))
macbook-pro:~ aad64$
Can anyone help with this error?
10.0.0.5: Error: HTTPConnectionPool(host='localhost', port=9000): Max retries exceeded with url: /v1/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x108
0d5240>: Failed to establish a new connection: [Errno 61] Connection refused')) 10.0.0.5: Test failed
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.