diff options
Diffstat (limited to 'yaksh')
-rw-r--r-- | yaksh/live_server_tests/selenium_test.py | 22 | ||||
-rw-r--r-- | yaksh/static/yaksh/js/requesthandler.js | 19 |
2 files changed, 38 insertions, 3 deletions
diff --git a/yaksh/live_server_tests/selenium_test.py b/yaksh/live_server_tests/selenium_test.py index 00e1847..859d032 100644 --- a/yaksh/live_server_tests/selenium_test.py +++ b/yaksh/live_server_tests/selenium_test.py @@ -7,7 +7,23 @@ from selenium.common.exceptions import WebDriverException import multiprocessing import argparse -import time + + +class ElementDisplay(object): + '''Custom expected condition ''' + def __init__(self, locator): + self.locator = locator + + def __call__(self, driver): + try: + element = EC._find_element(driver, self.locator) + a = element.value_of_css_property("display") == "none" + print(a) + return a + except Exception as e: + print(e) + return False + class SeleniumTestError(Exception): pass @@ -49,11 +65,13 @@ class SeleniumTest(): def submit_answer(self, question_label, answer, loop_count=1): self.driver.implicitly_wait(2) for count in range(loop_count): - time.sleep(15) + print("in") self.driver.find_element_by_link_text(question_label).click() submit_answer_elem = self.driver.find_element_by_id("check") self.driver.execute_script('global_editor.editor.setValue({});'.format(answer)) submit_answer_elem.click() + WebDriverWait(self.driver, 90).until(ElementDisplay( + (By.XPATH, "//*[@id='ontop']"))) def test_c_question(self, question_label): # Incorrect Answer diff --git a/yaksh/static/yaksh/js/requesthandler.js b/yaksh/static/yaksh/js/requesthandler.js index f653da1..c5629ab 100644 --- a/yaksh/static/yaksh/js/requesthandler.js +++ b/yaksh/static/yaksh/js/requesthandler.js @@ -1,22 +1,25 @@ request_status = "initial" count = 0; +checker = null function submitRequest(){ document.forms["code"].submit(); } function check_state(state, uid) { - if ((state == "running" || state == "not started") && count < 15) { + if ((state == "running" || state == "not started") && count < 7) { count++; setTimeout(function() {get_result(uid);}, 2000); } else if (state == "unknown") { request_status = "initial"; count = 0; notify("You are requesting for a wrong data"); + clearInterval(checker); unlock_screen(); } else { request_status = "initial"; count = 0; notify("Please try after few minutes"); + clearInterval(checker); unlock_screen(); } } @@ -36,6 +39,13 @@ function unlock_screen() { document.getElementById("ontop").style.display = "none"; } +function check_lock_screen() { + var $ontop_div = document.getElementById("ontop"); + if ($ontop_div.style.display == "block") { + $ontop_div.style.display = "none"; + } +} + function get_result(uid){ $.ajax({ method: "GET", @@ -44,6 +54,7 @@ function get_result(uid){ success: function(data, status, xhr) { content_type = xhr.getResponseHeader("content-type"); if(content_type.includes("text/html")) { + clearInterval(checker); unlock_screen(); document.open(); document.write(data); @@ -55,12 +66,14 @@ function get_result(uid){ } else { request_status = "initial"; count = 0; + clearInterval(checker); unlock_screen(); } }, error: function(xhr, text_status, error_thrown ) { request_status = "initial"; count = 0; + clearInterval(checker); unlock_screen(); notify("There is some problem. Try later.") } @@ -103,6 +116,7 @@ $(document).ready(function(){ global_editor.editor.clearHistory(); } $('#code').submit(function(e) { + checker = setInterval(check_lock_screen, 30000); lock_screen(); $.ajax({ type: 'POST', @@ -114,6 +128,7 @@ $(document).ready(function(){ if(content_type.includes("text/html")) { request_status = "initial" count = 0; + clearInterval(checker); unlock_screen(); document.open(); document.write(data); @@ -126,12 +141,14 @@ $(document).ready(function(){ } else { request_status = "initial"; count = 0; + clearInterval(checker); unlock_screen(); } }, error: function(xhr, text_status, error_thrown ) { request_status = "initial"; count = 0; + clearInterval(checker); unlock_screen(); notify("There is some problem. Try later.") } |