@@ -234,6 +234,41 @@ def test_build_suite_proof_pack_and_visual_review_queue_from_case_artifacts(
234234 assert queue_payload ["total_items" ] == 1
235235
236236
237+ def test_suite_proof_pack_accepts_repo_relative_case_output_dir (
238+ tmp_path : Path ,
239+ monkeypatch : pytest .MonkeyPatch ,
240+ ) -> None :
241+ repo_root = tmp_path / "repo"
242+ suite_root = repo_root / "tmp" / "visual_harness" / "suite"
243+ case_dir = suite_root / "X36_Y28_Z13"
244+ _write_groot_case (case_dir )
245+ suite_report_path = suite_root / "suite_report_representative.json"
246+ _write_json (
247+ suite_report_path ,
248+ {
249+ "suite_name" : "representative" ,
250+ "output_root" : suite_root .as_posix (),
251+ "results" : [
252+ {
253+ "case_id" : "X36_Y28_Z13" ,
254+ "output_dir" : "tmp/visual_harness/suite/X36_Y28_Z13" ,
255+ "status" : "pass" ,
256+ }
257+ ],
258+ },
259+ )
260+ monkeypatch .chdir (repo_root )
261+
262+ suite_proof_pack = build_suite_proof_pack (suite_report_path )
263+ queue = build_visual_review_queue (suite_proof_pack )
264+
265+ assert suite_proof_pack .reviewable_count == 1
266+ assert suite_proof_pack .skipped_count == 0
267+ assert suite_proof_pack .cases [0 ].case_dir == "X36_Y28_Z13"
268+ assert suite_proof_pack .cases [0 ].proof_pack_path == "X36_Y28_Z13/proof_pack.json"
269+ assert len (queue .items ) == 1
270+
271+
237272def test_suite_proof_pack_skips_execution_errors (tmp_path : Path ) -> None :
238273 suite_report_path = tmp_path / "suite_report_representative.json"
239274 _write_json (
0 commit comments