mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
122 lines
4.8 KiB
Python
122 lines
4.8 KiB
Python
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support import expected_conditions
|
|
from selenium.webdriver.support.wait import WebDriverWait
|
|
|
|
from .base import BasePage
|
|
from .global_selection import GlobalSelectionPage
|
|
|
|
|
|
class IssueDetailsPage(BasePage):
|
|
def __init__(self, browser, client):
|
|
super().__init__(browser)
|
|
self.client = client
|
|
self.global_selection = GlobalSelectionPage(browser)
|
|
|
|
def visit_issue(self, org, groupid):
|
|
self.browser.get(f"/organizations/{org}/issues/{groupid}/")
|
|
self.wait_until_loaded()
|
|
|
|
def visit_issue_activity(self, org, groupid):
|
|
self.browser.get(f"/organizations/{org}/issues/{groupid}/activity/")
|
|
self.browser.wait_until_not('[data-test-id="loading-indicator"]')
|
|
|
|
def visit_issue_in_environment(self, org, groupid, environment):
|
|
self.browser.get(f"/organizations/{org}/issues/{groupid}/?environment={environment}")
|
|
self.browser.wait_until(".group-detail")
|
|
|
|
def visit_tag_values(self, org, groupid, tag):
|
|
self.browser.get(f"/organizations/{org}/issues/{groupid}/tags/{tag}/")
|
|
self.browser.wait_until('[data-test-id="group-tag-value"]')
|
|
|
|
def get_environment(self):
|
|
return self.browser.find_element(
|
|
by=By.CSS_SELECTOR, value='[data-test-id="env-label"'
|
|
).text.lower()
|
|
|
|
def go_back_to_issues(self):
|
|
self.global_selection.go_back_to_issues()
|
|
|
|
def api_issue_get(self, groupid):
|
|
return self.client.get(f"/api/0/issues/{groupid}/")
|
|
|
|
def go_to_subtab(self, key):
|
|
tabs = self.browser.find_element(by=By.CSS_SELECTOR, value='[role="tablist"]')
|
|
tabs.find_element(by=By.CSS_SELECTOR, value=f'[role="tab"][data-key="{key}"]').click()
|
|
self.browser.wait_until_not('[data-test-id="loading-indicator"]')
|
|
|
|
def open_issue_errors(self):
|
|
self.browser.click(".errors-toggle")
|
|
self.browser.wait_until(".entries > .errors ul")
|
|
|
|
def open_curl(self):
|
|
self.browser.find_element(by=By.XPATH, value="//a//code[contains(text(), 'curl')]").click()
|
|
|
|
def resolve_issue(self):
|
|
self.browser.click('[aria-label="Resolve"]')
|
|
# Resolve should become unresolve
|
|
self.browser.wait_until('[aria-label="Resolved"]')
|
|
|
|
def archive_issue(self):
|
|
self.browser.click('[aria-label="Archive"]')
|
|
# Ignore should become unresolve
|
|
self.browser.wait_until('[aria-label="Archived"]')
|
|
|
|
def bookmark_issue(self):
|
|
self.browser.click('button[aria-label="More Actions"]')
|
|
self.browser.wait_until('[data-test-id="bookmark"]')
|
|
button = self.browser.element('[data-test-id="bookmark"]')
|
|
button.click()
|
|
self.browser.click('button[aria-label="More Actions"]')
|
|
self.browser.wait_until('[data-test-id="unbookmark"]')
|
|
|
|
def assign_to(self, user):
|
|
assignee = self.browser.find_element(
|
|
by=By.CSS_SELECTOR, value='[data-test-id="assigned-to"]'
|
|
)
|
|
|
|
# Open the assignee picker
|
|
assignee.find_element(
|
|
by=By.CSS_SELECTOR, value='[data-test-id="assignee-selector"]'
|
|
).click()
|
|
|
|
# Wait for the input to be loaded
|
|
wait = WebDriverWait(assignee, 10)
|
|
wait.until(expected_conditions.presence_of_element_located((By.TAG_NAME, "input")))
|
|
|
|
assignee.find_element(by=By.TAG_NAME, value="input").send_keys(user)
|
|
|
|
# Click the member/team
|
|
options = assignee.find_elements(
|
|
by=By.CSS_SELECTOR, value='[data-test-id="assignee-option"]'
|
|
)
|
|
assert len(options) > 0, "No assignees could be found."
|
|
options[0].click()
|
|
|
|
self.browser.wait_until_not('[data-test-id="loading-indicator"]')
|
|
|
|
def find_comment_form(self):
|
|
self.browser.wait_until_test_id("note-input-form")
|
|
return self.browser.find_element(
|
|
by=By.CSS_SELECTOR, value='[data-test-id="note-input-form"]'
|
|
)
|
|
|
|
def has_comment(self, text):
|
|
element = self.browser.element('[data-test-id="activity-note-body"]')
|
|
return text in element.text
|
|
|
|
def wait_until_loaded(self):
|
|
self.browser.wait_until_not('[data-test-id="loading-indicator"]')
|
|
self.browser.wait_until_not('[data-test-id="event-errors-loading"]')
|
|
self.browser.wait_until_test_id("linked-issues")
|
|
self.browser.wait_until_test_id("loaded-device-name")
|
|
if self.browser.element_exists("#grouping-info"):
|
|
self.browser.wait_until_test_id("loaded-grouping-info")
|
|
self.browser.wait_until_not('[data-test-id="loading-placeholder"]')
|
|
|
|
def mark_reviewed(self):
|
|
self.browser.click('[aria-label="More Actions"]')
|
|
self.browser.wait_until('[data-test-id="mark-review"]')
|
|
self.browser.click('[data-test-id="mark-review"]')
|
|
self.browser.click('[aria-label="More Actions"]')
|
|
self.browser.wait_until('[data-test-id="mark-review"][aria-disabled="true"]')
|