TestArmada / guacamole

A friendly wrapper for the SauceLabs browser and device API
MIT License
11 stars 6 forks source link

TypeError: data.filter is not a function #40

Closed ameem91 closed 5 years ago

ameem91 commented 5 years ago

Hi,

I am seeing intermittent errors when running browser identification. Example command:

npx guacamole --id=chrome_latest_Windows_10_Desktop , which will sometimes result in:

error: TypeError: data.filter is not a function
    at Object._normalize (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/src/browsers.js:221:8)
    at SauceBrowsers._fetch.then (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/src/browsers.js:487:34)
    at _fulfilled (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:854:54)
    at /Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:883:30
    at Promise.promise.promiseDispatch (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:816:13)
    at /Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:624:44
    at runSingle (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:137:13)
    at flush (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:125:13)
    at process._tickCallback (internal/process/next_tick.js:61:11)
TypeError: data.filter is not a function
    at Object._normalize (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/src/browsers.js:221:8)
    at SauceBrowsers._fetch.then (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/src/browsers.js:487:34)
    at _fulfilled (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:854:54)
    at /Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:883:30
    at Promise.promise.promiseDispatch (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:816:13)
    at /Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:624:44
    at runSingle (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:137:13)
    at flush (/Users/Ashaik/workspace/sci.ref/discover.academic.basic-ui/node_modules/guacamole/node_modules/q/q.js:125:13)
    at process._tickCallback (internal/process/next_tick.js:61:11)

Again, want to emphasize that that the error is intermittent, you may have to run it a few times before being able to reproduce it.

cbui commented 5 years ago

We're seeing the same thing.

esimons commented 5 years ago

Looks like Guacamole always makes unauthenticated requests, which might be triggering rate-limiting.

Given that most consumers are probably invoking this plugin via the SauceLabs executor, and that the environment variables SAUCE_USERNAME and SAUCE_ACCESS_KEY should be available in that context, it should be pretty straightforward to make calls using basic auth in the presence of those env variables and fall back to unauthenticated calls otherwise, right?

archlichking commented 5 years ago

The request guacamole uses to pull saucelabs capabilities uses public saucelabs api https://saucelabs.com/rest/v1/info/platforms/all?resolutions=true. According to saucelabs, Not authenticated requests are allowed up to 2 requests per minute rate..

esimons commented 5 years ago

Hi @archlichking,

41 should resolve this, and was merged, but we need Guacamole to be published with those changes.

archlichking commented 5 years ago

@esimons thanks for the PR. guacamole@3.2.3 is out with your change.