aboutsummaryrefslogtreecommitdiff
path: root/tests/integration/test_smoke.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/test_smoke.py')
-rw-r--r--tests/integration/test_smoke.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/integration/test_smoke.py b/tests/integration/test_smoke.py
new file mode 100644
index 0000000..cc44165
--- /dev/null
+++ b/tests/integration/test_smoke.py
@@ -0,0 +1,71 @@
+"""
+Smoke tests for basic application functionality.
+"""
+import pytest
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support import expected_conditions as EC
+
+pytestmark = [pytest.mark.nondestructive]
+
+
+@pytest.mark.smoke
+def test_page_loads(app):
+ """Test that the page loads successfully."""
+ assert "Amulet" in app.title or app.title != ""
+
+
+@pytest.mark.smoke
+def test_canvas_exists(app):
+ """Test that the canvas element exists."""
+ canvas = app.find_element(By.ID, "canvas")
+ assert canvas is not None
+ assert canvas.is_displayed()
+
+
+@pytest.mark.smoke
+def test_canvas_dimensions(app):
+ """Test that canvas has proper dimensions."""
+ canvas = app.find_element(By.ID, "canvas")
+
+ # Canvas should have width and height attributes
+ width = canvas.get_attribute("width")
+ height = canvas.get_attribute("height")
+
+ assert width is not None
+ assert height is not None
+ assert int(width) > 0
+ assert int(height) > 0
+
+
+@pytest.mark.smoke
+def test_no_javascript_errors(app):
+ """Test that there are no JavaScript errors on page load."""
+ # Get browser console logs
+ logs = app.get_log("browser")
+
+ # Filter for severe errors (not warnings)
+ errors = [log for log in logs if log["level"] == "SEVERE"]
+
+ # Filter out favicon 404 errors (expected)
+ errors = [log for log in errors if "favicon.ico" not in log.get("message", "")]
+
+ # Assert no severe errors
+ assert len(errors) == 0, f"JavaScript errors found: {errors}"
+
+
+@pytest.mark.smoke
+def test_status_overlay_present(app):
+ """Test that the status overlay exists (for loading indication)."""
+ status_overlay = app.find_element(By.ID, "status-overlay")
+ assert status_overlay is not None
+
+
+@pytest.mark.smoke
+def test_container_structure(app):
+ """Test that the main container structure is correct."""
+ container = app.find_element(By.ID, "container")
+ assert container is not None
+
+ # Check for canvas inside container
+ canvas = container.find_element(By.ID, "canvas")
+ assert canvas is not None