Merge lp:~osomon/oxide/fix-save-restore-unit-tests into lp:~oxide-developers/oxide/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
Reviewer Review Type Date Requested Status
Chris Coulson Approve
Review via email: mp+262052@code.launchpad.net

Commit message

Fix save/restore unit tests.

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 }

Subscribers

People subscribed via source and target branches