Merge lp:~carla-sella/ubuntu-rssreader-app/view_feeds_test-new into lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/trunk
- view_feeds_test-new
- Merge into trunk
Proposed by
Carla Sella
Status: | Merged |
---|---|
Approved by: | Joey Chan |
Approved revision: | 95 |
Merged at revision: | 95 |
Proposed branch: | lp:~carla-sella/ubuntu-rssreader-app/view_feeds_test-new |
Merge into: | lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/trunk |
Diff against target: |
431 lines (+142/-125) 5 files modified
RssFeedPage.qml (+2/-0) listview/ListModePage.qml (+1/-0) rssreader-app.qml (+1/-0) tests/autopilot/ubuntu_rssreader_app/emulators.py (+52/-17) tests/autopilot/ubuntu_rssreader_app/tests/test_rssreader.py (+86/-108) |
To merge this branch: | bzr merge lp:~carla-sella/ubuntu-rssreader-app/view_feeds_test-new |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Phone Apps Jenkins Bot | continuous-integration | Approve | |
Ubuntu Shorts Developers | Pending | ||
Review via email:
|
Commit message
Autopilot tests for ubuntu-
Description of the change
Fixed all tests, and fixed removal of feed by swiping.
To post a comment you must log in.
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
review:
Needs Fixing
(continuous-integration)
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) : | # |
review:
Approve
(continuous-integration)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'RssFeedPage.qml' |
2 | --- RssFeedPage.qml 2013-10-05 10:51:56 +0000 |
3 | +++ RssFeedPage.qml 2013-10-06 13:11:36 +0000 |
4 | @@ -15,6 +15,7 @@ |
5 | import "databasemodule_v2.js" as DB |
6 | |
7 | Page { |
8 | + objectName: "rssfeedpage" |
9 | id: pageRoot |
10 | |
11 | property string rssModelUrl: "" |
12 | @@ -45,6 +46,7 @@ |
13 | } |
14 | |
15 | tools: ToolbarItems { |
16 | + objectName: "pageBackBtn" |
17 | id: toolbar |
18 | |
19 | ToolbarButton { |
20 | |
21 | === modified file 'listview/ListModePage.qml' |
22 | --- listview/ListModePage.qml 2013-10-05 14:41:06 +0000 |
23 | +++ listview/ListModePage.qml 2013-10-06 13:11:36 +0000 |
24 | @@ -142,6 +142,7 @@ |
25 | color: model.status == "1" ? Qt.rgba(0, 0, 0, 0.3) : Qt.rgba(0, 0, 0, 0.0) |
26 | |
27 | ListItems.Subtitled { |
28 | + objectName: "feedlistitems" |
29 | id: listItem |
30 | |
31 | text: model.title |
32 | |
33 | === modified file 'rssreader-app.qml' |
34 | --- rssreader-app.qml 2013-10-05 09:34:23 +0000 |
35 | +++ rssreader-app.qml 2013-10-06 13:11:36 +0000 |
36 | @@ -112,6 +112,7 @@ |
37 | id: mainCommonToolbar |
38 | |
39 | back: ToolbarButton { |
40 | + objectName: "rsspagerefreshbutton" |
41 | action: Action { |
42 | text: i18n.tr("Refresh") |
43 | iconSource: Qt.resolvedUrl("./icons_tmp/reload.svg") |
44 | |
45 | === modified file 'tests/autopilot/ubuntu_rssreader_app/emulators.py' |
46 | --- tests/autopilot/ubuntu_rssreader_app/emulators.py 2013-10-03 19:48:34 +0000 |
47 | +++ tests/autopilot/ubuntu_rssreader_app/emulators.py 2013-10-06 13:11:36 +0000 |
48 | @@ -43,6 +43,18 @@ |
49 | tries = tries - 1 |
50 | return item |
51 | |
52 | + def select_many_retry(self, object_type, **kwargs): |
53 | + """Returns the item that is searched for with app.select_many |
54 | + In case of no item was not found (not created yet) a second attempt is |
55 | + taken 1 second later""" |
56 | + items = self.select_many(object_type, **kwargs) |
57 | + tries = 10 |
58 | + while len(items) < 1 and tries > 0: |
59 | + sleep(self.retry_delay) |
60 | + items = self.select_many(object_type, **kwargs) |
61 | + tries = tries - 1 |
62 | + return items |
63 | + |
64 | def get_action_popover(self): |
65 | # Returns all instances, but with current one as first index |
66 | return self.select_many("ActionSelectionPopover")[0] |
67 | @@ -77,42 +89,45 @@ |
68 | return self.select_single("FeedComponent", text=feed) |
69 | |
70 | def get_add_a_topic(self): |
71 | - return self.select_single("QQuickItem", objectName = "addTopic") |
72 | + return self.select_single("QQuickItem", objectName="addTopic") |
73 | |
74 | #### edit feed page objects |
75 | def get_delete_button(self): |
76 | - return self.select_single("Button", objectName = "deleteButton") |
77 | + return self.select_single("Button", objectName="deleteButton") |
78 | |
79 | |
80 | #### Page Calls |
81 | |
82 | def get_append_page(self): |
83 | - return self.select_single("AppendFeedPage", objectName = "appendfeedpage") |
84 | + return self.select_single("AppendFeedPage", objectName="appendfeedpage") |
85 | |
86 | def get_topics_page(self): |
87 | - return self.select_single("ChooseTopicPage", objectName = "choosetopicpage") |
88 | + return self.select_single("ChooseTopicPage", objectName="choosetopicpage") |
89 | |
90 | def get_feedlist_page(self): |
91 | - return self.select_single("FeedListPage", objectName = "feedlistpage") |
92 | + return self.select_single_retry("FeedListPage", objectName="feedlistpage") |
93 | |
94 | def get_articlelist_page(self): |
95 | - return self.select_single("ArticleListPage", objectName = "articlelistpage") |
96 | + return self.select_single("ArticleListPage", objectName="articlelistpage") |
97 | |
98 | def get_feed_management_page(self): |
99 | - return self.select_single_retry("TopicManagement", objectName = "topicmanagement") |
100 | + return self.select_single_retry("TopicManagement", objectName="topicmanagement") |
101 | |
102 | def get_edit_feed_page(self): |
103 | - return self.select_single("EditFeed", objectName = "editfeedpage") |
104 | + return self.select_single("EditFeed", objectName="editfeedpage") |
105 | |
106 | def get_manage_topics_page(self): |
107 | return self.select_single("ManageTopicsPage") |
108 | |
109 | + def get_rss_feed_page(self): |
110 | + return self.select_single_retry( |
111 | + "RssFeedPage", objectName="rssfeedpage") |
112 | #### |
113 | def get_topics(self): |
114 | - return self.select_single("QQuickListView", objectName = "topiclist") |
115 | + return self.select_single("QQuickListView", objectName="topiclist") |
116 | |
117 | def get_feeds(self): |
118 | - return self.select_many("Standard", objectName = "FeedListItem") |
119 | + return self.select_many("Standard", objectName="FeedListItem") |
120 | |
121 | def get_header(self): |
122 | return self.select_many("Header") |
123 | @@ -121,26 +136,46 @@ |
124 | return self.select_single("Subtitled", text = "All articles") |
125 | |
126 | def get_refresh_button(self): |
127 | - return self.select_single("AbstractButton", objectName = "refreshbutton") |
128 | + return self.select_single("AbstractButton", objectName="refreshbutton") |
129 | |
130 | def get_list_view_button(self): |
131 | - return self.select_single("AbstractButton", objectName = "listviewbutton") |
132 | + return self.select_single("AbstractButton", objectName="listviewbutton") |
133 | |
134 | def get_add_feed_button(self): |
135 | - return self.select_single("AbstractButton", objectName = "addfeedbutton") |
136 | + return self.select_single("AbstractButton", objectName="addfeedbutton") |
137 | |
138 | def get_edit_topic_button(self): |
139 | - return self.select_single("AbstractButton", objectName = "edittopicbutton") |
140 | + return self.select_single("AbstractButton", objectName="edittopicbutton") |
141 | |
142 | def get_refresh_feed_dialog(self): |
143 | - return self.select_single("Dialog", objectName = "refreshWaitDialog") |
144 | + return self.select_single("Dialog", objectName="refreshWaitDialog") |
145 | |
146 | def get_refresh_dialog_cancel_button(self): |
147 | - return self.select_single("Button", objectName = "refreshCancel") |
148 | + return self.select_single("Button", objectName="refreshCancel") |
149 | |
150 | def get_toolbar_back_button(self): |
151 | - return self.select_single("ActionItem", text = "Back") |
152 | + return self.select_single("ActionItem", text="Back") |
153 | |
154 | def get_activityIndicator(self): |
155 | return self.select_single_retry( |
156 | "ActivityIndicator", objectName="activityindicator") |
157 | + |
158 | + def get_canonical_tab(self): |
159 | + return self.select_single_retry( |
160 | + "TopicTab", title="CanonicalTopic") |
161 | + |
162 | + def get_canonical_feed_in_feedlist(self): |
163 | + canonicalTab=self.get_canonical_tab() |
164 | + itemList= canonicalTab.select_many( |
165 | + "Subtitled", objectName="feedlistitems") |
166 | + for item in itemList: |
167 | + splititem = item.subText.split(",") |
168 | + if splititem[1] == " Canonical": |
169 | + return item |
170 | + |
171 | + def get_page_back_btn(self): |
172 | + back_btn = self.select_single( |
173 | + "ToolbarItems", objectName="pageBackBtn") |
174 | + back_btn_ActionItem = back_btn.select_single( |
175 | + "ActionItem", text="Back") |
176 | + return back_btn_ActionItem |
177 | |
178 | === modified file 'tests/autopilot/ubuntu_rssreader_app/tests/test_rssreader.py' |
179 | --- tests/autopilot/ubuntu_rssreader_app/tests/test_rssreader.py 2013-10-03 19:48:34 +0000 |
180 | +++ tests/autopilot/ubuntu_rssreader_app/tests/test_rssreader.py 2013-10-06 13:11:36 +0000 |
181 | @@ -101,33 +101,6 @@ |
182 | logger.debug("input topic") |
183 | self._input_new_topic(topicName) |
184 | |
185 | - #A new topic is now automatically selected as the topic |
186 | - #select new topic |
187 | - #logger.debug("assert new topic") |
188 | - #newNumTopics = len(self.main_view.get_choose_topics_items) |
189 | - #self.assertThat(newNumTopics, Eventually(Equals(numTopics + 1))) |
190 | - #logger.debug("grab new topic") |
191 | - #topics = self.main_view.get_choose_topics_items() |
192 | - #numTopics = len(topics) |
193 | - #logger.debug("found " + str(numTopics) + " topics") |
194 | - #for topic in topics: |
195 | - # logger.debug("Topic: ") + str(topic.text) |
196 | - #newTopic = self.main_view.get_choose_topics_items()[-1] |
197 | - #newTopic = topics[-1] |
198 | - #logger.debug("click new topic, ") + str(newTopic.text) |
199 | - #self.pointing_device.click_object(newTopic) |
200 | - #logger.debug("topic clicked") |
201 | - |
202 | - #wait for any updates to finish before beginning tests |
203 | - #this transition currently locks the device https://bugs.launchpad.net/ubuntu-rssreader-app/+bug/1221893 |
204 | - #logger.debug("check for network updates") |
205 | - #self.assertThat(self.main_view.get_network_activity, Eventually(Not(Is(None)))) |
206 | - #logger.debug("assert no network updates") |
207 | - #self.assertThat(self.main_view.get_network_activity, Eventually(Is(None))) |
208 | - #logger.debug("assert we're back on main view") |
209 | - #self.assertThat(self.main_view.visible, Eventually(Equals(True))) |
210 | - #logger.debug("finished with add_feed_topic") |
211 | - |
212 | def _remove_feed(self, feedName, topicName): |
213 | logger.debug("removing feed") |
214 | #open toolbar |
215 | @@ -140,33 +113,59 @@ |
216 | |
217 | #verify we are on the Management page |
218 | logger.debug("assert feedlist page") |
219 | - feedlistpage = lambda: self.main_view.get_feed_management_page().visible |
220 | - self.assertThat(feedlistpage, Eventually(Equals(True))) |
221 | + feedlistpage = self.main_view.get_feed_management_page() |
222 | + self.assertThat(feedlistpage.visible, Eventually(Equals(True))) |
223 | |
224 | #select topic |
225 | logger.debug("grabbing topic") |
226 | self._get_topic(topicName) |
227 | |
228 | - #select feed |
229 | + ##select feed |
230 | logger.debug("assert feed") |
231 | self.assertThat(lambda: self.main_view.get_feedlist_feed(feedName), Eventually(Not(Is(None)))) |
232 | logger.debug("grabbing feed") |
233 | feed = self.main_view.get_feedlist_feed(feedName) |
234 | - logger.debug("clicking feed") |
235 | - self.pointing_device.click_object(feed) |
236 | - |
237 | - #verify we are on the Edit Feed page |
238 | - logger.debug("assert editfeedpage") |
239 | - editFeedPage = self.main_view.get_edit_feed_page() |
240 | - self.assertThat(editFeedPage.visible, Eventually(Equals(True))) |
241 | - |
242 | - #press delete button |
243 | - logger.debug("assert delete button") |
244 | - self.assertThat(self.main_view.get_delete_button, Eventually(Not(Is(None)))) |
245 | - logger.debug("grab delete button") |
246 | - deleteButton = self.main_view.get_delete_button() |
247 | - logger.debug("click delete button") |
248 | - self.pointing_device.click_object(deleteButton) |
249 | + |
250 | + |
251 | + |
252 | + |
253 | + self.assertThat( |
254 | + self.main_view.get_feed_management_page, |
255 | + Eventually(NotEquals(None))) |
256 | + |
257 | + #swipe to delete canonical topic |
258 | + startX = int(feedlistpage.x + feedlistpage.width * 0.30) |
259 | + stopX = int(feedlistpage.x + feedlistpage.width) |
260 | + lineY = feed.globalRect[1] |
261 | + |
262 | + #swipe to remove the topic |
263 | + self.pointing_device.move(startX, lineY) |
264 | + #self.pointing_device.click() |
265 | + self.pointing_device.drag(startX, lineY, stopX, lineY) |
266 | + |
267 | + |
268 | + |
269 | + |
270 | + |
271 | + |
272 | + |
273 | + |
274 | + |
275 | + #logger.debug("clicking feed") |
276 | + #self.pointing_device.click_object(feed) |
277 | + |
278 | + ##verify we are on the Edit Feed page |
279 | + #logger.debug("assert editfeedpage") |
280 | + #editFeedPage = self.main_view.get_edit_feed_page() |
281 | + #self.assertThat(editFeedPage.visible, Eventually(Equals(True))) |
282 | + |
283 | + ##press delete button |
284 | + #logger.debug("assert delete button") |
285 | + #self.assertThat(self.main_view.get_delete_button, Eventually(Not(Is(None)))) |
286 | + #logger.debug("grab delete button") |
287 | + #deleteButton = self.main_view.get_delete_button() |
288 | + #logger.debug("click delete button") |
289 | + #self.pointing_device.click_object(deleteButton) |
290 | |
291 | #verify we are on the Management page |
292 | logger.debug("assert feedlistpage") |
293 | @@ -210,8 +209,6 @@ |
294 | #select topic |
295 | topic = self._get_topic(topicName) |
296 | |
297 | - #topicsPage = self.main_view.get_manage_topics_page() |
298 | - #self.assertThat(self.main_view.get_manage_topics_page, Eventually(NotEquals(None))) |
299 | topicmanagementpage = self.main_view.get_feed_management_page() |
300 | self.assertThat(self.main_view.get_feed_management_page, Eventually(NotEquals(None))) |
301 | |
302 | @@ -225,9 +222,11 @@ |
303 | self.pointing_device.click() |
304 | self.pointing_device.drag(startX, lineY, stopX, lineY) |
305 | |
306 | - #verify we are on the Management page *** for timing issues *** |
307 | - feedmanagementpage = self.main_view.get_feed_management_page() |
308 | - self.assertThat(feedmanagementpage, NotEquals(None)) |
309 | + #verify we are on the Topic Management page **for timing issue |
310 | + topicmanagementpage = self.main_view.get_feed_management_page() |
311 | + self.assertThat(self.main_view.get_feed_management_page, Eventually(NotEquals(None))) |
312 | + self.assertThat(self.main_view.get_feed_management_page().visible, Eventually(Equals(True))) |
313 | + self.assertThat(self.main_view.get_feed_management_page().objectName, Eventually(Equals("topicmanagement"))) |
314 | |
315 | #check that it is gone |
316 | topic = self.main_view.get_feedlist_topic(topicName) |
317 | @@ -288,77 +287,56 @@ |
318 | #remove added topic |
319 | self._remove_topic(topicName) |
320 | |
321 | - |
322 | - @unittest.skip("Topic page broken, see https://bugs.launchpad.net/ubuntu-rssreader-app/+bug/1206248") |
323 | def test_view_feeds(self): |
324 | """test view feeds""" |
325 | |
326 | - self.assertThat(self.main_view.get_topics_page(), NotEquals(None)) |
327 | - |
328 | - #-----> view all news: |
329 | + feed = "http://www.canonical.com/rss.xml" |
330 | + feedName = "Canonical" |
331 | + topicName = "CanonicalTopic" |
332 | + |
333 | + #add topic and feed |
334 | + self._add_feed_and_topic(feed, topicName) |
335 | + |
336 | + #verify we are on the CanonicalTopic Tab |
337 | + canonicalTab = self.main_view.get_canonical_tab() |
338 | + self.assertThat(lambda: canonicalTab.visible, Eventually(Equals(True))) |
339 | + |
340 | #open toolbar |
341 | toolbar = self.main_view.open_toolbar() |
342 | |
343 | - #click on add reads toolbar button |
344 | - toolbar.click_button("List view") |
345 | - |
346 | - #verify we are on the Feeds page |
347 | - feedlistpage = self.main_view.get_feedlist_page() |
348 | - self.assertThat(feedlistpage.visible, Eventually(Equals(True))) |
349 | - |
350 | - #select All articles |
351 | - allFeeds = self.main_view.get_all_feeds() |
352 | - self.assertThat(allFeeds, NotEquals("None")) |
353 | - self.pointing_device.click_object(allFeeds ) |
354 | - |
355 | - #verify we are on the All articles page |
356 | - articlelistpage = self.main_view.get_articlelist_page() |
357 | - self.assertThat(articlelistpage.visible, Eventually(Equals(True))) |
358 | - |
359 | - toolbar = self.main_view.open_toolbar() |
360 | - |
361 | - #click on back toolbar button |
362 | - toolbar.click_button("Back") |
363 | - |
364 | - #verify we are on the Feeds page |
365 | - feedlistpage = lambda: self.main_view.get_feedlist_page().visible |
366 | - self.assertThat(feedlistpage, Eventually(Equals(True))) |
367 | - |
368 | - #-----> view individual feed: |
369 | - #add topic and feed |
370 | - self._add_feed_and_topic() |
371 | + #click on list view toolbar button |
372 | + toolbar.click_button("rsspagerefreshbutton") |
373 | + |
374 | + #wait for any updates to finish before continuing tests |
375 | + try: |
376 | + self.main_view.get_activityIndicator().running.wait_for(False) |
377 | + except: |
378 | + self.assertThat( |
379 | + lambda:self.main_view.get_canonical_tab, |
380 | + Eventually(NotEquals(None))) |
381 | |
382 | #select Canonical feed |
383 | - canonicalFeed = lambda: self.main_view.get_canonical_feed_labelvisual() |
384 | - self.assertThat(canonicalFeed, Eventually(Not(Is(None)))) |
385 | + canonicalFeed = self.main_view.get_canonical_feed_in_feedlist() |
386 | + self.assertThat(canonicalFeed, NotEquals(None)) |
387 | self.pointing_device.click_object(canonicalFeed) |
388 | |
389 | - #verify we are on the Canonical page |
390 | - header = lambda: self.main_view.get_header()[0].title |
391 | - self.assertThat(header, Eventually(Equals("Canonical"))) |
392 | + #verify we are on RSS feed page |
393 | + rssfeedpage = self.main_view.get_rss_feed_page() |
394 | + self.assertThat(rssfeedpage.visible, Eventually(Equals(True))) |
395 | |
396 | - #toggle toolbar |
397 | + #open toolbar |
398 | toolbar = self.main_view.open_toolbar() |
399 | |
400 | #click on back toolbar button |
401 | - toolbar.click_button("Back") |
402 | - |
403 | - #verify we are on the Feeds page |
404 | - feedlistpage = lambda: self.main_view.get_feedlist_page().visible |
405 | - self.assertThat(feedlistpage, Eventually(Equals(True))) |
406 | - |
407 | - #toggle toolbar |
408 | - toolbar = self.main_view.open_toolbar() |
409 | - |
410 | - #click on shorts toolbar button |
411 | - toolbar.click_button("shorts") |
412 | - |
413 | - #verify we are on the Shorts page |
414 | - shortsPage = lambda: self.main_view.switch_to_tab_by_index(0).visible |
415 | - self.assertThat(shortsPage, Eventually(Equals(True))) |
416 | + rssfeedpageBackBtn = self.main_view.get_page_back_btn() |
417 | + self.pointing_device.click_object(rssfeedpageBackBtn) |
418 | + |
419 | + #verify we are on the CanonicalTopic Tab |
420 | + canonicalTab = self.main_view.get_canonical_tab() |
421 | + self.assertThat(lambda: canonicalTab.visible, Eventually(Equals(True))) |
422 | + |
423 | + #remove added Canonical feed |
424 | + self._remove_feed(feedName, topicName) |
425 | |
426 | #remove added Canonical topic |
427 | - self._remove_topic() |
428 | - |
429 | - #remove added Canonical feed |
430 | - self._remove_feed() |
431 | + self._remove_topic(topicName) |
FAILED: Continuous integration, rev:95 91.189. 93.70:8080/ job/ubuntu- rssreader- app-ci/ 82/ 91.189. 93.70:8080/ job/generic- mediumtests/ 754 91.189. 93.70:8080/ job/ubuntu- rssreader- app-precise- amd64-ci/ 82 91.189. 93.70:8080/ job/ubuntu- rssreader- app-quantal- amd64-ci/ 82 91.189. 93.70:8080/ job/ubuntu- rssreader- app-raring- amd64-ci/ 82 91.189. 93.70:8080/ job/ubuntu- rssreader- app-saucy- amd64-ci/ 82
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: 91.189. 93.70:8080/ job/ubuntu- rssreader- app-ci/ 82/rebuild
http://