class GaiaEnduranceTestCase(GaiaTestCase, EnduranceTestCaseMixin, MemoryEnduranceTestCaseMixin): def __init__(self, *args, **kwargs): GaiaTestCase.__init__(self, *args, **kwargs) EnduranceTestCaseMixin.__init__(self, *args, **kwargs) MemoryEnduranceTestCaseMixin.__init__(self, *args, **kwargs) kwargs.pop('iterations', None) kwargs.pop('checkpoint_interval', None) def close_app(self): from gaiatest.apps.system.regions.cards_view import CardsView self.cards_view = CardsView(self.marionette) # Pull up the cards view self.device.hold_home_button() self.cards_view.wait_for_cards_view() # Wait for first app ready self.cards_view.wait_for_card_ready(self.app_under_test.lower()) # Close the current apps from the cards view self.cards_view.close_app("search") # Sleep a bit time.sleep(5)
def test_only_one_header_displayed(self): """ https://bugzilla.mozilla.org/show_bug.cgi?id=1116087 """ self.email.setup_IMAP_email(self.testvars['email']['imap'], self.testvars['email']['smtp']) self.email.wait_for_emails_to_sync() self.assertGreater(len(self.email.mails), 0) email_header_list = self.marionette.find_elements(*self.email.emails_list_header_locator) self.assertEqual(len(email_header_list), 1, 'Should have only 1 list-header') self.device.hold_home_button() cards_view = CardsView(self.marionette) cards_view.wait_for_cards_view() cards_view.wait_for_card_ready(self.email.name) cards_view.close_app(self.email.name) self.assertFalse(cards_view.is_app_displayed(self.email.name), '%s app should not be present in cards view' % self.email.name) self.assertEqual(len(cards_view.cards), 0, 'Should have no cards left to display') Wait(self.marionette).until(lambda m: self.apps.displayed_app.name == Homescreen.name) self.email.launch() self.email.wait_for_emails_to_sync() self.assertGreater(len(self.email.mails), 0) email_header_list = self.marionette.find_elements(*self.email.emails_list_header_locator) self.assertEqual(len(email_header_list), 1, 'Should have only 1 list-header')
def test_launch_manifest(self): search = Search(self.marionette) search.launch() self.device.touch_home_button() search.launch() browser = search.go_to_url(self.test_url) browser.switch_to_content() Wait(self.marionette).until(lambda m: m.title == 'Mozilla') self.device.touch_home_button() # This should open the previous opened browser window search.launch() browser = search.go_to_url('data:text/html;charset=utf-8,<title>hello</title>') browser.switch_to_content() Wait(self.marionette).until(lambda m: m.title == 'hello') browser.switch_to_chrome() # This shouldn't do anything search.launch() self.device.hold_home_button() cards_view = CardsView(self.marionette) cards_view.wait_for_cards_view() cards_view.wait_for_card_ready(search.manifest_url[:-16]) self.assertEqual(len(cards_view.cards), 1, 'Should have 1 card to display') self.assertTrue(cards_view.is_app_displayed(search.manifest_url[:-16]), 'Should have browser in cards view with title hello')
class TestCardsViewTwoApps(GaiaTestCase): _test_apps = ["Clock", "Gallery"] def setUp(self): GaiaTestCase.setUp(self) self.cards_view = CardsView(self.marionette) # Launch the test apps for app in self._test_apps: self.apps.launch(app) # Let's wait a bit for the app to fully launch time.sleep(2) def test_kill_app_from_cards_view(self): """https://moztrap.mozilla.org/manage/case/1917/""" # Pull up the cards view self.device.hold_home_button() self.cards_view.wait_for_cards_view() # Wait for first app ready self.cards_view.wait_for_card_ready(self._test_apps[1]) # Close the current apps from the cards view self.cards_view.close_app(self._test_apps[1]) self.cards_view.close_app(self._test_apps[0]) # If successfully killed, the apps should no longer appear in the cards view and the "No recent apps" message should be displayed self.assertFalse(self.cards_view.is_app_present(self._test_apps[1]), "Killed app not expected to appear in cards view") self.assertFalse(self.cards_view.is_app_present(self._test_apps[0]), "Killed app not expected to appear in cards view")
class GaiaEnduranceTestCase(GaiaTestCase, EnduranceTestCaseMixin, MemoryEnduranceTestCaseMixin): def __init__(self, *args, **kwargs): GaiaTestCase.__init__(self, *args, **kwargs) EnduranceTestCaseMixin.__init__(self, *args, **kwargs) MemoryEnduranceTestCaseMixin.__init__(self, *args, **kwargs) kwargs.pop('iterations', None) kwargs.pop('checkpoint_interval', None) def close_app(self): from gaiatest.apps.system.regions.cards_view import CardsView self.cards_view = CardsView(self.marionette) # Pull up the cards view self.device.hold_home_button() self.cards_view.wait_for_cards_view() # Wait for first app ready self.cards_view.wait_for_card_ready(self.app_under_test.lower()) # Close the current apps from the cards view self.cards_view.close_app("search") # Sleep a bit time.sleep(5)
def test_only_one_header_displayed(self): """ https://bugzilla.mozilla.org/show_bug.cgi?id=1116087 """ self.email.setup_IMAP_email(self.testvars['email']['IMAP']) self.email.wait_for_emails_to_sync() self.assertGreater(len(self.email.mails), 0) email_header_list = self.marionette.find_elements( *self.email.emails_list_header_locator) self.assertEqual(len(email_header_list), 1, 'Should have only 1 list-header') self.device.hold_home_button() cards_view = CardsView(self.marionette) cards_view.wait_for_cards_view() cards_view.wait_for_card_ready(self.email.name) cards_view.close_app(self.email.name) self.assertFalse( cards_view.is_app_displayed(self.email.name), '%s app should not be present in cards view' % self.email.name) self.assertEqual(len(cards_view.cards), 0, 'Should have no cards left to display') Wait(self.marionette).until( lambda m: self.apps.displayed_app.name == Homescreen.name) self.email.launch() self.email.wait_for_emails_to_sync() self.assertGreater(len(self.email.mails), 0) email_header_list = self.marionette.find_elements( *self.email.emails_list_header_locator) self.assertEqual(len(email_header_list), 1, 'Should have only 1 list-header')
def test_launch_manifest(self): search = Search(self.marionette) search.launch() self.device.touch_home_button() search.launch() browser = search.go_to_url(self.test_url) browser.switch_to_content() Wait(self.marionette).until(lambda m: m.title == 'Mozilla') self.device.touch_home_button() # This should open the previous opened browser window search.launch() browser = search.go_to_url( 'data:text/html;charset=utf-8,<title>hello</title>') browser.switch_to_content() Wait(self.marionette).until(lambda m: m.title == 'hello') browser.switch_to_chrome() # This shouldn't do anything search.launch() self.device.hold_home_button() cards_view = CardsView(self.marionette) cards_view.wait_for_cards_view() cards_view.wait_for_card_ready(search.manifest_url[:-16]) self.assertEqual(len(cards_view.cards), 1, 'Should have 1 card to display') self.assertTrue(cards_view.is_app_displayed(search.manifest_url[:-16]), 'Should have browser in cards view with title hello')
def test_that_app_can_be_launched_from_cards_view(self): """https://moztrap.mozilla.org/manage/case/2462/""" cards_view = CardsView(self.marionette) self.assertFalse(cards_view.is_cards_view_displayed, 'Cards view not expected to be visible') # Pull up the cards view self.device.hold_home_button() cards_view.wait_for_cards_view() # Wait for first app ready cards_view.wait_for_card_ready(self._test_apps[1]) for app in self._test_apps: self.assertTrue(cards_view.is_app_displayed(app), '%s app should be present in cards view' % app) cards_view.swipe_to_previous_app() # Wait for previous app ready cards_view.wait_for_card_ready(self._test_apps[0]) cards_view.tap_app(self._test_apps[0]) cards_view.wait_for_cards_view_not_displayed() self.assertEqual(self.apps.displayed_app.name, self._test_apps[0])
def test_a11y_cards_view_status_bar_visibility(self): cards_view = CardsView(self.marionette) status_bar = System(self.marionette).status_bar # Pull up the cards view self.device.hold_home_button() cards_view.wait_for_cards_view() # Wait for the app card ready cards_view.wait_for_card_ready('Calendar') # Statusbar icons should be invisible to the screen reader. self.wait_for_condition(lambda m: status_bar.is_status_bar_maximized_wrapper_a11y_hidden) self.wait_for_condition(lambda m: status_bar.is_status_bar_minimized_wrapper_a11y_hidden)
def test_a11y_cards_view_status_bar_visibility(self): cards_view = CardsView(self.marionette) status_bar = StatusBar(self.marionette) # Pull up the cards view self.device.hold_home_button() cards_view.wait_for_cards_view() # Wait for the app card ready cards_view.wait_for_card_ready("Calendar") # Statusbar icons should be invisible to the screen reader. self.wait_for_condition(lambda m: status_bar.is_status_bar_maximized_wrapper_a11y_hidden) self.wait_for_condition(lambda m: status_bar.is_status_bar_minimized_wrapper_a11y_hidden)
def test_sms_auto_save_draft(self): """ https://moztrap.mozilla.org/manage/case/7806/ """ _text_message_content = "Automated Test %s" % str(time.time()) # launch messages app messages = Messages(self.marionette) messages.launch() # click new message new_message = messages.tap_create_new_message() self.marionette.switch_to_frame() Wait(self.marionette).until( lambda m: new_message.keyboard.is_keyboard_displayed) self.apps.switch_to_displayed_app() new_message.type_message(_text_message_content) self.assertEqual(new_message.message, _text_message_content) # close message app and leave cards view self.device.hold_home_button() from gaiatest.apps.system.regions.cards_view import CardsView cards_view = CardsView(self.marionette) cards_view.wait_for_cards_view() # wait for first app ready cards_view.wait_for_card_ready('sms') cards_view.close_app('sms') self.assertFalse(cards_view.is_app_present('sms'), "Killed app not expected to appear in cards view") # wait for homescreen to be displayed self.wait_for_condition( lambda m: self.apps.displayed_app.name == Homescreen.name) # re-open messages app messages.launch() self.assertTrue(messages.draft_message[0].is_draft_icon_displayed) new_message = messages.draft_message[0].tap_draft_message() # check that last message draft is shown correctly self.assertEqual(new_message.message, _text_message_content)
def test_sms_auto_save_draft(self): """ https://moztrap.mozilla.org/manage/case/7806/ """ _text_message_content = "Automated Test %s" % str(time.time()) # launch messages app messages = Messages(self.marionette) messages.launch() # click new message new_message = messages.tap_create_new_message() self.marionette.switch_to_frame() Wait(self.marionette).until(lambda m: new_message.keyboard.is_keyboard_displayed) self.apps.switch_to_displayed_app() new_message.type_message(_text_message_content) self.assertEqual(new_message.message, _text_message_content) # close message app and leave cards view self.device.hold_home_button() from gaiatest.apps.system.regions.cards_view import CardsView cards_view = CardsView(self.marionette) cards_view.wait_for_cards_view() # wait for first app ready cards_view.wait_for_card_ready('sms') cards_view.close_app('sms') self.assertFalse(cards_view.is_app_present('sms'), "Killed app not expected to appear in cards view") # wait for homescreen to be displayed Homescreen(self.marionette).wait_to_be_displayed() # re-open messages app messages.launch() self.assertTrue(messages.draft_threads[0].is_draft_icon_displayed) new_message = messages.draft_threads[0].open() # check that last message draft is shown correctly self.assertEqual(new_message.message, _text_message_content)
class TestCardsViewTwoApps(GaiaMtbfTestCase): _test_apps = ["Clock", "Gallery"] def setUp(self): GaiaMtbfTestCase.setUp(self) self.cards_view = CardsView(self.marionette) # Launch the test apps for app in self._test_apps: self.apps.launch(app) # Let's wait a bit for the app to fully launch time.sleep(2) def test_kill_app_from_cards_view(self): """https://moztrap.mozilla.org/manage/case/1917/""" # Pull up the cards view self.device.hold_home_button() self.cards_view.wait_for_cards_view() # Wait for first app ready self.cards_view.wait_for_card_ready(self._test_apps[1]) # Close the current apps from the cards view self.cards_view.close_app(self._test_apps[1]) self.cards_view.close_app(self._test_apps[0]) # If successfully killed, the apps should no longer appear in the cards view and the "No recent apps" message should be displayed self.assertFalse( self.cards_view.is_app_present(self._test_apps[1]), "Killed app not expected to appear in cards view" ) self.assertFalse( self.cards_view.is_app_present(self._test_apps[0]), "Killed app not expected to appear in cards view" ) def tearDown(self): self.device.touch_home_button() self.device.touch_home_button() GaiaMtbfTestCase.tearDown(self)
class TestCardsViewTwoApps(GaiaImageCompareTestCase): _test_apps = ["Contacts", "Gallery"] def setUp(self): GaiaImageCompareTestCase.setUp(self) self.cards_view = CardsView(self.marionette) # Launch the test apps for app in self._test_apps: self.apps.launch(app) # 10 seconds for the actual user using the app a bit, and going back to homescreen time.sleep(10) self.device.touch_home_button() def test_cards_view_kill_apps_with_two_apps(self): """https://moztrap.mozilla.org/manage/case/1917/""" # Pull up the cards view self.device.hold_home_button() self.cards_view.wait_for_cards_view() # Wait for first app ready self.cards_view.wait_for_card_ready(self._test_apps[1]) self.take_screenshot() # Close the current apps from the cards view self.cards_view.close_app(self._test_apps[1]) self.take_screenshot() self.cards_view.close_app(self._test_apps[0]) self.take_screenshot() # If successfully killed, the apps should no longer appear in the cards view # and the "No recent apps" message should be displayed self.assertFalse(self.cards_view.is_app_present(self._test_apps[1]), "Killed app not expected to appear in cards view") self.assertFalse(self.cards_view.is_app_present(self._test_apps[0]), "Killed app not expected to appear in cards view")
def test_cards_view_with_two_apps(self): """https://moztrap.mozilla.org/manage/case/2462/""" cards_view = CardsView(self.marionette) self.assertFalse(cards_view.is_displayed, 'Cards view not expected to be visible') # Pull up the cards view self.device.hold_home_button() cards_view.wait_for_cards_view() card_frame = self.marionette.get_active_frame() self.take_screenshot() # disabled per Bug 1118390 #self.change_orientation('landscape-primary') #self.take_screenshot() #self.change_orientation('portrait-primary') #self.take_screenshot() # Wait for first app ready cards_view.wait_for_card_ready(self._test_apps[1]) for app in self._test_apps: self.assertTrue(cards_view.is_app_displayed(app), '%s app should be present in cards view' % app) cards_view.swipe_to_previous_app() # Wait for previous app ready cards_view.wait_for_card_ready(self._test_apps[0]) # sleep inside above method is insufficient time.sleep(2) self.take_screenshot() self.marionette.switch_to_frame(frame=card_frame) cards_view.tap_app(self._test_apps[0]) cards_view.wait_for_cards_view_not_displayed() self.take_screenshot() #bug 1151571 will cause blank screen capture self.assertEqual(self.apps.displayed_app.name, self._test_apps[0])
def test_cards_view_with_two_apps(self): """https://moztrap.mozilla.org/manage/case/2462/""" cards_view = CardsView(self.marionette) self.assertFalse(cards_view.is_displayed, 'Cards view not expected to be visible') # Pull up the cards view self.device.hold_home_button() cards_view.wait_for_cards_view() card_frame = self.marionette.get_active_frame() self.take_screenshot() # disabled per Bug 1118390 #self.change_orientation('landscape-primary') #self.take_screenshot() #self.change_orientation('portrait-primary') #self.take_screenshot() # Wait for first app ready cards_view.wait_for_card_ready(self._test_apps[1]) for app in self._test_apps: self.assertTrue(cards_view.is_app_displayed(app), '%s app should be present in cards view' % app) cards_view.swipe_to_previous_app() # Wait for previous app ready cards_view.wait_for_card_ready(self._test_apps[0]) # sleep inside above method is insufficient time.sleep(2) self.take_screenshot() self.marionette.switch_to_frame(frame=card_frame) cards_view.tap_app(self._test_apps[0]) cards_view.wait_for_cards_view_not_displayed() self.take_screenshot() #bug 1151571 will cause blank screen capture self.assertEqual(self.apps.displayed_app.name, self._test_apps[0])
def test_a11y_cards_view(self): cards_view = CardsView(self.marionette) self.assertTrue( cards_view.is_cards_view_a11y_hidden, 'Cards view should not be visible to the screen reader') # Pull up the cards view self.device.hold_home_button() cards_view.wait_for_cards_view() # Wait for first app ready cards_view.wait_for_card_ready(self._test_apps[2]) # Only current card should be visible self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Swipe with two fingers right and left and verify card visibility cards_view.a11y_wheel_cards_view('right') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) cards_view.a11y_wheel_cards_view('right') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[0])) # Swipe again even though there's nowhere to swipe to make sure the # state does not break cards_view.a11y_wheel_cards_view('right') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[0])) cards_view.a11y_wheel_cards_view('left') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) cards_view.a11y_wheel_cards_view('left') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Swipe again even though there's nowhere to swipe to make sure the # state does not break cards_view.a11y_wheel_cards_view('left') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Assert there are 3 cards self.assertEqual(3, len(cards_view.cards), 'Expected 3 cards') # Remove a card by swiping with 2 fingers up cards_view.a11y_wheel_cards_view('up') # Assert there are 2 cards cards = cards_view.cards self.assertEqual(2, len(cards), 'Expected 2 cards') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Remove a card by clicking its close button cards[1].a11y_click_close_button() # Assert there is 1 card cards = cards_view.cards self.assertEqual(1, len(cards), 'Expected 1 card') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[0])) # Open an app by clicking its icon cards[0].a11y_click_app_icon() cards_view.wait_for_cards_view_not_displayed() self.assertEqual(self.apps.displayed_app.name, self._test_apps[0]) # Switch to top level frame and reopen cards view self.marionette.switch_to_frame() self.device.hold_home_button() cards_view.wait_for_cards_view() cards_view.wait_for_card_ready(self._test_apps[0]) # Assert there is 1 card cards = cards_view.cards self.assertEqual(1, len(cards), 'Expected 1 card') # Open an app by clicking its screenshot view cards[0].a11y_click_screenshot_view() cards_view.wait_for_cards_view_not_displayed() self.assertEqual(self.apps.displayed_app.name, self._test_apps[0])
def test_a11y_cards_view(self): cards_view = CardsView(self.marionette) self.assertTrue(cards_view.is_cards_view_a11y_hidden, 'Cards view should not be visible to the screen reader') # Pull up the cards view self.device.hold_home_button() cards_view.wait_for_cards_view() # Wait for first app ready cards_view.wait_for_card_ready(self._test_apps[2]) # Only current card should be visible self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Swipe with two fingers right and left and verify card visibility cards_view.a11y_wheel_cards_view('right') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) cards_view.a11y_wheel_cards_view('right') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[0])) # Swipe again even though there's nowhere to swipe to make sure the # state does not break cards_view.a11y_wheel_cards_view('right') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[0])) cards_view.a11y_wheel_cards_view('left') self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) cards_view.a11y_wheel_cards_view('left') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Swipe again even though there's nowhere to swipe to make sure the # state does not break cards_view.a11y_wheel_cards_view('left') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[2])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Assert there are 3 cards self.assertEqual(3, len(cards_view.cards), 'Expected 3 cards') # Remove a card by swiping with 2 fingers up cards_view.a11y_wheel_cards_view('up') # Assert there are 2 cards cards = cards_view.cards self.assertEqual(2, len(cards), 'Expected 2 cards') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[1])) self.assertTrue(cards_view.is_app_a11y_hidden(self._test_apps[0])) # Remove a card by clicking its close button cards[1].a11y_click_close_button() # Assert there is 1 card cards = cards_view.cards self.assertEqual(1, len(cards), 'Expected 1 card') self.assertTrue(cards_view.is_app_a11y_visible(self._test_apps[0])) # Open an app by clicking its icon cards[0].a11y_click_app_icon() cards_view.wait_for_cards_view_not_displayed() self.assertEqual(self.apps.displayed_app.name, self._test_apps[0]) # Switch to top level frame and reopen cards view self.marionette.switch_to_frame() self.device.hold_home_button() cards_view.wait_for_cards_view() cards_view.wait_for_card_ready(self._test_apps[0]) # Assert there is 1 card cards = cards_view.cards self.assertEqual(1, len(cards), 'Expected 1 card') # Open an app by clicking its screenshot view cards[0].a11y_click_screenshot_view() cards_view.wait_for_cards_view_not_displayed() self.assertEqual(self.apps.displayed_app.name, self._test_apps[0])