public inbox for [email protected]  
help / color / mirror / Atom feed
From: Yogesh Mahajan <[email protected]>
To: pgadmin-hackers <[email protected]>
Subject: Re: Feature Test Fix - React porting
Date: Thu, 18 Nov 2021 15:23:13 +0530
Message-ID: <CAMa=N=MyQWGD_YwRBRXKtEVq3B1wqwCDHcOjn88XLQm+dw-Hhw@mail.gmail.com> (raw)
In-Reply-To: <CANxoLDe_meHYN8DU4kc5p+6wpiKivSyyJLW26idD+7h7=wi+2A@mail.gmail.com>
References: <CAMa=N=M7TmEsEk0tD787z-obnN_805R4QyegZtFspjfddLKbug@mail.gmail.com>
	<CANxoLDfH2YoCG1aVFPuzWCR95FTFgJczceH1Z-eFg2Oo24tzLA@mail.gmail.com>
	<CAMa=N=Op8hASK9hRBfDXHiwrVsDn-NaH-0hUk+7gGF6L_80mHQ@mail.gmail.com>
	<CANxoLDe_meHYN8DU4kc5p+6wpiKivSyyJLW26idD+7h7=wi+2A@mail.gmail.com>

Hi,

Please find the attached patch which fixes the problem related to
feature tests.


Thanks,
Yogesh Mahajan
EnterpriseDB


On Fri, Nov 12, 2021 at 11:59 AM Akshay Joshi <[email protected]>
wrote:

> Thanks, the patch applied.
>
> On Thu, Nov 11, 2021 at 10:04 PM Yogesh Mahajan <
> [email protected]> wrote:
>
>> Hi,
>>
>> Please find the attached patch which uses selenium 4.0.0a6 which works
>> with python 3.6.8.
>> Selenium 4.0.0 requires python 3.7+
>>
>> Thanks,
>> Yogesh Mahajan
>> EnterpriseDB
>>
>>
>> On Wed, Nov 10, 2021 at 11:59 AM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Thanks, the patch applied. but Jenkins is failing with the below error:
>>> ERROR: No matching distribution found for selenium==4.0.0
>>> ERROR: Failed to install Python requirements.
>>>
>>> On Tue, Nov 9, 2021 at 2:48 PM Yogesh Mahajan <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> Please find the attached patch which fixes feature tests broken due to
>>>> react porting changes.
>>>>
>>>> Thanks,
>>>> Yogesh Mahajan
>>>> EnterpriseDB
>>>>
>>>
>>>
>>> --
>>> *Thanks & Regards*
>>> *Akshay Joshi*
>>> *pgAdmin Hacker | Principal Software Architect*
>>> *EDB Postgres <http://edbpostgres.com>*
>>>
>>> *Mobile: +91 976-788-8246*
>>>
>>
>
> --
> *Thanks & Regards*
> *Akshay Joshi*
> *pgAdmin Hacker | Principal Software Architect*
> *EDB Postgres <http://edbpostgres.com>*
>
> *Mobile: +91 976-788-8246*
>


Attachments:

  [application/octet-stream] Feature_Test_Fix_React_Porting_v3.patch (9.1K, 3-Feature_Test_Fix_React_Porting_v3.patch)
  download | inline diff:
diff --git a/web/pgadmin/feature_tests/pg_utilities_backup_restore_test.py b/web/pgadmin/feature_tests/pg_utilities_backup_restore_test.py
index c990dbb98..f02c19a3d 100644
--- a/web/pgadmin/feature_tests/pg_utilities_backup_restore_test.py
+++ b/web/pgadmin/feature_tests/pg_utilities_backup_restore_test.py
@@ -88,7 +88,7 @@ class PGUtilitiesBackupFeatureTest(BaseFeatureTest):
              NavMenuLocators.process_watcher_alertfier))
         self.page.wait_for_element_to_disappear(
             lambda driver: driver.find_element(
-                By.CSS_SELECTOR, ".loading-logs"), 10)
+                By.CSS_SELECTOR, ".loading-logs"), 18)
 
         expected_backup_success_msg = "Successfully completed."
         self.assertEqual(status, expected_backup_success_msg)
@@ -157,18 +157,23 @@ class PGUtilitiesBackupFeatureTest(BaseFeatureTest):
             os.remove(backup_file)
 
     def after(self):
-        test_gui_helper.close_process_watcher(self)
-        test_gui_helper.close_bgprocess_popup(self)
-        self.page.remove_server(self.server)
-        connection = test_utils.get_db_connection(
-            self.server['db'],
-            self.server['username'],
-            self.server['db_password'],
-            self.server['host'],
-            self.server['port'],
-            self.server['sslmode']
-        )
-        test_utils.drop_database(connection, self.database_name)
+        try:
+            test_gui_helper.close_process_watcher(self)
+            test_gui_helper.close_bgprocess_popup(self)
+            self.page.remove_server(self.server)
+        except Exception as e:
+            print("PGUtilitiesBackupFeatureTest - "
+                  "Exception occurred in after method")
+        finally:
+            connection = test_utils.get_db_connection(
+                self.server['db'],
+                self.server['username'],
+                self.server['db_password'],
+                self.server['host'],
+                self.server['port'],
+                self.server['sslmode']
+            )
+            test_utils.drop_database(connection, self.database_name)
 
     def _check_detailed_window_for_xss(self, tool_name):
         source_code = self.page.find_by_css_selector(
diff --git a/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py b/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py
index 481bf2cf2..e4be948f6 100644
--- a/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py
+++ b/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py
@@ -165,19 +165,24 @@ class PGUtilitiesMaintenanceFeatureTest(BaseFeatureTest):
         test_gui_helper.close_process_watcher(self)
 
     def after(self):
-        test_gui_helper.close_bgprocess_popup(self)
-        test_utils.delete_table(self.server, self.database_name,
-                                self.table_name)
-        self.page.remove_server(self.server)
-        connection = test_utils.get_db_connection(
-            self.server['db'],
-            self.server['username'],
-            self.server['db_password'],
-            self.server['host'],
-            self.server['port'],
-            self.server['sslmode']
-        )
-        test_utils.drop_database(connection, self.database_name)
+        try:
+            test_gui_helper.close_bgprocess_popup(self)
+            test_utils.delete_table(self.server, self.database_name,
+                                    self.table_name)
+            self.page.remove_server(self.server)
+        except Exception as e:
+            print("PGUtilitiesMaintenanceFeatureTest - "
+                  "Exception occurred in after method")
+        finally:
+            connection = test_utils.get_db_connection(
+                self.server['db'],
+                self.server['username'],
+                self.server['db_password'],
+                self.server['host'],
+                self.server['port'],
+                self.server['sslmode']
+            )
+            test_utils.drop_database(connection, self.database_name)
 
     def check_escaped_characters(self, source_code, string_to_find, source):
         # For XSS we need to search against element's html code
diff --git a/web/pgadmin/feature_tests/xss_checks_roles_control_test.py b/web/pgadmin/feature_tests/xss_checks_roles_control_test.py
index d51632386..2be688f69 100644
--- a/web/pgadmin/feature_tests/xss_checks_roles_control_test.py
+++ b/web/pgadmin/feature_tests/xss_checks_roles_control_test.py
@@ -82,7 +82,7 @@ class CheckRoleMembershipControlFeatureTest(BaseFeatureTest):
         # Fetch the source code for our custom control
         source_code = self.page.find_by_xpath(
             "//span[contains(@class,'icon-')]/following-sibling::span"
-        ).text
+        ).get_attribute('innerHTML')
 
         self._check_escaped_characters(
             source_code,
diff --git a/web/regression/feature_utils/pgadmin_page.py b/web/regression/feature_utils/pgadmin_page.py
index 11ccabf28..630d05ef6 100644
--- a/web/regression/feature_utils/pgadmin_page.py
+++ b/web/regression/feature_utils/pgadmin_page.py
@@ -431,7 +431,7 @@ class PgadminPage:
         :param server_group_name: containing server
         :param server_name:
         :param server_password:
-        :return: true if server node is expnaded else false
+        :return: true if server node is expanded else false
         """
         server_expanded = False
         server_node_xpath = TreeAreaLocators.server_node(server_name)
@@ -444,14 +444,14 @@ class PgadminPage:
                 self.driver.execute_script(
                     self.js_executor_scrollintoview_arg, server_node)
                 if self.check_if_element_exist_by_xpath(
-                        server_node_exp_status_xpath, 1):
+                        server_node_exp_status_xpath, 2):
                     server_expanded = True
                 else:
                     server_expanded = self.click_expand_server_node(
                         server_name, server_password, server_node)
                     if not server_expanded:
                         print("(expand_server_node)The Server node is not "
-                              "expnaded", file=sys.stderr)
+                              "expanded", file=sys.stderr)
             else:
                 print("(expand_server_node)The Server node not found",
                       file=sys.stderr)
@@ -478,7 +478,8 @@ class PgadminPage:
                 webdriver.ActionChains(self.driver).double_click(
                     server_node).perform()
                 if self.check_if_element_exist_by_xpath(
-                        TreeAreaLocators.server_node_exp_status(server_name)):
+                        TreeAreaLocators.server_node_exp_status(server_name),
+                        10):
                     server_node_expansion_status = True
         else:
             if self.click_and_connect_server(server_name, server_password):
@@ -586,7 +587,7 @@ class PgadminPage:
                 server_child_expanded = self.click_to_expand_tree_node(
                     child_node_ele, server_child_node_exp_status_xpath)
                 if not server_child_expanded:
-                    print("Child not is not expanded after clickng ",
+                    print("Child not is not expanded after clicking ",
                           file=sys.stderr)
         else:
             print("The server/previous nodes not expanded", file=sys.stderr)
@@ -1293,7 +1294,8 @@ class PgadminPage:
                             top_el).perform()
                         r_scroll -= 1
         else:
-            print("check_if_element_exists_with_scroll > Element NOT found")
+            print("check_if_element_exists_with_scroll > Element NOT found",
+                  xpath, file=sys.stderr)
             return False
 
     def find_by_xpath_list(self, xpath):
diff --git a/web/regression/python_test_utils/test_utils.py b/web/regression/python_test_utils/test_utils.py
index 541e8eff2..28aaaa6f6 100644
--- a/web/regression/python_test_utils/test_utils.py
+++ b/web/regression/python_test_utils/test_utils.py
@@ -1439,7 +1439,9 @@ def get_parallel_sequential_module_list(module_list):
     """
     # list of files consisting tests that needs to be
     # executed sequentially
-    sequential_tests_file = []
+    sequential_tests_file = [
+        'pgadmin.feature_tests.pg_utilities_backup_restore_test',
+        'pgadmin.feature_tests.pg_utilities_maintenance_test']
 
     #  list of tests can be executed in parallel
     parallel_tests = list(module_list)
diff --git a/web/regression/runtests.py b/web/regression/runtests.py
index 7bc2ca4d5..bbd03ca95 100644
--- a/web/regression/runtests.py
+++ b/web/regression/runtests.py
@@ -603,7 +603,8 @@ def run_parallel_tests(url_client, servers_details, parallel_tests_lists,
                                                         version_of_browser,
                                                         ser['name'])
                     # Launch client url in browser
-                    test_utils.launch_url_in_browser(driver_object, url_client)
+                    test_utils.launch_url_in_browser(
+                        driver_object, url_client, 60)
 
                     # Add name for thread
                     thread_name = "parallel_tests" + ser['name']


view thread (12+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: Feature Test Fix - React porting
  In-Reply-To: <CAMa=N=MyQWGD_YwRBRXKtEVq3B1wqwCDHcOjn88XLQm+dw-Hhw@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox