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)
Example #2
0
    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)
Example #4
0
    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')
Example #5
0
    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.")
Example #6
0
    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])
Example #8
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])
Example #10
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()
Example #11
0
    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')
Example #12
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()
Example #13
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()
Example #14
0
    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.",
        )
Example #20
0
    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()
Example #21
0
    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)
Example #23
0
    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))
Example #26
0
    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'])
Example #27
0
    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()
Example #29
0
    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()
Example #31
0
    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'])
Example #32
0
    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)
Example #34
0
    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'])
Example #36
0
    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)
Example #37
0
    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.')