Skip to content

Make Selenium tests pass, hopefully #1655

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions example/screenshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import subprocess
from time import sleep

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
Expand Down Expand Up @@ -54,7 +55,7 @@ def set_viewport_size(selenium, width, height):
def submit_form(selenium, data):
url = selenium.current_url
for name, value in data.items():
el = selenium.find_element_by_name(name)
el = selenium.find_element(By.NAME, name)
el.send_keys(value)
el.send_keys(Keys.RETURN)
WebDriverWait(selenium, timeout=5).until(EC.url_changes(url))
Expand All @@ -72,12 +73,12 @@ def main():

selenium.get("http://localhost:8000/admin/auth/user/")
# Check if SQL Panel is already visible:
sql_panel = selenium.find_element_by_id("djdt-SQLPanel")
sql_panel = selenium.find_element(By.ID, "djdt-SQLPanel")
if not sql_panel:
# Open the admin sidebar.
el = selenium.find_element_by_id("djDebugToolbarHandle")
el = selenium.find_element(By.ID, "djDebugToolbarHandle")
el.click()
sql_panel = selenium.find_element_by_id("djdt-SQLPanel")
sql_panel = selenium.find_element(By.ID, "djdt-SQLPanel")
# Open the SQL panel.
sql_panel.click()

Expand Down
54 changes: 28 additions & 26 deletions tests/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,18 +482,18 @@ def wait(self):

def test_basic(self):
self.get("/regular/basic/")
version_panel = self.selenium.find_element_by_id("VersionsPanel")
version_panel = self.selenium.find_element(By.ID, "VersionsPanel")

# Versions panel isn't loaded
with self.assertRaises(NoSuchElementException):
version_panel.find_element_by_tag_name("table")
version_panel.find_element(By.TAG_NAME, "table")

# Click to show the versions panel
self.selenium.find_element_by_class_name("VersionsPanel").click()
self.selenium.find_element(By.CLASS_NAME, "VersionsPanel").click()

# Version panel loads
table = self.wait.until(
lambda selenium: version_panel.find_element_by_tag_name("table")
lambda selenium: version_panel.find_element(By.TAG_NAME, "table")
)
self.assertIn("Name", table.text)
self.assertIn("Version", table.text)
Expand All @@ -505,10 +505,10 @@ def test_basic(self):
)
def test_basic_jinja(self):
self.get("/regular_jinja/basic")
template_panel = self.selenium.find_element_by_id("TemplatesPanel")
template_panel = self.selenium.find_element(By.ID, "TemplatesPanel")

# Click to show the template panel
self.selenium.find_element_by_class_name("TemplatesPanel").click()
self.selenium.find_element(By.CLASS_NAME, "TemplatesPanel").click()

self.assertIn("Templates (2 rendered)", template_panel.text)
self.assertIn("base.html", template_panel.text)
Expand All @@ -523,18 +523,20 @@ def test_rerender_on_history_switch(self):
self.get("/regular_jinja/basic")
# Make a new request so the history panel has more than one option.
self.get("/execute_sql/")
template_panel = self.selenium.find_element_by_id("HistoryPanel")
template_panel = self.selenium.find_element(By.ID, "HistoryPanel")
# Record the current side panel of buttons for later comparison.
previous_button_panel = self.selenium.find_element_by_id(
"djDebugPanelList"
previous_button_panel = self.selenium.find_element(
By.ID, "djDebugPanelList"
).text

# Click to show the history panel
self.selenium.find_element_by_class_name("HistoryPanel").click()
self.selenium.find_element(By.CLASS_NAME, "HistoryPanel").click()
# Click to switch back to the jinja page view snapshot
list(template_panel.find_elements_by_css_selector("button"))[-1].click()
list(template_panel.find_elements(By.CSS_SELECTOR, "button"))[-1].click()

current_button_panel = self.selenium.find_element_by_id("djDebugPanelList").text
current_button_panel = self.selenium.find_element(
By.ID, "djDebugPanelList"
).text
# Verify the button side panels have updated.
self.assertNotEqual(previous_button_panel, current_button_panel)
self.assertNotIn("1 query", current_button_panel)
Expand All @@ -543,14 +545,14 @@ def test_rerender_on_history_switch(self):
@override_settings(DEBUG_TOOLBAR_CONFIG={"RESULTS_CACHE_SIZE": 0})
def test_expired_store(self):
self.get("/regular/basic/")
version_panel = self.selenium.find_element_by_id("VersionsPanel")
version_panel = self.selenium.find_element(By.ID, "VersionsPanel")

# Click to show the version panel
self.selenium.find_element_by_class_name("VersionsPanel").click()
self.selenium.find_element(By.CLASS_NAME, "VersionsPanel").click()

# Version panel doesn't loads
error = self.wait.until(
lambda selenium: version_panel.find_element_by_tag_name("p")
lambda selenium: version_panel.find_element(By.TAG_NAME, "p")
)
self.assertIn("Data for this panel isn't available anymore.", error.text)

Expand All @@ -574,31 +576,31 @@ def test_expired_store(self):
)
def test_django_cached_template_loader(self):
self.get("/regular/basic/")
version_panel = self.selenium.find_element_by_id("TemplatesPanel")
version_panel = self.selenium.find_element(By.ID, "TemplatesPanel")

# Click to show the templates panel
self.selenium.find_element_by_class_name("TemplatesPanel").click()
self.selenium.find_element(By.CLASS_NAME, "TemplatesPanel").click()

# Templates panel loads
trigger = self.wait.until(
lambda selenium: version_panel.find_element_by_css_selector(".remoteCall")
lambda selenium: version_panel.find_element(By.CSS_SELECTOR, ".remoteCall")
)
trigger.click()

# Verify the code is displayed
self.wait.until(
lambda selenium: self.selenium.find_element_by_css_selector(
"#djDebugWindow code"
lambda selenium: self.selenium.find_element(
By.CSS_SELECTOR, "#djDebugWindow code"
)
)

def test_sql_action_and_go_back(self):
self.get("/execute_sql/")
sql_panel = self.selenium.find_element_by_id("SQLPanel")
debug_window = self.selenium.find_element_by_id("djDebugWindow")
sql_panel = self.selenium.find_element(By.ID, "SQLPanel")
debug_window = self.selenium.find_element(By.ID, "djDebugWindow")

# Click to show the SQL panel
self.selenium.find_element_by_class_name("SQLPanel").click()
self.selenium.find_element(By.CLASS_NAME, "SQLPanel").click()

# SQL panel loads
button = self.wait.until(
Expand All @@ -611,7 +613,7 @@ def test_sql_action_and_go_back(self):
self.assertIn("SQL selected", debug_window.text)

# Close the SQL selected window
debug_window.find_element_by_class_name("djDebugClose").click()
debug_window.find_element(By.CLASS_NAME, "djDebugClose").click()
self.wait.until(EC.invisibility_of_element(debug_window))

# SQL panel is still visible
Expand All @@ -620,7 +622,7 @@ def test_sql_action_and_go_back(self):
@override_settings(DEBUG_TOOLBAR_PANELS=["tests.test_integration.BuggyPanel"])
def test_displays_server_error(self):
self.get("/regular/basic/")
debug_window = self.selenium.find_element_by_id("djDebugWindow")
self.selenium.find_element_by_class_name("BuggyPanel").click()
debug_window = self.selenium.find_element(By.ID, "djDebugWindow")
self.selenium.find_element(By.CLASS_NAME, "BuggyPanel").click()
self.wait.until(EC.visibility_of(debug_window))
self.assertEqual(debug_window.text, "»\n500: Internal Server Error")
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ setenv =
PYTHONPATH = {toxinidir}
PYTHONWARNINGS = d
py39-dj32-postgresql: DJANGO_SELENIUM_TESTS = true
py310-dj40-postgresql: DJANGO_SELENIUM_TESTS = true
DB_NAME = {env:DB_NAME:debug_toolbar}
DB_USER = {env:DB_USER:debug_toolbar}
DB_HOST = {env:DB_HOST:localhost}
Expand Down