Hi Dave, Please find attached patch where I have added timeout of 2 seconds before selecting object menu in connect to server function.
Note: Apply this patch on top of previous patch for on demand loading feature. -- *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Fri, Jun 16, 2017 at 2:25 AM, Dave Page <dp...@pgadmin.org> wrote: > Sounds good, thanks. > > On Thu, Jun 15, 2017 at 9:54 PM, Harshal Dhumal > <harshal.dhu...@enterprisedb.com> wrote: > > Hi > > > > On Fri, Jun 16, 2017 at 2:07 AM, Dave Page <dp...@pgadmin.org> wrote: > >> > >> Hi > >> > >> On Thu, Jun 15, 2017 at 9:30 PM, Harshal Dhumal > >> <harshal.dhu...@enterprisedb.com> wrote: > >> > Hi Dave, > >> > > >> > Please find attached updated patch. > >> > > >> > On Thu, Jun 15, 2017 at 3:58 PM, Dave Page <dp...@pgadmin.org> wrote: > >> >> > >> >> Hi > >> >> > >> >> On Wed, Jun 14, 2017 at 11:36 PM, Harshal Dhumal > >> >> <harshal.dhu...@enterprisedb.com> wrote: > >> >>> > >> >>> Hi Dave, > >> >>> > >> >>> Please find rebased patch for RM2137. > >> >> > >> >> > >> >> Looking very good. The only issues I see are: > >> >> > >> >> - The row headers should auto-size such that they can display the row > >> >> numbers if the last row was displayed. E.g. if there are 12345 rows > in > >> >> total, then the row header should be sized to display 5 digits. > >> >> > >> > Fixed. > >> > > >> > > >> >> > >> >> - The tests are comprehensive, which is awesome. However, every time > I > >> >> ran > >> >> them, at least one of the feature tests failed. Unfortunately, it > was a > >> >> different one each time. In the last two runs, I got: > >> >> > >> >> ============================================================ > ========== > >> >> ERROR: runTest > >> >> (pgadmin.feature_tests.query_tool_tests.QueryToolFeatureTest) > >> >> Query tool feature test > >> >> ------------------------------------------------------------ > ---------- > >> >> Traceback (most recent call last): > >> >> File > >> >> > >> >> "/Users/dpage/git/pgadmin4/web/regression/feature_utils/ > base_feature_test.py", > >> >> line 40, in setUp > >> >> self.before() > >> >> File > >> >> > >> >> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/ > query_tool_tests.py", > >> >> line 40, in before > >> >> self._connects_to_server() > >> >> File > >> >> > >> >> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/ > query_tool_tests.py", > >> >> line 144, in _connects_to_server > >> >> self.page.driver.find_element_by_link_text("Create"))\ > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", > >> >> line 319, in find_element_by_link_text > >> >> return self.find_element(by=By.LINK_TEXT, value=link_text) > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", > >> >> line 756, in find_element > >> >> 'value': value})['value'] > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", > >> >> line 238, in execute > >> >> self.error_handler.check_response(response) > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/errorhandler.py", > >> >> line 193, in check_response > >> >> raise exception_class(message, screen, stacktrace) > >> >> NoSuchElementException: Message: no such element: Unable to locate > >> >> element: {"method":"link text","selector":"Create"} > >> >> (Session info: chrome=58.0.3029.110) > >> >> (Driver info: chromedriver=2.29.461585 > >> >> (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.3 > >> >> x86_64) > >> >> > >> > I checked code from _connects_to_server function which is common in > all > >> > features test cases. I didn't find anything wrong with this. If there > is > >> > a > >> > bug in this function then all feature test must fail. > >> > Let me know if you are getting failure consistently in > >> > _connects_to_server > >> > function. > >> > >> I wondered if that one is a race condition. Do we need a short delay > >> before clicking the Object menu? I have seen this occasionally before. > > > > > > OK. In that case let's try putting 1-2 second delay and observer > behaviour. > > I'll send separate patch for this tomorrow as this is not related to on > > demand query result feature or its test cases. > > > >> > >> > >> >> > >> >> > >> >> ============================================================ > ========== > >> >> ERROR: runTest > >> >> (pgadmin.feature_tests.query_tool_tests.QueryToolFeatureTest) > >> >> Query tool feature test > >> >> ------------------------------------------------------------ > ---------- > >> >> Traceback (most recent call last): > >> >> File > >> >> > >> >> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/ > query_tool_tests.py", > >> >> line 119, in runTest > >> >> self._query_tool_auto_rollback_enabled() > >> >> File > >> >> > >> >> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/ > query_tool_tests.py", > >> >> line 697, in _query_tool_auto_rollback_enabled > >> >> '//div[contains(@class, "sql-editor-message") and > >> >> contains(string(), > >> >> "COMMIT")]' > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", > >> >> line 295, in find_element_by_xpath > >> >> return self.find_element(by=By.XPATH, value=xpath) > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", > >> >> line 756, in find_element > >> >> 'value': value})['value'] > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", > >> >> line 238, in execute > >> >> self.error_handler.check_response(response) > >> >> File > >> >> > >> >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/errorhandler.py", > >> >> line 193, in check_response > >> >> raise exception_class(message, screen, stacktrace) > >> >> NoSuchElementException: Message: no such element: Unable to locate > >> >> element: {"method":"xpath","selector":"//div[contains(@class, > >> >> "sql-editor-message") and contains(string(), "COMMIT")]"} > >> >> (Session info: chrome=58.0.3029.110) > >> >> (Driver info: chromedriver=2.29.461585 > >> >> (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.3 > >> >> x86_64) > >> >> > >> > I have updated Auto rollback enabled test in this patch. > >> > > >> >> > >> >> Relevant screenshots attached. > >> >> > >> >> - Can you tidy up the regression output a little please? Instead of: > >> >> > >> >> ------- > >> >> runTest (pgadmin.feature_tests.query_tool_tests. > QueryToolFeatureTest) > >> >> Query tool feature test ... On demand result set on scrolling... > >> >> OK. > >> >> > >> >> On demand result set on grid select all... > >> >> OK. > >> >> > >> >> On demand result set on column select all... > >> >> OK. > >> >> > >> >> Explain query... > >> >> OK. > >> >> > >> >> Explain query with verbose... > >> >> OK. > >> >> > >> >> Explain query with costs... > >> >> OK. > >> >> > >> >> Explain analyze query... > >> >> OK. > >> >> > >> >> Explain analyze query with buffers... > >> >> OK. > >> >> > >> >> Explain analyze query with timing... > >> >> OK. > >> >> > >> >> Auto commit disabled... > >> >> OK. > >> >> > >> >> Auto commit enabled... > >> >> OK. > >> >> > >> >> Auto rollback enabled... > >> >> ERROR > >> >> ------- > >> >> > >> >> Something like: > >> >> > >> >> ------- > >> >> runTest (pgadmin.feature_tests.query_tool_tests. > QueryToolFeatureTest) > >> >> Query tool feature test ... > >> >> On demand result set on scrolling... OK. > >> >> On demand result set on grid select all... OK. > >> >> On demand result set on column select all... OK. > >> >> Explain query... OK. > >> >> Explain query with verbose... OK. > >> >> Explain query with costs... OK. > >> >> Explain analyze query... OK. > >> >> Explain analyze query with buffers... OK. > >> >> Explain analyze query with timing... OK. > >> >> Auto commit disabled... OK. > >> >> Auto commit enabled... OK. > >> >> Auto rollback enabled... ERROR > >> >> -------- > >> >> > >> > Fixed. > >> > > >> > > >> >> > >> >> Thanks! > >> >> > >> >> -- > >> >> Dave Page > >> >> Blog: http://pgsnake.blogspot.com > >> >> Twitter: @pgsnake > >> >> > >> >> EnterpriseDB UK: http://www.enterprisedb.com > >> >> The Enterprise PostgreSQL Company > >> > > >> > > >> > >> > >> > >> -- > >> Dave Page > >> Blog: http://pgsnake.blogspot.com > >> Twitter: @pgsnake > >> > >> EnterpriseDB UK: http://www.enterprisedb.com > >> The Enterprise PostgreSQL Company > > > > > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
diff --git a/web/pgadmin/feature_tests/connect_to_server_feature_test.py b/web/pgadmin/feature_tests/connect_to_server_feature_test.py index e8de161..6bec4ac 100644 --- a/web/pgadmin/feature_tests/connect_to_server_feature_test.py +++ b/web/pgadmin/feature_tests/connect_to_server_feature_test.py @@ -7,6 +7,7 @@ # ########################################################################## +import time from selenium.webdriver import ActionChains import config as app_config @@ -53,6 +54,7 @@ class ConnectsToServerFeatureTest(BaseFeatureTest): def _connects_to_server(self): self.page.find_by_xpath("//*[@class='aciTreeText' and .='Servers']").click() + time.sleep(2) self.page.driver.find_element_by_link_text("Object").click() ActionChains(self.page.driver) \ .move_to_element(self.page.driver.find_element_by_link_text("Create")) \ diff --git a/web/pgadmin/feature_tests/pg_datatype_validation_test.py b/web/pgadmin/feature_tests/pg_datatype_validation_test.py index b72f727..6b85848 100644 --- a/web/pgadmin/feature_tests/pg_datatype_validation_test.py +++ b/web/pgadmin/feature_tests/pg_datatype_validation_test.py @@ -6,6 +6,7 @@ # This software is released under the PostgreSQL Licence # ########################################################################## +import time from selenium.webdriver import ActionChains from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait @@ -56,6 +57,7 @@ class PGDataypeFeatureTest(BaseFeatureTest): self.page.find_by_xpath( "//*[@class='aciTreeText' and .='Servers']" ).click() + time.sleep(2) self.page.driver.find_element_by_link_text("Object").click() ActionChains(self.page.driver) \ .move_to_element( diff --git a/web/pgadmin/feature_tests/query_tool_tests.py b/web/pgadmin/feature_tests/query_tool_tests.py index 1861599..c5817e3 100644 --- a/web/pgadmin/feature_tests/query_tool_tests.py +++ b/web/pgadmin/feature_tests/query_tool_tests.py @@ -138,6 +138,7 @@ class QueryToolFeatureTest(BaseFeatureTest): def _connects_to_server(self): self.page.find_by_xpath( "//*[@class='aciTreeText' and .='Servers']").click() + time.sleep(2) self.page.driver.find_element_by_link_text("Object").click() ActionChains(self.page.driver) \ .move_to_element( diff --git a/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py b/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py index a0df44e..75b4222 100644 --- a/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py +++ b/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py @@ -75,6 +75,7 @@ class CheckForXssFeatureTest(BaseFeatureTest): def _connects_to_server(self): self.page.find_by_xpath("//*[@class='aciTreeText' and .='Servers']").click() + time.sleep(2) self.page.driver.find_element_by_link_text("Object").click() ActionChains(self.page.driver) \ .move_to_element(self.page.driver.find_element_by_link_text("Create")) \ diff --git a/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py b/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py index 094dfed..e847040 100644 --- a/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py +++ b/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py @@ -42,6 +42,7 @@ class CheckDebuggerForXssFeatureTest(BaseFeatureTest): def _connects_to_server(self): self.page.find_by_xpath("//*[@class='aciTreeText' and .='Servers']").click() + time.sleep(2) self.page.driver.find_element_by_link_text("Object").click() ActionChains(self.page.driver) \ .move_to_element(self.page.driver.find_element_by_link_text("Create")) \
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers