Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/webwright/run/doctor.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,13 @@ def check_screenshot():
)


def check_openai_key():
if os.getenv("OPENAI_API_KEY"):
return True, "OPENAI_API_KEY found"

def check_api_key():
for var in ("OPENAI_API_KEY", "ANTHROPIC_API_KEY", "OPENROUTER_API_KEY"):
if os.getenv(var):
return True, f"{var} found"
return False, (
"OPENAI_API_KEY missing\nFix: set the OPENAI_API_KEY environment variable"
"No API key found\n"
"Fix: set OPENAI_API_KEY, ANTHROPIC_API_KEY, or OPENROUTER_API_KEY"
)


Expand Down Expand Up @@ -110,7 +111,7 @@ def check_plugin_manifests():
("Playwright", check_playwright),
("Chromium", check_chromium),
("Screenshot", check_screenshot),
("OpenAI Key", check_openai_key),
("API Key", check_api_key),
("Plugins", check_plugin_manifests),
]

Expand Down
41 changes: 35 additions & 6 deletions tests/unit/test_doctor.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from pathlib import Path

from webwright.run.doctor import (
check_api_key,
check_chromium,
check_openai_key,
check_playwright,
check_plugin_manifests,
check_python,
Expand Down Expand Up @@ -38,22 +38,51 @@ def test_check_screenshot():
assert isinstance(message, str)


def test_check_openai_key_exists(monkeypatch):
def test_check_api_key_openai(monkeypatch):
monkeypatch.setenv("OPENAI_API_KEY", "test-key")
monkeypatch.delenv("ANTHROPIC_API_KEY", raising=False)
monkeypatch.delenv("OPENROUTER_API_KEY", raising=False)

ok, message = check_openai_key()
ok, message = check_api_key()

assert ok is True
assert "OPENAI_API_KEY" in message
assert "found" in message


def test_check_openai_key_missing(monkeypatch):
def test_check_api_key_anthropic(monkeypatch):
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
monkeypatch.setenv("ANTHROPIC_API_KEY", "test-key")
monkeypatch.delenv("OPENROUTER_API_KEY", raising=False)

ok, message = check_openai_key()
ok, message = check_api_key()

assert ok is True
assert "ANTHROPIC_API_KEY" in message
assert "found" in message


def test_check_api_key_openrouter(monkeypatch):
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
monkeypatch.delenv("ANTHROPIC_API_KEY", raising=False)
monkeypatch.setenv("OPENROUTER_API_KEY", "test-key")

ok, message = check_api_key()

assert ok is True
assert "OPENROUTER_API_KEY" in message
assert "found" in message


def test_check_api_key_missing(monkeypatch):
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
monkeypatch.delenv("ANTHROPIC_API_KEY", raising=False)
monkeypatch.delenv("OPENROUTER_API_KEY", raising=False)

ok, message = check_api_key()

assert ok is False
assert "missing" in message
assert "No API key found" in message


def test_plugin_manifests_exist(tmp_path, monkeypatch):
Expand Down