Merge lp:~carla-sella/ubuntu-rssreader-app/view_feeds_test-new into lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/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
Reviewer Review Type Date Requested Status
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Ubuntu Shorts Developers Pending
Review via email: mp+189500@code.launchpad.net

Commit message

Autopilot tests for ubuntu-rssreader-app.

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
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
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)

Subscribers

People subscribed via source and target branches