def test_add_contact_to_favorite(self): contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact['givenName'][0]).tap() contact_details.tap_add_favorite() self.assertEqual(contact_details.add_remove_text, 'Remove as Favorite') contacts_app = contact_details.tap_back() self.assertTrue(contacts_app.is_favorites_list_displayed) # Test that the contact is displayed twice: once under Favorites and once under Contacts. self.assertEqual(len(contacts_app.contacts), 2) self.assertEqual(contacts_app.contacts[0].full_name, contacts_app.contacts[1].full_name) contact_details = contacts_app.contact(self.contact['givenName'][0]).tap() contact_details.tap_remove_favorite() self.assertEqual(contact_details.add_remove_text, 'Add as Favorite') contacts_app = contact_details.tap_back() self.assertFalse(contacts_app.is_favorites_list_displayed) # Test that the contact is only displayed once now self.assertEqual(len(contacts_app.contacts), 1)
def test_sms_contact(self): """https://moztrap.mozilla.org/manage/case/1314/""" # Setup a text message from a contact. text_message_content = "Automated Test %s" % str(time.time()) contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() # Tap on the created contact. contact_details = contacts.contact(self.contact['givenName']).tap() new_message = contact_details.tap_send_sms() new_message.wait_for_recipients_displayed() expected_name = self.contact['givenName'] + " " + self.contact['familyName'] expected_tel = self.contact['tel']['value'] # Now check the first listed is from contacts app. # Name and phone number have been passed in correctly. self.assertEqual(new_message.first_recipient_name, expected_name) self.assertEqual(new_message.first_recipient_number_attribute, expected_tel) new_message.type_message(text_message_content) message_thread = new_message.tap_send() message_thread.wait_for_received_messages() # Get the most recent received text message last_received_message = message_thread.received_messages[-1] # Check the most recent received message has the same text content self.assertEqual(text_message_content, last_received_message.text)
def test_sms_contact(self): # https://moztrap.mozilla.org/manage/case/1314/ # Setup a text message from a contact contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() # tap on the created contact contact_details = contacts.contact(self.contact['givenName']).tap() contact_details.tap_send_sms() self.marionette.switch_to_frame() sms_iframe = self.marionette.find_element(*self._sms_app_iframe_locator) self.marionette.switch_to_frame(sms_iframe) expected_name = self.contact['givenName'] + " " + self.contact['familyName'] expected_tel = self.contact['tel']['value'] # Wait for two recipients listed - the last javascript performed on the page # One is from contacts app and one is the manual entry option self.wait_for_condition(lambda m: len(m.find_elements(*self._recipients_list_locator)) == 2) # Now check the first listed is from contacts app recipients_list = self.marionette.find_elements(*self._recipients_list_locator) first_recipient = recipients_list[0] # Name and phone number have been passed in correctly self.assertEqual(first_recipient.text, expected_name) self.assertEqual(first_recipient.get_attribute('data-number'), expected_tel)
def test_delete_contact(self): """ Test delete contact https://github.com/mozilla/gaia-ui-tests/issues/493 """ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() pre_contacts_count = len(contacts_app.contacts) self.assertEqual(pre_contacts_count, 1, 'Should insert one contact before running this test') contact_item = contacts_app.contact(self.contact['givenName']) contact_item_detail = contact_item.tap() contact_item_edit = contact_item_detail.tap_edit() contact_item_edit.tap_delete() contact_item_edit.tap_confirm_delete() self.wait_for_condition( lambda m: len(self.data_layer.all_contacts) == 0, message='Should have no contacts after running this test') post_contacts_count = len(contacts_app.contacts) self.assertEqual(post_contacts_count, 0, 'Should have no contacts after running this test')
def test_delete_contact(self): """ Test delete contact https://github.com/mozilla/gaia-ui-tests/issues/493 """ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() pre_contacts_count = len(contacts_app.contacts) self.assertEqual( pre_contacts_count, 1, "Should insert one contact before running this test.") contact_item = contacts_app.contact(self.contact['givenName'][0]) contact_item_detail = contact_item.tap() contact_item_edit = contact_item_detail.tap_edit() contact_item_edit.tap_delete() contact_item_edit.tap_confirm_delete() self.wait_for_condition( lambda m: len(self.data_layer.all_contacts) == 0, message="Should have no contact after run this test.") contacts_app.switch_to_contacts_frame() post_contacts_count = len(contacts_app.contacts) self.assertEqual(post_contacts_count, 0, "Should have no contact after run this test.")
def test_add_and_call_ice_contact(self): contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contacts_settings = contacts_app.tap_settings() ice_contact_menu = contacts_settings.tap_set_ice_contact() ice_contact_select = ice_contact_menu.enable_set_ice_contact() contacts_app = ice_contact_select.select_ice_contact() contacts_app.wait_for_contacts(1) contact_selected = contacts_app.contacts[0].tap( return_class='SetIceContacts') settings = contact_selected.go_back() contact_list = settings.tap_done() self.assertTrue(contact_list.is_ice_list_icon_displayed) self.assertEqual(len(contact_list.contacts), 1) self.assertEqual( contact_list.contacts[0].full_name, (self.contact['givenName'] + ' ' + self.contact['familyName'])) ice_contact = contact_list.open_ice_contact_list() ice_contact.wait_for_ice_contact_shown() ice_contact_details = contacts_app.contact( self.contact['givenName']).tap() call_screen = ice_contact_details.tap_phone_number() call_screen.wait_for_outgoing_call() call_screen.hang_up()
def test_sms_add_number_to_existing_contact(self): # open the message thread screen self.message_thread = self.messages.tap_first_received_message() self.message_thread.wait_for_received_messages() # Check that we received the correct message self.assertEqual(self.message_thread.header_text, self.environment.phone_numbers[0]) activities = self.message_thread.tap_header() contacts = activities.tap_add_to_contact() contacts.wait_for_contacts(1) edit_contact = contacts.contacts[0].tap(return_class='EditContact') edit_contact.tap_update(return_details=False) self.wait_for_condition( lambda m: self.message_thread.header_text == self.contact['name']) contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() contact_details = contacts.contacts[0].tap() self.assertEqual(contact_details.phone_numbers[1], self.environment.phone_numbers[0])
def test_call_contact(self): """NB This is not a listed smoke test Call phone from a contact https://moztrap.mozilla.org/manage/case/5679/ """ contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() # tap on the created contact contact_details = contacts.contact(self.contact['givenName']).tap() # tap the phone number and switch to call screen frame call_screen = contact_details.tap_phone_number() call_screen.wait_for_outgoing_call() # Check the number displayed is the one we dialed self.assertIn(self.contact['tel']['value'], call_screen.calling_contact_information) self.assertIn(self.contact['givenName'], call_screen.outgoing_calling_contact) call_screen.hang_up() # Switch back to main frame before Marionette loses track bug #840931 self.marionette.switch_to_frame()
def test_sms_add_number_to_existing_contact(self): # open the message thread screen self.message_thread = self.messages.tap_first_received_message() self.message_thread.wait_for_received_messages() # Check that we received the correct message self.assertEqual(self.message_thread.header_text, self.environment.phone_numbers[0]) activities = self.message_thread.tap_header() contacts = activities.tap_add_to_contact() contacts.wait_for_contacts(1) edit_contact = contacts.contacts[0].tap(return_class='EditContact') edit_contact.tap_update(return_class=None) self.wait_for_condition(lambda m: self.message_thread.header_text == self.contact['name']) contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() contact_details = contacts.contacts[0].tap() self.assertEqual(contact_details.phone_numbers[1], self.environment.phone_numbers[0])
def test_sort_contacts(self): contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts(number_to_wait_for=len(self._contacts_name_list)) # sort by first name, compare with sorted-by-first-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_first[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by first name.") contacts_settings = contacts_app.tap_settings() contacts_settings.enable_order_by_last_name() contacts_settings.tap_done() contacts_app.wait_for_contacts(number_to_wait_for=len(self._contacts_name_list)) contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_last[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by last name.") contacts_settings = contacts_app.tap_settings() contacts_settings.disable_order_by_last_name() contacts_settings.tap_done()
def test_unlink_facebook_contact(self): """ https://moztrap.mozilla.org/manage/case/5858/ """ username = self.testvars['facebook']['username'] password = self.testvars['facebook']['password'] contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() self.assertEqual(len(contacts_app.contacts), 1, 'Should insert one contact before running this test') # Go to contact item details contact_item = contacts_app.contact(self.contact['givenName']) contact_item_detail = contact_item.tap() facebook = contact_item_detail.tap_link_contact() contact_import_picker = facebook.login(username, password) contact_import_picker.tap_first_friend() contact_item_detail.tap_unlink_contact() contact_item_detail.tap_back() contacts_app.wait_for_contacts(2) self.assertEqual(len(contacts_app.contacts), 2, 'After unlinking the facebook contact should have been added')
def test_sort_contacts(self): contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts( number_to_wait_for=len(self._contacts_name_list)) # sort by first name, compare with sorted-by-first-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_first[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by first name.") contacts_settings = contacts_app.tap_settings() contacts_settings.enable_order_by_last_name() contacts_settings.tap_done() contacts_app.wait_for_contacts( number_to_wait_for=len(self._contacts_name_list)) contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_last[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by last name.") contacts_settings = contacts_app.tap_settings() contacts_settings.disable_order_by_last_name() contacts_settings.tap_done()
def test_sms_contact(self): """https://moztrap.mozilla.org/manage/case/1314/""" # Setup a text message from a contact. text_message_content = "Automated Test %s" % str(time.time()) contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() # Tap on the created contact. contact_details = contacts.contact(self.contact['givenName']).tap() new_message = contact_details.tap_send_sms() new_message.wait_for_recipients_displayed() expected_name = self.contact['givenName'] + " " + self.contact[ 'familyName'] expected_tel = self.contact['tel']['value'] # Now check the first listed is from contacts app. # Name and phone number have been passed in correctly. self.assertEqual(new_message.first_recipient_name, expected_name) self.assertEqual(new_message.first_recipient_number_attribute, expected_tel) new_message.type_message(text_message_content) message_thread = new_message.tap_send() message_thread.wait_for_received_messages() # Get the most recent received text message last_received_message = message_thread.received_messages[-1] # Check the most recent received message has the same text content self.assertEqual(text_message_content, last_received_message.text)
def test_get_performance_measures(self): self._insert_contacts() if self.testvars["performance"]["verbose"]: print "Number of runs: {}".format(self.RUNS) for i in range(self.RUNS): if self.testvars["performance"]["verbose"]: print "Run #{}\n".format(i + 1) contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts(number_to_wait_for=self.contacts_num) # Tap on the first contact, to see its details contact_details = contacts_app.contact(self.contacts[0]["givenName"]).tap() map( self.helpers.store_measures, [ "list_first_contact_rendered", "list_chunk_contact_rendered", "list_all_contacts_rendered", "details_contact_rendered", ], ) if i + 1 < self.RUNS: GaiaTestCase.setUp(self) self._insert_contacts()
def test_add_and_call_ice_contact(self): contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contacts_settings = contacts_app.tap_settings() ice_contact_menu = contacts_settings.tap_set_ice_contact() ice_contact_select = ice_contact_menu.enable_set_ice_contact() contacts_app = ice_contact_select.select_ice_contact() contacts_app.wait_for_contacts(1) contact_selected = contacts_app.contacts[0].tap(return_class='SetIceContacts') settings = contact_selected.go_back() contact_list = settings.tap_done() self.assertTrue(contact_list.is_ice_list_icon_displayed) self.assertEqual(len(contact_list.contacts), 1) self.assertEqual(contact_list.contacts[0].full_name, (self.contact['givenName'] + ' ' + self.contact['familyName'])) ice_contact = contact_list.open_ice_contact_list() ice_contact.wait_for_ice_contact_shown() ice_contact_details = contacts_app.contact(self.contact['givenName']).tap() call_screen = ice_contact_details.tap_phone_number() call_screen.wait_for_outgoing_call() call_screen.hang_up()
def test_add_photo_from_gallery_to_contact(self): # https://moztrap.mozilla.org/manage/case/5551/ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact['givenName']).tap() full_name = ' '.join([self.contact['givenName'], self.contact['familyName']]) self.assertEqual(full_name, contact_details.full_name) saved_contact_image_style = contact_details.image_style edit_contact = contact_details.tap_edit() self.assertEqual('Edit contact', edit_contact.title) saved_picture_style = edit_contact.picture_style edit_contact.tap_picture() # switch to the system app self.marionette.switch_to_frame() # choose the source as gallery app self.wait_for_element_displayed(*self._gallery_button_locator) self.marionette.find_element(*self._gallery_button_locator).tap() # switch to the gallery app self.wait_for_element_displayed(*self._gallery_frame_locator) self.marionette.switch_to_frame(self.marionette.find_element(*self._gallery_frame_locator)) self.wait_for_element_displayed(*self._gallery_items_locator) gallery_items = self.marionette.find_elements(*self._gallery_items_locator) self.assertGreater(len(gallery_items), 0, 'No photos were found in the gallery.') gallery_items[0].tap() self.wait_for_element_displayed(*self._gallery_crop_done_button_locator) self.marionette.find_element(*self._gallery_crop_done_button_locator).tap() # switch back to the contacts app contacts_app.launch() self.assertEqual('Edit contact', edit_contact.title) edit_contact.wait_for_image_to_load() new_picture_style = edit_contact.picture_style self.assertNotEqual(new_picture_style, saved_picture_style, 'The picture associated with the contact was not changed.') contact_details = edit_contact.tap_update() self.assertEqual(full_name, contact_details.full_name) self.assertNotEqual(contact_details.image_style, saved_contact_image_style, 'The picture associated with the contact was not changed.')
def test_add_photo_from_gallery_to_contact(self): # https://moztrap.mozilla.org/manage/case/5551/ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact['givenName']).tap() full_name = ' '.join( [self.contact['givenName'], self.contact['familyName']]) self.assertEqual(full_name, contact_details.full_name) saved_contact_image_style = contact_details.image_style edit_contact = contact_details.tap_edit() self.assertEqual('Edit contact', edit_contact.title) saved_picture_style = edit_contact.picture_style actions_list = edit_contact.tap_picture() # choose the source as gallery app gallery = actions_list.tap_gallery() # switch to the gallery app gallery.switch_to_gallery_frame() gallery.wait_for_thumbnails_to_load() self.assertGreater(gallery.gallery_items_number, 0, 'No photos were found in the gallery.') image = gallery.tap_first_gallery_item() image.tap_crop_done() # switch back to the contacts app contacts_app.launch() self.assertEqual('Edit contact', edit_contact.title) edit_contact.wait_for_image_to_load() new_picture_style = edit_contact.picture_style self.assertNotEqual( new_picture_style, saved_picture_style, 'The picture associated with the contact was not changed.') contact_details = edit_contact.tap_update() self.assertEqual(full_name, contact_details.full_name) self.assertNotEqual( contact_details.image_style, saved_contact_image_style, 'The picture associated with the contact was not changed.')
def test_add_photo_from_gallery_to_contact(self): # https://moztrap.mozilla.org/manage/case/5551/ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact["givenName"]).tap() full_name = " ".join([self.contact["givenName"], self.contact["familyName"]]) self.assertEqual(full_name, contact_details.full_name) saved_contact_image_style = contact_details.image_style edit_contact = contact_details.tap_edit() self.assertEqual("Edit contact", edit_contact.title) saved_picture_style = edit_contact.picture_style activities_list = edit_contact.tap_picture() # choose the source as gallery app gallery = activities_list.tap_gallery() gallery.wait_for_thumbnails_to_load() self.assertGreater(gallery.gallery_items_number, 0, "No photos were found in the gallery.") image = gallery.tap_first_gallery_item() image.tap_crop_done() # switch back to the contacts app contacts_app.launch() self.assertEqual("Edit contact", edit_contact.title) edit_contact.wait_for_image_to_load() new_picture_style = edit_contact.picture_style self.assertNotEqual( new_picture_style, saved_picture_style, "The picture associated with the contact was not changed." ) contact_details = edit_contact.tap_update() self.assertEqual(full_name, contact_details.full_name) self.assertNotEqual( contact_details.image_style, saved_contact_image_style, "The picture associated with the contact was not changed.", )
def test_sort_contacts(self): order_by_last_name_default = False contacts_app = Contacts(self.marionette) contacts_app.launch() # if "Order by last name" switch is on, turn off it contacts_settings = contacts_app.tap_settings() self.assertEqual(contacts_settings.order_by_last_name, order_by_last_name_default) # This test starts from when order_by_last_name is false if order_by_last_name_default: contacts_settings.tap_order_by_last_name() contacts_settings.tap_done() # here we wait for contacts once the correct order has been set contacts_app.wait_for_contacts( number_to_wait_for=len(self._contacts_name_list)) # sort by first name, compare with sorted-by-first-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_first[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by first name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn on "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done() contacts_app.wait_for_contacts( number_to_wait_for=len(self._contacts_name_list)) # sort by last name, compare with sorted-by-last-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_last[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by last name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn off "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done()
def test_add_contact_to_favorite(self): contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact['givenName']).tap() contact_details.tap_add_remove_favorite() self.assertEqual(contact_details.add_remove_text, 'Remove as Favorite') contacts_app = contact_details.tap_back() self.assertTrue(contacts_app.is_favorites_list_displayed) # Test that the contact is displayed twice: once under Favorites and once under Contacts. self.assertEqual(len(contacts_app.contacts), 2) self.assertEqual(contacts_app.contacts[0].full_name, contacts_app.contacts[1].full_name)
def test_get_performance_measures(self): if self.testvars['performance']['verbose']: print "Number of runs: {}".format(self.RUNS) for i in range(self.RUNS): if self.testvars['performance']['verbose']: print "Run #{}\n".format(i + 1) contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts(number_to_wait_for=self.contacts_num) map(self.helpers.store_measures, ['list_first_contact_rendered', 'list_chunk_contact_rendered', 'list_all_contacts_rendered']) self.apps.kill_all() time.sleep(2)
def test_sort_contacts(self): """ Test sorting of contacts https://github.com/mozilla/gaia-ui-tests/issues/467 """ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts( number_to_wait_for=len(self._contacts_name_list)) # if "Order by last name" switch is on, turn off it contacts_settings = contacts_app.tap_settings() if contacts_settings.order_by_last_name: contacts_settings.tap_order_by_last_name() contacts_settings.tap_done() # sort by first name, compare with sorted-by-first-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_first[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by first name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn on "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done() # sort by last name, compare with sorted-by-last-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_last[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by last name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn off "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done()
def test_add_photo_from_gallery_to_contact(self): # https://moztrap.mozilla.org/manage/case/5551/ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact['givenName'][0]).tap() full_name = ' '.join([self.contact['givenName'][0], self.contact['familyName'][0]]) self.assertEqual(full_name, contact_details.full_name) saved_contact_image_style = contact_details.image_style edit_contact = contact_details.tap_edit() saved_picture_style = edit_contact.picture_style activities_list = edit_contact.tap_picture() # choose the source as gallery app gallery = activities_list.tap_gallery() gallery.wait_for_thumbnails_to_load() self.assertGreater(gallery.gallery_items_number, 0, 'No photos were found in the gallery.') image = gallery.tap_first_gallery_item() image.tap_crop_done() # fall back to the contacts app self.wait_for_condition(lambda m: self.apps.displayed_app.name == contacts_app.name) self.apps.switch_to_displayed_app() edit_contact.wait_for_image_to_load() new_picture_style = edit_contact.picture_style self.assertNotEqual(new_picture_style, saved_picture_style, 'The picture associated with the contact was not changed.') contact_details = edit_contact.tap_update() self.assertEqual(full_name, contact_details.full_name) self.assertNotEqual(contact_details.image_style, saved_contact_image_style, 'The picture associated with the contact was not changed.')
def test_export_contacts_to_sdcard(self): """ Export contacts to an SD card """ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contacts_settings = contacts_app.tap_settings() contacts_settings.tap_export_contacts() contacts_settings.tap_export_to_sd() contacts_app.tap_select_all() contacts_app.tap_export() self.assertIn('1/1 contacts exported', contacts_app.status_message) vcf_files = self.data_layer.sdcard_files('.vcf') self.assertEqual(1, len(vcf_files))
def test_edit_contact(self): # https://moztrap.mozilla.org/manage/case/1310/ # First insert a new contact to edit contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact( self.contact['givenName'][0]).tap() edit_contact = contact_details.tap_edit() # Now we'll update the mock contact and then insert the new values into the UI self.contact['givenName'] = [ 'gaia%s' % repr(time.time()).replace('.', '')[10:] ] self.contact['familyName'] = ["testedit"] self.contact['tel'][0]['value'] = "02011111111" # self.(*self._given_name_locator) edit_contact.type_given_name(self.contact['givenName'][0]) edit_contact.type_family_name(self.contact['familyName'][0]) edit_contact.type_phone(self.contact['tel'][0]['value']) contact_details = edit_contact.tap_update() contact_details.tap_back() self.assertEqual(len(contacts_app.contacts), 1) self.assertEqual(contacts_app.contacts[0].name, self.contact['givenName'][0]) contact_details = contacts_app.contact( self.contact['givenName'][0]).tap() # Now assert that the values have updated full_name = self.contact['givenName'][0] + " " + self.contact[ 'familyName'][0] self.assertEqual(contact_details.full_name, full_name) self.assertEqual(contact_details.phone_number, self.contact['tel'][0]['value'])
def test_sort_contacts(self): order_by_last_name_default = False contacts_app = Contacts(self.marionette) contacts_app.launch() # if "Order by last name" switch is on, turn off it contacts_settings = contacts_app.tap_settings() self.assertEqual(contacts_settings.order_by_last_name, order_by_last_name_default) # This test starts from when order_by_last_name is false if order_by_last_name_default: contacts_settings.tap_order_by_last_name() contacts_settings.tap_done() # here we wait for contacts once the correct order has been set contacts_app.wait_for_contacts(number_to_wait_for=len(self._contacts_name_list)) # sort by first name, compare with sorted-by-first-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_first[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by first name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn on "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done() contacts_app.wait_for_contacts(number_to_wait_for=len(self._contacts_name_list)) # sort by last name, compare with sorted-by-last-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_last[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by last name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn off "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done()
def test_sort_contacts(self): """ Test sorting of contacts https://github.com/mozilla/gaia-ui-tests/issues/467 """ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts(number_to_wait_for=len(self._contacts_name_list)) # if "Order by last name" switch is on, turn off it contacts_settings = contacts_app.tap_settings() if contacts_settings.order_by_last_name: contacts_settings.tap_order_by_last_name() contacts_settings.tap_done() # sort by first name, compare with sorted-by-first-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_first[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by first name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn on "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done() # sort by last name, compare with sorted-by-last-name list contact_items = contacts_app.contacts for idx in range(len(self._contacts_name_list)): name_tuple = self.sorted_contacts_name_by_last[idx] self.assertEqual(contact_items[idx].full_name, name_tuple[0] + " " + name_tuple[1], "Should order by last name.") # navigate to settings page contacts_settings = contacts_app.tap_settings() # turn off "Order by last name" switch contacts_settings.tap_order_by_last_name() # go to contacts main page from settings page contacts_settings.tap_done()
def test_sms_contact(self): """https://moztrap.mozilla.org/manage/case/1314/""" # Setup a text message from a contact. contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() # Tap on the created contact. contact_details = contacts.contact(self.contact['givenName']).tap() new_message = contact_details.tap_send_sms() new_message.wait_for_recipients_displayed() expected_name = self.contact['givenName'] + " " + self.contact['familyName'] expected_tel = self.contact['tel']['value'] # Now check the first listed is from contacts app. # Name and phone number have been passed in correctly. self.assertEqual(new_message.first_recipient_name, expected_name) self.assertEqual(new_message.first_recipient_number_attribute, expected_tel)
def test_get_performance_measures(self): self._insert_contacts() if self.testvars['performance']['verbose']: print "Number of runs: {}".format(self.RUNS) for i in range(self.RUNS): if self.testvars['performance']['verbose']: print "Run #{}\n".format(i + 1) contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts(number_to_wait_for=self.contacts_num) # Tap on the first contact, to see its details contact_details = contacts_app.contact(self.contacts[0]['givenName']).tap() map(self.helpers.store_measures, ['list_first_contact_rendered', 'list_chunk_contact_rendered', 'list_all_contacts_rendered', 'details_contact_rendered']) if i + 1 < self.RUNS: GaiaTestCase.setUp(self) self._insert_contacts()
def test_edit_contact(self): """ https://moztrap.mozilla.org/manage/case/1310/ """ # First insert a new contact to edit contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact['givenName']).tap() edit_contact = contact_details.tap_edit() # Now we'll update the mock contact and then insert the new values into the UI self.contact['givenName'] = 'gaia%s' % repr(time.time()).replace('.', '')[10:] self.contact['familyName'] = "testedit" self.contact['tel']['value'] = "02011111111" edit_contact.type_given_name(self.contact['givenName']) edit_contact.type_family_name(self.contact['familyName']) edit_contact.type_phone(self.contact['tel']['value']) contact_details = edit_contact.tap_update() contact_details.tap_back() self.assertEqual(len(contacts_app.contacts), 1) self.assertEqual(contacts_app.contacts[0].name, self.contact['givenName']) contact_details = contacts_app.contact(self.contact['givenName']).tap() # Now assert that the values have updated full_name = self.contact['givenName'] + " " + self.contact['familyName'] self.assertEqual(contact_details.full_name, full_name) self.assertEqual(contact_details.phone_number, self.contact['tel']['value'])
def test_delete_contact(self): contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() pre_contacts_count = len(contacts_app.contacts) self.assertEqual(pre_contacts_count, 1, 'Should insert one contact before running this test') contact_item = contacts_app.contact(self.contact['givenName']) contact_item_detail = contact_item.tap() contact_item_edit = contact_item_detail.tap_edit() contact_item_edit.tap_delete() contact_item_edit.tap_confirm_delete() self.wait_for_condition( lambda m: len(self.data_layer.all_contacts) == 0, message='Should have no contacts after running this test') post_contacts_count = len(contacts_app.contacts) self.assertEqual(post_contacts_count, 0, 'Should have no contacts after running this test')
def test_delete_all_contacts(self): """ https://moztrap.mozilla.org/manage/case/15181/ """ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts(number_to_wait_for=2) contacts_settings = contacts_app.tap_settings() contacts_settings.tap_delete_contacts() contacts_app.tap_select_all() contacts_app.tap_delete() contacts_app.tap_confirm_delete() self.assertIn('2 contacts removed', contacts_app.status_message.lower()) # We assert on the presence of this message instead of the length of contacts_app.contacts being 0 # because Marionette times out when you look for 0 element matching a given CSS selector. # In other words, with assertEquals(len(contacts_app.contacts), 0), this test takes 40 seconds instead of 10. self.assertTrue(contacts_app.is_no_contacts_message_displayed)
def test_delete_contact(self): """ Test delete contact https://github.com/mozilla/gaia-ui-tests/issues/493 """ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() pre_contacts_count = len(contacts_app.contacts) self.assertEqual(pre_contacts_count, 1, "Should insert one contact before running this test.") contact_item = contacts_app.contact(self.contact['givenName'][0]) contact_item_detail = contact_item.tap() contact_item_edit = contact_item_detail.tap_edit() contact_item_edit.tap_delete() contact_item_edit.tap_confirm_delete() post_contacts_count = len(contacts_app.contacts) self.assertEqual(post_contacts_count, 0, "Should have no contact after run this test.")
def test_duplicate_phone_number(self): self.phone = Phone(self.marionette) self.phone.launch() number_to_add = self.contact2['tel']['value'] self.phone.keypad.dial_phone_number(number_to_add) add_number = self.phone.keypad.tap_add_contact() contacts_app = add_number.tap_add_to_existing_contact() contacts_app.wait_for_contacts(2) edit_contact = contacts_app.contacts[0].tap(return_class='EditContact') duplicate_contact_found = edit_contact.tap_update(return_class='Merge') merge_contact = duplicate_contact_found.tap_on_merge() self.device.touch_home_button() contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts(1) self.assertEqual(contacts_app.contacts[0].name, self.contact['givenName'])
def test_sms_contact(self): # https://moztrap.mozilla.org/manage/case/1314/ # Setup a text message from a contact contacts = Contacts(self.marionette) contacts.launch() contacts.wait_for_contacts() # tap on the created contact contact_details = contacts.contact(self.contact['givenName']).tap() contact_details.tap_send_sms() self.marionette.switch_to_frame() sms_iframe = self.marionette.find_element( *self._sms_app_iframe_locator) self.marionette.switch_to_frame(sms_iframe) expected_name = self.contact['givenName'] + " " + self.contact[ 'familyName'] expected_tel = self.contact['tel']['value'] # Wait for two recipients listed - the last javascript performed on the page # One is from contacts app and one is the manual entry option self.wait_for_condition(lambda m: len( m.find_elements(*self._recipients_list_locator)) == 2) # Now check the first listed is from contacts app recipients_list = self.marionette.find_elements( *self._recipients_list_locator) first_recipient = recipients_list[0] # Name and phone number have been passed in correctly self.assertEqual(first_recipient.text, expected_name) self.assertEqual(first_recipient.get_attribute('data-number'), expected_tel)
def test_add_photo_from_gallery_to_contact(self): # https://moztrap.mozilla.org/manage/case/5551/ contacts_app = Contacts(self.marionette) contacts_app.launch() contacts_app.wait_for_contacts() contact_details = contacts_app.contact(self.contact['givenName']).tap() full_name = ' '.join( [self.contact['givenName'], self.contact['familyName']]) self.assertEqual(full_name, contact_details.full_name) saved_contact_image_style = contact_details.image_style edit_contact = contact_details.tap_edit() self.assertEqual('Edit contact', edit_contact.title) saved_picture_style = edit_contact.picture_style edit_contact.tap_picture() # switch to the system app self.marionette.switch_to_frame() # choose the source as gallery app self.wait_for_element_displayed(*self._gallery_button_locator) self.marionette.find_element(*self._gallery_button_locator).tap() # switch to the gallery app self.wait_for_element_displayed(*self._gallery_frame_locator) self.marionette.switch_to_frame( self.marionette.find_element(*self._gallery_frame_locator)) self.wait_for_element_displayed(*self._gallery_items_locator) gallery_items = self.marionette.find_elements( *self._gallery_items_locator) self.assertGreater(len(gallery_items), 0, 'No photos were found in the gallery.') gallery_items[0].tap() self.wait_for_element_displayed( *self._gallery_crop_done_button_locator) self.marionette.find_element( *self._gallery_crop_done_button_locator).tap() # switch back to the contacts app contacts_app.launch() self.assertEqual('Edit contact', edit_contact.title) edit_contact.wait_for_image_to_load() new_picture_style = edit_contact.picture_style self.assertNotEqual( new_picture_style, saved_picture_style, 'The picture associated with the contact was not changed.') contact_details = edit_contact.tap_update() self.assertEqual(full_name, contact_details.full_name) self.assertNotEqual( contact_details.image_style, saved_contact_image_style, 'The picture associated with the contact was not changed.')