from playwright.sync_api import sync_playwright class BrowserController: def __init__(self): self.playwright = sync_playwright().start() self.browser = self.playwright.chromium.launch(headless=True) self.page = self.browser.new_page() def navigate(self, url): self.page.goto(url) return self.get_state() def click(self, selector): self.page.click(selector) return self.get_state() def type_text(self, selector, text): self.page.fill(selector, text) return self.get_state() def scroll(self, pixels): self.page.evaluate(f'window.scrollBy(0, {pixels})') return self.get_state() def get_state(self): return { "screenshot": self.page.screenshot().hex(), "html": self.page.content() } def close(self): self.browser.close() self.playwright.stop()