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
=== modified file 'RssFeedPage.qml'
--- RssFeedPage.qml 2013-10-05 10:51:56 +0000
+++ RssFeedPage.qml 2013-10-06 13:11:36 +0000
@@ -15,6 +15,7 @@
15import "databasemodule_v2.js" as DB15import "databasemodule_v2.js" as DB
1616
17Page {17Page {
18 objectName: "rssfeedpage"
18 id: pageRoot19 id: pageRoot
1920
20 property string rssModelUrl: ""21 property string rssModelUrl: ""
@@ -45,6 +46,7 @@
45 }46 }
4647
47 tools: ToolbarItems {48 tools: ToolbarItems {
49 objectName: "pageBackBtn"
48 id: toolbar50 id: toolbar
4951
50 ToolbarButton {52 ToolbarButton {
5153
=== modified file 'listview/ListModePage.qml'
--- listview/ListModePage.qml 2013-10-05 14:41:06 +0000
+++ listview/ListModePage.qml 2013-10-06 13:11:36 +0000
@@ -142,6 +142,7 @@
142 color: model.status == "1" ? Qt.rgba(0, 0, 0, 0.3) : Qt.rgba(0, 0, 0, 0.0)142 color: model.status == "1" ? Qt.rgba(0, 0, 0, 0.3) : Qt.rgba(0, 0, 0, 0.0)
143143
144 ListItems.Subtitled {144 ListItems.Subtitled {
145 objectName: "feedlistitems"
145 id: listItem146 id: listItem
146147
147 text: model.title148 text: model.title
148149
=== modified file 'rssreader-app.qml'
--- rssreader-app.qml 2013-10-05 09:34:23 +0000
+++ rssreader-app.qml 2013-10-06 13:11:36 +0000
@@ -112,6 +112,7 @@
112 id: mainCommonToolbar112 id: mainCommonToolbar
113113
114 back: ToolbarButton {114 back: ToolbarButton {
115 objectName: "rsspagerefreshbutton"
115 action: Action {116 action: Action {
116 text: i18n.tr("Refresh")117 text: i18n.tr("Refresh")
117 iconSource: Qt.resolvedUrl("./icons_tmp/reload.svg")118 iconSource: Qt.resolvedUrl("./icons_tmp/reload.svg")
118119
=== modified file 'tests/autopilot/ubuntu_rssreader_app/emulators.py'
--- tests/autopilot/ubuntu_rssreader_app/emulators.py 2013-10-03 19:48:34 +0000
+++ tests/autopilot/ubuntu_rssreader_app/emulators.py 2013-10-06 13:11:36 +0000
@@ -43,6 +43,18 @@
43 tries = tries - 143 tries = tries - 1
44 return item44 return item
4545
46 def select_many_retry(self, object_type, **kwargs):
47 """Returns the item that is searched for with app.select_many
48 In case of no item was not found (not created yet) a second attempt is
49 taken 1 second later"""
50 items = self.select_many(object_type, **kwargs)
51 tries = 10
52 while len(items) < 1 and tries > 0:
53 sleep(self.retry_delay)
54 items = self.select_many(object_type, **kwargs)
55 tries = tries - 1
56 return items
57
46 def get_action_popover(self):58 def get_action_popover(self):
47 # Returns all instances, but with current one as first index59 # Returns all instances, but with current one as first index
48 return self.select_many("ActionSelectionPopover")[0]60 return self.select_many("ActionSelectionPopover")[0]
@@ -77,42 +89,45 @@
77 return self.select_single("FeedComponent", text=feed)89 return self.select_single("FeedComponent", text=feed)
7890
79 def get_add_a_topic(self):91 def get_add_a_topic(self):
80 return self.select_single("QQuickItem", objectName = "addTopic")92 return self.select_single("QQuickItem", objectName="addTopic")
8193
82 #### edit feed page objects94 #### edit feed page objects
83 def get_delete_button(self):95 def get_delete_button(self):
84 return self.select_single("Button", objectName = "deleteButton")96 return self.select_single("Button", objectName="deleteButton")
8597
8698
87 #### Page Calls99 #### Page Calls
88100
89 def get_append_page(self):101 def get_append_page(self):
90 return self.select_single("AppendFeedPage", objectName = "appendfeedpage")102 return self.select_single("AppendFeedPage", objectName="appendfeedpage")
91103
92 def get_topics_page(self):104 def get_topics_page(self):
93 return self.select_single("ChooseTopicPage", objectName = "choosetopicpage")105 return self.select_single("ChooseTopicPage", objectName="choosetopicpage")
94106
95 def get_feedlist_page(self):107 def get_feedlist_page(self):
96 return self.select_single("FeedListPage", objectName = "feedlistpage")108 return self.select_single_retry("FeedListPage", objectName="feedlistpage")
97109
98 def get_articlelist_page(self):110 def get_articlelist_page(self):
99 return self.select_single("ArticleListPage", objectName = "articlelistpage")111 return self.select_single("ArticleListPage", objectName="articlelistpage")
100112
101 def get_feed_management_page(self):113 def get_feed_management_page(self):
102 return self.select_single_retry("TopicManagement", objectName = "topicmanagement")114 return self.select_single_retry("TopicManagement", objectName="topicmanagement")
103115
104 def get_edit_feed_page(self):116 def get_edit_feed_page(self):
105 return self.select_single("EditFeed", objectName = "editfeedpage")117 return self.select_single("EditFeed", objectName="editfeedpage")
106118
107 def get_manage_topics_page(self):119 def get_manage_topics_page(self):
108 return self.select_single("ManageTopicsPage")120 return self.select_single("ManageTopicsPage")
109121
122 def get_rss_feed_page(self):
123 return self.select_single_retry(
124 "RssFeedPage", objectName="rssfeedpage")
110 ####125 ####
111 def get_topics(self):126 def get_topics(self):
112 return self.select_single("QQuickListView", objectName = "topiclist")127 return self.select_single("QQuickListView", objectName="topiclist")
113128
114 def get_feeds(self):129 def get_feeds(self):
115 return self.select_many("Standard", objectName = "FeedListItem")130 return self.select_many("Standard", objectName="FeedListItem")
116131
117 def get_header(self):132 def get_header(self):
118 return self.select_many("Header")133 return self.select_many("Header")
@@ -121,26 +136,46 @@
121 return self.select_single("Subtitled", text = "All articles")136 return self.select_single("Subtitled", text = "All articles")
122137
123 def get_refresh_button(self):138 def get_refresh_button(self):
124 return self.select_single("AbstractButton", objectName = "refreshbutton")139 return self.select_single("AbstractButton", objectName="refreshbutton")
125140
126 def get_list_view_button(self):141 def get_list_view_button(self):
127 return self.select_single("AbstractButton", objectName = "listviewbutton")142 return self.select_single("AbstractButton", objectName="listviewbutton")
128143
129 def get_add_feed_button(self):144 def get_add_feed_button(self):
130 return self.select_single("AbstractButton", objectName = "addfeedbutton")145 return self.select_single("AbstractButton", objectName="addfeedbutton")
131146
132 def get_edit_topic_button(self):147 def get_edit_topic_button(self):
133 return self.select_single("AbstractButton", objectName = "edittopicbutton")148 return self.select_single("AbstractButton", objectName="edittopicbutton")
134149
135 def get_refresh_feed_dialog(self):150 def get_refresh_feed_dialog(self):
136 return self.select_single("Dialog", objectName = "refreshWaitDialog")151 return self.select_single("Dialog", objectName="refreshWaitDialog")
137152
138 def get_refresh_dialog_cancel_button(self):153 def get_refresh_dialog_cancel_button(self):
139 return self.select_single("Button", objectName = "refreshCancel")154 return self.select_single("Button", objectName="refreshCancel")
140155
141 def get_toolbar_back_button(self):156 def get_toolbar_back_button(self):
142 return self.select_single("ActionItem", text = "Back")157 return self.select_single("ActionItem", text="Back")
143158
144 def get_activityIndicator(self):159 def get_activityIndicator(self):
145 return self.select_single_retry(160 return self.select_single_retry(
146 "ActivityIndicator", objectName="activityindicator")161 "ActivityIndicator", objectName="activityindicator")
162
163 def get_canonical_tab(self):
164 return self.select_single_retry(
165 "TopicTab", title="CanonicalTopic")
166
167 def get_canonical_feed_in_feedlist(self):
168 canonicalTab=self.get_canonical_tab()
169 itemList= canonicalTab.select_many(
170 "Subtitled", objectName="feedlistitems")
171 for item in itemList:
172 splititem = item.subText.split(",")
173 if splititem[1] == " Canonical":
174 return item
175
176 def get_page_back_btn(self):
177 back_btn = self.select_single(
178 "ToolbarItems", objectName="pageBackBtn")
179 back_btn_ActionItem = back_btn.select_single(
180 "ActionItem", text="Back")
181 return back_btn_ActionItem
147182
=== modified file 'tests/autopilot/ubuntu_rssreader_app/tests/test_rssreader.py'
--- tests/autopilot/ubuntu_rssreader_app/tests/test_rssreader.py 2013-10-03 19:48:34 +0000
+++ tests/autopilot/ubuntu_rssreader_app/tests/test_rssreader.py 2013-10-06 13:11:36 +0000
@@ -101,33 +101,6 @@
101 logger.debug("input topic")101 logger.debug("input topic")
102 self._input_new_topic(topicName)102 self._input_new_topic(topicName)
103103
104 #A new topic is now automatically selected as the topic
105 #select new topic
106 #logger.debug("assert new topic")
107 #newNumTopics = len(self.main_view.get_choose_topics_items)
108 #self.assertThat(newNumTopics, Eventually(Equals(numTopics + 1)))
109 #logger.debug("grab new topic")
110 #topics = self.main_view.get_choose_topics_items()
111 #numTopics = len(topics)
112 #logger.debug("found " + str(numTopics) + " topics")
113 #for topic in topics:
114 # logger.debug("Topic: ") + str(topic.text)
115 #newTopic = self.main_view.get_choose_topics_items()[-1]
116 #newTopic = topics[-1]
117 #logger.debug("click new topic, ") + str(newTopic.text)
118 #self.pointing_device.click_object(newTopic)
119 #logger.debug("topic clicked")
120
121 #wait for any updates to finish before beginning tests
122 #this transition currently locks the device https://bugs.launchpad.net/ubuntu-rssreader-app/+bug/1221893
123 #logger.debug("check for network updates")
124 #self.assertThat(self.main_view.get_network_activity, Eventually(Not(Is(None))))
125 #logger.debug("assert no network updates")
126 #self.assertThat(self.main_view.get_network_activity, Eventually(Is(None)))
127 #logger.debug("assert we're back on main view")
128 #self.assertThat(self.main_view.visible, Eventually(Equals(True)))
129 #logger.debug("finished with add_feed_topic")
130
131 def _remove_feed(self, feedName, topicName):104 def _remove_feed(self, feedName, topicName):
132 logger.debug("removing feed")105 logger.debug("removing feed")
133 #open toolbar106 #open toolbar
@@ -140,33 +113,59 @@
140113
141 #verify we are on the Management page114 #verify we are on the Management page
142 logger.debug("assert feedlist page")115 logger.debug("assert feedlist page")
143 feedlistpage = lambda: self.main_view.get_feed_management_page().visible116 feedlistpage = self.main_view.get_feed_management_page()
144 self.assertThat(feedlistpage, Eventually(Equals(True)))117 self.assertThat(feedlistpage.visible, Eventually(Equals(True)))
145118
146 #select topic119 #select topic
147 logger.debug("grabbing topic")120 logger.debug("grabbing topic")
148 self._get_topic(topicName)121 self._get_topic(topicName)
149122
150 #select feed123 ##select feed
151 logger.debug("assert feed")124 logger.debug("assert feed")
152 self.assertThat(lambda: self.main_view.get_feedlist_feed(feedName), Eventually(Not(Is(None))))125 self.assertThat(lambda: self.main_view.get_feedlist_feed(feedName), Eventually(Not(Is(None))))
153 logger.debug("grabbing feed")126 logger.debug("grabbing feed")
154 feed = self.main_view.get_feedlist_feed(feedName)127 feed = self.main_view.get_feedlist_feed(feedName)
155 logger.debug("clicking feed")128
156 self.pointing_device.click_object(feed)129
157130
158 #verify we are on the Edit Feed page131
159 logger.debug("assert editfeedpage")132 self.assertThat(
160 editFeedPage = self.main_view.get_edit_feed_page()133 self.main_view.get_feed_management_page,
161 self.assertThat(editFeedPage.visible, Eventually(Equals(True)))134 Eventually(NotEquals(None)))
162135
163 #press delete button136 #swipe to delete canonical topic
164 logger.debug("assert delete button")137 startX = int(feedlistpage.x + feedlistpage.width * 0.30)
165 self.assertThat(self.main_view.get_delete_button, Eventually(Not(Is(None))))138 stopX = int(feedlistpage.x + feedlistpage.width)
166 logger.debug("grab delete button")139 lineY = feed.globalRect[1]
167 deleteButton = self.main_view.get_delete_button()140
168 logger.debug("click delete button")141 #swipe to remove the topic
169 self.pointing_device.click_object(deleteButton)142 self.pointing_device.move(startX, lineY)
143 #self.pointing_device.click()
144 self.pointing_device.drag(startX, lineY, stopX, lineY)
145
146
147
148
149
150
151
152
153
154 #logger.debug("clicking feed")
155 #self.pointing_device.click_object(feed)
156
157 ##verify we are on the Edit Feed page
158 #logger.debug("assert editfeedpage")
159 #editFeedPage = self.main_view.get_edit_feed_page()
160 #self.assertThat(editFeedPage.visible, Eventually(Equals(True)))
161
162 ##press delete button
163 #logger.debug("assert delete button")
164 #self.assertThat(self.main_view.get_delete_button, Eventually(Not(Is(None))))
165 #logger.debug("grab delete button")
166 #deleteButton = self.main_view.get_delete_button()
167 #logger.debug("click delete button")
168 #self.pointing_device.click_object(deleteButton)
170169
171 #verify we are on the Management page170 #verify we are on the Management page
172 logger.debug("assert feedlistpage")171 logger.debug("assert feedlistpage")
@@ -210,8 +209,6 @@
210 #select topic209 #select topic
211 topic = self._get_topic(topicName)210 topic = self._get_topic(topicName)
212211
213 #topicsPage = self.main_view.get_manage_topics_page()
214 #self.assertThat(self.main_view.get_manage_topics_page, Eventually(NotEquals(None)))
215 topicmanagementpage = self.main_view.get_feed_management_page()212 topicmanagementpage = self.main_view.get_feed_management_page()
216 self.assertThat(self.main_view.get_feed_management_page, Eventually(NotEquals(None)))213 self.assertThat(self.main_view.get_feed_management_page, Eventually(NotEquals(None)))
217214
@@ -225,9 +222,11 @@
225 self.pointing_device.click()222 self.pointing_device.click()
226 self.pointing_device.drag(startX, lineY, stopX, lineY)223 self.pointing_device.drag(startX, lineY, stopX, lineY)
227224
228 #verify we are on the Management page *** for timing issues ***225 #verify we are on the Topic Management page **for timing issue
229 feedmanagementpage = self.main_view.get_feed_management_page()226 topicmanagementpage = self.main_view.get_feed_management_page()
230 self.assertThat(feedmanagementpage, NotEquals(None))227 self.assertThat(self.main_view.get_feed_management_page, Eventually(NotEquals(None)))
228 self.assertThat(self.main_view.get_feed_management_page().visible, Eventually(Equals(True)))
229 self.assertThat(self.main_view.get_feed_management_page().objectName, Eventually(Equals("topicmanagement")))
231230
232 #check that it is gone231 #check that it is gone
233 topic = self.main_view.get_feedlist_topic(topicName)232 topic = self.main_view.get_feedlist_topic(topicName)
@@ -288,77 +287,56 @@
288 #remove added topic287 #remove added topic
289 self._remove_topic(topicName)288 self._remove_topic(topicName)
290289
291
292 @unittest.skip("Topic page broken, see https://bugs.launchpad.net/ubuntu-rssreader-app/+bug/1206248")
293 def test_view_feeds(self):290 def test_view_feeds(self):
294 """test view feeds"""291 """test view feeds"""
295292
296 self.assertThat(self.main_view.get_topics_page(), NotEquals(None))293 feed = "http://www.canonical.com/rss.xml"
297294 feedName = "Canonical"
298 #-----> view all news:295 topicName = "CanonicalTopic"
296
297 #add topic and feed
298 self._add_feed_and_topic(feed, topicName)
299
300 #verify we are on the CanonicalTopic Tab
301 canonicalTab = self.main_view.get_canonical_tab()
302 self.assertThat(lambda: canonicalTab.visible, Eventually(Equals(True)))
303
299 #open toolbar304 #open toolbar
300 toolbar = self.main_view.open_toolbar()305 toolbar = self.main_view.open_toolbar()
301306
302 #click on add reads toolbar button307 #click on list view toolbar button
303 toolbar.click_button("List view")308 toolbar.click_button("rsspagerefreshbutton")
304309
305 #verify we are on the Feeds page310 #wait for any updates to finish before continuing tests
306 feedlistpage = self.main_view.get_feedlist_page()311 try:
307 self.assertThat(feedlistpage.visible, Eventually(Equals(True)))312 self.main_view.get_activityIndicator().running.wait_for(False)
308313 except:
309 #select All articles314 self.assertThat(
310 allFeeds = self.main_view.get_all_feeds()315 lambda:self.main_view.get_canonical_tab,
311 self.assertThat(allFeeds, NotEquals("None"))316 Eventually(NotEquals(None)))
312 self.pointing_device.click_object(allFeeds )
313
314 #verify we are on the All articles page
315 articlelistpage = self.main_view.get_articlelist_page()
316 self.assertThat(articlelistpage.visible, Eventually(Equals(True)))
317
318 toolbar = self.main_view.open_toolbar()
319
320 #click on back toolbar button
321 toolbar.click_button("Back")
322
323 #verify we are on the Feeds page
324 feedlistpage = lambda: self.main_view.get_feedlist_page().visible
325 self.assertThat(feedlistpage, Eventually(Equals(True)))
326
327 #-----> view individual feed:
328 #add topic and feed
329 self._add_feed_and_topic()
330317
331 #select Canonical feed318 #select Canonical feed
332 canonicalFeed = lambda: self.main_view.get_canonical_feed_labelvisual()319 canonicalFeed = self.main_view.get_canonical_feed_in_feedlist()
333 self.assertThat(canonicalFeed, Eventually(Not(Is(None))))320 self.assertThat(canonicalFeed, NotEquals(None))
334 self.pointing_device.click_object(canonicalFeed)321 self.pointing_device.click_object(canonicalFeed)
335322
336 #verify we are on the Canonical page323 #verify we are on RSS feed page
337 header = lambda: self.main_view.get_header()[0].title324 rssfeedpage = self.main_view.get_rss_feed_page()
338 self.assertThat(header, Eventually(Equals("Canonical")))325 self.assertThat(rssfeedpage.visible, Eventually(Equals(True)))
339326
340 #toggle toolbar327 #open toolbar
341 toolbar = self.main_view.open_toolbar()328 toolbar = self.main_view.open_toolbar()
342329
343 #click on back toolbar button330 #click on back toolbar button
344 toolbar.click_button("Back")331 rssfeedpageBackBtn = self.main_view.get_page_back_btn()
345332 self.pointing_device.click_object(rssfeedpageBackBtn)
346 #verify we are on the Feeds page333
347 feedlistpage = lambda: self.main_view.get_feedlist_page().visible334 #verify we are on the CanonicalTopic Tab
348 self.assertThat(feedlistpage, Eventually(Equals(True)))335 canonicalTab = self.main_view.get_canonical_tab()
349336 self.assertThat(lambda: canonicalTab.visible, Eventually(Equals(True)))
350 #toggle toolbar337
351 toolbar = self.main_view.open_toolbar()338 #remove added Canonical feed
352339 self._remove_feed(feedName, topicName)
353 #click on shorts toolbar button
354 toolbar.click_button("shorts")
355
356 #verify we are on the Shorts page
357 shortsPage = lambda: self.main_view.switch_to_tab_by_index(0).visible
358 self.assertThat(shortsPage, Eventually(Equals(True)))
359340
360 #remove added Canonical topic341 #remove added Canonical topic
361 self._remove_topic()342 self._remove_topic(topicName)
362
363 #remove added Canonical feed
364 self._remove_feed()

Subscribers

People subscribed via source and target branches