mirror of
https://github.com/Hopiu/bowser.git
synced 2026-03-17 03:20:24 +00:00
Features: - Add Jinja2 template engine for page rendering - Create startpage with Bowser branding and version info - Create error page templates for 404, 500, and network errors - Support for about:startpage special URL - Custom error message support in templates - Graceful fallback rendering if template fails - Browser now starts with startpage when no URL provided Templates: - assets/pages/startpage.html - Beautiful purple gradient intro page - assets/pages/error_404.html - Pink gradient 404 error page - assets/pages/error_500.html - Red gradient 500 error page - assets/pages/error_network.html - Orange gradient network error page Code: - src/templates.py - Template rendering utilities with Jinja2 - Updated main.py to use startpage as default - Updated Frame.load() to handle about: URLs and render errors with templates - Added 7 comprehensive template tests All 62 core tests passing (excluding GTK-dependent tests) |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| conftest.py | ||
| README.md | ||
| test_browser.py | ||
| test_cookies.py | ||
| test_frame.py | ||
| test_html_parsing.py | ||
| test_http.py | ||
| test_layout.py | ||
| test_parser.py | ||
| test_render.py | ||
| test_templates.py | ||
| test_url.py | ||
Bowser Test Suite
This directory contains the test suite for the Bowser browser.
Running Tests
Run all tests:
uv run pytest
Run with verbose output:
uv run pytest -v
Run specific test file:
uv run pytest tests/test_browser.py
Run with coverage:
uv run pytest --cov=src --cov-report=html
View coverage report:
open htmlcov/index.html
Test Organization
test_url.py- URL parsing and resolutiontest_parser.py- HTML/CSS parsingtest_browser.py- Browser and tab managementtest_cookies.py- Cookie jar functionalitytest_layout.py- Layout engine componentstest_render.py- Rendering primitivesconftest.py- Shared fixtures and configuration
Writing Tests
Tests use pytest. Example:
def test_feature():
# Arrange
obj = MyClass()
# Act
result = obj.method()
# Assert
assert result == expected
Use mocks for GTK components:
@patch('src.browser.browser.Gtk')
def test_with_gtk(mock_gtk):
browser = Browser()
# test code