Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
235
gaia/apps/system/fxa/test/marionette/lib/fxa.js
Executable file
235
gaia/apps/system/fxa/test/marionette/lib/fxa.js
Executable file
|
|
@ -0,0 +1,235 @@
|
|||
'use strict';
|
||||
|
||||
var FxAUser = require('./fxa_user'),
|
||||
config = require('./config.json');
|
||||
|
||||
/**
|
||||
* Abstraction around FxA app.
|
||||
* 'Entrance point' app URL is passed in since FxA acts more like a
|
||||
* component than a standalone app
|
||||
* (launched by Settings, Marketplace, FTU, FMD, dev_apps, etc.)
|
||||
*
|
||||
* @param client
|
||||
* @constructor
|
||||
*/
|
||||
function FxA(client) {
|
||||
this.config = config;
|
||||
this.fxaUser = new FxAUser();
|
||||
this.client = client.scope({ searchTimeout: config.MARIONETTE_TIMEOUT});
|
||||
}
|
||||
|
||||
FxA.SETTINGS_ORIGIN = 'app://settings.gaiamobile.org';
|
||||
FxA.UITEST_ORIGIN = 'app://uitest.gaiamobile.org';
|
||||
FxA.TEST_FXA_CLIENT_ORIGIN = 'app://test-fxa-client.gaiamobile.org';
|
||||
FxA.FTU_ORIGIN = 'app://ftu.gaiamobile.org';
|
||||
FxA.SERVER_PATH = 'http://' +
|
||||
config.SERVER_HOST + ':' +
|
||||
config.SERVER_PORT + '/' +
|
||||
config.SERVER_PATH;
|
||||
FxA.SERVER_ARGS = [
|
||||
config.SERVER_HOST,
|
||||
config.SERVER_PORT,
|
||||
config.SERVER_PATH
|
||||
];
|
||||
|
||||
FxA.COPPA_YEAR = new Date().getFullYear() - 13;
|
||||
|
||||
FxA.Selectors = {
|
||||
body: 'body',
|
||||
bodyReady: 'body .view-body',
|
||||
// dev_apps/uitest
|
||||
apiFxaFrame: '#test-iframe',
|
||||
fxaFrame: '#fxa-iframe',
|
||||
tabAPI: '#API',
|
||||
fxaButton: '#mozId-fxa',
|
||||
requestButton: '#request',
|
||||
// dev_apps/test-fxa-client
|
||||
tabOpenFlow: '#openFlow',
|
||||
// apps/settings
|
||||
menuItemFxa: '#menuItem-fxa',
|
||||
menuItemFmd: '#menuItem-findmydevice',
|
||||
fxaLogin: '#fxa-login',
|
||||
fmdLogin: '#findmydevice-login',
|
||||
fxaCancelAccountConfirmation: '#fxa-cancel-confirmation',
|
||||
// apps/ftu
|
||||
forward: '#forward',
|
||||
createAccountOrLogin: '#fxa-create-account',
|
||||
// apps/findmydevice
|
||||
emailInput: '#fxa-email-input',
|
||||
fxaForgotPassword: 'fxa-forgot-password',
|
||||
pwInput: '#fxa-pw-input',
|
||||
//COPPA (age-restriction menu no longer appears,
|
||||
// but password input tag is still different)
|
||||
pwInputPostCOPPA: '#fxa-pw-set-input',
|
||||
pwSetInput: '#fxa-pw-set-input',
|
||||
pwRefresh: '#fxa-pw-input-refresh',
|
||||
COPPAElementId: '#fxa-coppa',
|
||||
COPPASelectId: '#fxa-age-select',
|
||||
COPPAOptionVal: FxA.COPPA_YEAR + ' or earlier',
|
||||
COPPAOptionValToFail: FxA.COPPA_YEAR.toString(),
|
||||
moduleNext: '#fxa-module-next',
|
||||
moduleDone: '#fxa-module-done',
|
||||
errorOK: '#fxa-error-ok'
|
||||
};
|
||||
|
||||
FxA.prototype = {
|
||||
/**
|
||||
* Launches FxA app and focuses on frame.
|
||||
*/
|
||||
launch: function (origin) {
|
||||
// do unless FTU
|
||||
if (origin.search('ftu') === -1) {
|
||||
this.client.apps.launch(origin);
|
||||
}
|
||||
this.client.apps.switchToApp(origin);
|
||||
},
|
||||
|
||||
enterInput: function (inputId, inputString) {
|
||||
this.client.helper
|
||||
.waitForElement(inputId)
|
||||
.sendKeys(inputString);
|
||||
},
|
||||
|
||||
enterCOPPANew: function () {
|
||||
var sel = FxA.Selectors.COPPASelectId;
|
||||
var inputString = FxA.Selectors.COPPAOptionVal;
|
||||
this.client.helper.tapSelectOption(sel, inputString);
|
||||
},
|
||||
|
||||
enterEmailNew: function () {
|
||||
var sel = FxA.Selectors.emailInput;
|
||||
var inputString = this.fxaUser.email(config.USER_NEW);
|
||||
this.client.helper.fillInputField(sel, inputString);
|
||||
},
|
||||
enterPasswordNew: function () {
|
||||
var sel = FxA.Selectors.pwInputPostCOPPA;
|
||||
var inputString = this.fxaUser.password(config.USER_NEW);
|
||||
this.client.helper.fillInputField(sel, inputString);
|
||||
},
|
||||
enterEmailExisting: function () {
|
||||
var sel = FxA.Selectors.emailInput;
|
||||
var inputString = this.fxaUser.email(config.USER_EXISTING);
|
||||
this.client.helper.fillInputField(sel, inputString);
|
||||
},
|
||||
enterPasswordExisting: function () {
|
||||
var sel = FxA.Selectors.pwInput;
|
||||
var inputString = this.fxaUser.password(config.USER_EXISTING);
|
||||
this.client.helper.fillInputField(sel, inputString);
|
||||
},
|
||||
onClick: function(searchSelector) {
|
||||
var element = this.client.findElement(searchSelector);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickNext: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.moduleNext);
|
||||
var client = this.client;
|
||||
|
||||
client.waitFor(function () {
|
||||
return client.findElement(FxA.Selectors.moduleNext)
|
||||
.scriptWith(function (el) {
|
||||
return el.getAttribute('disabled') !== 'disabled';
|
||||
});
|
||||
});
|
||||
|
||||
client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickDone: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.moduleDone);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickTabOpenFlow: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.tabOpenFlow);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickFxaLogin: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.fxaLogin);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickMenuItemFxa: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.menuItemFxa);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickRequestButton: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.requestButton);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickTabAPI: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.tabAPI);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
clickFxaButton: function() {
|
||||
var element = this.client.findElement(FxA.Selectors.fxaButton);
|
||||
this.client.helper
|
||||
.waitForElement(element)
|
||||
.tap();
|
||||
},
|
||||
switchFrame: function(frameId) {
|
||||
this.client.switchToFrame();
|
||||
var frame = this.client.findElement(frameId);
|
||||
this.client.switchToFrame(frame);
|
||||
},
|
||||
switchFrameDirect: function(frameId) {
|
||||
var frame = this.client.findElement(frameId);
|
||||
this.client.switchToFrame(frame);
|
||||
},
|
||||
clickThruPanel: function(panelId, buttonId) {
|
||||
if (panelId === '#wifi') {
|
||||
// The wifi panel will bring up a screen to show it is scanning for
|
||||
// networks. Not waiting for this to clear will blow test timing
|
||||
// and cause things to fail.
|
||||
this.client.helper.waitForElementToDisappear('#loading-overlay');
|
||||
}
|
||||
// waitForElement is used to make sure animations and page changes have
|
||||
// finished, and that the panel is displayed.
|
||||
this.client.helper.waitForElement(panelId);
|
||||
|
||||
if (buttonId) {
|
||||
var button = this.client.helper.waitForElement(buttonId);
|
||||
button.click();
|
||||
}
|
||||
},
|
||||
runSettingsMenu: function() {
|
||||
this.clickMenuItemFxa();
|
||||
this.clickFxaLogin();
|
||||
this.switchFrame(FxA.Selectors.fxaFrame);
|
||||
},
|
||||
runUITestMenu: function() {
|
||||
this.clickTabAPI();
|
||||
this.clickFxaButton();
|
||||
this.switchFrameDirect(FxA.Selectors.apiFxaFrame);
|
||||
this.clickRequestButton();
|
||||
this.switchFrame(FxA.Selectors.fxaFrame);
|
||||
},
|
||||
runFTUMenu: function() {
|
||||
this.clickThruPanel('#languages', '#forward');
|
||||
this.clickThruPanel('#wifi', '#forward');
|
||||
this.clickThruPanel('#date_and_time', '#forward');
|
||||
this.clickThruPanel('#geolocation', '#forward');
|
||||
this.clickThruPanel('#import_contacts', '#forward');
|
||||
this.clickThruPanel('#firefox_accounts',
|
||||
FxA.Selectors.createAccountOrLogin);
|
||||
this.switchFrame(FxA.Selectors.fxaFrame);
|
||||
},
|
||||
runFxAClientTestMenu: function() {
|
||||
this.clickTabOpenFlow();
|
||||
this.switchFrame(FxA.Selectors.fxaFrame);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = FxA;
|
||||
Loading…
Reference in a new issue