From 64fdb9e363f26d35f0f764987fe8a3c5c8ad8d0d Mon Sep 17 00:00:00 2001 From: Otavio Medeiros Date: Thu, 22 Apr 2021 16:08:12 -0300 Subject: [PATCH 1/6] Add confluence app specific actions --- app/confluence.yml | 2 +- app/extension/confluence/extension_ui.py | 90 ++++++++++++++++++++++++ app/selenium_ui/confluence_ui.py | 8 +++ 3 files changed, 99 insertions(+), 1 deletion(-) diff --git a/app/confluence.yml b/app/confluence.yml index 42333b955..18f3d9367 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -33,7 +33,7 @@ settings: like_page: 3 standalone_extension: 0 # By default disabled # Custom dataset section. - custom_dataset_query: # Write CQL query to add CQL output to the app/datasets/confluence/custom_pages.csv, e.g. "title ~ 'AppPage*'" + custom_dataset_query: title ~ 'AppPage*' # Write CQL query to add CQL output to the app/datasets/confluence/custom_pages.csv, e.g. "title ~ 'AppPage*'" services: - module: shellexec prepare: diff --git a/app/extension/confluence/extension_ui.py b/app/extension/confluence/extension_ui.py index ea4aa40e2..9455e584b 100644 --- a/app/extension/confluence/extension_ui.py +++ b/app/extension/confluence/extension_ui.py @@ -42,3 +42,93 @@ def sub_measure(): page.wait_until_visible((By.ID, "ID_OF_YOUR_APP_SPECIFIC_UI_ELEMENT")) # Wait for you app-specific UI element by ID selector sub_measure() measure() + +def zscale_view_test_cases_by_status_macro_in_page(webdriver, datasets): + page = BasePage(webdriver) + zscale_specific_page_id = datasets['custom_page_id'] + + @print_timing("zscale_specific_user_login") + def measure(): + def zscale_specific_user_login(username='admin', password='admin'): + login_page = Login(webdriver) + login_page.delete_all_cookies() + login_page.go_to() + login_page.wait_for_page_loaded() + login_page.set_credentials(username=username, password=password) + login_page.click_login_button() + if login_page.is_first_login(): + login_page.first_user_setup() + all_updates_page = AllUpdates(webdriver) + all_updates_page.wait_for_page_loaded() + zscale_specific_user_login(username='admin', password='admin') + measure() + + @print_timing("view_test_cases_by_status_action") + def measure(): + check_zscale_content(page, datasets) + measure() + +def zscale_view_test_cases_by_project_macro_in_page(webdriver, datasets): + page = BasePage(webdriver) + zscale_specific_page_id = datasets['custom_page_id'] + + @print_timing("zscale_specific_user_login") + def measure(): + def zscale_specific_user_login(username='admin', password='admin'): + login_page = Login(webdriver) + login_page.delete_all_cookies() + login_page.go_to() + login_page.wait_for_page_loaded() + login_page.set_credentials(username=username, password=password) + login_page.click_login_button() + if login_page.is_first_login(): + login_page.first_user_setup() + all_updates_page = AllUpdates(webdriver) + all_updates_page.wait_for_page_loaded() + zscale_specific_user_login(username='admin', password='admin') + measure() + + @print_timing("view_test_cases_by_project_action") + def measure(): + check_zscale_content(page, datasets) + measure() + +def zscale_view_test_cases_by_folder_macro_in_page(webdriver, datasets): + page = BasePage(webdriver) + zscale_specific_page_id = datasets['custom_page_id'] + + @print_timing("zscale_specific_user_login") + def measure(): + def zscale_specific_user_login(username='admin', password='admin'): + login_page = Login(webdriver) + login_page.delete_all_cookies() + login_page.go_to() + login_page.wait_for_page_loaded() + login_page.set_credentials(username=username, password=password) + login_page.click_login_button() + if login_page.is_first_login(): + login_page.first_user_setup() + all_updates_page = AllUpdates(webdriver) + all_updates_page.wait_for_page_loaded() + zscale_specific_user_login(username='admin', password='admin') + measure() + + @print_timing("view_test_cases_by_folder_action") + def measure(): + check_zscale_content(page, datasets) + measure() + + +def check_zscale_content(page, datasets): + zscale_specific_page_id = datasets['custom_page_id'] + + page.go_to_url(f"{CONFLUENCE_SETTINGS.server_url}/pages/viewpage.action?pageId={zscale_specific_page_id}") + + if zscale_specific_page_id == 38928401: + page.wait_until_visible((By.TAG_NAME, "reports-viewer-test-cases-summary-by-status")) + elif zscale_specific_page_id == 38928403: + page.wait_until_visible((By.TAG_NAME, "reports-viewer-test-cases-created-by-project-list")) + elif zscale_specific_page_id == 38928405: + page.wait_until_visible((By.TAG_NAME, "reports-viewer-test-cases-created-by-folder-list")) + else: + page.wait_until_visible((By.TAG_NAME, "macro-view")) diff --git a/app/selenium_ui/confluence_ui.py b/app/selenium_ui/confluence_ui.py index d41138e35..6c94d0180 100644 --- a/app/selenium_ui/confluence_ui.py +++ b/app/selenium_ui/confluence_ui.py @@ -39,6 +39,14 @@ def test_1_selenium_view_dashboard(confluence_webdriver, confluence_datasets, co # def test_1_selenium_custom_action(confluence_webdriver, confluence_datasets, confluence_screen_shots): # extension_ui.app_specific_action(confluence_webdriver, confluence_datasets) +def test_1_selenium_zscale_view_test_cases_by_status_macro_in_page(confluence_webdriver, confluence_datasets, confluence_screen_shots): + extension_ui.zscale_view_test_cases_by_status_macro_in_page(confluence_webdriver, confluence_datasets) + +def test_1_selenium_zscale_view_test_cases_by_project_macro_in_page(confluence_webdriver, confluence_datasets, confluence_screen_shots): + extension_ui.zscale_view_test_cases_by_project_macro_in_page(confluence_webdriver, confluence_datasets) + +def test_1_selenium_zscale_view_test_cases_by_folder_macro_in_page(confluence_webdriver, confluence_datasets, confluence_screen_shots): + extension_ui.zscale_view_test_cases_by_folder_macro_in_page(confluence_webdriver, confluence_datasets) # this action should be the last one def test_2_selenium_z_log_out(confluence_webdriver, confluence_datasets, confluence_screen_shots): From 716a4a3b211670bf334f3cb3b52115da91b94f64 Mon Sep 17 00:00:00 2001 From: Otavio Medeiros Date: Tue, 27 Apr 2021 15:08:25 -0300 Subject: [PATCH 2/6] Set enterprise level jira instance --- app/jira.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jira.yml b/app/jira.yml index 13d08931d..93a6c6375 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -4,7 +4,7 @@ settings: aggregator: consolidator verbose: false env: - application_hostname: test_jira_instance.atlassian.com # Jira DC hostname without protocol and port e.g. test-jira.atlassian.com or localhost + application_hostname: jira-loadb-cn7kineqi4pq-1519173426.us-west-2.elb.amazonaws.com # Jira DC hostname without protocol and port e.g. test-jira.atlassian.com or localhost application_protocol: http # http or https application_port: 80 # 80, 443, 8080, 2990, etc secure: True # Set False to allow insecure connections, e.g. when using self-signed SSL certificate From fb3715ebdd839cd041026d1fcf402520157faf97 Mon Sep 17 00:00:00 2001 From: Otavio Medeiros Date: Tue, 27 Apr 2021 15:11:07 -0300 Subject: [PATCH 3/6] Set JQL to search for app specific issues --- app/jira.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jira.yml b/app/jira.yml index 93a6c6375..29684fd7d 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -35,7 +35,7 @@ settings: browse_boards: 2 standalone_extension: 0 # By default disabled # Custom dataset section. - custom_dataset_query: # Write JQL query to add JQL output to the app/datasets/jira/custom-issues.csv, e.g. "summary ~ 'AppIssue*'" + custom_dataset_query: summary ~ 'AppIssue*' # Write JQL query to add JQL output to the app/datasets/jira/custom-issues.csv, e.g. "summary ~ 'AppIssue*'" services: - module: shellexec prepare: From 01fb5d50cc97302b642793249c9a7b4bcc757059 Mon Sep 17 00:00:00 2001 From: Otavio <67008749+otaviomedeirossb@users.noreply.github.com> Date: Tue, 27 Apr 2021 16:36:44 -0300 Subject: [PATCH 4/6] Update jira_ui.py --- app/selenium_ui/jira_ui.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/selenium_ui/jira_ui.py b/app/selenium_ui/jira_ui.py index 9bf2949df..acb7d1715 100644 --- a/app/selenium_ui/jira_ui.py +++ b/app/selenium_ui/jira_ui.py @@ -63,6 +63,14 @@ def test_1_selenium_view_project_summary(jira_webdriver, jira_datasets, jira_scr # def test_1_selenium_custom_action(jira_webdriver, jira_datasets, jira_screen_shots): # extension_ui.app_specific_action(jira_webdriver, jira_datasets) +def test_1_selenium_zscale_view_test_case_in_issue_view(jira_webdriver, jira_datasets, jira_screen_shots): + extension_ui.zscale_view_test_case_in_issue_view(jira_webdriver, jira_datasets) + +def test_1_selenium_zscale_view_test_cycle_in_issue_view(jira_webdriver, jira_datasets, jira_screen_shots): + extension_ui.zscale_view_test_cycle_in_issue_view(jira_webdriver, jira_datasets) + +def test_1_selenium_zscale_view_test_plan_in_issue_view(jira_webdriver, jira_datasets, jira_screen_shots): + extension_ui.zscale_view_test_plan_in_issue_view(jira_webdriver, jira_datasets) # this action should be the last one def test_2_selenium_z_log_out(jira_webdriver, jira_datasets, jira_screen_shots): From 8ddf62112c621d696601e856693745917c99922a Mon Sep 17 00:00:00 2001 From: Otavio <67008749+otaviomedeirossb@users.noreply.github.com> Date: Tue, 27 Apr 2021 16:37:30 -0300 Subject: [PATCH 5/6] Update extension_ui.py --- app/extension/jira/extension_ui.py | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/app/extension/jira/extension_ui.py b/app/extension/jira/extension_ui.py index 01aff462d..564cf0bb4 100644 --- a/app/extension/jira/extension_ui.py +++ b/app/extension/jira/extension_ui.py @@ -41,4 +41,37 @@ def sub_measure(): page.wait_until_visible((By.ID, "ID_OF_YOUR_APP_SPECIFIC_UI_ELEMENT")) # Wait for you app-specific UI element by ID selector sub_measure() measure() + + def zscale_view_test_case_in_issue_view(webdriver, datasets): + page = BasePage(webdriver) + issue_key = datasets['custom_issue_key'] + + @print_timing("zephyr_scale_view_test_case_in_issue_view") + def measure(): + page.go_to_url(f"{JIRA_SETTINGS.server_url}/browse/{issue_key}") + page.wait_until_visible((By.ID, "TM4JTraceLinksPanel")) # Wait for you app-specific UI element by ID selector + page.wait_until_visible((By.TAG_NAME, "test-case-trace-link")) # Wait for you app-specific UI element by ID selector + measure() + +def zscale_view_test_cycle_in_issue_view(webdriver, datasets): + page = BasePage(webdriver) + issue_key = datasets['custom_issue_key'] + + @print_timing("zephyr_scale_view_test_cycle_in_issue_view") + def measure(): + page.go_to_url(f"{JIRA_SETTINGS.server_url}/browse/{issue_key}") + page.wait_until_visible((By.ID, "TM4JTraceLinksPanel")) # Wait for you app-specific UI element by ID selector + page.wait_until_visible((By.TAG_NAME, "test-run-trace-link")) # Wait for you app-specific UI element by ID selector + measure() + +def zscale_view_test_plan_in_issue_view(webdriver, datasets): + page = BasePage(webdriver) + issue_key = datasets['custom_issue_key'] + + @print_timing("zephyr_scale_view_test_plan_in_issue_view") + def measure(): + page.go_to_url(f"{JIRA_SETTINGS.server_url}/browse/{issue_key}") + page.wait_until_visible((By.ID, "TM4JTraceLinksPanel")) # Wait for you app-specific UI element by ID selector + page.wait_until_visible((By.TAG_NAME, "test-plan-trace-link")) # Wait for you app-specific UI element by ID selector + measure() From fa2e363c5c157b2857900af453b961300fc74528 Mon Sep 17 00:00:00 2001 From: Otavio Medeiros Date: Wed, 28 Apr 2021 15:41:11 -0300 Subject: [PATCH 6/6] Bug fix --- app/extension/jira/extension_ui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/extension/jira/extension_ui.py b/app/extension/jira/extension_ui.py index 564cf0bb4..dbd9ce5af 100644 --- a/app/extension/jira/extension_ui.py +++ b/app/extension/jira/extension_ui.py @@ -42,7 +42,7 @@ def sub_measure(): sub_measure() measure() - def zscale_view_test_case_in_issue_view(webdriver, datasets): +def zscale_view_test_case_in_issue_view(webdriver, datasets): page = BasePage(webdriver) issue_key = datasets['custom_issue_key']