mirror of
				https://github.com/microsoft/autogen.git
				synced 2025-10-31 01:40:58 +00:00 
			
		
		
		
	 b9d682c0a1
			
		
	
	
		b9d682c0a1
		
			
		
	
	
	
	
		
			
			* fixes remake * modified toml adding tests * playwright tests * tests websurfer --------- Co-authored-by: Ryan Sweet <rysweet@microsoft.com>
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import pytest
 | |
| from autogen_ext.agents.web_surfer.playwright_controller import PlaywrightController
 | |
| from playwright.async_api import async_playwright
 | |
| 
 | |
| FAKE_HTML = """
 | |
| <!DOCTYPE html>
 | |
| <html lang="en">
 | |
| <head>
 | |
|     <meta charset="UTF-8">
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
|     <title>Fake Page</title>
 | |
| </head>
 | |
| <body>
 | |
|     <h1 id="header">Welcome to the Fake Page</h1>
 | |
|     <button id="click-me">Click Me</button>
 | |
|     <input type="text" id="input-box" />
 | |
| </body>
 | |
| </html>
 | |
| """
 | |
| 
 | |
| 
 | |
| @pytest.mark.asyncio
 | |
| async def test_playwright_controller_initialization() -> None:
 | |
|     controller = PlaywrightController()
 | |
|     assert controller.viewport_width == 1440
 | |
|     assert controller.viewport_height == 900
 | |
|     assert controller.animate_actions is False
 | |
| 
 | |
| 
 | |
| @pytest.mark.asyncio
 | |
| async def test_playwright_controller_visit_page() -> None:
 | |
|     async with async_playwright() as p:
 | |
|         browser = await p.chromium.launch(headless=True)
 | |
|         context = await browser.new_context()
 | |
|         page = await context.new_page()
 | |
|         await page.set_content(FAKE_HTML)
 | |
| 
 | |
|         controller = PlaywrightController()
 | |
|         await controller.visit_page(page, "data:text/html," + FAKE_HTML)
 | |
|         assert page.url.startswith("data:text/html")
 | |
| 
 | |
| 
 | |
| @pytest.mark.asyncio
 | |
| async def test_playwright_controller_click_id() -> None:
 | |
|     async with async_playwright() as p:
 | |
|         browser = await p.chromium.launch(headless=True)
 | |
|         context = await browser.new_context()
 | |
|         page = await context.new_page()
 | |
|         await page.set_content(FAKE_HTML)
 | |
| 
 | |
|         controller = PlaywrightController()
 | |
|         rects = await controller.get_interactive_rects(page)
 | |
|         click_me_id = ""
 | |
|         for rect in rects:
 | |
|             if rects[rect]["aria_name"] == "Click Me":
 | |
|                 click_me_id = str(rect)
 | |
|                 break
 | |
| 
 | |
|         await controller.click_id(page, click_me_id)
 | |
|         assert await page.evaluate("document.activeElement.id") == "click-me"
 | |
| 
 | |
| 
 | |
| @pytest.mark.asyncio
 | |
| async def test_playwright_controller_fill_id() -> None:
 | |
|     async with async_playwright() as p:
 | |
|         browser = await p.chromium.launch(headless=True)
 | |
|         context = await browser.new_context()
 | |
|         page = await context.new_page()
 | |
|         await page.set_content(FAKE_HTML)
 | |
|         rects = await PlaywrightController().get_interactive_rects(page)
 | |
|         input_box_id = ""
 | |
|         for rect in rects:
 | |
|             if rects[rect]["tag_name"] == "input, type=text":
 | |
|                 input_box_id = str(rect)
 | |
|                 break
 | |
|         controller = PlaywrightController()
 | |
|         await controller.fill_id(page, input_box_id, "test input")
 | |
|         assert await page.evaluate("document.getElementById('input-box').value") == "test input"
 |