diff --git a/tests/scrape/test_scrape.py b/tests/scrape/test_scrape.py
index 3b02c70fc..5d07b8f1c 100644
--- a/tests/scrape/test_scrape.py
+++ b/tests/scrape/test_scrape.py
@@ -1,8 +1,10 @@
import unittest
-from unittest.mock import patch
+from unittest.mock import patch, MagicMock
+import re
from aider.commands import Commands
from aider.io import InputOutput
+from aider.scrape import Scraper
class TestScrape(unittest.TestCase):
@@ -37,6 +39,48 @@ class TestScrape(unittest.TestCase):
playwright_imported, "Playwright should be importable after running cmd_web"
)
+ @patch("aider.scrape.sync_playwright")
+ def test_scrape_actual_url_with_playwright(self, mock_sync_playwright):
+ # Mock the Playwright browser and page
+ mock_browser = MagicMock()
+ mock_page = MagicMock()
+ mock_browser.new_page.return_value = mock_page
+ mock_page.content.return_value = "
Test Page
"
+ mock_sync_playwright.return_value.__enter__.return_value.chromium.launch.return_value = mock_browser
+
+ # Create a Scraper instance with a mock print_error function
+ mock_print_error = MagicMock()
+ scraper = Scraper(print_error=mock_print_error, playwright_available=True)
+
+ # Scrape a real URL
+ result = scraper.scrape("https://example.com")
+
+ # Assert that the result contains expected content
+ self.assertIsNotNone(result)
+ self.assertIn("Test Page", result)
+
+ # Assert that print_error was never called
+ mock_print_error.assert_not_called()
+
+ # Assert that Playwright methods were called
+ mock_sync_playwright.assert_called_once()
+ mock_browser.new_page.assert_called()
+ mock_page.goto.assert_called_with("https://example.com", wait_until="networkidle", timeout=5000)
+ mock_page.content.assert_called_once()
+
+ def test_scraper_print_error_not_called(self):
+ # Create a Scraper instance with a mock print_error function
+ mock_print_error = MagicMock()
+ scraper = Scraper(print_error=mock_print_error)
+
+ # Test various methods of the Scraper class
+ scraper.scrape_with_httpx("https://example.com")
+ scraper.try_pandoc()
+ scraper.html_to_markdown("Test
")
+
+ # Assert that print_error was never called
+ mock_print_error.assert_not_called()
+
if __name__ == "__main__":
unittest.main()