diff --git a/data/marketplace_jobs_results.json b/data/marketplace_jobs_results.json index e5f069165..aa7276889 100644 --- a/data/marketplace_jobs_results.json +++ b/data/marketplace_jobs_results.json @@ -1 +1 @@ -{"last_updated": "2014-11-09 23:45:03.565168", "results": [{"group": "Android", "test_results": [{"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_reviews/TestReviews/test_that_after_viewing_reviews_clicking_back_goes_to_app_page/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_after_viewing_reviews_clicking_back_goes_to_app_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_that_searching_with_empty_field_returns_results/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_searching_with_empty_field_returns_results"}, {"skipped": {"jobs": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "result": "skipped", "detail": "expected test failure: Until issue https://github.com/mozilla/marketplace-tests/issues/568 is fixed"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.mobile.test_reviews/TestReviews/test_that_checks_the_addition_of_a_review/", "failed": [], "passed": [], "test_name": "test_that_checks_the_addition_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_home_page/TestHomepage/test_that_verifies_categories_menu/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_verifies_categories_menu"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.mobile.test_reviews/TestReviews/test_that_after_writing_a_review_clicking_back_goes_to_app_page/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_after_writing_a_review_clicking_back_goes_to_app_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_that_searching_returns_results/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_searching_returns_results"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_details_page/TestDetails/test_details_page_for_an_app/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_details_page_for_an_app"}, {"skipped": {"jobs": ["marketplace.prod.mobile.saucelabs"], "result": "skipped", "detail": "expected test failure: Issue 500 Login tests currently don't work on Saucelabs"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_users_account/TestAccounts/test_user_can_login_and_logout/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_user_can_login_and_logout"}, {"skipped": {"jobs": ["marketplace.prod.mobile.saucelabs"], "result": "skipped", "detail": "expected test failure: Issue 500 Login tests currently don't work on Saucelabs"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_users_account/TestAccounts/test_user_can_go_back_from_settings_page/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_user_can_go_back_from_settings_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_searching_with_no_matching_results/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_searching_with_no_matching_results"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_home_page/TestHomepage/test_switch_between_new_and_popular_tab/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_switch_between_new_and_popular_tab"}, {"skipped": {}, "all_passed": false, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_details_page/TestDetails/test_reviews_section/", "failed": [{"jobs": ["marketplace.stage.mobile.saucelabs"], "result": "failure", "detail": "test failure: self = \nmozwebqa = \n\n @pytest.mark.nondestructive\n def test_reviews_section(self, mozwebqa):\n \"\"\"https://moztrap.mozilla.org/runtests/run/243/env/112/ - Verify details page for an app - Reviews section\"\"\"\n home_page = Home(mozwebqa)\n home_page.go_to_homepage()\n \n # click first app and load its Details Page\n search_term = self._take_first_popular_app_name(mozwebqa)\n details_page = home_page.search_and_click_on_app(search_term)\n \n # This takes the number of reviews on the details page and based on that number it treats 3 different scenarios:\n # when the app has reviews, when it has 1 review and when the app isn't rated.\n if details_page.is_app_rated:\n if details_page.reviews_count >= 2:\n if len(details_page.reviews) == 2:\n for review in details_page.reviews:\n Assert.true(review.is_visible)\n elif details_page.reviews_count == 1:\n Assert.true(details_page.reviews[0].is_visible)\n else:\n Assert.equal(details_page.app_not_rated_text, 'App not yet rated')\n \n Assert.true(details_page.is_write_a_review_button_visible)\n \n for support_button in details_page.support_buttons:\n> Assert.true(support_button.is_visible)\n\ntests/mobile/test_details_page.py:67: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = , first = False, msg = None\n\n @classmethod\n def true(self, first, msg=None):\n \"\"\"\n Asserts that what is given is equal to True\n \n :Args:\n - First object to be tested\n - Message that will be printed if it fails\n \"\"\"\n \n> assert bool(first) is True, msg\nE AssertionError: None\n\n.env/lib/python2.7/site-packages/unittestzero.py:79: AssertionError"}], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs"], "test_name": "test_reviews_section"}, {"skipped": {"jobs": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "result": "skipped", "detail": "condition: True: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.mobile.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: condition: True"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_that_verifies_the_search_suggestions_list_under_the_search_field/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_search_suggestions_list_under_the_search_field"}]}, {"group": "Firefox OS", "test_results": [{"skipped": {}, "all_passed": false, "environments": ["unknown"], "path_to_result": "test_marketplace_add_review/TestMarketplaceAddReview/test_add_review/", "failed": [{"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "error", "detail": "test error: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 163, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_add_review.py\", line 23, in test_add_review\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}], "passed": [], "test_name": "test_add_review"}, {"skipped": {"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "skipped", "detail": "test skipped: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 158, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_search_and_install_app.py\", line 27, in test_search_and_install_app\n self.app_name = marketplace.popular_apps[0].name\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 87, in popular_apps\n self.show_popular_apps()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 128, in show_popular_apps\n self.marionette.find_element(*self._popular_apps_tab_locator).tap()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette.py\", line 1183, in find_element\n response = self._send_message('findElement', 'value', **kwargs)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette.py\", line 612, in _send_message\n self._handle_error(response)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette.py\", line 633, in _handle_error\n raise NoSuchElementException(message=message, status=status, stacktrace=stacktrace)\nNoSuchElementException: NoSuchElementException: Unable to locate element: #gallery .tabs a:nth-child(1)\n"}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_search_and_install_app/TestSearchMarketplaceAndInstallApp/test_search_and_install_app/", "failed": [], "passed": [], "test_name": "test_search_and_install_app"}, {"skipped": {}, "all_passed": false, "environments": ["unknown"], "path_to_result": "test_marketplace_feedback_login/TestMarketplaceFeedback/test_marketplace_feedback_user/", "failed": [{"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "error", "detail": "test error: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 163, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_feedback_login.py\", line 21, in test_marketplace_feedback_user\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}], "passed": [], "test_name": "test_marketplace_feedback_user"}, {"skipped": {}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_feedback_anonymous/TestMarketplaceFeedback/test_marketplace_feedback_anonymous/", "failed": [], "passed": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "test_name": "test_marketplace_feedback_anonymous"}, {"skipped": {}, "all_passed": false, "environments": ["unknown"], "path_to_result": "test_marketplace_login/TestMarketplaceLogin/test_login_marketplace/", "failed": [{"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "error", "detail": "test error: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 163, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_login.py\", line 26, in test_login_marketplace\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}], "passed": [], "test_name": "test_login_marketplace"}, {"skipped": {}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_without_connectivity/TestMarketplaceWithoutConnectivity/test_marketplace_without_connectivity/", "failed": [], "passed": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "test_name": "test_marketplace_without_connectivity"}, {"skipped": {"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "skipped", "detail": "test skipped: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 158, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_purchase_app.py\", line 28, in test_purchase_app\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_purchase_app/TestMarketplacePurchaseApp/test_purchase_app/", "failed": [], "passed": [], "test_name": "test_purchase_app"}, {"skipped": {}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_search_for_paid_app/TestSearchMarketplacePaidApp/test_search_paid_app/", "failed": [], "passed": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "test_name": "test_search_paid_app"}, {"skipped": {"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "skipped", "detail": "test skipped: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 158, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_create_confirm_pin.py\", line 27, in test_create_confirm_pin\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_create_confirm_pin/TestMarketplaceCreateConfirmPin/test_create_confirm_pin/", "failed": [], "passed": [], "test_name": "test_create_confirm_pin"}]}, {"group": "Desktop", "test_results": [{"skipped": {}, "all_passed": false, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_that_application_page_contains_proper_objects/", "failed": [{"jobs": ["marketplace.stage.saucelabs"], "result": "failure", "detail": "test failure: self = \nmozwebqa = \n\n @pytest.mark.nondestructive\n def test_that_application_page_contains_proper_objects(self, mozwebqa):\n \n home_page = Home(mozwebqa)\n home_page.go_to_homepage()\n \n Assert.true(home_page.is_the_current_page)\n \n search_term = self._take_first_new_app_name(mozwebqa)\n details_page = home_page.header.search_and_click_on_app(search_term)\n \n Assert.true(details_page.is_the_current_page)\n \n Assert.equal(details_page.app_name, search_term)\n \n # Check the application icon\n Assert.true(details_page.is_image_visible)\n \n # Check application title\n Assert.equal(details_page.name, details_page.app_name)\n \n # Check Application Developer username\n Assert.true(details_page.is_app_dev_username_visible)\n \n # Check the install/purchase button\n Assert.true(details_page.is_install_button_visible)\n \n # Check the application description\n Assert.true(details_page.is_application_description_visible)\n \n # Check the image preview section of the application\n Assert.true(details_page.is_image_preview_section_visible)\n \n # Check if the support email link is visible\n> Assert.true(details_page.is_support_email_visible)\n\ntests/desktop/consumer_pages/test_details_page.py:51: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = , first = False, msg = None\n\n @classmethod\n def true(self, first, msg=None):\n \"\"\"\n Asserts that what is given is equal to True\n \n :Args:\n - First object to be tested\n - Message that will be printed if it fails\n \"\"\"\n \n> assert bool(first) is True, msg\nE AssertionError: None\n\n.env/lib/python2.7/site-packages/unittestzero.py:79: AssertionError"}], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.prod.saucelabs"], "test_name": "test_that_application_page_contains_proper_objects"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_the_search_tag_is_present_in_the_search_results/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_the_search_tag_is_present_in_the_search_results"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_apps_are_sorted_by_date/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_apps_are_sorted_by_date"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_from_my_apps/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_from_my_apps"}, {"skipped": {}, "all_passed": false, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub_submit_apps/TestDeveloperHubSubmitApps/test_hosted_app_submission/", "failed": [{"jobs": ["marketplace.dev.developer_hub"], "result": "error", "detail": "test setup failure: request = >\n\n @pytest.fixture(scope='function')\n def mozwebqa_devhub_logged_in(request):\n from pages.desktop.developer_hub.home import Home\n mozwebqa = request.getfuncargvalue('mozwebqa')\n dev_home = Home(mozwebqa)\n> dev_home.go_to_developers_homepage()\n\nconftest.py:18: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \n\n def go_to_developers_homepage(self):\n self.maximize_window()\n> self.selenium.get(\"%s/developers/\" % self.base_url)\n\npages/desktop/developer_hub/home.py:20: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nurl = 'https://marketplace-dev.allizom.org/developers/'\n\n def get(self, url):\n \"\"\"\n Loads a web page in the current browser session.\n \"\"\"\n> self.execute(Command.GET, {'url': url})\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:185: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \ndriver_command = 'get'\nparams = {'sessionId': u'cfa1721d-7471-4ffe-9d72-184c4e4cd514', 'url': 'https://marketplace-dev.allizom.org/developers/'}\n\n def execute(self, driver_command, params=None):\n \"\"\"\n Sends a command to be executed by a command.CommandExecutor.\n \n :Args:\n - driver_command: The name of the command to execute as a string.\n - params: A dictionary of named parameters to send with the command.\n \n :Returns:\n The command's JSON response loaded into a dictionary object.\n \"\"\"\n if self.session_id is not None:\n if not params:\n params = {'sessionId': self.session_id}\n elif 'sessionId' not in params:\n params['sessionId'] = self.session_id\n \n params = self._wrap_value(params)\n response = self.command_executor.execute(driver_command, params)\n if response:\n> self.error_handler.check_response(response)\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:173: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nresponse = {u'class': u'org.openqa.selenium.remote.Response', u'hCode': 12344104, u'sessionId': u'cfa1721d-7471-4ffe-9d72-184c4e4cd514', u'state': u'unhandled error', ...}\n\n def check_response(self, response):\n \"\"\"\n Checks that a JSON response from the WebDriver does not have an error.\n \n :Args:\n - response - The JSON response from the WebDriver server as a dictionary\n object.\n \n :Raises: If the response contains an error message.\n \"\"\"\n status = response['status']\n if status == ErrorCode.SUCCESS:\n return\n exception_class = ErrorInResponseException\n if status in ErrorCode.NO_SUCH_ELEMENT:\n exception_class = NoSuchElementException\n elif status in ErrorCode.NO_SUCH_FRAME:\n exception_class = NoSuchFrameException\n elif status in ErrorCode.NO_SUCH_WINDOW:\n exception_class = NoSuchWindowException\n elif status in ErrorCode.STALE_ELEMENT_REFERENCE:\n exception_class = StaleElementReferenceException\n elif status in ErrorCode.ELEMENT_NOT_VISIBLE:\n exception_class = ElementNotVisibleException\n elif status in ErrorCode.INVALID_ELEMENT_STATE:\n exception_class = InvalidElementStateException\n elif status in ErrorCode.INVALID_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:\n exception_class = InvalidSelectorException\n elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:\n exception_class = ElementNotSelectableException\n elif status in ErrorCode.INVALID_COOKIE_DOMAIN:\n exception_class = WebDriverException\n elif status in ErrorCode.UNABLE_TO_SET_COOKIE:\n exception_class = WebDriverException\n elif status in ErrorCode.TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.SCRIPT_TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.UNKNOWN_ERROR:\n exception_class = WebDriverException\n elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:\n exception_class = UnexpectedAlertPresentException\n elif status in ErrorCode.NO_ALERT_OPEN:\n exception_class = NoAlertPresentException\n elif status in ErrorCode.IME_NOT_AVAILABLE:\n exception_class = ImeNotAvailableException\n elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:\n exception_class = ImeActivationFailedException\n elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:\n exception_class = MoveTargetOutOfBoundsException\n else:\n exception_class = WebDriverException\n value = response['value']\n if isinstance(value, basestring):\n if exception_class == ErrorInResponseException:\n raise exception_class(response, value)\n raise exception_class(value)\n message = ''\n if 'message' in value:\n message = value['message']\n \n screen = None\n if 'screen' in value:\n screen = value['screen']\n \n stacktrace = None\n if 'stackTrace' in value and value['stackTrace']:\n stacktrace = []\n try:\n for frame in value['stackTrace']:\n line = self._value_or_default(frame, 'lineNumber', '')\n file = self._value_or_default(frame, 'fileName', '')\n if line:\n file = \"%s:%s\" % (file, line)\n meth = self._value_or_default(frame, 'methodName', '')\n if 'className' in frame:\n meth = \"%s.%s\" % (frame['className'], meth)\n msg = \" at %s (%s)\"\n msg = msg % (meth, file)\n stacktrace.append(msg)\n except TypeError:\n pass\n if exception_class == ErrorInResponseException:\n raise exception_class(response, message)\n elif exception_class == UnexpectedAlertPresentException and 'alert' in value:\n raise exception_class(message, screen, stacktrace, value['alert'].get('text'))\n> raise exception_class(message, screen, stacktrace)\nE WebDriverException: Message: Error communicating with the remote browser. It may have died.\nE Build info: version: '2.43.0', revision: '597b76b', time: '2014-09-09 20:52:14'\nE System info: host: 'qa1-win7', ip: '10.22.73.149', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_55'\nE Driver info: driver.version: EventFiringWebDriver\nE Stacktrace:\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py:166: WebDriverException"}], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_hosted_app_submission"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_editing_basic_info_for_a_free_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_editing_basic_info_for_a_free_app"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "result": "skipped", "detail": "We currently don't have the option for changing the language in Fireplace: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/tests/desktop/consumer_pages/test_users_account.py:112: Skipped: We currently don't have the option for changing the language in Fireplace"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_that_checks_changing_language/", "failed": [], "passed": [], "test_name": "test_that_checks_changing_language"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_clicking_on_content_rating/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_clicking_on_content_rating"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_that_checks_the_deletion_of_a_review/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_checks_the_deletion_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_editing_user_profile/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_editing_user_profile"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_add_review_after_sign_in_from_details_page/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_add_review_after_sign_in_from_details_page"}, {"skipped": {}, "all_passed": true, "environments": ["prod"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_in_consumer_pages/", "failed": [], "passed": ["marketplace.prod", "marketplace.prod.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_in_consumer_pages"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_that_reports_abuse_as_anonymous_user/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_reports_abuse_as_anonymous_user"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_api_submit/TestAPI/test_assert_that_a_app_can_be_added_and_deleted_via_the_api/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_assert_that_a_app_can_be_added_and_deleted_via_the_api"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_that_header_has_expected_items/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_header_has_expected_items"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_a_screenshot_cannot_be_added_via_an_invalid_file_format/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_a_screenshot_cannot_be_added_via_an_invalid_file_format"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "result": "skipped", "detail": "Purchase app option is currently not available for desktop environment: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Purchase app option is currently not available for desktop environment"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_purchase_app/TestPurchaseApp/test_that_purchases_an_app_without_pre_auth_and_requests_a_refund/", "failed": [], "passed": [], "test_name": "test_that_purchases_an_app_without_pre_auth_and_requests_a_refund"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "xfail-marked test passes unexpectedly: None"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_opening_every_category_page_from_categories_menu/", "failed": [], "passed": [], "test_name": "test_opening_every_category_page_from_categories_menu"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_from_home_page/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_from_home_page"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_editing_support_information_for_a_free_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_editing_support_information_for_a_free_app"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_that_checks_the_editing_of_a_review/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_checks_the_editing_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_deletes_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_deletes_app"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_required_field_validations_on_basic_info_for_a_free_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_required_field_validations_on_basic_info_for_a_free_app"}, {"skipped": {}, "all_passed": false, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_a_screenshot_can_be_added/", "failed": [{"jobs": ["marketplace.dev.developer_hub"], "result": "error", "detail": "test setup failure: request = >\n\n @pytest.fixture(scope='function')\n def mozwebqa_devhub_logged_in(request):\n from pages.desktop.developer_hub.home import Home\n mozwebqa = request.getfuncargvalue('mozwebqa')\n dev_home = Home(mozwebqa)\n> dev_home.go_to_developers_homepage()\n\nconftest.py:18: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \n\n def go_to_developers_homepage(self):\n self.maximize_window()\n> self.selenium.get(\"%s/developers/\" % self.base_url)\n\npages/desktop/developer_hub/home.py:20: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nurl = 'https://marketplace-dev.allizom.org/developers/'\n\n def get(self, url):\n \"\"\"\n Loads a web page in the current browser session.\n \"\"\"\n> self.execute(Command.GET, {'url': url})\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:185: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \ndriver_command = 'get'\nparams = {'sessionId': u'57fec886-9c9f-4885-93e1-f603d6bbf138', 'url': 'https://marketplace-dev.allizom.org/developers/'}\n\n def execute(self, driver_command, params=None):\n \"\"\"\n Sends a command to be executed by a command.CommandExecutor.\n \n :Args:\n - driver_command: The name of the command to execute as a string.\n - params: A dictionary of named parameters to send with the command.\n \n :Returns:\n The command's JSON response loaded into a dictionary object.\n \"\"\"\n if self.session_id is not None:\n if not params:\n params = {'sessionId': self.session_id}\n elif 'sessionId' not in params:\n params['sessionId'] = self.session_id\n \n params = self._wrap_value(params)\n response = self.command_executor.execute(driver_command, params)\n if response:\n> self.error_handler.check_response(response)\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:173: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nresponse = {u'class': u'org.openqa.selenium.remote.Response', u'hCode': 13914694, u'sessionId': u'57fec886-9c9f-4885-93e1-f603d6bbf138', u'state': u'unhandled error', ...}\n\n def check_response(self, response):\n \"\"\"\n Checks that a JSON response from the WebDriver does not have an error.\n \n :Args:\n - response - The JSON response from the WebDriver server as a dictionary\n object.\n \n :Raises: If the response contains an error message.\n \"\"\"\n status = response['status']\n if status == ErrorCode.SUCCESS:\n return\n exception_class = ErrorInResponseException\n if status in ErrorCode.NO_SUCH_ELEMENT:\n exception_class = NoSuchElementException\n elif status in ErrorCode.NO_SUCH_FRAME:\n exception_class = NoSuchFrameException\n elif status in ErrorCode.NO_SUCH_WINDOW:\n exception_class = NoSuchWindowException\n elif status in ErrorCode.STALE_ELEMENT_REFERENCE:\n exception_class = StaleElementReferenceException\n elif status in ErrorCode.ELEMENT_NOT_VISIBLE:\n exception_class = ElementNotVisibleException\n elif status in ErrorCode.INVALID_ELEMENT_STATE:\n exception_class = InvalidElementStateException\n elif status in ErrorCode.INVALID_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:\n exception_class = InvalidSelectorException\n elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:\n exception_class = ElementNotSelectableException\n elif status in ErrorCode.INVALID_COOKIE_DOMAIN:\n exception_class = WebDriverException\n elif status in ErrorCode.UNABLE_TO_SET_COOKIE:\n exception_class = WebDriverException\n elif status in ErrorCode.TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.SCRIPT_TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.UNKNOWN_ERROR:\n exception_class = WebDriverException\n elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:\n exception_class = UnexpectedAlertPresentException\n elif status in ErrorCode.NO_ALERT_OPEN:\n exception_class = NoAlertPresentException\n elif status in ErrorCode.IME_NOT_AVAILABLE:\n exception_class = ImeNotAvailableException\n elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:\n exception_class = ImeActivationFailedException\n elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:\n exception_class = MoveTargetOutOfBoundsException\n else:\n exception_class = WebDriverException\n value = response['value']\n if isinstance(value, basestring):\n if exception_class == ErrorInResponseException:\n raise exception_class(response, value)\n raise exception_class(value)\n message = ''\n if 'message' in value:\n message = value['message']\n \n screen = None\n if 'screen' in value:\n screen = value['screen']\n \n stacktrace = None\n if 'stackTrace' in value and value['stackTrace']:\n stacktrace = []\n try:\n for frame in value['stackTrace']:\n line = self._value_or_default(frame, 'lineNumber', '')\n file = self._value_or_default(frame, 'fileName', '')\n if line:\n file = \"%s:%s\" % (file, line)\n meth = self._value_or_default(frame, 'methodName', '')\n if 'className' in frame:\n meth = \"%s.%s\" % (frame['className'], meth)\n msg = \" at %s (%s)\"\n msg = msg % (meth, file)\n stacktrace.append(msg)\n except TypeError:\n pass\n if exception_class == ErrorInResponseException:\n raise exception_class(response, message)\n elif exception_class == UnexpectedAlertPresentException and 'alert' in value:\n raise exception_class(message, screen, stacktrace, value['alert'].get('text'))\n> raise exception_class(message, screen, stacktrace)\nE WebDriverException: Message: Error communicating with the remote browser. It may have died.\nE Build info: version: '2.43.0', revision: '597b76b', time: '2014-09-09 20:52:14'\nE System info: host: 'qa1-win7', ip: '10.22.73.149', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_55'\nE Driver info: driver.version: EventFiringWebDriver\nE Stacktrace:\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py:166: WebDriverException"}], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_a_screenshot_can_be_added"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_from_settings_page/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_from_settings_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_checks_search_with_foreign_characters/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_checks_search_with_foreign_characters"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "result": "skipped", "detail": "expected test failure: Need to find a way to create a new account with Fxa"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_create_new_user/", "failed": [], "passed": [], "test_name": "test_create_new_user"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_required_field_validations_on_device_types_for_hosted_apps/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_required_field_validations_on_device_types_for_hosted_apps"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_searching_with_empty_field_using_submit_returns_results/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_searching_with_empty_field_using_submit_returns_results"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "Sort not available yet.: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Sort not available yet."}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_verifies_the_sort_region_from_search_results[Rating]/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_sort_region_from_search_results[Rating]"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_that_reports_abuse_as_signed_in_user/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_reports_abuse_as_signed_in_user"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_an_icon_cannot_be_added_via_an_invalid_file_format/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_an_icon_cannot_be_added_via_an_invalid_file_format"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_that_checks_the_addition_of_a_review/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_checks_the_addition_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub_submit_apps/TestDeveloperHubSubmitApps/test_packaged_app_submission/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_packaged_app_submission"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_that_verifies_nav_menu_tabs/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_verifies_nav_menu_tabs"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_that_verifies_categories_menu/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_verifies_categories_menu"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "Sort not available yet.: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Sort not available yet."}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_verifies_the_sort_region_from_search_results[Relevancy]/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_sort_region_from_search_results[Relevancy]"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_apps_are_sorted_by_name/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_apps_are_sorted_by_name"}, {"skipped": {"jobs": ["marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "result": "skipped", "detail": "expected test failure: Bug 1053754 - [dev] traceback on setting up payments account for an app"}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub_submit_apps/TestDeveloperHubSubmitApps/test_hosted_paid_app_submission/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs"], "test_name": "test_hosted_paid_app_submission"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "Search suggestions not available yet.: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Search suggestions not available yet."}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_verifies_the_search_suggestions_list_under_the_search_field/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_search_suggestions_list_under_the_search_field"}]}]} \ No newline at end of file +{"last_updated": "2014-11-10 00:00:03.874480", "results": [{"group": "Android", "test_results": [{"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_reviews/TestReviews/test_that_after_viewing_reviews_clicking_back_goes_to_app_page/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_after_viewing_reviews_clicking_back_goes_to_app_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_that_searching_with_empty_field_returns_results/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_searching_with_empty_field_returns_results"}, {"skipped": {"jobs": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "result": "skipped", "detail": "expected test failure: Until issue https://github.com/mozilla/marketplace-tests/issues/568 is fixed"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.mobile.test_reviews/TestReviews/test_that_checks_the_addition_of_a_review/", "failed": [], "passed": [], "test_name": "test_that_checks_the_addition_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_home_page/TestHomepage/test_that_verifies_categories_menu/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_verifies_categories_menu"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.mobile.test_reviews/TestReviews/test_that_after_writing_a_review_clicking_back_goes_to_app_page/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_after_writing_a_review_clicking_back_goes_to_app_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_that_searching_returns_results/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_that_searching_returns_results"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_details_page/TestDetails/test_details_page_for_an_app/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_details_page_for_an_app"}, {"skipped": {"jobs": ["marketplace.prod.mobile.saucelabs"], "result": "skipped", "detail": "expected test failure: Issue 500 Login tests currently don't work on Saucelabs"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_users_account/TestAccounts/test_user_can_login_and_logout/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_user_can_login_and_logout"}, {"skipped": {"jobs": ["marketplace.prod.mobile.saucelabs"], "result": "skipped", "detail": "expected test failure: Issue 500 Login tests currently don't work on Saucelabs"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_users_account/TestAccounts/test_user_can_go_back_from_settings_page/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_user_can_go_back_from_settings_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_searching_with_no_matching_results/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_searching_with_no_matching_results"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_home_page/TestHomepage/test_switch_between_new_and_popular_tab/", "failed": [], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "test_name": "test_switch_between_new_and_popular_tab"}, {"skipped": {}, "all_passed": false, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_details_page/TestDetails/test_reviews_section/", "failed": [{"jobs": ["marketplace.stage.mobile.saucelabs"], "result": "failure", "detail": "test failure: self = \nmozwebqa = \n\n @pytest.mark.nondestructive\n def test_reviews_section(self, mozwebqa):\n \"\"\"https://moztrap.mozilla.org/runtests/run/243/env/112/ - Verify details page for an app - Reviews section\"\"\"\n home_page = Home(mozwebqa)\n home_page.go_to_homepage()\n \n # click first app and load its Details Page\n search_term = self._take_first_popular_app_name(mozwebqa)\n details_page = home_page.search_and_click_on_app(search_term)\n \n # This takes the number of reviews on the details page and based on that number it treats 3 different scenarios:\n # when the app has reviews, when it has 1 review and when the app isn't rated.\n if details_page.is_app_rated:\n if details_page.reviews_count >= 2:\n if len(details_page.reviews) == 2:\n for review in details_page.reviews:\n Assert.true(review.is_visible)\n elif details_page.reviews_count == 1:\n Assert.true(details_page.reviews[0].is_visible)\n else:\n Assert.equal(details_page.app_not_rated_text, 'App not yet rated')\n \n Assert.true(details_page.is_write_a_review_button_visible)\n \n for support_button in details_page.support_buttons:\n> Assert.true(support_button.is_visible)\n\ntests/mobile/test_details_page.py:67: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = , first = False, msg = None\n\n @classmethod\n def true(self, first, msg=None):\n \"\"\"\n Asserts that what is given is equal to True\n \n :Args:\n - First object to be tested\n - Message that will be printed if it fails\n \"\"\"\n \n> assert bool(first) is True, msg\nE AssertionError: None\n\n.env/lib/python2.7/site-packages/unittestzero.py:79: AssertionError"}], "passed": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs"], "test_name": "test_reviews_section"}, {"skipped": {"jobs": ["marketplace.dev.mobile.saucelabs", "marketplace.prod.mobile.saucelabs", "marketplace.stage.mobile.saucelabs"], "result": "skipped", "detail": "condition: True: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.mobile.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: condition: True"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.mobile.test_search/TestSearch/test_that_verifies_the_search_suggestions_list_under_the_search_field/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_search_suggestions_list_under_the_search_field"}]}, {"group": "Firefox OS", "test_results": [{"skipped": {}, "all_passed": false, "environments": ["unknown"], "path_to_result": "test_marketplace_add_review/TestMarketplaceAddReview/test_add_review/", "failed": [{"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "error", "detail": "test error: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 163, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_add_review.py\", line 23, in test_add_review\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}], "passed": [], "test_name": "test_add_review"}, {"skipped": {"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "skipped", "detail": "test skipped: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 158, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_search_and_install_app.py\", line 27, in test_search_and_install_app\n self.app_name = marketplace.popular_apps[0].name\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 87, in popular_apps\n self.show_popular_apps()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 128, in show_popular_apps\n self.marionette.find_element(*self._popular_apps_tab_locator).tap()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette.py\", line 1183, in find_element\n response = self._send_message('findElement', 'value', **kwargs)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette.py\", line 612, in _send_message\n self._handle_error(response)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette.py\", line 633, in _handle_error\n raise NoSuchElementException(message=message, status=status, stacktrace=stacktrace)\nNoSuchElementException: NoSuchElementException: Unable to locate element: #gallery .tabs a:nth-child(1)\n"}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_search_and_install_app/TestSearchMarketplaceAndInstallApp/test_search_and_install_app/", "failed": [], "passed": [], "test_name": "test_search_and_install_app"}, {"skipped": {}, "all_passed": false, "environments": ["unknown"], "path_to_result": "test_marketplace_feedback_login/TestMarketplaceFeedback/test_marketplace_feedback_user/", "failed": [{"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "error", "detail": "test error: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 163, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_feedback_login.py\", line 21, in test_marketplace_feedback_user\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}], "passed": [], "test_name": "test_marketplace_feedback_user"}, {"skipped": {}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_feedback_anonymous/TestMarketplaceFeedback/test_marketplace_feedback_anonymous/", "failed": [], "passed": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "test_name": "test_marketplace_feedback_anonymous"}, {"skipped": {}, "all_passed": false, "environments": ["unknown"], "path_to_result": "test_marketplace_login/TestMarketplaceLogin/test_login_marketplace/", "failed": [{"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "error", "detail": "test error: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 163, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_login.py\", line 26, in test_login_marketplace\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}], "passed": [], "test_name": "test_login_marketplace"}, {"skipped": {}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_without_connectivity/TestMarketplaceWithoutConnectivity/test_marketplace_without_connectivity/", "failed": [], "passed": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "test_name": "test_marketplace_without_connectivity"}, {"skipped": {"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "skipped", "detail": "test skipped: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 158, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_purchase_app.py\", line 28, in test_purchase_app\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_purchase_app/TestMarketplacePurchaseApp/test_purchase_app/", "failed": [], "passed": [], "test_name": "test_purchase_app"}, {"skipped": {}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_search_for_paid_app/TestSearchMarketplacePaidApp/test_search_paid_app/", "failed": [], "passed": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "test_name": "test_search_paid_app"}, {"skipped": {"jobs": ["b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace"], "result": "skipped", "detail": "test skipped: Traceback (most recent call last):\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/marionette_client_mozilla_b2g28_v1_3-0.2-py2.7.egg/marionette/marionette_test.py\", line 158, in run\n testMethod()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/tests/test_marketplace_create_confirm_pin.py\", line 27, in test_create_confirm_pin\n marketplace.login(user)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/app.py\", line 63, in login\n persona = settings.tap_sign_in()\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/marketplace/regions/settings.py\", line 33, in tap_sign_in\n return Persona(self.marionette)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/marketplacetests/persona/app.py\", line 33, in __init__\n self.wait_for_element_present(*self._persona_frame_locator)\n File \"/var/jenkins/workspace/b2g.hamachi.mozilla-b2g28_v1_3.v1.3.marketplace/.env/local/lib/python2.7/site-packages/gaiatest_v1.3-0.2-py2.7.egg/gaiatest/apps/base.py\", line 40, in wait_for_element_present\n 'Element %s not found before timeout' % locator)\nTimeoutException: TimeoutException: Element iframe.screen[data-url*='persona.org/sign_in#NATIVE'] not found before timeout\n"}, "all_passed": true, "environments": ["unknown"], "path_to_result": "test_marketplace_create_confirm_pin/TestMarketplaceCreateConfirmPin/test_create_confirm_pin/", "failed": [], "passed": [], "test_name": "test_create_confirm_pin"}]}, {"group": "Desktop", "test_results": [{"skipped": {}, "all_passed": false, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_that_application_page_contains_proper_objects/", "failed": [{"jobs": ["marketplace.stage.saucelabs"], "result": "failure", "detail": "test failure: self = \nmozwebqa = \n\n @pytest.mark.nondestructive\n def test_that_application_page_contains_proper_objects(self, mozwebqa):\n \n home_page = Home(mozwebqa)\n home_page.go_to_homepage()\n \n Assert.true(home_page.is_the_current_page)\n \n search_term = self._take_first_new_app_name(mozwebqa)\n details_page = home_page.header.search_and_click_on_app(search_term)\n \n Assert.true(details_page.is_the_current_page)\n \n Assert.equal(details_page.app_name, search_term)\n \n # Check the application icon\n Assert.true(details_page.is_image_visible)\n \n # Check application title\n Assert.equal(details_page.name, details_page.app_name)\n \n # Check Application Developer username\n Assert.true(details_page.is_app_dev_username_visible)\n \n # Check the install/purchase button\n Assert.true(details_page.is_install_button_visible)\n \n # Check the application description\n Assert.true(details_page.is_application_description_visible)\n \n # Check the image preview section of the application\n Assert.true(details_page.is_image_preview_section_visible)\n \n # Check if the support email link is visible\n> Assert.true(details_page.is_support_email_visible)\n\ntests/desktop/consumer_pages/test_details_page.py:51: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = , first = False, msg = None\n\n @classmethod\n def true(self, first, msg=None):\n \"\"\"\n Asserts that what is given is equal to True\n \n :Args:\n - First object to be tested\n - Message that will be printed if it fails\n \"\"\"\n \n> assert bool(first) is True, msg\nE AssertionError: None\n\n.env/lib/python2.7/site-packages/unittestzero.py:79: AssertionError"}], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.prod.saucelabs"], "test_name": "test_that_application_page_contains_proper_objects"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_the_search_tag_is_present_in_the_search_results/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_the_search_tag_is_present_in_the_search_results"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_apps_are_sorted_by_date/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_apps_are_sorted_by_date"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_from_my_apps/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_from_my_apps"}, {"skipped": {}, "all_passed": false, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub_submit_apps/TestDeveloperHubSubmitApps/test_hosted_app_submission/", "failed": [{"jobs": ["marketplace.dev.developer_hub"], "result": "error", "detail": "test setup failure: request = >\n\n @pytest.fixture(scope='function')\n def mozwebqa_devhub_logged_in(request):\n from pages.desktop.developer_hub.home import Home\n mozwebqa = request.getfuncargvalue('mozwebqa')\n dev_home = Home(mozwebqa)\n> dev_home.go_to_developers_homepage()\n\nconftest.py:18: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \n\n def go_to_developers_homepage(self):\n self.maximize_window()\n> self.selenium.get(\"%s/developers/\" % self.base_url)\n\npages/desktop/developer_hub/home.py:20: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nurl = 'https://marketplace-dev.allizom.org/developers/'\n\n def get(self, url):\n \"\"\"\n Loads a web page in the current browser session.\n \"\"\"\n> self.execute(Command.GET, {'url': url})\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:185: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \ndriver_command = 'get'\nparams = {'sessionId': u'cfa1721d-7471-4ffe-9d72-184c4e4cd514', 'url': 'https://marketplace-dev.allizom.org/developers/'}\n\n def execute(self, driver_command, params=None):\n \"\"\"\n Sends a command to be executed by a command.CommandExecutor.\n \n :Args:\n - driver_command: The name of the command to execute as a string.\n - params: A dictionary of named parameters to send with the command.\n \n :Returns:\n The command's JSON response loaded into a dictionary object.\n \"\"\"\n if self.session_id is not None:\n if not params:\n params = {'sessionId': self.session_id}\n elif 'sessionId' not in params:\n params['sessionId'] = self.session_id\n \n params = self._wrap_value(params)\n response = self.command_executor.execute(driver_command, params)\n if response:\n> self.error_handler.check_response(response)\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:173: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nresponse = {u'class': u'org.openqa.selenium.remote.Response', u'hCode': 12344104, u'sessionId': u'cfa1721d-7471-4ffe-9d72-184c4e4cd514', u'state': u'unhandled error', ...}\n\n def check_response(self, response):\n \"\"\"\n Checks that a JSON response from the WebDriver does not have an error.\n \n :Args:\n - response - The JSON response from the WebDriver server as a dictionary\n object.\n \n :Raises: If the response contains an error message.\n \"\"\"\n status = response['status']\n if status == ErrorCode.SUCCESS:\n return\n exception_class = ErrorInResponseException\n if status in ErrorCode.NO_SUCH_ELEMENT:\n exception_class = NoSuchElementException\n elif status in ErrorCode.NO_SUCH_FRAME:\n exception_class = NoSuchFrameException\n elif status in ErrorCode.NO_SUCH_WINDOW:\n exception_class = NoSuchWindowException\n elif status in ErrorCode.STALE_ELEMENT_REFERENCE:\n exception_class = StaleElementReferenceException\n elif status in ErrorCode.ELEMENT_NOT_VISIBLE:\n exception_class = ElementNotVisibleException\n elif status in ErrorCode.INVALID_ELEMENT_STATE:\n exception_class = InvalidElementStateException\n elif status in ErrorCode.INVALID_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:\n exception_class = InvalidSelectorException\n elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:\n exception_class = ElementNotSelectableException\n elif status in ErrorCode.INVALID_COOKIE_DOMAIN:\n exception_class = WebDriverException\n elif status in ErrorCode.UNABLE_TO_SET_COOKIE:\n exception_class = WebDriverException\n elif status in ErrorCode.TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.SCRIPT_TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.UNKNOWN_ERROR:\n exception_class = WebDriverException\n elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:\n exception_class = UnexpectedAlertPresentException\n elif status in ErrorCode.NO_ALERT_OPEN:\n exception_class = NoAlertPresentException\n elif status in ErrorCode.IME_NOT_AVAILABLE:\n exception_class = ImeNotAvailableException\n elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:\n exception_class = ImeActivationFailedException\n elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:\n exception_class = MoveTargetOutOfBoundsException\n else:\n exception_class = WebDriverException\n value = response['value']\n if isinstance(value, basestring):\n if exception_class == ErrorInResponseException:\n raise exception_class(response, value)\n raise exception_class(value)\n message = ''\n if 'message' in value:\n message = value['message']\n \n screen = None\n if 'screen' in value:\n screen = value['screen']\n \n stacktrace = None\n if 'stackTrace' in value and value['stackTrace']:\n stacktrace = []\n try:\n for frame in value['stackTrace']:\n line = self._value_or_default(frame, 'lineNumber', '')\n file = self._value_or_default(frame, 'fileName', '')\n if line:\n file = \"%s:%s\" % (file, line)\n meth = self._value_or_default(frame, 'methodName', '')\n if 'className' in frame:\n meth = \"%s.%s\" % (frame['className'], meth)\n msg = \" at %s (%s)\"\n msg = msg % (meth, file)\n stacktrace.append(msg)\n except TypeError:\n pass\n if exception_class == ErrorInResponseException:\n raise exception_class(response, message)\n elif exception_class == UnexpectedAlertPresentException and 'alert' in value:\n raise exception_class(message, screen, stacktrace, value['alert'].get('text'))\n> raise exception_class(message, screen, stacktrace)\nE WebDriverException: Message: Error communicating with the remote browser. It may have died.\nE Build info: version: '2.43.0', revision: '597b76b', time: '2014-09-09 20:52:14'\nE System info: host: 'qa1-win7', ip: '10.22.73.149', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_55'\nE Driver info: driver.version: EventFiringWebDriver\nE Stacktrace:\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py:166: WebDriverException"}], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_hosted_app_submission"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_editing_basic_info_for_a_free_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_editing_basic_info_for_a_free_app"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "result": "skipped", "detail": "We currently don't have the option for changing the language in Fireplace: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/tests/desktop/consumer_pages/test_users_account.py:112: Skipped: We currently don't have the option for changing the language in Fireplace"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_that_checks_changing_language/", "failed": [], "passed": [], "test_name": "test_that_checks_changing_language"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_clicking_on_content_rating/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_clicking_on_content_rating"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_that_checks_the_deletion_of_a_review/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_checks_the_deletion_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_editing_user_profile/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_editing_user_profile"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_add_review_after_sign_in_from_details_page/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_add_review_after_sign_in_from_details_page"}, {"skipped": {}, "all_passed": true, "environments": ["prod"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_in_consumer_pages/", "failed": [], "passed": ["marketplace.prod", "marketplace.prod.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_in_consumer_pages"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_that_reports_abuse_as_anonymous_user/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_reports_abuse_as_anonymous_user"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_api_submit/TestAPI/test_assert_that_a_app_can_be_added_and_deleted_via_the_api/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_assert_that_a_app_can_be_added_and_deleted_via_the_api"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_that_header_has_expected_items/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_header_has_expected_items"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_a_screenshot_cannot_be_added_via_an_invalid_file_format/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_a_screenshot_cannot_be_added_via_an_invalid_file_format"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "result": "skipped", "detail": "Purchase app option is currently not available for desktop environment: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Purchase app option is currently not available for desktop environment"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_purchase_app/TestPurchaseApp/test_that_purchases_an_app_without_pre_auth_and_requests_a_refund/", "failed": [], "passed": [], "test_name": "test_that_purchases_an_app_without_pre_auth_and_requests_a_refund"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "xfail-marked test passes unexpectedly: None"}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_opening_every_category_page_from_categories_menu/", "failed": [], "passed": [], "test_name": "test_opening_every_category_page_from_categories_menu"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_from_home_page/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_from_home_page"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_editing_support_information_for_a_free_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_editing_support_information_for_a_free_app"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_that_checks_the_editing_of_a_review/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_checks_the_editing_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_deletes_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_deletes_app"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_required_field_validations_on_basic_info_for_a_free_app/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_required_field_validations_on_basic_info_for_a_free_app"}, {"skipped": {}, "all_passed": false, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_a_screenshot_can_be_added/", "failed": [{"jobs": ["marketplace.dev.developer_hub"], "result": "error", "detail": "test setup failure: request = >\n\n @pytest.fixture(scope='function')\n def mozwebqa_devhub_logged_in(request):\n from pages.desktop.developer_hub.home import Home\n mozwebqa = request.getfuncargvalue('mozwebqa')\n dev_home = Home(mozwebqa)\n> dev_home.go_to_developers_homepage()\n\nconftest.py:18: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \n\n def go_to_developers_homepage(self):\n self.maximize_window()\n> self.selenium.get(\"%s/developers/\" % self.base_url)\n\npages/desktop/developer_hub/home.py:20: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nurl = 'https://marketplace-dev.allizom.org/developers/'\n\n def get(self, url):\n \"\"\"\n Loads a web page in the current browser session.\n \"\"\"\n> self.execute(Command.GET, {'url': url})\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:185: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \ndriver_command = 'get'\nparams = {'sessionId': u'57fec886-9c9f-4885-93e1-f603d6bbf138', 'url': 'https://marketplace-dev.allizom.org/developers/'}\n\n def execute(self, driver_command, params=None):\n \"\"\"\n Sends a command to be executed by a command.CommandExecutor.\n \n :Args:\n - driver_command: The name of the command to execute as a string.\n - params: A dictionary of named parameters to send with the command.\n \n :Returns:\n The command's JSON response loaded into a dictionary object.\n \"\"\"\n if self.session_id is not None:\n if not params:\n params = {'sessionId': self.session_id}\n elif 'sessionId' not in params:\n params['sessionId'] = self.session_id\n \n params = self._wrap_value(params)\n response = self.command_executor.execute(driver_command, params)\n if response:\n> self.error_handler.check_response(response)\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py:173: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nresponse = {u'class': u'org.openqa.selenium.remote.Response', u'hCode': 13914694, u'sessionId': u'57fec886-9c9f-4885-93e1-f603d6bbf138', u'state': u'unhandled error', ...}\n\n def check_response(self, response):\n \"\"\"\n Checks that a JSON response from the WebDriver does not have an error.\n \n :Args:\n - response - The JSON response from the WebDriver server as a dictionary\n object.\n \n :Raises: If the response contains an error message.\n \"\"\"\n status = response['status']\n if status == ErrorCode.SUCCESS:\n return\n exception_class = ErrorInResponseException\n if status in ErrorCode.NO_SUCH_ELEMENT:\n exception_class = NoSuchElementException\n elif status in ErrorCode.NO_SUCH_FRAME:\n exception_class = NoSuchFrameException\n elif status in ErrorCode.NO_SUCH_WINDOW:\n exception_class = NoSuchWindowException\n elif status in ErrorCode.STALE_ELEMENT_REFERENCE:\n exception_class = StaleElementReferenceException\n elif status in ErrorCode.ELEMENT_NOT_VISIBLE:\n exception_class = ElementNotVisibleException\n elif status in ErrorCode.INVALID_ELEMENT_STATE:\n exception_class = InvalidElementStateException\n elif status in ErrorCode.INVALID_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR \\\n or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:\n exception_class = InvalidSelectorException\n elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:\n exception_class = ElementNotSelectableException\n elif status in ErrorCode.INVALID_COOKIE_DOMAIN:\n exception_class = WebDriverException\n elif status in ErrorCode.UNABLE_TO_SET_COOKIE:\n exception_class = WebDriverException\n elif status in ErrorCode.TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.SCRIPT_TIMEOUT:\n exception_class = TimeoutException\n elif status in ErrorCode.UNKNOWN_ERROR:\n exception_class = WebDriverException\n elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:\n exception_class = UnexpectedAlertPresentException\n elif status in ErrorCode.NO_ALERT_OPEN:\n exception_class = NoAlertPresentException\n elif status in ErrorCode.IME_NOT_AVAILABLE:\n exception_class = ImeNotAvailableException\n elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:\n exception_class = ImeActivationFailedException\n elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:\n exception_class = MoveTargetOutOfBoundsException\n else:\n exception_class = WebDriverException\n value = response['value']\n if isinstance(value, basestring):\n if exception_class == ErrorInResponseException:\n raise exception_class(response, value)\n raise exception_class(value)\n message = ''\n if 'message' in value:\n message = value['message']\n \n screen = None\n if 'screen' in value:\n screen = value['screen']\n \n stacktrace = None\n if 'stackTrace' in value and value['stackTrace']:\n stacktrace = []\n try:\n for frame in value['stackTrace']:\n line = self._value_or_default(frame, 'lineNumber', '')\n file = self._value_or_default(frame, 'fileName', '')\n if line:\n file = \"%s:%s\" % (file, line)\n meth = self._value_or_default(frame, 'methodName', '')\n if 'className' in frame:\n meth = \"%s.%s\" % (frame['className'], meth)\n msg = \" at %s (%s)\"\n msg = msg % (meth, file)\n stacktrace.append(msg)\n except TypeError:\n pass\n if exception_class == ErrorInResponseException:\n raise exception_class(response, message)\n elif exception_class == UnexpectedAlertPresentException and 'alert' in value:\n raise exception_class(message, screen, stacktrace, value['alert'].get('text'))\n> raise exception_class(message, screen, stacktrace)\nE WebDriverException: Message: Error communicating with the remote browser. It may have died.\nE Build info: version: '2.43.0', revision: '597b76b', time: '2014-09-09 20:52:14'\nE System info: host: 'qa1-win7', ip: '10.22.73.149', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_55'\nE Driver info: driver.version: EventFiringWebDriver\nE Stacktrace:\n\n.env/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py:166: WebDriverException"}], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_a_screenshot_can_be_added"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_user_can_sign_in_and_sign_out_from_settings_page/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_user_can_sign_in_and_sign_out_from_settings_page"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_checks_search_with_foreign_characters/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_checks_search_with_foreign_characters"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "result": "skipped", "detail": "expected test failure: Need to find a way to create a new account with Fxa"}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_users_account/TestAccounts/test_create_new_user/", "failed": [], "passed": [], "test_name": "test_create_new_user"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_required_field_validations_on_device_types_for_hosted_apps/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_required_field_validations_on_device_types_for_hosted_apps"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_searching_with_empty_field_using_submit_returns_results/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_searching_with_empty_field_using_submit_returns_results"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "Sort not available yet.: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Sort not available yet."}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_verifies_the_sort_region_from_search_results[Rating]/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_sort_region_from_search_results[Rating]"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_details_page/TestDetailsPage/test_that_reports_abuse_as_signed_in_user/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_reports_abuse_as_signed_in_user"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_an_icon_cannot_be_added_via_an_invalid_file_format/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_an_icon_cannot_be_added_via_an_invalid_file_format"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_reviews/TestReviews/test_that_checks_the_addition_of_a_review/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.stage.saucelabs"], "test_name": "test_that_checks_the_addition_of_a_review"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub_submit_apps/TestDeveloperHubSubmitApps/test_packaged_app_submission/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_packaged_app_submission"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_that_verifies_nav_menu_tabs/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_verifies_nav_menu_tabs"}, {"skipped": {}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_consumers_page/TestConsumerPage/test_that_verifies_categories_menu/", "failed": [], "passed": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "test_name": "test_that_verifies_categories_menu"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "Sort not available yet.: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Sort not available yet."}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_verifies_the_sort_region_from_search_results[Relevancy]/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_sort_region_from_search_results[Relevancy]"}, {"skipped": {}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub/TestDeveloperHub/test_that_checks_apps_are_sorted_by_name/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs", "marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "test_name": "test_that_checks_apps_are_sorted_by_name"}, {"skipped": {"jobs": ["marketplace.dev.developer_hub", "marketplace.dev.developer_hub.saucelabs"], "result": "skipped", "detail": "expected test failure: Bug 1053754 - [dev] traceback on setting up payments account for an app"}, "all_passed": true, "environments": ["stage", "dev"], "path_to_result": "tests.desktop.developer_hub.test_developer_hub_submit_apps/TestDeveloperHubSubmitApps/test_hosted_paid_app_submission/", "failed": [], "passed": ["marketplace.stage.developer_hub.saucelabs"], "test_name": "test_hosted_paid_app_submission"}, {"skipped": {"jobs": ["marketplace.dev.saucelabs", "marketplace.prod", "marketplace.stage.saucelabs", "marketplace.prod.saucelabs"], "result": "skipped", "detail": "Search suggestions not available yet.: /Users/Shared/Jenkins/Home/jobs/marketplace.DEV.saucelabs/workspace/.env/lib/python2.7/site-packages/_pytest/skipping.py:120: Skipped: Search suggestions not available yet."}, "all_passed": true, "environments": ["dev", "prod", "stage"], "path_to_result": "tests.desktop.consumer_pages.test_search/TestSearching/test_that_verifies_the_search_suggestions_list_under_the_search_field/", "failed": [], "passed": [], "test_name": "test_that_verifies_the_search_suggestions_list_under_the_search_field"}]}]} \ No newline at end of file