import json import subprocess import sys from tests.test_pixelrag_rag_candidate_replay_service import ( _write_platform_probe_worker_receipt, ) def test_pixelrag_source_contract_replay_worker_dry_run_reads_worker_receipts(tmp_path): from services.pixelrag_source_contract_replay_worker_service import ( POLICY, run_pixelrag_source_contract_replay_worker, ) worker_root = tmp_path / "worker" _write_platform_probe_worker_receipt( worker_root, platform="coupang_tw", manifest_id="coupang-403", barrier_type="access_denied", ) _write_platform_probe_worker_receipt( worker_root, platform="shopee_tw", manifest_id="shopee-runtime-gap", worker_status="capture_runtime_unavailable_structured_fallback_package", barrier_type="traffic_verification_interstitial", capture_runtime_unavailable=True, ) payload = run_pixelrag_source_contract_replay_worker( artifact_root=tmp_path / "visual_empty", platform_probe_worker_receipt_root=worker_root, platform=("coupang_tw", "shopee_tw"), ) by_platform = {item["platform"]: item for item in payload["worker_items"]} assert payload["policy"] == POLICY assert payload["status"] == "ok" assert payload["execute"] is False assert payload["summary"]["candidate_count"] == 2 assert payload["summary"]["ready_count"] == 2 assert payload["summary"]["dry_run_count"] == 2 assert payload["summary"]["capture_runtime_gap_count"] == 1 assert payload["summary"]["writes_database_count"] == 0 assert payload["controlled_apply"]["network_call"] is False assert payload["controlled_apply"]["writes_database"] is False assert payload["controlled_apply"]["primary_human_gate_count"] == 0 assert payload["next_machine_action"] == ( "run_pixelrag_source_contract_replay_worker_execute" ) assert by_platform["coupang_tw"]["worker_status"] == ( "dry_run_ready_for_source_contract_replay" ) assert by_platform["coupang_tw"]["source_contract_checks"][ "blocked_page_not_product_data" ] is True assert by_platform["shopee_tw"]["capture_runtime_unavailable"] is True def test_pixelrag_source_contract_replay_worker_execute_writes_receipts(tmp_path): from services.pixelrag_source_contract_replay_worker_service import ( run_pixelrag_source_contract_replay_worker, ) worker_root = tmp_path / "worker" output_root = tmp_path / "source_contract_receipts" _write_platform_probe_worker_receipt( worker_root, platform="coupang_tw", manifest_id="coupang-403", barrier_type="access_denied", ) payload = run_pixelrag_source_contract_replay_worker( artifact_root=tmp_path / "visual_empty", platform_probe_worker_receipt_root=worker_root, output_root=output_root, platform="coupang_tw", execute=True, write_receipt=True, ) assert payload["status"] == "ok" assert payload["summary"]["executed_count"] == 1 assert payload["summary"]["receipt_written_count"] == 1 assert payload["controlled_apply"]["artifact_write"] is True assert payload["controlled_apply"]["writes_database"] is False assert payload["next_machine_action"] == ( "run_marketplace_source_contract_adapter_replay_preflight" ) receipt_path = ( output_root / "coupang_tw" / "coupang-403" / "source_contract_replay_receipt.json" ) assert receipt_path.exists() receipt = json.loads(receipt_path.read_text(encoding="utf-8")) assert receipt["worker_status"] == "executed_source_contract_replay_ready" assert receipt["artifact_write_performed"] is True assert receipt["writes_database"] is False assert receipt["source_contract_preview"]["source_contract_version"] == ( "pixelrag_marketplace_source_contract_v1" ) def test_pixelrag_source_contract_replay_worker_cli_outputs_json(tmp_path): worker_root = tmp_path / "worker" _write_platform_probe_worker_receipt( worker_root, platform="coupang_tw", manifest_id="coupang-403", barrier_type="access_denied", ) completed = subprocess.run( [ sys.executable, "scripts/ops/run_pixelrag_source_contract_replay_worker.py", "--artifact-root", str(tmp_path / "visual_empty"), "--platform-probe-worker-receipt-root", str(worker_root), "--platform", "coupang_tw", ], capture_output=True, check=False, text=True, ) assert completed.returncode == 0 payload = json.loads(completed.stdout) assert payload["summary"]["candidate_count"] == 1 assert payload["summary"]["ready_count"] == 1 assert payload["controlled_apply"]["writes_database"] is False def test_pixelrag_source_contract_replay_worker_route_returns_readback(tmp_path, monkeypatch): from flask import Flask from routes import system_public_routes as routes from services import pixelrag_source_contract_replay_worker_service as service worker_root = tmp_path / "worker" _write_platform_probe_worker_receipt( worker_root, platform="coupang_tw", manifest_id="coupang-403", barrier_type="access_denied", ) monkeypatch.setattr( service, "DEFAULT_PLATFORM_PROBE_WORKER_RECEIPT_ROOT", str(worker_root), ) app = Flask(__name__) with app.test_request_context( "/api/ai-automation/pixelrag-source-contract-replay-worker?platform=coupang_tw" ): response = routes.ai_automation_pixelrag_source_contract_replay_worker_api.__wrapped__() payload = response.get_json() assert payload["policy"] == "controlled_pixelrag_source_contract_replay_worker_v1" assert payload["summary"]["candidate_count"] == 1 assert payload["summary"]["ready_count"] == 1 assert payload["controlled_apply"]["writes_database"] is False