Skip to content

Commit 9640e1f

Browse files
authored
Merge pull request #4101 from dubielt1/test-kernel-menu
Translated kernel menu javascript test to selenium
2 parents 6d76481 + 08d0b56 commit 9640e1f

File tree

3 files changed

+63
-45
lines changed

3 files changed

+63
-45
lines changed

notebook/tests/notebook/kernel_menu.js

Lines changed: 0 additions & 44 deletions
This file was deleted.

notebook/tests/selenium/conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,6 @@ def authenticated_browser(selenium_driver, notebook_server):
118118

119119
@pytest.fixture
120120
def notebook(authenticated_browser):
121-
return Notebook.new_notebook(authenticated_browser)
121+
tree_wh = authenticated_browser.current_window_handle
122+
yield Notebook.new_notebook(authenticated_browser)
123+
authenticated_browser.switch_to.window(tree_wh)
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from selenium.common.exceptions import TimeoutException
2+
from selenium.webdriver.common.by import By
3+
from selenium.webdriver.support import expected_conditions as EC
4+
from selenium.webdriver.support.ui import WebDriverWait
5+
from notebook.tests.selenium.utils import wait_for_selector
6+
7+
restart_selectors = [
8+
'#restart_kernel', '#restart_clear_output', '#restart_run_all'
9+
]
10+
notify_interaction = '#notification_kernel > span'
11+
12+
shutdown_selector = '#shutdown_kernel'
13+
confirm_selector = '.btn-danger'
14+
cancel_selector = ".modal-footer button:first-of-type"
15+
16+
17+
def test_cancel_restart_or_shutdown(notebook):
18+
"""Click each of the restart options, then cancel the confirmation dialog"""
19+
browser = notebook.browser
20+
kernel_menu = browser.find_element_by_id('kernellink')
21+
22+
for menu_item in restart_selectors + [shutdown_selector]:
23+
kernel_menu.click()
24+
wait_for_selector(browser, menu_item, visible=True, single=True).click()
25+
wait_for_selector(browser, cancel_selector, visible=True, single=True).click()
26+
WebDriverWait(browser, 3).until(
27+
EC.invisibility_of_element((By.CSS_SELECTOR, '.modal-backdrop'))
28+
)
29+
assert notebook.is_kernel_running()
30+
31+
32+
def test_menu_items(notebook):
33+
browser = notebook.browser
34+
kernel_menu = browser.find_element_by_id('kernellink')
35+
36+
for menu_item in restart_selectors:
37+
# Shutdown
38+
kernel_menu.click()
39+
wait_for_selector(browser, shutdown_selector, visible=True, single=True).click()
40+
41+
# Confirm shutdown
42+
wait_for_selector(browser, confirm_selector, visible=True, single=True).click()
43+
44+
WebDriverWait(browser, 3).until(
45+
lambda b: not notebook.is_kernel_running(),
46+
message="Kernel did not shut down as expected"
47+
)
48+
49+
# Restart
50+
# Selenium can't click the menu while a modal dialog is fading out
51+
WebDriverWait(browser, 3).until(
52+
EC.invisibility_of_element((By.CSS_SELECTOR, '.modal-backdrop'))
53+
)
54+
kernel_menu.click()
55+
56+
wait_for_selector(browser, menu_item, visible=True, single=True).click()
57+
WebDriverWait(browser, 10).until(
58+
lambda b: notebook.is_kernel_running(),
59+
message="Restart (%r) after shutdown did not start kernel" % menu_item
60+
)

0 commit comments

Comments
 (0)