Skip to content

Commit 51664d3

Browse files
committed
add new test case "save_devtools_settings"
1 parent bd202b2 commit 51664d3

File tree

5 files changed

+328
-0
lines changed

5 files changed

+328
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<title>save devtools setting test</title>
6+
</head>
7+
<body>
8+
<p>save devtools setting test</p>
9+
10+
<script src="../res/mocha_util.js"></script>
11+
<script src="mocha_test.js"></script>
12+
13+
</body>
14+
15+
</html>
16+
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Test case for save devtools settings</title>
6+
</head>
7+
<body>
8+
<p id="wait" style="font-size:1.5em">Please wait to be closed.</p>
9+
<input type="text" id="color" placeholder="css color"/>
10+
<script>
11+
var gui = require('nw.gui');
12+
var win = gui.Window.get();
13+
var result = new Array();
14+
//action: 1 change the devtools settings
15+
var action = gui.App.argv[0];
16+
17+
//load devtools into iframe
18+
win.showDevTools('', true);
19+
win.on("devtools-opened", function(url) {
20+
var iframe_devtools = document.createElement("iframe");
21+
iframe_devtools.id = 'devtools';
22+
iframe_devtools.src = url;
23+
iframe_devtools.height = '1000';
24+
iframe_devtools.width = '1000';
25+
function change_setttings() {
26+
var scripts = devtools.document.getElementsByClassName('scripts');
27+
28+
// make sure it is complete
29+
if(scripts == undefined || scripts[0] == undefined || scripts[0].click == undefined)
30+
setTimeout(change_setttings, 3000);
31+
else {
32+
// open settitng
33+
devtools.WebInspector.SettingsController.prototype.showSettingsScreen();
34+
// save original settings
35+
// general
36+
devtools.WebInspector.settingsController._settingsScreen._tabbedPane._tabs[0]._tabbedPane.selectTab('general', true);
37+
result.push(devtools.document.getElementsByName('Disable cache (while DevTools is open)')[0].checked);
38+
result.push(devtools.document.getElementsByName('Disable JavaScript')[0].checked);
39+
result.push(devtools.document.getElementsByName('Split panels vertically when docked to right')[0].checked);
40+
// 0~3
41+
for (var i = 0; i < 4; i++)
42+
if (devtools.document.getElementsByClassName('toplevel')[0].childNodes[1][i]) {
43+
result.push(i);
44+
break;
45+
}
46+
result.push(devtools.document.getElementsByName('Show user agent styles')[0].checked);
47+
result.push(devtools.document.getElementsByName('Word wrap')[0].checked);
48+
result.push(devtools.document.getElementsByName('Show Shadow DOM')[0].checked);
49+
result.push(devtools.document.getElementsByName('Show rulers')[0].checked);
50+
result.push(devtools.document.getElementsByName('Show paint rectangles')[0].checked);
51+
result.push(devtools.document.getElementsByName('Show composited layer borders')[0].checked);
52+
result.push(devtools.document.getElementsByName('Search in content scripts')[0].checked);
53+
result.push(devtools.document.getElementsByName('Enable JS source maps')[0].checked);
54+
result.push(devtools.document.getElementsByName('Enable CSS source maps')[0].checked);
55+
// 0~3
56+
result.push(devtools.document.getElementsByClassName('toplevel')[0].childNodes[1].selectedIndex);
57+
result.push(devtools.document.getElementsByName('Show whitespace characters')[0].checked);
58+
result.push(devtools.document.getElementsByName("Detect indentation")[0].checked);
59+
result.push(devtools.document.getElementsByName('Limit number of captured JS stack frames')[0].checked);
60+
result.push(devtools.document.getElementsByClassName('numeric')[0].value);
61+
result.push(devtools.document.getElementsByName('Show CPU activity on the ruler')[0].checked);
62+
result.push(devtools.document.getElementsByName('Log XMLHttpRequests')[0].checked);
63+
result.push(devtools.document.getElementsByName('Preserve log upon navigation')[0].checked);
64+
if (process.platform != 'darwin')
65+
result.push(devtools.document.getElementsByName('Enable Ctrl + 1-9 shortcut to switch panels')[0].checked);
66+
else
67+
result.push(devtools.document.getElementsByName('Enable Cmd + 1-9 shortcut to switch panels')[0].checked);
68+
// overrides
69+
devtools.WebInspector.settingsController._settingsScreen._tabbedPane._tabs[0]._tabbedPane.selectTab("overrides", true);
70+
71+
result.push(devtools.document.getElementsByClassName('help-block')[0].childNodes[0].childNodes[0].checked);//
72+
result.push(devtools.document.getElementsByClassName('help-block')[0].childNodes[1].childNodes[0].childNodes[0].checked);//Enable on Devtools startup
73+
// 0~21
74+
result.push(devtools.document.getElementsByClassName('help-block')[1].childNodes[0].childNodes[1].childNodes[0].selectedIndex);
75+
result.push(devtools.document.getElementsByName('User Agent')[0].checked);//Overrides User agent
76+
77+
// ignore next
78+
//result.push(devtools.document.getElementById('metrics-override-checkbox').checked);
79+
result.push(devtools.document.getElementsByName('Device metrics')[0].checked);
80+
// result.push(devtools.document.getElementById('metrics-override-width').value);
81+
// result.push(devtools.document.getElementById('metrics-override-height').value);
82+
// ignore next next
83+
result.push(devtools.document.getElementsByName('Fit in window')[0].checked);
84+
result.push(devtools.document.getElementsByName('Override Geolocation')[0].checked);
85+
result.push(devtools.document.getElementById('geolocation-override-latitude').value);
86+
result.push(devtools.document.getElementById('geolocation-override-longitude').value);
87+
result.push(devtools.document.getElementById('geolocation-error').checked);
88+
89+
result.push(devtools.document.getElementsByName('Override Device Orientation')[0].checked);
90+
91+
result.push(devtools.document.getElementById('device-orientation-override-alpha').value);
92+
result.push(devtools.document.getElementById('device-orientation-override-beta').value);
93+
result.push(devtools.document.getElementById('device-orientation-override-gamma').value);
94+
result.push(devtools.document.getElementsByClassName('help-block')[4].childNodes[0].childNodes[0].childNodes[0].checked);
95+
result.push(devtools.document.getElementsByClassName('help-block')[5].childNodes[0].childNodes[0].childNodes[0].checked);
96+
// 0~8
97+
//result.push(devtools.document.getElementsByClassName('help-block')[5].childNodes[0].childNodes[1].selectedIndex);
98+
result.push(devtools.document.getElementsByName('Emulate CSS media')[0].checked);
99+
if (action == '1') {
100+
var i = 0;
101+
// change original settings
102+
// general
103+
devtools.WebInspector.settingsController._settingsScreen._tabbedPane._tabs[0]._tabbedPane.selectTab('general', true);
104+
devtools.document.getElementsByName('Disable cache (while DevTools is open)')[0].click(); i++;
105+
devtools.document.getElementsByName('Disable JavaScript')[0].click(); i++;
106+
devtools.document.getElementsByName('Split panels vertically when docked to right')[0].click(); i++;
107+
// 0~3
108+
devtools.document.getElementsByClassName('toplevel')[0].childNodes[1][(result[i++] + 1) % 4].click();
109+
110+
devtools.document.getElementsByName('Show user agent styles')[0].click(); i++;
111+
devtools.document.getElementsByName('Word wrap')[0].click(); i++;
112+
devtools.document.getElementsByName('Show Shadow DOM')[0].click(); i++;
113+
devtools.document.getElementsByName('Show rulers')[0].click(); i++;
114+
devtools.document.getElementsByName('Show paint rectangles')[0].click(); i++;
115+
devtools.document.getElementsByName('Show composited layer borders')[0].click(); i++;
116+
devtools.document.getElementsByName('Search in content scripts')[0].click(); i++;
117+
devtools.document.getElementsByName('Enable JS source maps')[0].click(); i++;
118+
devtools.document.getElementsByName('Enable CSS source maps')[0].click(); i++;
119+
120+
if (!result[i - 1])
121+
// 0~3
122+
devtools.document.getElementsByClassName('toplevel')[0].childNodes[1].selectedIndex = (result[i++] + 1) % 4;
123+
devtools.document.getElementsByName('Show whitespace characters')[0].click(); i++;
124+
devtools.document.getElementsByName("Detect indentation")[0].click(); i++;
125+
devtools.document.getElementsByName('Limit number of captured JS stack frames')[0].click(); i++;
126+
if (!result[i - 1])
127+
devtools.document.getElementsByClassName('numeric')[0].value = (result[i++] + 1) % 10;
128+
devtools.document.getElementsByName('Show CPU activity on the ruler')[0].click(); i++;
129+
devtools.document.getElementsByName('Log XMLHttpRequests')[0].click(); i++;
130+
devtools.document.getElementsByName('Preserve log upon navigation')[0].click(); i++;
131+
if (process.platform != 'darwin')
132+
devtools.document.getElementsByName('Enable Ctrl + 1-9 shortcut to switch panels')[0].click();
133+
else
134+
devtools.document.getElementsByName('Enable Cmd + 1-9 shortcut to switch panels')[0].click();
135+
i++;
136+
137+
// overrides
138+
devtools.WebInspector.settingsController._settingsScreen._tabbedPane._tabs[0]._tabbedPane.selectTab("overrides", true);
139+
devtools.document.getElementsByClassName('help-block')[0].childNodes[0].childNodes[0].click(); i++;//
140+
devtools.document.getElementsByClassName('help-block')[0].childNodes[1].childNodes[0].childNodes[0].click(); i++//Enable on Devtools startup
141+
if (!result[i - 1])
142+
// 0~21
143+
devtools.document.getElementsByClassName('help-block')[1].childNodes[0].childNodes[1].childNodes[0].selectedIndex = (result[i++] + 1) % 22;
144+
// ignore next
145+
//devtools.document.getElementById('metrics-override-checkbox').click(); i++;
146+
devtools.document.getElementsByName('Device metrics')[0].click(); i++;
147+
// result.push(devtools.document.getElementById('metrics-override-width').value);
148+
// result.push(devtools.document.getElementById('metrics-override-height').value);
149+
// ignore next next
150+
devtools.document.getElementsByName('Fit in window')[0].click(); i++;
151+
devtools.document.getElementsByName('Override Geolocation')[0].click(); i++;
152+
if (!result[i - 1]) {
153+
devtools.document.getElementById('geolocation-override-latitude').value = (result[i++] + 1) % 10;
154+
devtools.document.getElementById('geolocation-override-longitude').value = (result[i++] + 1) % 10;
155+
}
156+
devtools.document.getElementById('geolocation-error').click(); i++;
157+
devtools.document.getElementsByName('Override Device Orientation')[0].click(); i++;
158+
if (!result[i - 1]) {
159+
devtools.document.getElementById('device-orientation-override-alpha').value = (result[i++] + 1) % 10;
160+
devtools.document.getElementById('device-orientation-override-beta').value = (result[i++] + 1) % 10;
161+
devtools.document.getElementById('device-orientation-override-gamma').value = (result[i++] + 1) % 10;
162+
}
163+
devtools.document.getElementsByClassName('help-block')[4].childNodes[0].childNodes[0].childNodes[0].click(); i++;
164+
devtools.document.getElementsByClassName('help-block')[5].childNodes[0].childNodes[0].childNodes[0].click(); i++;
165+
devtools.document.getElementsByName('Emulate CSS media')[0].checked;
166+
//if (!result[i - 1])
167+
// 0~8
168+
// devtools.document.getElementsByClassName('help-block')[5].childNodes[0].childNodes[1].selectedIndex = (result[i++] + 1) % 9;
169+
}
170+
win.showDevTools();
171+
172+
var socket = require('net').connect({port: 13013});
173+
socket.setEncoding('utf8');
174+
socket.end(JSON.stringify(result));
175+
176+
}
177+
}
178+
iframe_devtools.onload = change_setttings;
179+
document.getElementById("wait").appendChild(iframe_devtools);
180+
});
181+
</script>
182+
</body>
183+
</html>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name": "nw-save-devtools-settings-test",
3+
"main": "index.html"
4+
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
var path = require('path');
2+
var assert = require('assert');
3+
var fs = require('fs-extra');
4+
var curDir = fs.realpathSync('.');
5+
6+
7+
var original;
8+
var changed;
9+
var ok = false;
10+
var server, child;
11+
12+
var spawnChild = function(action) {
13+
return spawn(process.execPath, [path.join(curDir, 'internal'), action]);
14+
};
15+
16+
function read_changed(done) {
17+
if (!ok) {
18+
setTimeout(read_changed, 2000, done);
19+
} else {
20+
var tmpChild = spawnChild(0);
21+
server.on('connection', function(socket) {
22+
socket.setEncoding('utf8');
23+
socket.on('data', function(data) {
24+
changed = data;
25+
tmpChild.kill();
26+
done();
27+
console.log("secnond");
28+
});
29+
});
30+
31+
}
32+
}
33+
34+
describe('save_devtools_settings', function() {
35+
36+
before(function(done) {
37+
this.timeout(0);
38+
server = createTCPServer(13013);
39+
child = spawnChild(1);
40+
server.on('connection', function(socket) {
41+
socket.setEncoding('utf8');
42+
socket.on('data', function(data) {
43+
result = JSON.parse(data);
44+
original = data;
45+
ok = true;
46+
child.kill();
47+
done();
48+
console.log("first");
49+
});
50+
});
51+
52+
setTimeout(read_changed, 2000, done);
53+
54+
});
55+
56+
after(function () {
57+
server.close();
58+
});
59+
60+
61+
it("should save devtools' settings", function() {
62+
var i = 0;
63+
// general
64+
assert.notEqual(original[i], changed[i]); i++;
65+
assert.notEqual(original[i], changed[i]); i++;
66+
assert.notEqual(original[i], changed[i]); i++;
67+
assert.notEqual(original[i], changed[i]); i++;
68+
assert.equal((original[i] + 1) % 4, changed[i]); i++;
69+
assert.notEqual(original[i], changed[i]); i++;
70+
assert.notEqual(original[i], changed[i]); i++;
71+
assert.notEqual(original[i], changed[i]); i++;
72+
assert.notEqual(original[i], changed[i]); i++;
73+
assert.notEqual(original[i], changed[i]); i++;
74+
assert.notEqual(original[i], changed[i]); i++;
75+
assert.notEqual(original[i], changed[i]); i++;
76+
assert.notEqual(original[i], changed[i]); i++;
77+
78+
assert.equal((original[i] + 1) % 4, changed[i]); i++;
79+
assert.notEqual(original[i], changed[i]); i++;
80+
assert.notEqual(original[i], changed[i]); i++;
81+
assert.notEqual(original[i], changed[i]); i++;
82+
if (!original[i - 1])
83+
assert.equal((original[i] + 1) % 10, changed[i]);
84+
i++;
85+
assert.notEqual(original[i], changed[i]); i++;
86+
assert.notEqual(original[i], changed[i]); i++;
87+
assert.notEqual(original[i], changed[i]); i++;
88+
assert.notEqual(original[i], changed[i]); i++;
89+
90+
// overrides
91+
assert.notEqual(original[i], changed[i]); i++;
92+
if (!original[i - 1])
93+
// 0~21
94+
assert.equal((original[i] + 1) % 22, changed[i]);
95+
i++;
96+
assert.notEqual(original[i], changed[i]); i++;
97+
assert.notEqual(original[i], changed[i]); i++;
98+
assert.notEqual(original[i], changed[i]); i++;
99+
if (!original[i - 1]) {
100+
assert.equal((original[i] + 1) % 10, changed[i]); i++;
101+
assert.equal((original[i] + 1) % 10, changed[i]); i++;
102+
}
103+
assert.notEqual(original[i], changed[i]); i++;
104+
assert.notEqual(original[i], changed[i]); i++;
105+
if (!original[i - 1]) {
106+
assert.equal((original[i] + 1) % 10, changed[i]); i++;
107+
assert.equal((original[i] + 1) % 10, changed[i]); i++;
108+
assert.equal((original[i] + 1) % 10, changed[i]); i++;
109+
}
110+
assert.notEqual(original[i], changed[i]); i++;
111+
assert.notEqual(original[i], changed[i]); i++;
112+
if (!original[i - 1])
113+
assert.equal((original[i] + 1) % 9, changed[i]);
114+
i++;
115+
116+
});
117+
118+
});
119+
120+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name":"save_devtools_settings_wrapper",
3+
"main":"index.html"
4+
}
5+

0 commit comments

Comments
 (0)