Closed Bug 1164538 Opened 9 years ago Closed 9 years ago

Marionette host test support for Horizon

Categories

(Testing Graveyard :: JSMarionette, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: kgrandon, Assigned: kgrandon)

Details

We would like to have marionette tests working for horizon, which is built on top of Graphene. This would also allow us to write tests for Browser.html.
Right now we get into suiteSetup(), but fail when trying to get into setup(). From :gaye on IRC:

In setup() we both make a profile and create a session (https://github.com/mozilla-b2g/marionette-js-runner/blob/master/lib/runtime/hostmanager.js) whereas we just make a host in suiteSetup()
https://github.com/mozilla-b2g/marionette-firefox-host/blob/master/host.js#L32 marionette-firefox-host currently calls mozilla-runner in createSession so something happening there perhaps
Hey Gareth - 

If you get a chance could you help me debug this? Running into a wall here. Running with DEBUG=*, I get to send a new session here:

Wed, 13 May 2015 17:32:44 GMT marionette:tcp-sync write { name: 'newSession', parameters: { capabilities: {} }, to: '0' }

The binary opens, but after that happens it freezes. Wondering if there's something I'm not handling either in the system app, or in gecko.


I am testing this by running the following command inside of a marionette-firefox-host checkout: 

DEBUG=* ./node_modules/.bin/marionette-mocha  --host $(pwd)/index.js --runtime  ~/Pathto/Horizon.app/Contents/MacOS/graphene examples/wikipedia.js

You can download a copy of the graphene binary here: https://people.mozilla.org/~kgrandon/graphene-40.0a1.en-US.mac64.dmg
So far in my investigation, I have found that we are

- receiving 53:{"from":"root","applicationType":"gecko","traits":[]} from the marionette server
- sending 38:{"name":"getMarionetteID","to":"root"}
- receiving 24:{"from":"root","id":"0"} from the marionette server
- sending 63:{"name":"newSession","parameters":{"capabilities":{}},"to":"0"}

Then the marionette server doesn't respond. Interestingly, I do see 

1431983241596	Marionette	DEBUG	conn1 -> ({"name":"newSession","parameters":{"capabilities":{}},"to":"0"})

in the gecko log which means that the marionette server does receive the last message even though it's not responding to it. I think :AutomatedTester and his group probably have some ideas about what's going on. I am confident this is an issue with the marionette server on graphene.
Flags: needinfo?(gaye) → needinfo?(dburns)
Also, now that I have full gecko logs, I'm seeing the following before that (regarding conn0). Are we supposed to be seeing this?

Mon, 18 May 2015 21:19:32 GMT marionette-js-runner:rpc create client rpc-obj-87aab425-8485-40f5-b18e-6cfab87217a7 [ 'destroy' ]
Mon, 18 May 2015 21:19:32 GMT marionette:tcp-sync probing socket
1431983972378	Marionette	INFO	Accepted connection conn0 from 127.0.0.1:56032
1431983972378	Marionette	DEBUG	conn0 client <- ({"from":"root","applicationType":"gecko","traits":[]})
1431983972379	Marionette	INFO	Closed connection conn0
I wasn't seeing that but that is also bad...
I suspect that we have made some assumptions that are based on b2g/Firefox and we may need to update them. Unfortunately building graphene appears to be tribal knowledge[1] since I am not sure if I need to start from a local integration branch or from any place? 

[1] https://github.com/mozilla/browser.html/wiki/How-to-build-graphene
Flags: needinfo?(dburns)
Hey David - you can build graphene from the larch branch, and there is a github mirror here: https://github.com/mozilla/gecko-projects/tree/larch (You need to update mozconfigs as seen in that wiki page)

Question for you - are there any hard-coded statements for firefox or b2g in marionette code? I saw some references like this, but I'm not sure what kind of impact they would have: http://mxr.mozilla.org/mozilla-central/source/testing/marionette/server.js?force=1#67
Flags: needinfo?(dburns)
(In reply to Kevin Grandon :kgrandon from comment #9)
> Hey David - you can build graphene from the larch branch, and there is a
> github mirror here: https://github.com/mozilla/gecko-projects/tree/larch
> (You need to update mozconfigs as seen in that wiki page)
> 
> Question for you - are there any hard-coded statements for firefox or b2g in
> marionette code? I saw some references like this, but I'm not sure what kind
> of impact they would have:
> http://mxr.mozilla.org/mozilla-central/source/testing/marionette/server.
> js?force=1#67

There are times where we need to reference different objects because they might only be on mobile or on desktop and have to figure out what to use... Fun times :)
I see that mulet added marionette support in bug 1100345. I'm not sure if this is what I want to do as I'd much rather use the marionette firefox host instead of the b2g host because it seems much more simple. Not sure if this is possible though.
Just following up here - I think I've gotten this figured out after seeing what Mulet was doing. It seems that I am able to connect now, albeit with some timeout/logging issues but I will save those for another bug. I had to adjust my prefs to the following:

pref("b2g.is_mulet", true);
pref("marionette.defaultPrefs.enabled", true);
pref("marionette.defaultPrefs.port", 2828);
pref("marionette.force-local", true);
Assignee: nobody → kgrandon
Status: NEW → RESOLVED
Closed: 9 years ago
Flags: needinfo?(dburns)
Resolution: --- → WORKSFORME
Product: Testing → Testing Graveyard
You need to log in before you can comment on or make changes to this bug.