forked from mozilla-b2g/gaia
/
browser_fullscreen_navigation_chrome_test.js
116 lines (99 loc) · 3.33 KB
/
browser_fullscreen_navigation_chrome_test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
'use strict';
var assert = require('assert');
var Rocketbar = require('./lib/rocketbar');
var Server = require('../../../../shared/test/integration/server');
var FULLSCREENNAVAPP = __dirname + '/../apps/fullscreennavapp';
marionette('Browser - App /w Fullscreen Navigation Chrome', function() {
var client = marionette.client({
profile: {
apps: {
'fullscreennavapp.gaiamobile.org': FULLSCREENNAVAPP,
}
}
});
var actions, home, rocketbar, search, system, frame, server;
var quarterScreenHeight;
setup(function(done) {
actions = client.loader.getActions();
home = client.loader.getAppClass('verticalhome');
rocketbar = new Rocketbar(client);
search = client.loader.getAppClass('search');
system = client.loader.getAppClass('system');
system.waitForFullyLoaded();
quarterScreenHeight = client.executeScript(function() {
return window.innerHeight;
}) / 4;
var appOrigin = 'app://fullscreennavapp.gaiamobile.org';
frame = system.waitForLaunch(appOrigin);
client.switchToFrame(frame);
client.helper.waitForElement('body');
client.switchToFrame();
waitForOffscreen(system.Selector.appUrlbar);
Server.create(__dirname + '/fixtures/', function(err, _server) {
server = _server;
done(err);
});
});
teardown(function() {
server.stop();
});
function waitForOffscreen(selector) {
client.waitFor(function() {
var rect = client.findElement(selector).scriptWith(function(element) {
return element.getBoundingClientRect();
});
return rect.bottom < 0;
});
}
function expandRocketbar() {
actions.flick(system.topPanel, 0, 0, 0, quarterScreenHeight, 500).perform();
assert.ok(system.appUrlbar.displayed(), 'Rocketbar is displayed.');
}
test('test fullscreen chrome /w navigation', function() {
// Validate page 1
expandRocketbar();
waitForOffscreen(system.Selector.appUrlbar);
// Validate page 2
client.switchToFrame(frame);
client.helper.waitForElement('a').click();
client.switchToFrame();
expandRocketbar();
assert.ok(system.appChromeBack.displayed(), 'Back button is shown.');
system.appChromeBack.click();
assert.ok(system.appChromeForward.displayed(), 'Forward button is shown.');
waitForOffscreen(system.Selector.appUrlbar);
});
test('test progressbar', function() {
client.switchToFrame(frame);
var url = server.url('sample.html');
var link = client.helper.waitForElement('#page2-link');
server.cork(url);
link.scriptWith(function(element, url) {
element.href = url;
}, [url]);
link.click();
client.switchToFrame();
expandRocketbar();
var selector = system.Selector.appChromeProgressBar;
var progressBar = system.appChromeProgressBar;
var chromeSize = system.appChrome.size();
client.waitFor(function() {
var pbPosition = progressBar.scriptWith(function(element) {
return element.getBoundingClientRect();
});
return pbPosition.y === chromeSize.height;
});
waitForOffscreen(selector);
client.waitFor(function() {
return !progressBar.displayed();
});
expandRocketbar();
client.waitFor(function() {
return progressBar.displayed();
});
server.uncork(url);
client.waitFor(function() {
return !progressBar.displayed();
});
});
});