]> git.proxmox.com Git - extjs.git/blame - extjs/modern/modern/test/local/cmd.js
add extjs 6.0.1 sources
[extjs.git] / extjs / modern / modern / test / local / cmd.js
CommitLineData
6527f429
DM
1if (top.location.search.indexOf("cmd-test=true") > 0) {\r
2 var Cmd = {\r
3\r
4 sendMessage: function(message, callback) {\r
5 if (typeof message != 'object') {\r
6 message = {\r
7 type: message\r
8 };\r
9 }\r
10\r
11 message.seq = ++Cmd._seq;\r
12 if (callback) {\r
13 Cmd._callbacks[message.seq] = callback;\r
14 message.callback = true;\r
15 }\r
16 Cmd._messages.push(message);\r
17 Cmd._notifyWebDriver();\r
18 },\r
19\r
20 native: {\r
21 getWindowHandle: function(callback) {\r
22 Cmd.sendMessage({\r
23 type: 'getWindowHandle'\r
24 }, callback);\r
25 },\r
26\r
27 getWindowHandles: function(callback) {\r
28 Cmd.sendMessage({\r
29 type: 'getWindowHandles'\r
30 }, callback);\r
31 },\r
32\r
33 switchTo: function(options, callback) {\r
34 options.type = 'switchTo';\r
35 Cmd.sendMessage(options, callback);\r
36 },\r
37\r
38 close: function(callback) {\r
39 Cmd.sendMessage({\r
40 type: 'close'\r
41 }, callback);\r
42 },\r
43\r
44 screenshot: function(name, callback) {\r
45 Cmd.sendMessage({\r
46 type: 'screenshot',\r
47 name: name\r
48 }, callback);\r
49 },\r
50\r
51 click: function(domElement, callback) {\r
52 Cmd.sendMessage({\r
53 type: 'click',\r
54 elementId: domElement.id\r
55 }, callback);\r
56 },\r
57\r
58 sendKeys: function(domElement, keys, callback) {\r
59 Cmd.sendMessage({\r
60 type: 'sendKeys',\r
61 elementId: domElement.id,\r
62 keys: keys\r
63 }, callback);\r
64 }\r
65 },\r
66\r
67 // ----------------------------------------------------------------------------\r
68 // Internal API used by test runners to report results and progress\r
69\r
70 status: {\r
71 runStarted: function(callback) {\r
72 Cmd.sendMessage('testRunnerStarted', callback);\r
73 },\r
74\r
75 runFinished: function(callback) {\r
76 Cmd.sendMessage('testRunnerFinished', callback);\r
77 },\r
78\r
79 suiteStarted: function(name, callback) {\r
80 Cmd.sendMessage({\r
81 type: 'testSuiteStarted',\r
82 name: name\r
83 }, callback);\r
84 },\r
85\r
86 suiteFinished: function(name, callback) {\r
87 Cmd.sendMessage({\r
88 type: 'testSuiteFinished',\r
89 name: name\r
90 }, callback);\r
91 },\r
92\r
93 testStarted: function(name, callback) {\r
94 Cmd.sendMessage({\r
95 type: 'testStarted',\r
96 name: name\r
97 }, callback);\r
98 },\r
99\r
100 testFinished: function(name, callback) {\r
101 Cmd.sendMessage({\r
102 type: 'testFinished',\r
103 name: name\r
104 }, callback);\r
105 },\r
106\r
107 testFailed: function(name, error, details, callback) {\r
108 Cmd.sendMessage({\r
109 type: 'testFailed',\r
110 name: name,\r
111 error: error,\r
112 details: details\r
113 }, callback);\r
114 },\r
115\r
116 getCurrentChunk: function(array) {\r
117 var cmdTestSplit = Cmd._getParam('cmd-test-split'),\r
118 cmdTestChunk, cmdTestChunks;\r
119\r
120 if (cmdTestSplit) {\r
121 cmdTestChunk = cmdTestSplit.split("/")[0];\r
122 cmdTestChunks = cmdTestSplit.split("/")[1];\r
123 return Cmd._split(array, cmdTestChunks)[cmdTestChunk];\r
124 } else {\r
125 return array;\r
126 }\r
127 }\r
128 },\r
129\r
130 // ----------------------------------------------------------------------------\r
131 // Private API\r
132\r
133 _messages: [],\r
134 _seq: 0,\r
135 _callbacks: {},\r
136\r
137 _callback: function(seq, result) {\r
138 var fn = Cmd._callbacks[seq];\r
139 delete Cmd._callbacks[seq];\r
140 fn(result);\r
141 },\r
142\r
143 _purgeMessages: function(count) {\r
144 Cmd._messages = Cmd._messages.slice(count, Cmd._messages.length);\r
145 },\r
146\r
147 _notifyWebDriver: function() {\r
148 if (Cmd._pendingNotifier) {\r
149 return;\r
150 }\r
151\r
152 var notifier = function() {\r
153 var messages,\r
154 webDriverCallback = Cmd._webDriverCallback;\r
155 if (webDriverCallback) {\r
156 messages = JSON.stringify(Cmd._messages);\r
157 Cmd._webDriverCallback = null;\r
158 Cmd._pendingNotifier = null;\r
159 webDriverCallback(messages);\r
160 } else {\r
161 Cmd._pendingNotifier = notifier;\r
162 }\r
163 };\r
164\r
165 notifier();\r
166 },\r
167\r
168 _split: function(a, n) {\r
169 var len = a.length,out = [], i = 0;\r
170 while (i < len) {\r
171 var size = Math.ceil((len - i) / n--);\r
172 out.push(a.slice(i, i += size));\r
173 }\r
174 return out;\r
175 },\r
176\r
177 _getParam: function(name) {\r
178 if (name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(top.location.search)) {\r
179 return decodeURIComponent(name[1]);\r
180 }\r
181 }\r
182\r
183 };\r
184}\r