mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
1) Added support to show all background processes in separate panel. Fixes #3709
2) Port process watcher to React. Fixes #7404
This commit is contained in:
committed by
Akshay Joshi
parent
271b6d91fc
commit
c2b23465cc
@@ -6,48 +6,60 @@
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
##########################################################################
|
||||
import time
|
||||
from regression.feature_utils.locators import NavMenuLocators
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
||||
|
||||
def close_bgprocess_popup(tester):
|
||||
def close_bgprocess_start_popup(tester):
|
||||
"""
|
||||
Allows us to close the background process popup window
|
||||
"""
|
||||
# In cases where backup div is not closed (sometime due to some error)
|
||||
try:
|
||||
tester.page.wait_for_element_to_disappear(
|
||||
lambda x: tester.driver.find_element(
|
||||
By.XPATH, ".ajs-message.ajs-bg-bgprocess.ajs-visible"))
|
||||
except Exception:
|
||||
tester.driver.find_element(
|
||||
By.CSS_SELECTOR,
|
||||
NavMenuLocators.process_watcher_error_close_xpath).click()
|
||||
tester.driver.find_element(
|
||||
By.CSS_SELECTOR,
|
||||
NavMenuLocators.process_start_close_selector).click()
|
||||
|
||||
# In cases where restore div is not closed (sometime due to some error)
|
||||
try:
|
||||
tester.page.wait_for_element_to_disappear(
|
||||
lambda x: tester.driver.find_element(
|
||||
By.XPATH,
|
||||
"//div[@class='card-header bg-primary d-flex']/div"
|
||||
"[contains(text(), 'Restoring backup')]"))
|
||||
except Exception:
|
||||
tester.driver.find_element(
|
||||
By.CSS_SELECTOR,
|
||||
NavMenuLocators.process_watcher_error_close_xpath).click()
|
||||
|
||||
# In cases where maintenance window is not closed (sometime due to some
|
||||
# error)
|
||||
try:
|
||||
tester.page.wait_for_element_to_disappear(
|
||||
lambda x: tester.driver.find_element(
|
||||
By.XPATH,
|
||||
"//div[@class='card-header bg-primary d-flex']/div"
|
||||
"[contains(text(), 'Maintenance')]"))
|
||||
except Exception:
|
||||
tester.driver.find_element(
|
||||
By.CSS_SELECTOR,
|
||||
NavMenuLocators.process_watcher_error_close_xpath).click()
|
||||
def wait_for_process_start(tester):
|
||||
tester.wait.until(EC.visibility_of_element_located(
|
||||
(By.CSS_SELECTOR,
|
||||
NavMenuLocators.process_start_close_selector)))
|
||||
close_bgprocess_start_popup(tester)
|
||||
|
||||
|
||||
def wait_for_process_end(self):
|
||||
"""This will wait for process to complete dialogue status"""
|
||||
attempts = 120
|
||||
status = False
|
||||
while attempts > 0:
|
||||
try:
|
||||
button = self.page.find_by_css_selector(
|
||||
NavMenuLocators.process_end_close_selector)
|
||||
status = True
|
||||
button.click()
|
||||
break
|
||||
except Exception:
|
||||
attempts -= 1
|
||||
time.sleep(.5)
|
||||
return status
|
||||
|
||||
|
||||
def open_process_details(tester):
|
||||
status = wait_for_process_end(tester)
|
||||
if not status:
|
||||
raise RuntimeError("Process not completed")
|
||||
|
||||
tester.page.click_tab("Processes")
|
||||
time.sleep(3)
|
||||
tester.page.find_by_css_selector(
|
||||
"div[data-test='processes'] "
|
||||
"div[data-test='row-container']:nth-child(1) "
|
||||
"div[role='row'] div[role='cell']:nth-child(3) button").click()
|
||||
|
||||
tester.page.wait_for_element_to_disappear(
|
||||
lambda driver: driver.find_element(
|
||||
By.CSS_SELECTOR, "span[data-test='loading-logs']"))
|
||||
|
||||
|
||||
def close_process_watcher(tester):
|
||||
|
||||
@@ -1185,28 +1185,6 @@ def check_binary_path_or_skip_test(cls, utility_name):
|
||||
cls.skipTest(ret_val)
|
||||
|
||||
|
||||
def get_watcher_dialogue_status(self):
|
||||
"""This will get watcher dialogue status"""
|
||||
import time
|
||||
attempts = 120
|
||||
status = None
|
||||
while attempts > 0:
|
||||
try:
|
||||
status = self.page.find_by_css_selector(
|
||||
".pg-bg-status-text").text
|
||||
|
||||
if 'Failed' in status:
|
||||
break
|
||||
if status == 'Started' or status == 'Running...':
|
||||
attempts -= 1
|
||||
time.sleep(.5)
|
||||
else:
|
||||
break
|
||||
except Exception:
|
||||
attempts -= 1
|
||||
return status
|
||||
|
||||
|
||||
def get_driver_version():
|
||||
version = getattr(psycopg2, '__version__', None)
|
||||
return version
|
||||
|
||||
Reference in New Issue
Block a user