"""Tests for extract.* commands (require an http/https active tab).""" def test_extract_links(browser, http_tab): browser("tabs.active", {"tabId": http_tab["id"]}) links = browser("extract.links") assert isinstance(links, list) hrefs = [] for lnk in links: assert "href" in lnk assert "text" in lnk hrefs.append(lnk["href"]) assert len(hrefs) == len(set(hrefs)) def test_extract_images(browser, http_tab): browser("tabs.active", {"tabId": http_tab["id"]}) images = browser("extract.images") assert isinstance(images, list) sources = [] for img in images: assert "src" in img assert img["src"] != "" sources.append(img["src"]) assert len(sources) == len(set(sources)) def test_extract_text(browser, http_tab): browser("tabs.active", {"tabId": http_tab["id"]}) text = browser("extract.text") assert isinstance(text, str) assert len(text) > 0 def test_extract_html(browser, http_tab): browser("tabs.active", {"tabId": http_tab["id"]}) html = browser("extract.html") assert isinstance(html, str) assert "<" in html def test_extract_markdown(browser, http_tab): browser("tabs.active", {"tabId": http_tab["id"]}) markdown = browser("extract.markdown") assert isinstance(markdown, str) assert len(markdown.strip()) > 0 def test_extract_markdown_missing_selector_errors(browser, http_tab): browser("tabs.active", {"tabId": http_tab["id"]}) assert browser("dom.exists", {"selector": ".browser-cli-definitely-missing"}) is False try: browser("extract.markdown", {"selector": ".browser-cli-definitely-missing"}) except RuntimeError as exc: assert "No element" in str(exc)