Merge lp:~osomon/oxide/fix-save-restore-unit-tests into lp:~oxide-developers/oxide/oxide.trunk
- fix-save-restore-unit-tests
- Merge into oxide.trunk
Proposed by
Olivier Tilloy
Status: | Merged |
---|---|
Merged at revision: | 1134 |
Proposed branch: | lp:~osomon/oxide/fix-save-restore-unit-tests |
Merge into: | lp:~oxide-developers/oxide/oxide.trunk |
Diff against target: |
356 lines (+170/-163) 1 file modified
qt/tests/qmltests/api/tst_WebView_save_restore_state.qml (+170/-163) |
To merge this branch: | bzr merge lp:~osomon/oxide/fix-save-restore-unit-tests |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Chris Coulson | Approve | ||
Review via email: mp+262052@code.launchpad.net |
Commit message
Fix save/restore unit tests.
Description of the change
To post a comment you must log in.
Revision history for this message
Chris Coulson (chrisccoulson) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'qt/tests/qmltests/api/tst_WebView_save_restore_state.qml' |
2 | --- qt/tests/qmltests/api/tst_WebView_save_restore_state.qml 2015-06-12 11:02:11 +0000 |
3 | +++ qt/tests/qmltests/api/tst_WebView_save_restore_state.qml 2015-06-16 07:17:04 +0000 |
4 | @@ -3,9 +3,8 @@ |
5 | import com.canonical.Oxide 1.4 |
6 | import com.canonical.Oxide.Testing 1.0 |
7 | |
8 | -TestCase { |
9 | - name: "WebView_save_restore_state" |
10 | - when: windowShown |
11 | +Item { |
12 | + id: root |
13 | width: 200 |
14 | height: 200 |
15 | |
16 | @@ -23,6 +22,10 @@ |
17 | |
18 | focus: true |
19 | anchors.fill: parent |
20 | + |
21 | + function waitForStateUpdate(state) { |
22 | + return waitFor(function() { return (currentState !== state); }); |
23 | + } |
24 | } |
25 | } |
26 | |
27 | @@ -34,165 +37,169 @@ |
28 | ]; |
29 | } |
30 | |
31 | - function init() { |
32 | - webView = webViewComponent.createObject(this); |
33 | - } |
34 | - |
35 | - function cleanup() { |
36 | - webView.destroy() |
37 | - } |
38 | - |
39 | - function test_WebView_save_and_restore_current_page_data() { |
40 | - return get_restore_types(); |
41 | - } |
42 | - |
43 | - function test_WebView_save_and_restore_current_page(data) { |
44 | - webView.url = "http://testsuite/tst_WebView_navigation1.html"; |
45 | - verify(webView.waitForLoadSucceeded(), |
46 | - "Timed out waiting for successful load"); |
47 | - |
48 | - var state = webView.currentState; |
49 | - verify(state.length > 0); |
50 | - |
51 | - var restored = webViewComponent.createObject( |
52 | - webView, {"restoreType": data.restoreType, "restoreState": state}); |
53 | - verify(restored !== null); |
54 | - tryCompare(restored, "url", webView.url); |
55 | - verify(restored.waitForLoadSucceeded(), |
56 | - "Timed out waiting for successful load"); |
57 | - restored.destroy(); |
58 | - } |
59 | - |
60 | - function test_WebView_save_and_restore_navigation_history_data() { |
61 | - return get_restore_types(); |
62 | - } |
63 | - |
64 | - function test_WebView_save_and_restore_navigation_history(data) { |
65 | - webView.url = "http://testsuite/tst_WebView_navigation1.html"; |
66 | - verify(webView.waitForLoadSucceeded(), |
67 | - "Timed out waiting for successful load"); |
68 | - webView.url = "http://testsuite/tst_WebView_navigation2.html"; |
69 | - verify(webView.waitForLoadSucceeded(), |
70 | - "Timed out waiting for successful load"); |
71 | - webView.url = "http://testsuite/tst_WebView_navigation3.html"; |
72 | - verify(webView.waitForLoadSucceeded(), |
73 | - "Timed out waiting for successful load"); |
74 | - webView.goBack(); |
75 | - verify(webView.waitForLoadSucceeded(), |
76 | - "Timed out waiting for successful load"); |
77 | - |
78 | - var state = webView.currentState; |
79 | - verify(state.length > 0); |
80 | - |
81 | - var restored = webViewComponent.createObject( |
82 | - webView, {"restoreType": data.restoreType, "restoreState": state}); |
83 | - verify(restored !== null); |
84 | - tryCompare(restored, "url", webView.url); |
85 | - verify(restored.waitForLoadSucceeded(), |
86 | - "Timed out waiting for successful load"); |
87 | - verify(restored.canGoBack); |
88 | - verify(restored.canGoForward); |
89 | - compare(restored.navigationHistory.currentIndex, 1); |
90 | - restored.destroy(); |
91 | - } |
92 | - |
93 | - function test_WebView_save_and_restore_scroll_offset_data() { |
94 | - return get_restore_types(); |
95 | - } |
96 | - |
97 | - function test_WebView_save_and_restore_scroll_offset(data) { |
98 | - webView.url = "http://testsuite/tst_WebView_flickableLikeAPI.html"; |
99 | - verify(webView.waitForLoadSucceeded(), |
100 | - "Timed out waiting for successful load"); |
101 | - webView.getTestApi().evaluateCode("document.body.scrollLeft = 300"); |
102 | - webView.getTestApi().evaluateCode("document.body.scrollTop = 700"); |
103 | - |
104 | - var state = webView.currentState; |
105 | - verify(state.length > 0); |
106 | - |
107 | - var restored = webViewComponent.createObject( |
108 | - webView, {"restoreType": data.restoreType, "restoreState": state}); |
109 | - verify(restored !== null); |
110 | - tryCompare(restored, "url", webView.url); |
111 | - verify(restored.waitForLoadSucceeded(), |
112 | - "Timed out waiting for successful load"); |
113 | - restored.waitFor(function() { |
114 | - return parseFloat(restored.getTestApi().evaluateCode( |
115 | - "document.body.scrollLeft")) == 300; }); |
116 | - restored.waitFor(function() { |
117 | - return parseFloat(restored.getTestApi().evaluateCode( |
118 | - "document.body.scrollTop")) == 700; }); |
119 | - restored.destroy(); |
120 | - } |
121 | - |
122 | - function test_WebView_save_and_restore_form_data_input_data() { |
123 | - return get_restore_types(); |
124 | - } |
125 | - |
126 | - function test_WebView_save_and_restore_form_data_input(data) { |
127 | - webView.url = "http://testsuite/tst_WebView_save_restore_form_data.html"; |
128 | - verify(webView.waitForLoadSucceeded(), |
129 | - "Timed out waiting for successful load"); |
130 | - keyClick("T"); |
131 | - keyClick("e"); |
132 | - keyClick("$"); |
133 | - keyClick("t"); |
134 | - webView.waitFor(function() { |
135 | - return webView.getTestApi().evaluateCode( |
136 | - "document.querySelector('#textInput').value") == "Te$t"; }); |
137 | - |
138 | - var state = webView.currentState; |
139 | - verify(state.length > 0); |
140 | - |
141 | - var restored = webViewComponent.createObject( |
142 | - webView, {"restoreType": data.restoreType, "restoreState": state}); |
143 | - verify(restored !== null); |
144 | - tryCompare(restored, "url", webView.url); |
145 | - verify(restored.waitForLoadSucceeded(), |
146 | - "Timed out waiting for successful load"); |
147 | - restored.waitFor(function() { |
148 | - return restored.getTestApi().evaluateCode( |
149 | - "document.querySelector('#textInput').value") == "Te$t"; }); |
150 | - restored.destroy(); |
151 | - } |
152 | - |
153 | - function test_WebView_save_and_restore_error_page_data() { |
154 | - return get_restore_types(); |
155 | - } |
156 | - |
157 | - // Test that restoring the state of a navigation that had triggered an error |
158 | - // triggers the error again (see https://launchpad.net/bugs/1423531). |
159 | - function test_WebView_save_and_restore_error_page(data) { |
160 | - var url = "http://invalid/"; |
161 | - webView.url = url; |
162 | - verify(webView.waitForLoadCommitted(), |
163 | - "Timed out waiting for error page"); |
164 | - |
165 | - var state = webView.currentState; |
166 | - verify(state.length > 0); |
167 | - |
168 | - var restored = webViewComponent.createObject( |
169 | - webView, {"restoreType": data.restoreType, "restoreState": state}); |
170 | - verify(restored !== null); |
171 | - |
172 | - var expectedLoadEvents = [ |
173 | - { type: LoadEvent.TypeStarted, isError: false }, |
174 | - { type: LoadEvent.TypeFailed, isError: false }, |
175 | - { type: LoadEvent.TypeCommitted, isError: true } |
176 | - ]; |
177 | - function _loadEvent(event) { |
178 | - var expected = expectedLoadEvents[0]; |
179 | - compare(event.type, expected.type); |
180 | - compare(event.url, url); |
181 | - compare(event.isError, expected.isError); |
182 | - expectedLoadEvents.shift(); |
183 | - } |
184 | - restored.loadEvent.connect(_loadEvent); |
185 | - |
186 | - tryCompare(restored, "url", url); |
187 | - restored.waitFor(function() { |
188 | - return (expectedLoadEvents.length === 0); |
189 | - }); |
190 | - restored.destroy(); |
191 | + TestCase { |
192 | + name: "WebView_save_restore_state" |
193 | + when: windowShown |
194 | + |
195 | + function init() { |
196 | + webView = webViewComponent.createObject(root); |
197 | + } |
198 | + |
199 | + function cleanup() { |
200 | + webView.destroy() |
201 | + } |
202 | + |
203 | + function test_WebView_save_and_restore_current_page_data() { |
204 | + return get_restore_types(); |
205 | + } |
206 | + |
207 | + function test_WebView_save_and_restore_current_page(data) { |
208 | + webView.url = "http://testsuite/tst_WebView_navigation1.html"; |
209 | + verify(webView.waitForLoadSucceeded(), |
210 | + "Timed out waiting for successful load"); |
211 | + |
212 | + var state = webView.currentState; |
213 | + verify(state.length > 0); |
214 | + |
215 | + var restored = webViewComponent.createObject( |
216 | + root, {"restoreType": data.restoreType, "restoreState": state}); |
217 | + verify(restored !== null); |
218 | + tryCompare(restored, "url", webView.url); |
219 | + verify(restored.waitForLoadSucceeded(), |
220 | + "Timed out waiting for successful load"); |
221 | + restored.destroy(); |
222 | + } |
223 | + |
224 | + function test_WebView_save_and_restore_navigation_history_data() { |
225 | + return get_restore_types(); |
226 | + } |
227 | + |
228 | + function test_WebView_save_and_restore_navigation_history(data) { |
229 | + webView.url = "http://testsuite/tst_WebView_navigation1.html"; |
230 | + verify(webView.waitForLoadSucceeded(), |
231 | + "Timed out waiting for successful load"); |
232 | + webView.url = "http://testsuite/tst_WebView_navigation2.html"; |
233 | + verify(webView.waitForLoadSucceeded(), |
234 | + "Timed out waiting for successful load"); |
235 | + webView.url = "http://testsuite/tst_WebView_navigation3.html"; |
236 | + verify(webView.waitForLoadSucceeded(), |
237 | + "Timed out waiting for successful load"); |
238 | + webView.goBack(); |
239 | + verify(webView.waitForLoadSucceeded(), |
240 | + "Timed out waiting for successful load"); |
241 | + |
242 | + var state = webView.currentState; |
243 | + verify(state.length > 0); |
244 | + |
245 | + var restored = webViewComponent.createObject( |
246 | + root, {"restoreType": data.restoreType, "restoreState": state}); |
247 | + verify(restored !== null); |
248 | + tryCompare(restored, "url", webView.url); |
249 | + verify(restored.waitForLoadSucceeded(), |
250 | + "Timed out waiting for successful load"); |
251 | + verify(restored.canGoBack); |
252 | + verify(restored.canGoForward); |
253 | + compare(restored.navigationHistory.currentIndex, 1); |
254 | + restored.destroy(); |
255 | + } |
256 | + |
257 | + function test_WebView_save_and_restore_scroll_offset_data() { |
258 | + return get_restore_types(); |
259 | + } |
260 | + |
261 | + function test_WebView_save_and_restore_scroll_offset(data) { |
262 | + webView.url = "http://testsuite/tst_WebView_flickableLikeAPI.html"; |
263 | + verify(webView.waitForLoadSucceeded(), |
264 | + "Timed out waiting for successful load"); |
265 | + webView.getTestApi().evaluateCode("document.body.scrollLeft = 300"); |
266 | + webView.getTestApi().evaluateCode("document.body.scrollTop = 700"); |
267 | + verify(webView.waitForStateUpdate(webView.currentState)); |
268 | + |
269 | + var state = webView.currentState; |
270 | + verify(state.length > 0); |
271 | + |
272 | + var restored = webViewComponent.createObject( |
273 | + root, {"restoreType": data.restoreType, "restoreState": state}); |
274 | + verify(restored !== null); |
275 | + tryCompare(restored, "url", webView.url); |
276 | + verify(restored.waitForLoadSucceeded(), |
277 | + "Timed out waiting for successful load"); |
278 | + verify(restored.waitFor(function() { |
279 | + return parseFloat(restored.getTestApi().evaluateCode( |
280 | + "document.body.scrollLeft")) == 300; })); |
281 | + verify(restored.waitFor(function() { |
282 | + return parseFloat(restored.getTestApi().evaluateCode( |
283 | + "document.body.scrollTop")) == 700; })); |
284 | + restored.destroy(); |
285 | + } |
286 | + |
287 | + function test_WebView_save_and_restore_form_data_input() { |
288 | + webView.url = "http://testsuite/tst_WebView_save_restore_form_data.html"; |
289 | + verify(webView.waitForLoadSucceeded(), |
290 | + "Timed out waiting for successful load"); |
291 | + keyClick("T"); |
292 | + keyClick("e"); |
293 | + keyClick("$"); |
294 | + keyClick("t"); |
295 | + webView.waitFor(function() { |
296 | + return webView.getTestApi().evaluateCode( |
297 | + "document.querySelector('#textInput').value") == "Te$t"; }); |
298 | + verify(webView.waitForStateUpdate(webView.currentState)); |
299 | + |
300 | + var state = webView.currentState; |
301 | + verify(state.length > 0); |
302 | + |
303 | + var restored = webViewComponent.createObject( |
304 | + root, |
305 | + {"restoreType": WebView.RestoreCurrentSession, "restoreState": state}); |
306 | + verify(restored !== null); |
307 | + tryCompare(restored, "url", webView.url); |
308 | + verify(restored.waitForLoadSucceeded(), |
309 | + "Timed out waiting for successful load"); |
310 | + verify(restored.waitFor(function() { |
311 | + return restored.getTestApi().evaluateCode( |
312 | + "document.querySelector('#textInput').value") == "Te$t"; })); |
313 | + restored.destroy(); |
314 | + } |
315 | + |
316 | + function test_WebView_save_and_restore_error_page_data() { |
317 | + return get_restore_types(); |
318 | + } |
319 | + |
320 | + // Test that restoring the state of a navigation that had triggered an error |
321 | + // triggers the error again (see https://launchpad.net/bugs/1423531). |
322 | + function test_WebView_save_and_restore_error_page(data) { |
323 | + var url = "http://invalid/"; |
324 | + webView.url = url; |
325 | + verify(webView.waitForLoadCommitted(), |
326 | + "Timed out waiting for error page"); |
327 | + |
328 | + var state = webView.currentState; |
329 | + verify(state.length > 0); |
330 | + |
331 | + var restored = webViewComponent.createObject( |
332 | + root, {"restoreType": data.restoreType, "restoreState": state}); |
333 | + verify(restored !== null); |
334 | + |
335 | + var expectedLoadEvents = [ |
336 | + { type: LoadEvent.TypeStarted, isError: false }, |
337 | + { type: LoadEvent.TypeFailed, isError: false }, |
338 | + { type: LoadEvent.TypeCommitted, isError: true } |
339 | + ]; |
340 | + function _loadEvent(event) { |
341 | + var expected = expectedLoadEvents[0]; |
342 | + compare(event.type, expected.type); |
343 | + compare(event.url, url); |
344 | + compare(event.isError, expected.isError); |
345 | + expectedLoadEvents.shift(); |
346 | + } |
347 | + restored.loadEvent.connect(_loadEvent); |
348 | + |
349 | + tryCompare(restored, "url", url); |
350 | + restored.waitFor(function() { |
351 | + return (expectedLoadEvents.length === 0); |
352 | + }); |
353 | + restored.destroy(); |
354 | + } |
355 | } |
356 | } |