Skip to content

Commit 36e14ef

Browse files
Tres DuBieltakluyver
authored andcommitted
Translated kernel menu javascript test to selenium
1 parent 8881a06 commit 36e14ef

File tree

2 files changed

+79
-44
lines changed

2 files changed

+79
-44
lines changed

notebook/tests/notebook/kernel_menu.js

Lines changed: 0 additions & 44 deletions
This file was deleted.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
'''
2+
Test that the kernel disconnects and re-connects
3+
when shutdown then restarted
4+
'''
5+
6+
from selenium.common.exceptions import TimeoutException
7+
from selenium.webdriver.common.by import By
8+
from selenium.webdriver.support import expected_conditions as EC
9+
from selenium.webdriver.support.ui import WebDriverWait
10+
from notebook.tests.selenium.utils import wait_for_selector
11+
12+
kernel_menu_selector = '.dropdown:nth-child(5)'
13+
menu_items = ['#restart_kernel', '#restart_clear_output', '#restart_run_all', '#shutdown_kernel']
14+
notify_interaction = '#notification_kernel > span'
15+
16+
shutdown_selector = menu_items.pop()
17+
confirm_selector = '.btn-danger'
18+
19+
def check_kernel_shutdown(notebook):
20+
browser = notebook.browser
21+
22+
try:
23+
WebDriverWait(browser, 3).until(
24+
EC.text_to_be_present_in_element(
25+
(By.CSS_SELECTOR, notify_interaction), 'No kernel'))
26+
except TimeoutException:
27+
return False
28+
return True
29+
30+
def check_kernel_restart(notebook):
31+
browser = notebook.browser
32+
33+
try:
34+
WebDriverWait(browser, 3).until(
35+
EC.text_to_be_present_in_element(
36+
(By.CSS_SELECTOR, notify_interaction), 'Kernel ready'))
37+
except TimeoutException:
38+
return False
39+
return True
40+
41+
def check_modal_still_open(notebook):
42+
'''
43+
The shutdown confirmation modal seems to briefly reappear
44+
after disappearing, then disappear for good.
45+
Selenium kept throwing errors for element not being clickable
46+
because it was obscured, even though we use WebDriverWait
47+
'''
48+
browser = notebook.browser
49+
return browser.find_elements_by_css_selector('.modal-backdrop')
50+
51+
def test_menu_items(notebook):
52+
browser = notebook.browser
53+
kernel_menu = browser.find_element_by_link_text('Kernel')
54+
55+
for menu_item_selector in menu_items:
56+
WebDriverWait(browser, 3).until(
57+
EC.element_to_be_clickable((By.CSS_SELECTOR, kernel_menu_selector)))
58+
59+
kernel_menu.click()
60+
browser.find_element_by_css_selector(shutdown_selector).click()
61+
62+
wait_for_selector(browser, confirm_selector)
63+
browser.find_element_by_css_selector(confirm_selector).click()
64+
65+
WebDriverWait(browser, 3).until(
66+
EC.element_to_be_clickable((By.CSS_SELECTOR, kernel_menu_selector)))
67+
68+
while check_modal_still_open(notebook):
69+
pass
70+
71+
assert check_kernel_shutdown(notebook)
72+
73+
WebDriverWait(browser, 3).until(
74+
EC.element_to_be_clickable((By.CSS_SELECTOR, kernel_menu_selector)))
75+
76+
kernel_menu.click()
77+
browser.find_element_by_css_selector(menu_item_selector).click()
78+
79+
assert check_kernel_restart(notebook)

0 commit comments

Comments
 (0)