{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "/action/ManagedTest.json.0.0",
  "type": "object",
  "title": "Managed Test Action",
  "description": "Run integration and system tests against your application or artifacts.",
  "properties": {
    "Identifier": {
      "$ref": "#/definitions/ManagedTestActionIdentifier"
    },
    "Configuration": {
      "$ref": "#/definitions/ManagedTestActionConfiguration"
    },
    "DependsOn": {
      "$ref": "../interfaces/DependsOn.json"
    },
    "Environment": {
      "$ref": "../interfaces/EnvironmentWithoutConnection.json"
    },
    "Compute": {
      "$ref": "../interfaces/Compute.json"
    },
    "Timeout": {
      "$ref": "../interfaces/Timeout.json"
    },
    "Caching": {
      "$ref": "#/definitions/ManagedTestActionCaching"
    },
    "Packages": {
      "$ref": "../interfaces/Packages.json"
    },
    "Outputs": {
      "$ref": "#/definitions/ManagedTestActionOutputs"
    },
    "Inputs": {
      "$ref": "#/definitions/ManagedTestActionInputs"
    }
  },
  "required": ["Configuration", "Identifier"],
  "additionalProperties": false,
  "definitions": {
    "ManagedTestActionIdentifier": {
      "type": "string",
      "anyOf": [
        {
          "const": "aws/github-actions-runner@v1"
        },
        {
          "type": "string",
          "pattern": "^aws\\/managed-test@v1(\\.0){0,2}"
        }
      ]
    },
    "ManagedTestActionConfiguration": {
      "type": "object",
      "additionalProperties": false,
      "required": ["Steps"],
      "properties": {
        "Container": {
          "description": "The container to run the build",
          "type": "object",
          "title": "ManagedTestContainer",
          "additionalProperties": false,
          "properties": {
            "Image": {
              "description": "Image to run in the container",
              "type": "string"
            },
            "Registry": {
              "description": "Source of the Image",
              "type": "string"
            }
          }
        },
        "Steps": {
          "description": "Commands for the build action",
          "title": "ManagedTestSteps",
          "items": {
            "additionalProperties": false,
            "description": "Command for the build action",
            "properties": {
              "Run": {
                "description": "Command string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "maxItems": 256,
          "minItems": 0,
          "type": "array"
        }
      }
    },
    "ManagedTestActionCaching": {
      "title": "TestActionCaching",
      "type": "object",
      "properties": {
        "FileCaching": {
          "$ref": "../interfaces/FileCaching.json"
        }
      },
      "additionalProperties": false,
      "minProperties": 1
    },
    "ManagedTestActionOutputs": {
      "type": "object",
      "properties": {
        "Variables": {
          "$ref": "../interfaces/OutputVariables.json"
        },
        "AutoDiscoverReports": {
          "$ref": "../interfaces/AutoDiscoverReports.json"
        },
        "Reports": {
          "$ref": "../interfaces/Reports.json"
        },
        "Artifacts": {
          "$ref": "../interfaces/OutputArtifacts.json"
        }
      },
      "additionalProperties": false,
      "minProperties": 1
    },
    "ManagedTestActionInputs": {
      "type": "object",
      "properties": {
        "Artifacts": {
          "$ref": "../interfaces/InputArtifacts.json"
        },
        "Sources": {
          "$ref": "../interfaces/InputSources.json"
        },
        "Variables": {
          "$ref": "../interfaces/InputVariables.json"
        }
      },
      "additionalProperties": false,
      "minProperties": 1
    }
  }
}
