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
151
gaia/apps/system/test/marionette/edges_gesture_test.js
Executable file
151
gaia/apps/system/test/marionette/edges_gesture_test.js
Executable file
|
|
@ -0,0 +1,151 @@
|
|||
'use strict';
|
||||
|
||||
var ReflowHelper =
|
||||
require('../../../../tests/jsmarionette/plugins/reflow_helper.js');
|
||||
|
||||
var assert = require('assert');
|
||||
|
||||
var SETTINGS_APP = 'app://settings.gaiamobile.org';
|
||||
var CALENDAR_APP = 'app://calendar.gaiamobile.org';
|
||||
|
||||
marionette('Edges gesture >', function() {
|
||||
var client = marionette.client({
|
||||
profile: {
|
||||
prefs: {
|
||||
'browser.safebrowsing.enabled': false,
|
||||
'browser.safebrowsing.malware.enabled': false,
|
||||
'devtools.debugger.forbid-certified-apps': false,
|
||||
'privacy.trackingprotection.enabled': false
|
||||
},
|
||||
settings: {
|
||||
'devtools.overlay': true,
|
||||
'hud.reflows': true
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var sys, actions;
|
||||
var settings, calendar;
|
||||
var halfWidth, halfHeight;
|
||||
|
||||
setup(function() {
|
||||
actions = client.loader.getActions();
|
||||
|
||||
sys = client.loader.getAppClass('system');
|
||||
sys.waitForFullyLoaded();
|
||||
|
||||
settings = sys.waitForLaunch(SETTINGS_APP);
|
||||
calendar = sys.waitForLaunch(CALENDAR_APP);
|
||||
|
||||
// Making sure the opening transition for the calendar app is over.
|
||||
client.waitFor(function() {
|
||||
return calendar.ariaDisplayed() && !settings.ariaDisplayed();
|
||||
});
|
||||
|
||||
var width = client.executeScript(function() {
|
||||
return window.innerWidth;
|
||||
});
|
||||
halfWidth = width / 2;
|
||||
|
||||
var height = client.executeScript(function() {
|
||||
return window.innerHeight;
|
||||
});
|
||||
halfHeight = height / 2;
|
||||
});
|
||||
|
||||
function edgeSwipeToApp(panel, x1, x2, from, to) {
|
||||
actions.flick(panel, x1, halfHeight, x2, halfHeight, 100).perform();
|
||||
|
||||
if (!from || !to) {
|
||||
return;
|
||||
}
|
||||
|
||||
client.waitFor(function() {
|
||||
return !from.ariaDisplayed() && to.ariaDisplayed();
|
||||
});
|
||||
}
|
||||
|
||||
test('Swiping between apps left to right, no reflow', function() {
|
||||
var reflowHelper = new ReflowHelper(client);
|
||||
// Since the clock will cause reflows we're disabling it
|
||||
// Also disabling the developer hud because of
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=971008
|
||||
sys.stopDevtools();
|
||||
sys.stopClock();
|
||||
|
||||
assert(calendar.ariaDisplayed(), 'calendar is visible');
|
||||
assert(!settings.ariaDisplayed(), 'settings is invisible');
|
||||
|
||||
reflowHelper.startTracking(sys.URL);
|
||||
edgeSwipeToApp(sys.leftPanel, 0, halfWidth, calendar, settings);
|
||||
assert(true, 'swiped to settings');
|
||||
|
||||
// Overflow swipe
|
||||
edgeSwipeToApp(sys.leftPanel, 0, halfWidth);
|
||||
client.waitFor(function() {
|
||||
return settings.ariaDisplayed();
|
||||
});
|
||||
assert(true, 'settings is still visible');
|
||||
|
||||
var count = reflowHelper.getCount();
|
||||
assert.equal(count, 0, 'we got ' + count + ' reflows instead of 0');
|
||||
reflowHelper.stopTracking();
|
||||
|
||||
assert(true, 'swiped to settings without any reflow');
|
||||
});
|
||||
|
||||
test('Swiping between apps right to left', function() {
|
||||
// Going to the beginning of the stack first
|
||||
edgeSwipeToApp(sys.leftPanel, 0, halfWidth, calendar, settings);
|
||||
|
||||
assert(settings.ariaDisplayed(), 'settings is visible');
|
||||
assert(!calendar.ariaDisplayed(), 'calendar is invisible');
|
||||
|
||||
edgeSwipeToApp(sys.rightPanel, 5, -1 * halfWidth, settings, calendar);
|
||||
assert(true, 'swiped to calendar');
|
||||
|
||||
// Overflow swipe
|
||||
edgeSwipeToApp(sys.rightPanel, 5, -1 * halfWidth);
|
||||
client.waitFor(function() {
|
||||
return calendar.ariaDisplayed() && !settings.ariaDisplayed();
|
||||
});
|
||||
assert(calendar.ariaDisplayed(), 'calendar is still visible');
|
||||
});
|
||||
|
||||
test('Swiping vertically', function() {
|
||||
// Going to the settings app first
|
||||
edgeSwipeToApp(sys.leftPanel, 0, halfWidth, calendar, settings);
|
||||
assert(settings.ariaDisplayed(), 'settings is visible');
|
||||
|
||||
// Mostly vertical swipe starting on the edge zone
|
||||
actions.flick(sys.leftPanel, 5, halfHeight + 40, 45, 40, 50).perform();
|
||||
assert(settings.ariaDisplayed(), 'settings is still visible');
|
||||
|
||||
// The actual amount scrolled depends on the scrolling physics,
|
||||
// BrowserElementPanning or APZ... but we only care about the
|
||||
// view actually scrolling.
|
||||
var fuzz = 0.7;
|
||||
|
||||
// Checking that the settings app scrolled
|
||||
client.apps.switchToApp(SETTINGS_APP);
|
||||
client.waitFor(function() {
|
||||
var scrollY = client.executeScript(function() {
|
||||
return document.querySelector('#root > div').scrollTop;
|
||||
});
|
||||
|
||||
return scrollY >= halfHeight * fuzz;
|
||||
});
|
||||
assert(true, 'the settings app scrolled');
|
||||
});
|
||||
|
||||
test('Swiping below the threshold', function() {
|
||||
assert(calendar.ariaDisplayed(), 'calendar is visible');
|
||||
edgeSwipeToApp(sys.leftPanel, 0, 20);
|
||||
|
||||
// Waiting for iframes to settle down
|
||||
client.waitFor(function() {
|
||||
return !settings.ariaDisplayed() && calendar.ariaDisplayed();
|
||||
});
|
||||
assert(calendar.ariaDisplayed(), 'calendar is still visible');
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue