コード例 #1
0
 def wait_save():
   """Wait for object to be saved and page to be updated.
   Please note that in some cases spinner disappears before DOM changes
   are fully finished. So this code may need to be changed
   in case of a race condition.
   """
   ui_utils.wait_for_spinner_to_disappear()
コード例 #2
0
 def _wait_for_submit_changes(self):
   """Waits for changes after submit."""
   self._root.wait_until(lambda modal: not modal.exists)
   # Spinner sometimes appears for loading content after modal is closed.
   # Though it's not a responsibility of modal to wait for it, it looks
   # to be safe as long as implementation is general.
   ui_utils.wait_for_spinner_to_disappear()
コード例 #3
0
 def _wait_for_submit_changes(self):
     """Waits for changes after submit."""
     self._root.wait_until(lambda modal: not modal.exists)
     # Spinner sometimes appears for loading content after modal is closed.
     # Though it's not a responsibility of modal to wait for it, it looks
     # to be safe as long as implementation is general.
     ui_utils.wait_for_spinner_to_disappear()
コード例 #4
0
ファイル: info_widget.py プロジェクト: hcyg/ggrc-core
 def wait_save():
   """Wait for object to be saved and page to be updated.
   Please note that in some cases spinner disappears before DOM changes
   are fully finished. So this code may need to be changed
   in case of a race condition.
   """
   ui_utils.wait_for_spinner_to_disappear()
コード例 #5
0
ファイル: page_elements.py プロジェクト: xuechaos/ggrc-core
 def confirm(self):
     """Saves changes via inline edit."""
     save_btn = self._root.element(class_name="fa-check")
     save_btn.click()
     # Wait for inline edit element to be removed
     save_btn.wait_until_not(lambda e: e.exists)
     # Wait for JS to work, there are no DOM changes and HTTP requests
     # during some period (GGRC-5891).
     time.sleep(1)
     ui_utils.wait_for_spinner_to_disappear()
コード例 #6
0
 def confirm(self):
   """Saves changes via inline edit."""
   save_btn = self._root.element(class_name="fa-check")
   save_btn.click()
   # Wait for inline edit element to be removed
   save_btn.wait_until_not(lambda e: e.exists)
   # Wait for JS to work, there are no DOM changes and HTTP requests
   # during some period (GGRC-5891).
   time.sleep(1)
   ui_utils.wait_for_spinner_to_disappear()
コード例 #7
0
def soft_assert_bulk_verify_for_in_review_state(page, asmt, soft_assert,
                                                is_available):
  """Soft assert 'Bulk Verify' availability for assessments in 'In Review'
  status."""
  rest_facade.update_object(asmt, status=object_states.READY_FOR_REVIEW)
  browsers.get_browser().refresh()
  ui_utils.wait_for_spinner_to_disappear()
  soft_assert.expect(
      page.is_bulk_verify_displayed() == is_available,
      "Bulk Verify should {} be available if assessment is in '{}' status."
      .format("" if is_available else "not", object_states.READY_FOR_REVIEW))
コード例 #8
0
  def complete_assessment(self, obj):
    """Navigate to info page of object according to URL of object then find and
    click 'Complete' button then return info page of object in new state"""
    info_widget = self.open_info_page_of_obj(obj)
    initial_state = info_widget.status()
    info_widget.click_complete()

    def wait_for_status_to_change():
      """Waits for status to become completed."""
      return self.info_widget_cls(self._driver).status() != initial_state
    test_utils.wait_for(wait_for_status_to_change)
    ui_utils.wait_for_spinner_to_disappear()
コード例 #9
0
def soft_assert_bulk_complete_for_completed_asmts(soft_assert, asmts, page):
  """Performs soft assert that 'Bulk complete' option/button is not
  displayed for several assessments when all of them are in one of the
  completed states."""
  for asmt, status in zip(asmts, object_states.COMPLETED_STATES):
    rest_facade.update_object(asmt, status=status)
    browsers.get_browser().refresh()
    ui_utils.wait_for_spinner_to_disappear()
    soft_assert.expect(
        not page.is_bulk_complete_displayed(),
        "'Bulk complete' for assessment with '{}' status should not be "
        "available.".format(status))
コード例 #10
0
def soft_assert_bulk_complete_for_opened_asmts(soft_assert, asmts, page,
                                               is_displayed=True):
  """Performs soft assert that 'Bulk complete' option/button is displayed or
  not for several assessments when at least one of them is in one of the opened
  states."""
  for status in object_states.OPENED_STATES:
    rest_facade.update_object(asmts[-1], status=status)
    browsers.get_browser().refresh()
    ui_utils.wait_for_spinner_to_disappear()
    soft_assert.expect(
        page.is_bulk_complete_displayed() == is_displayed,
        "'Bulk complete' for assessment with '{}' status should {}be "
        "available.".format(status, "" if is_displayed else "not "))
コード例 #11
0
 def get_changelog_entries(self):
   """Returns list of entries from changelog."""
   self.tabs.ensure_tab(self._changelog_tab_name)
   ui_utils.wait_for_spinner_to_disappear()
   log_items = []
   entry_list = self._browser.elements(class_name="w-status")
   for entry in entry_list:
     entry_data = {"author": entry.element(tag_name="person-data").text}
     for row in entry.elements(class_name="clearfix"):
       data = row.text.split("\n")
       entry_data.update({data[0]: {"original_value": data[1],
                                    "new_value": data[2]}})
     log_items.append(entry_data)
   return log_items
コード例 #12
0
ファイル: info_widget.py プロジェクト: hcyg/ggrc-core
 def get_changelog_entries(self):
   """Returns list of entries from changelog."""
   self.tabs.ensure_tab(self._changelog_tab_name)
   ui_utils.wait_for_spinner_to_disappear()
   log_items = []
   entry_list = self._browser.elements(class_name="w-status")
   for entry in entry_list:
     entry_data = {"author": entry.element(tag_name="person-data").text}
     for row in entry.elements(class_name="clearfix"):
       data = row.text.split("\n")
       entry_data.update({data[0]: {"original_value": data[1],
                                    "new_value": data[2]}})
     log_items.append(entry_data)
   return log_items
コード例 #13
0
def soft_assert_bulk_verify_for_not_in_review_state(page, asmts, soft_assert):
  """Soft assert 'Bulk Verify' availability for assessments with different from
  'In Review' status."""
  statuses = object_states.ASSESSMENT_STATUSES_NOT_READY_FOR_REVIEW
  for asmt, status in zip(asmts, statuses):
    if status == object_states.COMPLETED:
      # normally assessment cannot be in completed state if it has verifiers
      # GGRC-7802: validation should be added on backend side
      rest_facade.update_acl([asmt], [], rewrite_acl=True,
                             **roles_rest_facade.get_role_name_and_id(
                                 asmt.type, roles.VERIFIERS))
    rest_facade.update_object(asmt, status=status)
    browsers.get_browser().refresh()
    ui_utils.wait_for_spinner_to_disappear()
    soft_assert.expect(
        not page.is_bulk_verify_displayed(),
        "Bulk Verify should not be available if assessment is in "
        "'{}' status.".format(status))
コード例 #14
0
 def activate_workflow(self, is_workflow_repeat):
     """Activates workflow."""
     self._browser.button(text="Activate Workflow").click()
     if not is_workflow_repeat:
         self._browser.link(text="Proceed").click()
     ui_utils.wait_for_spinner_to_disappear()
コード例 #15
0
 def wait_to_be_init(self):
     """Wait for panel to be initialized."""
     self._create_task_button.wait_until(lambda e: e.present)
     ui_utils.wait_for_spinner_to_disappear()
コード例 #16
0
 def expand(self):
   """Expands cycle task group row to show cycle task rows."""
   if not self.is_expanded:
     self._root.element(class_name="columns").click()
     ui_utils.wait_for_spinner_to_disappear()
コード例 #17
0
 def expand(self):
   """Expands workflow cycle row to show cycle task group rows."""
   if not self.is_expanded:
     self.select()
     ui_utils.wait_for_spinner_to_disappear()
コード例 #18
0
 def activate_workflow(self, is_workflow_repeat):
   """Activates workflow."""
   self._browser.button(text="Activate Workflow").click()
   if not is_workflow_repeat:
     self._browser.link(text="Proceed").click()
   ui_utils.wait_for_spinner_to_disappear()
コード例 #19
0
 def expand(self):
   """Expands cycle task group row to show cycle task rows."""
   if not self.is_expanded:
     self._root.element(class_name="columns").click()
     ui_utils.wait_for_spinner_to_disappear()
コード例 #20
0
 def expand(self):
   """Expands workflow cycle row to show cycle task group rows."""
   if not self.is_expanded:
     self.select()
     ui_utils.wait_for_spinner_to_disappear()
コード例 #21
0
 def wait_to_be_init(self):
   """Wait for panel to be initialized."""
   self._create_task_button.wait_until(lambda e: e.present)
   ui_utils.wait_for_spinner_to_disappear()
   self._create_task_button.wait_until(lambda e: e.enabled)