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
|
system = require 'system'
fs = require 'fs'
path = require 'path'
page = require('webpage').create()
page.settings.userAgent = 'phantom'
# ensure that the elements we test the link hints on are actually visible
page.viewportSize =
width: 900
height: 600
page.onConsoleMessage = (msg) ->
console.log msg
page.onError = (msg, trace) ->
console.log(msg)
trace.forEach (item) ->
console.log(' ', item.file, ':', item.line)
page.onResourceError = (resourceError) ->
console.log(resourceError.errorString)
page.onCallback = (request) ->
switch request.request
when "keyboard"
switch request.key
when "escape"
page.sendEvent "keydown", page.event.key.Escape
page.sendEvent "keyup", page.event.key.Escape
when "enter"
page.sendEvent "keydown", page.event.key.Enter
page.sendEvent "keyup", page.event.key.Enter
when "tab"
page.sendEvent "keydown", page.event.key.Tab
page.sendEvent "keyup", page.event.key.Tab
when "shift-down"
page.sendEvent "keydown", page.event.key.Shift
when "shift-up"
page.sendEvent "keyup", page.event.key.Shift
when "ctrl-down"
page.sendEvent "keydown", page.event.key.Control
when "ctrl-up"
page.sendEvent "keyup", page.event.key.Control
else
page.sendEvent "keypress", request.key
testfile = path.join(path.dirname(system.args[0]), 'dom_tests.html')
page.open testfile, (status) ->
if status != 'success'
console.log 'Unable to load tests.'
phantom.exit 1
runTests = ->
testsFailed = page.evaluate ->
Tests.run()
return Tests.testsFailed
if system.args[1] == '--coverage'
data = page.evaluate -> JSON.stringify _$jscoverage
fs.write dirname + 'dom_tests_coverage.json', data, 'w'
if testsFailed > 0
phantom.exit 1
else
phantom.exit 0
# We add a short delay to allow asynchronous initialization (that is, initialization which happens on
# "nextTick") to complete.
setTimeout runTests, 10
|