mirror of
https://github.com/Hopiu/bowser.git
synced 2026-03-16 19:10:24 +00:00
This commit introduces support for loading and rendering images in the Bowser web browser, enhancing the rendering engine to handle various image sources. Key changes include: - Updated README.md to reflect the new milestone status and added features for image support. - Added `ImageLayout` class to manage image layout and loading. - Implemented synchronous and asynchronous image loading in `src/network/images.py`, including caching mechanisms. - Expanded the DOM parsing capabilities in `DocumentLayout` to handle `<img>` tags and manage their layout directives. - Created a new `DrawImage` command in the rendering pipeline, which handles the drawing of both loaded images and placeholders for unloaded images. - Introduced a task queue for managing asynchronous image loads, ensuring UI remains responsive during image fetching. - Added unit tests for image loading, layout management, and the async task queue to ensure robust functionality and prevent regressions. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| conftest.py | ||
| README.md | ||
| test_browser.py | ||
| test_cookies.py | ||
| test_css.py | ||
| test_dom_graph.py | ||
| test_dom_graph_page.py | ||
| test_frame.py | ||
| test_html_parsing.py | ||
| test_http.py | ||
| test_images.py | ||
| test_layout.py | ||
| test_parser.py | ||
| test_render.py | ||
| test_styling_integration.py | ||
| test_tasks.py | ||
| test_templates.py | ||
| test_url.py | ||
| test_url_normalization.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