-
Notifications
You must be signed in to change notification settings - Fork 0
/
cssdump.js
68 lines (64 loc) · 1.44 KB
/
cssdump.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
var fs = require('fs');
var casper = require('casper').create({
clientScripts: ["lib.js"]
});
var x = require('casper').selectXPath;
var utils = require('utils');
var plan = require(casper.cli.args[0]);
var dump = {};
var snapshot = function(name, dump) {
var res = {};
var elements = document.getElementsByTagName("*");
for (var i = 0; i < elements.length; i++) {
var e = elements[i];
var css = {}
var style = window.getComputedStyle(e);
for (var j = 0; j < style.length; j++) {
var prop = style.item(j);
css[prop] = style.getPropertyValue(prop);
}
res[myFullPath(e)] = css;
}
dump[name] = res;
return dump;
}
function l(path) {
if (casper.cli.options["local"] == true)
return 'file://' + fs.absolute(path);
else
return path;
}
var current = plan.shift();
var action = Object.keys(current).shift();
var value = current[action];
casper.start(l(value));
while (plan.length > 0) {
current = plan.shift();
action = Object.keys(current).shift();
value = current[action];
switch (action) {
case "open":
casper.thenOpen(l(value));
break;
case "snapshot":
(function(value) {
casper.then(function() {
dump = this.evaluate(snapshot, value, dump);
});
})(value);
break;
case "click":
(function(value) {
casper.then(function() {
this.click(value);
});
})(value);
break;
default:
console.log("Erreur!");
}
}
casper.run(function() {
console.log(JSON.stringify(dump));
this.exit();
});