Skip to content

Commit b62b04d

Browse files
authored
Merge pull request #1693 from atlassian/DCA-2447-bitbucket-web-sudo
DCA-2247 Add bitbucket websudo to extension.ui
2 parents 0d87a5f + 7d7a911 commit b62b04d

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

app/extension/bitbucket/extension_ui.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from selenium_ui.base_page import BasePage
66
from selenium_ui.conftest import print_timing
7-
from selenium_ui.bitbucket.pages.pages import LoginPage, GetStarted
7+
from selenium_ui.bitbucket.pages.pages import LoginPage, GetStarted, AdminPage, PopupManager
88
from util.conf import BITBUCKET_SETTINGS
99

1010

@@ -25,10 +25,16 @@ def app_specific_action(webdriver, datasets):
2525
# login_page = LoginPage(webdriver)
2626
# login_page.delete_all_cookies()
2727
# login_page.go_to()
28+
# login_page.wait_for_page_loaded()
2829
# login_page.set_credentials(username=username, password=password)
2930
# login_page.submit_login()
3031
# get_started_page = GetStarted(webdriver)
3132
# get_started_page.wait_for_page_loaded()
33+
# PopupManager(webdriver).dismiss_default_popup()
34+
# get_started_page.close_whats_new_window()
35+
#
36+
# # uncomment below line to do web_sudo and authorise access to admin pages
37+
# # AdminPage(webdriver).go_to(password=password)
3238
# app_specific_user_login(username='admin', password='admin')
3339
# measure()
3440

app/selenium_ui/bitbucket/pages/pages.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from selenium_ui.base_page import BasePage
44
from selenium_ui.bitbucket.pages.selectors import LoginPageLocators, GetStartedLocators, \
55
DashboardLocators, ProjectsLocators, ProjectLocators, RepoLocators, RepoNavigationPanelLocators, PopupLocators, \
6-
PullRequestLocator, BranchesLocator, RepoCommitsLocator, LogoutPageLocators, UrlManager
6+
PullRequestLocator, BranchesLocator, RepoCommitsLocator, LogoutPageLocators, UrlManager, AdminLocators
77

88

99
class LoginPage(BasePage):
@@ -254,3 +254,22 @@ def __init__(self, driver, project_key, repo_slug):
254254
BasePage.__init__(self, driver)
255255
url_manager = UrlManager(project_key=project_key, repo_slug=repo_slug)
256256
self.page_url = url_manager.commits_url()
257+
258+
259+
class AdminPage(BasePage):
260+
page_url = AdminLocators.admin_system_page_url
261+
page_loaded_selector = AdminLocators.login_form
262+
263+
def is_websudo(self):
264+
return True if self.get_elements(AdminLocators.web_sudo_password) else False
265+
266+
def do_websudo(self, password):
267+
self.wait_until_clickable(AdminLocators.web_sudo_password).send_keys(password)
268+
self.wait_until_clickable(AdminLocators.web_sudo_submit_btn).click()
269+
self.wait_until_visible(AdminLocators.administration_link)
270+
271+
def go_to(self, password=None):
272+
super().go_to()
273+
self.wait_for_page_loaded()
274+
if self.is_websudo():
275+
self.do_websudo(password)

app/selenium_ui/bitbucket/pages/selectors.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def __init__(self, user=None, project_key=None, repo_slug=None, pull_request_key
2626
self.dashboard_params = '/dashboard'
2727
self.projects_params = '/projects'
2828
self.branches_base_branch = f'/projects/{self.project_key}/repos/{self.repo_slug}/branches?base='
29+
self.admin_system_params = '/admin'
2930

3031
def create_pull_request_url(self, from_branch, to_branch):
3132
return f"{self.host}/projects/{self.project_key}/repos/{self.repo_slug}/pull-requests?create&targetBranch=" \
@@ -73,6 +74,9 @@ def dashboard_url(self):
7374
def projects_url(self):
7475
return f"{self.host}{self.projects_params}"
7576

77+
def admin_system_url(self):
78+
return f"{self.host}{self.admin_system_params}"
79+
7680

7781
class PopupLocators:
7882
popup_selectors = [
@@ -181,3 +185,11 @@ class BranchesLocator:
181185

182186
class RepoCommitsLocator:
183187
repo_commits_graph = (By.ID, 'commits-table')
188+
189+
190+
class AdminLocators:
191+
admin_system_page_url = UrlManager().admin_system_url()
192+
web_sudo_password = (By.ID, 'j_password-uid1')
193+
web_sudo_submit_btn = (By.XPATH, "//span[contains(text(),'Confirm')]")
194+
login_form = (By.ID, 'websudo-container')
195+
administration_link = (By.XPATH, "//span[contains(text(),'Administration')]")

0 commit comments

Comments
 (0)