Skip to content

Commit 8e7fc3f

Browse files
committed
Merge pull request nwjs#1852 from gitchs/i1669
Append test case for issue 1669
2 parents 9fb6169 + 1e1c48b commit 8e7fc3f

File tree

4 files changed

+176
-0
lines changed

4 files changed

+176
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<title>Test</title>
7+
</head>
8+
<body>
9+
<p>We are using node.js
10+
<script>
11+
document.write(process.version)
12+
</script>.
13+
</p>
14+
<p>Message:
15+
<input type="text" id="message"/>
16+
</p>
17+
<p>
18+
<input type="button" id="send-message-btn" value="send!" />
19+
</p>
20+
<script type="text/javascript">
21+
var results = [];
22+
document.getElementById('send-message-btn').addEventListener('click', function() {
23+
var the_message = document.getElementById('message').value;
24+
console.log('original message: ' + the_message);
25+
var message_buffer = new Buffer(the_message, 'utf8');
26+
var message_buffer_string = message_buffer.toString();
27+
if (message_buffer_string != the_message){
28+
results.push(false);
29+
} else {
30+
results.push(true);
31+
}
32+
});
33+
</script>
34+
</body>
35+
36+
</html>
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
var assert = require('assert');
2+
var func = require('./' + global.tests_dir + '/start_app/script.js');
3+
var result = [];
4+
var spawn = require('child_process').spawn;
5+
var fs = require('fs-extra');
6+
var is_chromedriver_exists = false;
7+
var path = require('path');
8+
9+
describe("buff_from_string", function() {
10+
var results = [];
11+
var server = global.server;
12+
var getResult = function(socket){
13+
socket.on('data',function(data){
14+
results = JSON.parse(data.toString());
15+
});
16+
};
17+
before(function(done) {
18+
this.timeout(0);
19+
server.on('connection',getResult);
20+
func.copyExecFiles(function() {
21+
var src_files = [
22+
"automatic_tests/buff_from_string/index.html",
23+
"automatic_tests/buff_from_string/package.json",
24+
"automatic_tests/buff_from_string/test.py"
25+
];
26+
var dst_files = [
27+
"tmp-nw/index.html",
28+
"tmp-nw/package.json",
29+
"tmp-nw/test.py"
30+
];
31+
32+
if (process.platform == 'win32'){
33+
src_files.push("automatic_tests/buff_from_string/chromedriver2_server.exe");
34+
dst_files.push("tmp-nw/chromedriver2_server.exe");
35+
} else {
36+
src_files.push("automatic_tests/buff_from_string/chromedriver2_server");
37+
dst_files.push("tmp-nw/chromedriver2_server");
38+
}
39+
40+
for (var i=0;i<src_files.length;++i){
41+
fs.copySync(src_files[i],dst_files[i]);
42+
}
43+
if (process.platform != 'win32'){
44+
fs.chmodSync("tmp-nw/chromedriver2_server",365);
45+
}
46+
var test_file = path.join("tmp-nw","test.py");
47+
setTimeout(function(){
48+
var child = spawn('python',[test_file]);
49+
child.on('exit',function(code,signal){
50+
console.log(code,signal);
51+
done();
52+
});
53+
child.on('error',function(err){
54+
console.log(err);
55+
});
56+
child.stderr.on('data',function(data){
57+
console.log(data.toString());
58+
});
59+
child.stdout.on('data',function(data){
60+
console.log(data.toString());
61+
});
62+
},1000);
63+
});
64+
});
65+
66+
it("string and buff.toString() should equal", function(done) {
67+
assert.equal(results.length,1);
68+
assert.equal(results[0],true);
69+
done();
70+
});
71+
72+
after(function(done) {
73+
this.timeout(0);
74+
server.removeListener('connection',getResult);
75+
setTimeout(function(){
76+
fs.removeSync("tmp-nw");
77+
done();
78+
},2000);
79+
});
80+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name":"test",
3+
"main":"index.html",
4+
"dependencies":{}
5+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/usr/bin/env python
2+
3+
from selenium import webdriver
4+
import os
5+
import traceback
6+
import time
7+
from selenium import webdriver
8+
from platform import platform
9+
import socket
10+
from sys import argv
11+
12+
port = 13013
13+
if len(argv) >= 2:
14+
port = int(argv[1])
15+
16+
17+
path = os.path
18+
dirname = path.abspath(path.dirname(__file__))
19+
chromedriver_path = path.join(dirname,"chromedriver2_server")
20+
21+
nw = webdriver.Chrome(chromedriver_path,service_args=[dirname])
22+
input_element = nw.find_element_by_id("message")
23+
input_element.send_keys("hello world")
24+
25+
send_button = nw.find_element_by_id("send-message-btn")
26+
send_button.click()
27+
28+
time.sleep(1)
29+
results = nw.execute_script('return JSON.stringify(results);')
30+
31+
connection = socket.create_connection(("localhost",port))
32+
connection.sendall(results)
33+
connection.close()
34+
35+
def kill_process_tree(pid):
36+
machine_type = platform()
37+
if "Linux" in machine_type or "Darwin" in machine_type:
38+
import psutil
39+
parent = psutil.Process(spid)
40+
for child in parent.get_children(recursive=True):
41+
child.kill()
42+
parent.kill()
43+
return
44+
elif 'Windows' in machine_type:
45+
import subprocess
46+
dev_null = open(os.devnull,"wb")
47+
subprocess.Popen(['taskkill', '/F', '/T', '/PID', str(pid)],stdout=dev_null,stderr=dev_null)
48+
return
49+
else:
50+
# print "Unknow OS type"
51+
return
52+
53+
time.sleep(2)
54+
spid = nw.service.process.pid
55+
kill_process_tree(spid)

0 commit comments

Comments
 (0)