mirror of
https://github.com/Hopiu/bowser.git
synced 2026-03-16 19:10:24 +00:00
- Added a comprehensive CSS parser with support for tag, class, and ID selectors. - Implemented property declaration parsing and inline style handling. - Introduced a Selector class for specificity calculation and matching against HTML elements. - Created a CSSRule class to represent individual CSS rules. - Developed a StyleResolver class to compute final styles for elements, considering cascade and inheritance. - Added integration tests for CSS parsing and style application in HTML documents. - Updated HTML parser to retain <style> tags for CSS extraction. - Enhanced tests for CSS parsing, inline styles, and computed styles. |
||
|---|---|---|
| .. | ||
| __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_layout.py | ||
| test_parser.py | ||
| test_render.py | ||
| test_styling_integration.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