Code Monkey home page Code Monkey logo

automated-channel-testing's People

Contributors

jduval23 avatar tcharles411 avatar yurii-polishchuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

automated-channel-testing's Issues

Automation against Production Channels

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.

Problems submitting '@' symbol over "Send word"

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.

Unable to Press buttons "rewind" "fast forward" "options"

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"]
}

Unable to submit a date object using 'Send word' in Robot Framework

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

Not getting full contents of page on sideloaded app

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

Point 6 - Main Executable

Hello guys:

In point six it said:

  • Run the main executable in the /automated-channel-testing-master/src folder to start the Roku WebDriver server.

So the main executable file doesn't appear in the repo, please help me.

Tksx

How to check what's the Roku Caption mode?

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

running main on Github Action Container

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.

image

cannot find package "httpServer" in any of: /usr/local/Cellar/go/1.14.3/libexec/src/httpServer (from $GOROOT)

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"

Clearing App Data

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?

Custom launch args

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

webdriver server using old ecp endpoints

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?

Contributing to this repo

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

Unable to use POST v1/session/:sessionId/load

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?

Color of Rectangle Node

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
      }
   ]
 }

add name and version to package.json in jsLibrary

The js library folder is not a valid npm package, as it lacks name and version fields.

{
"scripts": {
"test": "mocha \"tests/test_basic.js\""
},
"dependencies": {
"axios": "0.19.1",
"chai": "4.2.0",
"form-data": "3.0.0",
"mocha": "7.0.1",
"nock": "12.0.1"
}
}

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

[Style] getCurrentChannelInfo does not follow style of other methods

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']

Failed to establish a new connection

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$

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.