Skip to content

Commit c8d5aa9

Browse files
committed
Execute notebooks faster for Chrome and Firefox (to be tested with Safari before porting changes to that browser too)
1 parent 5698572 commit c8d5aa9

File tree

1 file changed

+27
-11
lines changed

1 file changed

+27
-11
lines changed

scripts/automated-notebook-run-script.py

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,13 @@ def main():
9494
)
9595
driver.execute_script("arguments[0].click();", kernel_button)
9696
driver.switch_to.active_element.send_keys(Keys.TAB)
97-
time.sleep(2)
97+
time.sleep(1)
9898
actions.send_keys(f"{args.kernel}").perform()
99-
time.sleep(2)
99+
time.sleep(1)
100100
actions.send_keys(Keys.TAB).perform()
101-
time.sleep(2)
101+
time.sleep(1)
102102
actions.send_keys(Keys.ENTER).perform()
103-
time.sleep(2)
104-
time.sleep(0.5)
103+
time.sleep(1)
105104

106105
# This will run all the cells of the chosen notebook
107106
if args.driver == "chrome" or args.driver == "firefox":
@@ -110,7 +109,6 @@ def main():
110109
focused_cell = driver.find_element(
111110
By.CSS_SELECTOR, ".jp-Notebook-cell.jp-mod-selected"
112111
)
113-
print(focused_cell.text)
114112
editor_divs = focused_cell.find_elements(
115113
By.CSS_SELECTOR, ".jp-InputArea-editor div"
116114
)
@@ -132,7 +130,7 @@ def main():
132130
)
133131
input_box.click()
134132
input_box.send_keys(f"{args.stdin}")
135-
time.sleep(10)
133+
time.sleep(1)
136134
input_box.send_keys(Keys.CONTROL, Keys.ENTER)
137135
next_cell = focused_cell.find_element(
138136
By.XPATH,
@@ -141,14 +139,32 @@ def main():
141139
driver.execute_script(
142140
"arguments[0].scrollIntoView({block:'center'});", next_cell
143141
)
144-
print(next_cell.text)
145142
next_cell.click()
143+
while True:
144+
spans = driver.find_elements(By.CSS_SELECTOR, "span.jp-StatusBar-TextItem")
145+
status_span = spans[2]
146+
text = status_span.text
147+
148+
if "Idle" in text:
149+
break
150+
time.sleep(0.01)
151+
print(focused_cell.text)
152+
focused_cell=next_cell
146153
run_menu = wait.until(
147154
EC.element_to_be_clickable((By.XPATH, "//li[normalize-space()='Run']"))
148155
)
149-
actions.move_to_element(run_menu).pause(0.1).click().perform()
150-
actions.send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
151-
time.sleep(1.0)
156+
actions.move_to_element(run_menu).pause(0.05).click().perform()
157+
actions.send_keys(Keys.DOWN).send_keys(Keys.ENTER).pause(0.1).perform()
158+
if not cell_is_waiting_for_input(driver):
159+
while True:
160+
spans = driver.find_elements(By.CSS_SELECTOR, "span.jp-StatusBar-TextItem")
161+
status_span = spans[2]
162+
text = status_span.text
163+
164+
if "Idle" in text:
165+
print(focused_cell.text)
166+
break
167+
time.sleep(0.01)
152168

153169
elif args.driver == "safari":
154170
print("Running all cells using Shift+Enter...")

0 commit comments

Comments
 (0)