Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
128 lines
3.3 KiB
JavaScript
Executable file
128 lines
3.3 KiB
JavaScript
Executable file
/* global Marionette */
|
|
(function(module, ns) {
|
|
'use strict';
|
|
|
|
function deepmerge(d) {
|
|
for (var i = 1; i < arguments.length; ++i) {
|
|
var o = arguments[i];
|
|
for (var k in o) {
|
|
var v = o[k];
|
|
if (typeof v == 'object') {
|
|
d[k] = deepmerge(d[k], v);
|
|
} else {
|
|
if (Array.isArray(d)) {
|
|
if (d.indexOf(v) < 0) {
|
|
d.push(v);
|
|
}
|
|
} else {
|
|
d[k] = v;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return d;
|
|
}
|
|
|
|
function cmd(defaults) {
|
|
return function(override) {
|
|
if (typeof(override) === 'undefined') {
|
|
override = {};
|
|
}
|
|
return deepmerge(defaults, override);
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
connectProto1: cmd({from: 'root', applicationType: 'gecko', traits: []}),
|
|
connectProto2: cmd({applicationType: 'gecko', marionetteProtocol: 2}),
|
|
|
|
getMarionetteID: cmd({type: 'getMarionetteID'}),
|
|
getMarionetteIDResponse: cmd({from: 'root', id: 'con1'}),
|
|
|
|
newSession: cmd({type: 'newSession'}),
|
|
newSessionResponseProto1: cmd({
|
|
from: 'actor',
|
|
value: 'b2g-7',
|
|
}),
|
|
newSessionResponseProto2: cmd({
|
|
sessionId: '{2dddca75-7f78-415f-a7de-63eb2bc9412b}',
|
|
capabilities: {browserName: 'firefox'},
|
|
}),
|
|
|
|
getWindow: cmd({name: 'getWindow'}),
|
|
getWindowResponse: cmd({value: '3-b2g'}),
|
|
|
|
getWindows: cmd({name: 'getWindows'}),
|
|
getWindowsResponseProto1: cmd({from: 'actor', value: ['1-b2g', '2-b2g']}),
|
|
getWindowsResponseProto2: cmd(['1-b2g', '2-b2g']),
|
|
|
|
getUrl: cmd({name: 'getUrl'}),
|
|
getUrlResponse: cmd({value: 'http://localhost/'}),
|
|
|
|
getLogsResponseProto1: cmd({
|
|
from: 'actor',
|
|
value: [
|
|
['debug', 'wow', 'Fri Apr 27 2012 11:00:32 GMT-0700 (PDT)'],
|
|
],
|
|
}),
|
|
getLogsResponseProto2: cmd([
|
|
['debug', 'wow', 'Fri Apr 27 2012 11:00:32 GMT-0700 (PDT)'],
|
|
]),
|
|
|
|
screenshotResponse: cmd({
|
|
value: 'data:image/png;base64,iVBOgoAAAANSUhEUgAAAUAAAAHMCAYAAACk4nEJA',
|
|
}),
|
|
|
|
elementEqualsResponse: cmd({value: false}),
|
|
|
|
findElementResponse: cmd(
|
|
{value: {ELEMENT: '{8056e6f7-2213-41d4-9db6-ad77ac7a96d3}'}}),
|
|
findElementsResponseProto1: cmd({
|
|
from: 'actor',
|
|
value: [
|
|
{ELEMENT: '{46982c9e-bb0c-486e-a514-d1cf20b42641}'},
|
|
{ELEMENT: '{585e70ee-e088-43cc-9b07-a4b078c1b8db}'},
|
|
],
|
|
}),
|
|
findElementsResponseProto2: cmd([
|
|
{ELEMENT: '{46982c9e-bb0c-486e-a514-d1cf20b42641}'},
|
|
{ELEMENT: '{585e70ee-e088-43cc-9b07-a4b078c1b8db}'},
|
|
]),
|
|
|
|
numberError: cmd({
|
|
from: 'actor',
|
|
error: {
|
|
message: 'you fail',
|
|
status: 7,
|
|
stacktrace: 'fail@url\nother:300',
|
|
},
|
|
}),
|
|
stringError: cmd({
|
|
from: 'actor',
|
|
error: {
|
|
message: 'you fail',
|
|
status: 'no such element',
|
|
stacktrace: 'fail@url\nother:300',
|
|
},
|
|
}),
|
|
modernError: cmd({
|
|
error: 'no such element',
|
|
message: 'you fail',
|
|
stacktrace: 'fail@url\nother:300',
|
|
}),
|
|
|
|
//valueProto1: cmd({from: 'actor', value: 'zomg'}),
|
|
value: cmd({value: 'zomg'}),
|
|
|
|
capabilities: cmd({capabilities: {browserName: 'firefox'}}),
|
|
|
|
//okProto1: cmd({from: 'actor', ok: true}),
|
|
ok: cmd({}),
|
|
};
|
|
|
|
}.apply(
|
|
this,
|
|
(this.Marionette) ?
|
|
[Marionette('example-commands'), Marionette] :
|
|
[module, require('./marionette')]
|
|
));
|