feat(tester): support isolated full regression workflow
This commit is contained in:
@@ -50,6 +50,25 @@ elif operation == "network_probe":
|
||||
"tcp": {"status": "ready", "observed": "443 open", "expected": "TCP reachable"},
|
||||
"http": {"status": "ready", "observed": 200, "expected": "HTTP 2xx-4xx"},
|
||||
}}))
|
||||
elif operation == "capability_probe":
|
||||
capability = request.get("capability")
|
||||
checks = {
|
||||
"album_picker": {
|
||||
"picker": {"status": "ready", "observed": "real picker opened and returned image-001"},
|
||||
},
|
||||
"photo_permission": {
|
||||
"permission": {"status": "ready", "observed": "permission state checked on device"},
|
||||
"test_image": {"status": "ready", "observed": "image-001 available in test album"},
|
||||
},
|
||||
"ime_pinyin": {
|
||||
"composition": {"status": "ready", "observed": "nihao composed in Chinese IME"},
|
||||
"candidates": {"status": "ready", "observed": "你好 candidate selected"},
|
||||
},
|
||||
}
|
||||
if scenario == "capability-missing" and capability == "album_picker":
|
||||
print(json.dumps({"status": "ready", "checks": {}}))
|
||||
else:
|
||||
print(json.dumps({"status": "ready", "checks": checks.get(capability, {})}))
|
||||
elif operation in {"install", "start"}:
|
||||
print(json.dumps({"status": "ready", "observed": operation + "ed mock artifact"}))
|
||||
else:
|
||||
|
||||
@@ -140,6 +140,24 @@ class PreflightTests(unittest.TestCase):
|
||||
self.assertTrue(any(row["check_id"].endswith("-fixture") and row["status"] == "blocked" for row in result.rows))
|
||||
self.assertTrue(any(row["check_id"].endswith("-cleanup") and row["status"] == "blocked" for row in result.rows))
|
||||
|
||||
def test_mobile_capabilities_are_mandatory_and_missing_evidence_blocks(self):
|
||||
data = self.config()
|
||||
config_path = self.write_config(data)
|
||||
env = os.environ.copy()
|
||||
env["PREFLIGHT_RUNNER_SCENARIO"] = "capability-missing"
|
||||
output = self.root / "capabilities.yaml"
|
||||
process = subprocess.run([
|
||||
sys.executable, str(ROOT / "scripts" / "preflight.py"), "verify",
|
||||
"--config", str(config_path), "--yaml", str(output), "--csv", str(self.root / "capabilities.csv"),
|
||||
], text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env)
|
||||
report = __import__("yaml").safe_load(output.read_text(encoding="utf-8"))
|
||||
self.assertEqual(process.returncode, 1)
|
||||
self.assertEqual(report["status"], "blocked")
|
||||
capability_rows = [row for row in report["checks"] if "capability-album_picker" in row["check_id"]]
|
||||
self.assertTrue(capability_rows)
|
||||
self.assertTrue(all(row["status"] == "blocked" for row in capability_rows))
|
||||
self.assertTrue(any("photo_permission" in row["check_id"] for row in report["checks"]))
|
||||
|
||||
def test_host_unreachable_from_actual_runner_is_environment_fail(self):
|
||||
data = self.config()
|
||||
config_path = self.write_config(data)
|
||||
|
||||
Reference in New Issue
Block a user