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