"""Live integration tests against crawl.elevaseo.app.

OPT-IN: not run by default. Run via:

    cd python/firecrawl-client
    FIRECRAWL_API_KEY=fc-... uv run pytest -m live -v

Skips automatically when FIRECRAWL_API_KEY is unset (CI safety).
"""

from __future__ import annotations

import os

import pytest

from firecrawl_client import FirecrawlClient

pytestmark = [
    pytest.mark.live,
    pytest.mark.skipif(
        not os.environ.get("FIRECRAWL_API_KEY"),
        reason="FIRECRAWL_API_KEY not set",
    ),
]


@pytest.fixture
def client():
    with FirecrawlClient() as c:
        yield c


def test_scrape_example_dot_com(client):
    result = client.scrape("https://example.com")
    assert "Example Domain" in result.markdown


def test_map_example_dot_com_returns_links(client):
    result = client.map("example.com", limit=10)
    assert isinstance(result.urls, list)
    # example.com is minimal — just verify the call succeeds
    assert result.domain == "example.com"


def test_extract_example_dot_com_returns_title(client):
    schema = {
        "type": "object",
        "properties": {"title": {"type": "string"}},
        "required": ["title"],
    }
    result = client.extract(["https://example.com"], schema=schema, poll_timeout=120.0)
    title = result.data.get("title")
    assert title is not None and isinstance(title, str)
