{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://git.yumee.top/laily/skills/skills/ack/templates/regression.schema.json", "title": "ACK project regression catalog", "description": "docs/ack/regression.yaml 的权威结构。用例是给 Test worker 的可观测信号说明书,不是可执行 DSL。", "type": "object", "required": ["version", "updatedAt", "project", "cases"], "additionalProperties": false, "properties": { "version": { "type": "integer", "const": 1 }, "updatedAt": { "type": "string" }, "project": { "type": "object", "required": ["name"], "additionalProperties": false, "properties": { "name": { "type": "string", "minLength": 1, "pattern": "\\S" } } }, "cases": { "type": "array", "items": { "$ref": "#/definitions/case" } } }, "definitions": { "caseId": { "type": "string", "pattern": "^REG-[A-Za-z0-9][A-Za-z0-9-]*$" }, "stringList": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1, "pattern": "\\S" } }, "relativePath": { "type": "string", "minLength": 1, "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$" }, "expectedSignal": { "type": "object", "required": ["kind", "value"], "additionalProperties": false, "properties": { "kind": { "type": "string", "enum": ["visible-text", "api-status", "api-field", "url", "interaction"] }, "value": { "type": "string", "minLength": 1, "pattern": "\\S" } } }, "case": { "type": "object", "required": [ "id", "title", "status", "source", "suite", "surface", "setup", "steps", "expected" ], "additionalProperties": false, "properties": { "id": { "$ref": "#/definitions/caseId" }, "title": { "type": "string", "minLength": 1, "pattern": "\\S" }, "status": { "type": "string", "enum": ["active", "retired"] }, "source": { "type": "object", "required": ["taskId", "kind"], "additionalProperties": false, "properties": { "taskId": { "type": "string", "minLength": 1, "pattern": "\\S" }, "kind": { "type": "string", "enum": ["feature", "bug"] } } }, "suite": { "type": "string", "enum": ["smoke", "full"] }, "surface": { "type": "string", "enum": ["browser", "api"] }, "setup": { "type": "string", "minLength": 1, "pattern": "\\S" }, "steps": { "$ref": "#/definitions/stringList" }, "expected": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/expectedSignal" } }, "automationRef": { "$ref": "#/definitions/relativePath" } } } } }