def test_search_and_install_app(self): marketplace = Marketplace(self.marionette) marketplace.launch() results = marketplace.search(self.app_search) first_result = results.search_results[0] app_name = first_result.get_app_name() first_result.tap_install_button() # Confirm the installation and wait for the app icon to be present confirm_install = ConfirmInstall(self.marionette) confirm_install.tap_confirm() self.assertEqual(self.apps.displayed_app.name, 'Marketplace') self.device.touch_home_button() # Check that the icon of the app is on the homescreen homescreen = Homescreen(self.marionette) homescreen.wait_for_app_icon_present(app_name) installed_app = homescreen.installed_app(app_name) installed_app.tap_icon() Wait(self.marionette).until(lambda m: m.title == self.app_title)
def test_search_and_install_app(self): marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) marketplace.launch() self.app_name = marketplace.popular_apps[0].name app_author = marketplace.popular_apps[0].author results = marketplace.search(self.app_name) self.assertGreater(len(results.search_results), 0, 'No results found.') first_result = results.search_results[0] self.assertEquals(first_result.name, self.app_name, 'First app has the wrong name.') self.assertEquals(first_result.author, app_author, 'First app has the wrong author.') # Find and click the install button to the install the web app self.assertEquals(first_result.install_button_text, 'Free', 'Incorrect button label.') first_result.tap_install_button() self.confirm_installation() self.APP_INSTALLED = True # Check that the icon of the app is on the homescreen self.marionette.switch_to_frame() homescreen_frame = self.marionette.find_element(*self._homescreen_iframe_locator) self.marionette.switch_to_frame(homescreen_frame) self.assertTrue(self.marionette.find_element('xpath', "//li[@class='icon']//span[text()='%s']" % self.app_name))
def test_marketplace_change_region_login(self): marketplace = Marketplace(self.marionette, 'Marketplace Dev') marketplace.launch() # login to marketplace settings = marketplace.login(self.user) # change region settings.select_region(self._REGION) # save changes settings.tap_save_changes() # wait for the changes to be saved marketplace.wait_for_notification_message_displayed() self.assertEqual(marketplace.notification_message, 'Settings saved') # go to home marketplace.tap_back() # go back to settings settings = marketplace.tap_settings() # check if the region is same as changed before self.assertEqual(settings.region, self._REGION)
def test_search_and_install_app(self): marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) marketplace.launch() self.app_name = marketplace.popular_apps[0].name app_author = marketplace.popular_apps[0].author results = marketplace.search(self.app_name) self.assertGreater(len(results.search_results), 0, 'No results found.') first_result = results.search_results[0] self.assertEquals(first_result.name, self.app_name, 'First app has the wrong name.') self.assertEquals(first_result.author, app_author, 'First app has the wrong author.') # Find and click the install button to the install the web app self.assertEquals(first_result.install_button_text, 'Free', 'Incorrect button label.') first_result.tap_install_button() self.confirm_installation() self.APP_INSTALLED = True # Check that the icon of the app is on the homescreen homescreen = Homescreen(self.marionette) homescreen.switch_to_homescreen_frame() self.assertTrue(homescreen.is_app_installed(self.app_name))
def test_add_review(self): marketplace = Marketplace(self.marionette, 'Marketplace dev') marketplace.launch() # Sign in settings = marketplace.tap_settings() persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) self.marionette.switch_to_frame() marketplace.launch() settings.wait_for_sign_out_button() # Search and select app results = marketplace.search('SoundCloud') self.assertGreater(len(results.search_results), 0, 'No results found.') details_page = results.search_results[0].tap_app() # Setting your default values for review current_time = str(time.time()).split('.')[0] rating = random.randint(1, 5) body = 'This is a test %s' % current_time # Adding the review review_box = details_page.tap_write_review() review_box.write_a_review(rating, body) marketplace.wait_for_notification_message_displayed() # Check if review was added correctly self.assertEqual(marketplace.notification_message, "Your review was posted") self.assertEqual(details_page.first_review_rating, rating) self.assertEqual(details_page.first_review_body, body)
def test_marketplace_feedback_user(self): # launch marketplace dev and go to marketplace self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() # wait for settings button to come out self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() # sign in with persona persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) # switch back to Marketplace self.marionette.switch_to_frame() self.marketplace.launch() # go to feedback tab self.marketplace.select_setting_feedback() # enter and submit your feedback self.marketplace.enter_feedback(self.test_comment) self.marketplace.submit_feedback() # catch the notification self.marketplace.wait_for_notification_message_displayed() message_content = self.marketplace.notification_message # verify if the notification is right self.assertEqual(message_content, self.feedback_submitted_message)
def test_search_and_install_app(self): marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) marketplace.launch() results = marketplace.search(self.APP_NAME) # validate the first result is the official lanyrd mobile app self.assertGreater(len(results.search_results), 0, 'No results found.') first_result = results.search_results[0] self.assertEquals(first_result.name, self.APP_NAME, 'First app has the wrong name.') self.assertEquals(first_result.author, self.APP_DEVELOPER, 'First app has the wrong author.') # Find and click the install button to the install the web app self.assertEquals(first_result.install_button_text, 'Free', 'Incorrect button label.') first_result.tap_install_button() self.confirm_installation() self.APP_INSTALLED = True # Check that the icon of the app is on the homescreen self.marionette.switch_to_frame() homescreen_frame = self.marionette.find_element(*self._homescreen_iframe_locator) self.marionette.switch_to_frame(homescreen_frame) self.assertTrue(self.marionette.find_element(*self._app_icon_locator))
def test_search_and_install_app(self): marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) marketplace.launch() results = marketplace.search(self.APP_NAME) # validate the first result is the official lanyrd mobile app self.assertGreater(len(results.search_results), 0, 'No results found.') first_result = results.search_results[0] self.assertEquals(first_result.name, self.APP_NAME, 'First app has the wrong name.') self.assertEquals(first_result.author, self.APP_DEVELOPER, 'First app has the wrong author.') # Find and click the install button to the install the web app self.assertEquals(first_result.install_button_text, 'Free', 'Incorrect button label.') first_result.tap_install_button() self.confirm_installation() self.APP_INSTALLED = True # Check that the icon of the app is on the homescreen self.marionette.switch_to_frame() homescreen_frame = self.marionette.find_element( *self._homescreen_iframe_locator) self.marionette.switch_to_frame(homescreen_frame) self.assertTrue(self.marionette.find_element(*self._app_icon_locator))
class TestMarketplaceLogin(GaiaTestCase): MARKETPLACE_DEV_NAME = 'Marketplace Dev' # Marketplace locators _settings_button_locator = ('css selector', 'a.header-button.settings') _sign_in_button_locator = ('css selector', 'a.button.browserid') _signed_in_notification_locator = ('id', 'notification') _sign_out_button_locator = ('css selector', 'a.button.logout') _email_account_field_locator = ('id', 'email') def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() self.user = PersonaTestUser().create_user( verified=True, env={ "browserid": "firefoxos.persona.org", "verifier": "marketplace-dev.allizom.org" }) self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() def test_login_marketplace(self): # https://moztrap.mozilla.org/manage/case/4134/ self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) # switch back to Marketplace self.marionette.switch_to_frame() self.marketplace.launch() # tap on the signed-in notification at the bottom of the screen to dismiss it self.wait_for_element_displayed(*self._signed_in_notification_locator) self.marionette.tap( self.marionette.find_element( *self._signed_in_notification_locator)) settings.wait_for_sign_out_button() # Verify that user is logged in self.assertEqual(self.user.email, settings.email) # Sign out, which should return to the Marketplace home screen settings.tap_sign_out() # Verify that user is signed out self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() settings.wait_for_sign_in_displayed()
def test_marketplace_without_connectivity(self): marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) marketplace.launch() self.marionette.switch_to_frame() self.assertEqual(marketplace.error_title_text, self.expected_error_title) self.assertEqual(marketplace.error_message_text, self.expected_error_message)
def test_marketplace_without_connectivity(self): marketplace = Marketplace(self.marionette) marketplace.launch() # Switch to marketplace iframe marketplace.switch_to_marketplace_frame() self.assertEqual(marketplace.error_title_text, self.expected_error_title) self.assertEqual(marketplace.error_message_text, self.expected_error_message)
class TestMarketplaceLogin(GaiaTestCase): MARKETPLACE_DEV_NAME = 'Marketplace Dev' # Marketplace locators _settings_button_locator = ('css selector', 'a.header-button.settings') _sign_in_button_locator = ('css selector', 'a.button.browserid') _signed_in_notification_locator = ('id', 'notification') _sign_out_button_locator = ('css selector', 'a.button.logout') _email_account_field_locator = ('id', 'email') def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() self.user = PersonaTestUser().create_user(verified=True, env={"browserid": "firefoxos.persona.org", "verifier": "marketplace-dev.allizom.org"}) self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() def test_login_marketplace(self): # https://moztrap.mozilla.org/manage/case/4134/ self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) # switch back to Marketplace self.marionette.switch_to_frame() self.marketplace.launch() # tap on the signed-in notification at the bottom of the screen to dismiss it self.wait_for_element_displayed(*self._signed_in_notification_locator) self.marionette.tap(self.marionette.find_element(*self._signed_in_notification_locator)) settings.wait_for_sign_out_button() # Verify that user is logged in self.assertEqual(self.user.email, settings.email) # Sign out, which should return to the Marketplace home screen settings.tap_sign_out() # Verify that user is signed out self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() settings.wait_for_sign_in_displayed()
def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() self.user = PersonaTestUser().create_user( verified=True, env={ "browserid": "firefoxos.persona.org", "verifier": "marketplace-dev.allizom.org" }) self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch()
def test_marketplace_feedback_user(self): # launch marketplace dev and go to marketplace self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() # wait for settings button to come out self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() # sign in with persona persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) # switch back to Marketplace self.marionette.switch_to_frame() self.marketplace.launch() # go to settings section in marketplace app and go to feedback tab self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() self.marketplace.select_setting_feedback() # enter and submit your feedback self.marketplace.enter_feedback(self.test_comment) self.marketplace.submit_feedback() # catch the notification self.marketplace.wait_for_notification_message_displayed() message_content = self.marketplace.notification_message # verify if the notification is right self.assertEqual(message_content, self.feedback_submitted_message)
def test_search_paid_app(self): marketplace = Marketplace(self.marionette, 'Marketplace Dev') marketplace.launch() results = marketplace.search('') self.assertGreater(len(results.search_results), 0, 'No results found.') filter = results.tap_filter() filter.by_price('paid') results = filter.tap_apply() self.assertGreater(len(results.search_results), 0, 'No results found.') for result in results.search_results: self.assertTrue(re.match('^\$\d+\.\d{2}', result.price), "App %s it's not a paid app." % result.name)
def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() self.user = PersonaTestUser().create_user(verified=True, env={"browserid": "firefoxos.persona.org", "verifier": "marketplace-dev.allizom.org"}) self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch()
def test_marketplace_feedback_anonymous(self): # launch marketplace dev and go to marketplace self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() # wait for settings button to come out self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() self.marketplace.select_setting_feedback() # enter and submit your feedback self.marketplace.enter_feedback(self.test_comment) self.marketplace.submit_feedback() # catch the notification self.marketplace.wait_for_notification_message_displayed() message_content = self.marketplace.notification_message # verify if the notification is right self.assertEqual(message_content, self.feedback_submitted_message)
def test_install_and_execute_bing_map(self): marketplace = Marketplace(self.marionette) marketplace.launch() results = marketplace.search(self.app_search) first_result = results.search_results[0] first_result.tap_install_button() confirm_install = ConfirmInstall(self.marionette) confirm_install.tap_confirm() results = marketplace.get_current_displayed_result() first_result = results.search_results[0] first_result.tap_open_app_button(self._map_locator) self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_in_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_in_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_in_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) # move around GaiaImageCompareTestCase.scroll(self.marionette, 'right', 100, locator=self._map_locator) self.take_screenshot(prewait=self.draw_wait_time) GaiaImageCompareTestCase.scroll(self.marionette, 'down', 100, locator=self._map_locator) self.take_screenshot(prewait=self.draw_wait_time) # zoom out self.marionette.find_element(*self._zoom_out_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_out_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_out_locator).tap() self.take_screenshot(prewait=self.draw_wait_time)
class TestMarketplaceLogin(GaiaTestCase): MARKETPLACE_DEV_NAME = 'Marketplace Dev' def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() self.user = PersonaTestUser().create_user( verified=True, env={ "browserid": "firefoxos.persona.org", "verifier": "marketplace-dev.allizom.org" }) self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() def test_login_marketplace(self): # https://moztrap.mozilla.org/manage/case/4134/ self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) # switch back to Marketplace self.marionette.switch_to_frame() self.marketplace.launch() # wait for signed-in notification at the bottom of the screen to clear self.marketplace.wait_for_notification_message_not_displayed() # Verify that user is logged in self.assertEqual(self.user.email, settings.email) # Sign out, which should return to the Marketplace home screen settings.tap_sign_out() # Verify that user is signed out settings.wait_for_sign_in_displayed()
class TestMarketplaceLogin(GaiaTestCase): MARKETPLACE_DEV_NAME = 'Marketplace Dev' def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() self.user = PersonaTestUser().create_user(verified=True, env={"browserid": "firefoxos.persona.org", "verifier": "marketplace-dev.allizom.org"}) self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() def test_login_marketplace(self): # https://moztrap.mozilla.org/manage/case/4134/ self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) # switch back to Marketplace self.marionette.switch_to_frame() self.marketplace.launch() # wait for signed-in notification at the bottom of the screen to clear self.marketplace.wait_for_notification_message_not_displayed() # Verify that user is logged in self.assertEqual(self.user.email, settings.email) # Sign out, which should return to the Marketplace home screen settings.tap_sign_out() # Verify that user is signed out settings.wait_for_sign_in_displayed()
def test_marketplace_launch(self): marketplace = Marketplace(self.marionette) homescreen = Homescreen(self.marionette) self.apps.switch_to_displayed_app() self.assertTrue(homescreen.is_app_installed(marketplace.manifest_url)) marketplace_icon = homescreen.installed_app(marketplace.manifest_url) marketplace_icon.tap_icon() Wait(self.marionette, timeout=60).until(expected.element_present(*self._marketplace_iframe_locator)) iframe = self.marionette.find_element(*self._marketplace_iframe_locator) self.marionette.switch_to_frame(iframe) Wait(self.marionette).until(expected.element_displayed(*self._site_header_locator))
def test_install_and_execute_bing_map(self): marketplace = Marketplace(self.marionette) marketplace.launch() results = marketplace.search(self.app_search) first_result = results.search_results[0] first_result.tap_install_button() confirm_install = ConfirmInstall(self.marionette) confirm_install.tap_confirm() results = marketplace.get_current_displayed_result() first_result = results.search_results[0] first_result.tap_open_app_button(self.app_title, self._map_locator) self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_in_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_in_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_in_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) # move around GaiaImageCompareTestCase.scroll(self.marionette, 'right', 100, locator=self._map_locator) self.take_screenshot(prewait=self.draw_wait_time) GaiaImageCompareTestCase.scroll(self.marionette, 'down', 100, locator=self._map_locator) self.take_screenshot(prewait=self.draw_wait_time) # zoom out self.marionette.find_element(*self._zoom_out_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_out_locator).tap() self.take_screenshot(prewait=self.draw_wait_time) self.marionette.find_element(*self._zoom_out_locator).tap() self.take_screenshot(prewait=self.draw_wait_time)
class TestMarketplaceFeedback(GaiaTestCase): MARKETPLACE_DEV_NAME = 'Marketplace Dev' feedback_submitted_message = u'Feedback submitted. Thanks!' test_comment = 'This is a test comment.' def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() self.user = PersonaTestUser().create_user( verified=True, env={ "browserid": "firefoxos.persona.org", "verifier": "marketplace-dev.allizom.org" }) def test_marketplace_feedback_user(self): # launch marketplace dev and go to marketplace self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() # wait for settings button to come out self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() # sign in with persona persona = settings.tap_sign_in() persona.login(self.user.email, self.user.password) # switch back to Marketplace self.marionette.switch_to_frame() self.marketplace.launch() # go to feedback tab self.marketplace.select_setting_feedback() # enter and submit your feedback self.marketplace.enter_feedback(self.test_comment) self.marketplace.submit_feedback() # catch the notification self.marketplace.wait_for_notification_message_displayed() message_content = self.marketplace.notification_message # verify if the notification is right self.assertEqual(message_content, self.feedback_submitted_message)
def test_install_and_execute_bing_map(self): marketplace = Marketplace(self.marionette) marketplace.launch() results = marketplace.search(self.app_search) first_result = results.search_results[0] app_name = first_result.get_app_name() first_result.tap_install_button() # Confirm the installation and wait for the app icon to be present confirm_install = ConfirmInstall(self.marionette) confirm_install.tap_confirm() self.assertEqual(self.apps.displayed_app.name, 'Marketplace') self.device.touch_home_button() # Check that the icon of the app is on the homescreen homescreen = Homescreen(self.marionette) homescreen.wait_for_app_icon_present(app_name) installed_app = homescreen.installed_app(app_name) installed_app.tap_icon() Wait(self.marionette).until(lambda m: m.title == self.app_title) bingmap = self.marionette.find_element(*self._map_locator) Wait(self.marionette).until(lambda m: bingmap.is_displayed()) time.sleep(self.draw_wait_time) self.take_screenshot() # once the map is completely loaded, use the UI to render different views # zoom in self.marionette.find_element(*self._zoom_in_locator).tap() time.sleep(self.draw_wait_time) self.take_screenshot() self.marionette.find_element(*self._zoom_in_locator).tap() time.sleep(self.draw_wait_time) self.take_screenshot() self.marionette.find_element(*self._zoom_in_locator).tap() time.sleep(self.draw_wait_time) self.take_screenshot() # move around self.scroll(self._map_locator, 'right', 100) time.sleep(self.draw_wait_time) self.take_screenshot() self.scroll(self._map_locator, 'down', 100) time.sleep(self.draw_wait_time) self.take_screenshot() # zoom out self.marionette.find_element(*self._zoom_out_locator).tap() time.sleep(self.draw_wait_time) self.take_screenshot() self.marionette.find_element(*self._zoom_out_locator).tap() time.sleep(self.draw_wait_time) self.take_screenshot() self.marionette.find_element(*self._zoom_out_locator).tap() time.sleep(self.draw_wait_time) self.take_screenshot()
class TestMarketplaceFeedback(GaiaTestCase): MARKETPLACE_DEV_NAME = 'Marketplace Dev' feedback_submitted_message = u'Feedback submitted. Thanks!' test_comment = 'This is a test comment.' def setUp(self): GaiaTestCase.setUp(self) self.connect_to_network() self.install_marketplace() def test_marketplace_feedback_anonymous(self): # launch marketplace dev and go to marketplace self.marketplace = Marketplace(self.marionette, self.MARKETPLACE_DEV_NAME) self.marketplace.launch() # wait for settings button to come out self.marketplace.wait_for_setting_displayed() settings = self.marketplace.tap_settings() self.marketplace.select_setting_feedback() # enter and submit your feedback self.marketplace.enter_feedback(self.test_comment) self.marketplace.submit_feedback() # catch the notification self.marketplace.wait_for_notification_message_displayed() message_content = self.marketplace.notification_message # verify if the notification is right self.assertEqual(message_content, self.feedback_submitted_message)
def tap_back(self): self.marionette.find_element(*self._back_button_locator).tap() from gaiatest.apps.marketplace.app import Marketplace return Marketplace(self.marionette)
marketplace_url = 'https://marketplace-dev.allizom.org/' if args.app_url: args.browser = True marketplace_url = args.app_url # apps.kill_all() if args.browser: browser = Browser(mc) browser.launch() browser.go_to_url(marketplace_url) browser.switch_to_content() browser.wait_for_element_not_displayed(*_loading_fragment_locator) marketplace = Marketplace(mc, marketplace_app) if not args.browser: try: marketplace.launch() except AssertionError: e = ('Marketplace Dev app is not installed. Install it using ' 'install_mkt --dev or use --browser to install apps ' 'from the browser directly.') args.error(e) if args.prod: marketplace.switch_to_marketplace_frame() if not args.app_url: try: