Skip to main content
New to Testkube? Unleash the power of cloud native testing in Kubernetes with Testkube. Get Started >

Testkube Agent /tests operations

Testkube API (1.0.0)

Download OpenAPI specification:Download

E-mail: testkube@kubeshop.io License: MIT

Testkube provides a Kubernetes-native framework for test definition, execution and results

List tests

List available tests

query Parameters
selector
string

Labels to filter by

textSearch
string
Default: ""

text to search in name and test name

Responses

Response samples

Content type
[
  • {
    }
]

Create new test

Create new test based on file content, uri or git based data

Request Body schema:
required

test details body

name
string

test name

namespace
string

test namespace

description
string

test description

type
string

test type

object (TestContent)
source
string

reference to test source resource

created
string <date-time>
object

test labels

schedule
string

schedule to run test

readOnly
boolean

if test is offline and cannot be executed

uploads
Array of strings

list of file paths that will be needed from uploads

object (ExecutionRequest)

test execution request body

object (TestStatus)

test status

Responses

Request samples

Content type
{
  • "name": "test1",
  • "namespace": "testkube",
  • "description": "this test is used for that purpose",
  • "type": "postman/collection",
  • "content": {
    },
  • "source": "my-private-repository-test",
  • "created": "2022-07-30T06:54:15Z",
  • "labels": {
    },
  • "schedule": "* * * * *",
  • "readOnly": true,
  • "uploads": [
    ],
  • "executionRequest": {
    },
  • "status": {
    }
}

Response samples

Content type
application/json
{
  • "name": "test1",
  • "namespace": "testkube",
  • "description": "this test is used for that purpose",
  • "type": "postman/collection",
  • "content": {
    },
  • "source": "my-private-repository-test",
  • "created": "2022-07-30T06:54:15Z",
  • "labels": {
    },
  • "schedule": "* * * * *",
  • "readOnly": true,
  • "uploads": [
    ],
  • "executionRequest": {
    },
  • "status": {
    }
}

Delete tests

Deletes all or labeled tests

query Parameters
selector
string

Labels to filter by

Responses

Response samples

Content type
application/problem+json
[]

Update test

Update test based on test content or git based data

path Parameters
id
required
string

unique id of the object

Request Body schema:
required

test details body

name
string

test name

namespace
string

test namespace

description
string

test description

type
string

test type

object (TestContent)
source
string

reference to test source resource

created
string <date-time>
object

test labels

schedule
string

schedule to run test

readOnly
boolean

if test is offline and cannot be executed

uploads
Array of strings

list of file paths that will be needed from uploads

object (ExecutionRequest)

test execution request body

object (TestStatus)

test status

Responses

Request samples

Content type
{
  • "name": "test1",
  • "namespace": "testkube",
  • "description": "this test is used for that purpose",
  • "type": "postman/collection",
  • "content": {
    },
  • "source": "my-private-repository-test",
  • "created": "2022-07-30T06:54:15Z",
  • "labels": {
    },
  • "schedule": "* * * * *",
  • "readOnly": true,
  • "uploads": [
    ],
  • "executionRequest": {
    },
  • "status": {
    }
}

Response samples

Content type
application/json
{
  • "name": "test1",
  • "namespace": "testkube",
  • "description": "this test is used for that purpose",
  • "type": "postman/collection",
  • "content": {
    },
  • "source": "my-private-repository-test",
  • "created": "2022-07-30T06:54:15Z",
  • "labels": {
    },
  • "schedule": "* * * * *",
  • "readOnly": true,
  • "uploads": [
    ],
  • "executionRequest": {
    },
  • "status": {
    }
}

Get test

Gets the specified test

path Parameters
id
required
string

unique id of the object

Responses

Response samples

Content type
{
  • "name": "test1",
  • "namespace": "testkube",
  • "description": "this test is used for that purpose",
  • "type": "postman/collection",
  • "content": {
    },
  • "source": "my-private-repository-test",
  • "created": "2022-07-30T06:54:15Z",
  • "labels": {
    },
  • "schedule": "* * * * *",
  • "readOnly": true,
  • "uploads": [
    ],
  • "executionRequest": {
    },
  • "status": {
    }
}

Delete test

Deletes a test

path Parameters
id
required
string

unique id of the object

query Parameters
skipDeleteExecutions
boolean
Default: false

dont delete executions

skipDeleteCRD
boolean
Default: false

dont delete CRD

Responses

Response samples

Content type
application/problem+json
[]

Abort all executions of a test

Abort all test executions

path Parameters
id
required
string

unique id of the object

Responses

Response samples

Content type
application/problem+json
[]

Get test metrics

Gets test metrics for given tests executions, with particular execution status and timings

path Parameters
id
required
string

unique id of the object

query Parameters
last
integer
Default: 7

last N days to show

limit
integer
Default: 7

limit records count same as pageSize

Responses

Response samples

Content type
application/json
{
  • "passFailRatio": 50,
  • "executionDurationP50": "7m2.71s",
  • "executionDurationP50ms": 422,
  • "executionDurationP90": "7m2.71s",
  • "executionDurationP90ms": 422,
  • "executionDurationP95": "7m2.71s",
  • "executionDurationP95ms": 422,
  • "executionDurationP99": "7m2.71s",
  • "executionDurationP99ms": 422,
  • "totalExecutions": 2,
  • "failedExecutions": 1,
  • "executions": [
    ]
}

Starts new test execution

New test execution returns new execution details on successful execution start

path Parameters
id
required
string

unique id of the object

query Parameters
namespace
string
Default: "testkube"

Namespace of the object

testExecutionName
string

test execution name stated the test execution

Request Body schema: application/json
required

body passed to configure execution

id
string <bson objectId>

execution id

name
string

test execution custom name

testSuiteName
string

unique test suite name (CRD Test suite name), if it's run as a part of test suite

number
integer

test execution number

object

test execution labels

namespace
string

test kubernetes namespace ("testkube" when not set)

isVariablesFileUploaded
boolean

in case the variables file is too big, it will be uploaded

variablesFile
string

variables file content - need to be in format for particular executor (e.g. postman envs file)

object (Variables)

execution variables passed to executor converted to vars for usage in tests

command
Array of strings

executor image command

args
Array of strings

additional executor binary arguments

args_mode
string
Enum: "append" "override" "replace"

usage mode for arguments

image
string

container image, executor will run inside this image

Array of objects (LocalObjectReference)

container image pull secrets

object
Deprecated

Environment variables passed to executor. Deprecated: use Basic Variables instead

object
Deprecated

Execution variables passed to executor from secrets. Deprecated: use Secret Variables instead

sync
boolean

whether to start execution sync or async

httpProxy
string

http proxy for executor containers

httpsProxy
string

https proxy for executor containers

negativeTest
boolean

whether to run test as negative test

isNegativeTestChangedOnRun
boolean

whether negativeTest was changed by user

activeDeadlineSeconds
integer <int64>

duration in seconds the test may be active, until its stopped

uploads
Array of strings

list of file paths that need to be copied into the test from uploads

bucketName
string

minio bucket name to get uploads from

object (ArtifactRequest)

artifact request body with test artifacts

jobTemplate
string

job template extensions

jobTemplateReference
string

name of the template resource

cronJobTemplate
string

cron job template extensions

cronJobTemplateReference
string

name of the template resource

object (TestContentRequest)

test content request body

preRunScript
string

script to run before test execution

postRunScript
string

script to run after test execution

executePostRunScriptBeforeScraping
boolean

execute post run script before scraping (prebuilt executor only)

sourceScripts
boolean

run scripts using source command (container executor only)

scraperTemplate
string

scraper template extensions

scraperTemplateReference
string

name of the template resource

pvcTemplate
string

pvc template extensions

pvcTemplateReference
string

name of the template resource

Array of objects (EnvReference)

config map references

Array of objects (EnvReference)

secret references

object (RunningContext)

running context for test or test suite execution

testExecutionName
string

test execution name started the test execution

downloadArtifactExecutionIDs
Array of strings

execution ids for artifacts to download

downloadArtifactTestNames
Array of strings

test names for artifacts to download from latest executions

object (PodRequest)

pod request body

executionNamespace
string

namespace for test execution (Pro edition only)

disableWebhooks
boolean
Default: false

whether webhooks on this execution are disabled

Responses

Request samples

Content type
application/json
{
  • "id": "62f395e004109209b50edfc1",
  • "name": "testing with 1000 users",
  • "testSuiteName": "test-suite1",
  • "number": 0,
  • "executionLabels": {
    },
  • "namespace": "testkube",
  • "isVariablesFileUploaded": false,
  • "variablesFile": "string",
  • "variables": {
    },
  • "command": [
    ],
  • "args": [
    ],
  • "args_mode": "append",
  • "image": "kubeshop/testkube-executor-custom:1.10.11-dev-0a9c91",
  • "imagePullSecrets": [
    ],
  • "envs": {
    },
  • "secretEnvs": {
    },
  • "sync": true,
  • "httpProxy": "user:pass@my.proxy.server:8080",
  • "httpsProxy": "user:pass@my.proxy.server:8081",
  • "negativeTest": false,
  • "isNegativeTestChangedOnRun": false,
  • "activeDeadlineSeconds": 1,
  • "uploads": [
    ],
  • "bucketName": "execution-c01d7cf6-ec3f-47f0-9556-a5d6e9009a43",
  • "artifactRequest": {
    },
  • "jobTemplate": "string",
  • "jobTemplateReference": "string",
  • "cronJobTemplate": "string",
  • "cronJobTemplateReference": "string",
  • "contentRequest": {
    },
  • "preRunScript": "echo -n '$SECRET_ENV' > ./secret_file",
  • "postRunScript": "sleep 30",
  • "executePostRunScriptBeforeScraping": true,
  • "sourceScripts": true,
  • "scraperTemplate": "string",
  • "scraperTemplateReference": "string",
  • "pvcTemplate": "string",
  • "pvcTemplateReference": "string",
  • "envConfigMaps": [
    ],
  • "envSecrets": [
    ],
  • "runningContext": {
    },
  • "testExecutionName": "string",
  • "downloadArtifactExecutionIDs": [
    ],
  • "downloadArtifactTestNames": [
    ],
  • "slavePodRequest": {
    },
  • "executionNamespace": "string",
  • "disableWebhooks": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "queued",
  • "output": "string",
  • "outputType": "text/plain",
  • "errorMessage": "string",
  • "steps": [
    ],
  • "reports": {
    }
}

Get all test executions

Returns array of all available test executions

path Parameters
id
required
string

unique id of the object

query Parameters
last
integer
Default: 7

last N days to show

pageSize
integer
Default: 100

the number of executions to get, setting to 0 will return only totals

page
integer
Default: 0

the page index to start at

status
string (ExecutionStatus)
Enum: "queued" "running" "passed" "failed" "aborted" "timeout" "skipped"

optional status filter containing multiple values separated by comma

startDate
string <date>

startDate for filtering in ISO-8601 format, i.e. "yyyy-mm-dd"

endDate
string <date>

endDate for filtering

Responses

Response samples

Content type
application/json
{
  • "totals": {
    },
  • "filtered": {
    },
  • "results": [
    ]
}

Get test execution

Returns execution with given executionID

path Parameters
id
required
string

unique id of the object

executionID
required
string

unique id of the object execution

Responses

Response samples

Content type
application/json
{
  • "id": "62f395e004109209b50edfc4",
  • "testName": "example-test",
  • "testSuiteName": "test-suite1",
  • "testNamespace": "testkube",
  • "testType": "postman/collection",
  • "name": "test-suite1-example-test-1",
  • "number": 1,
  • "envs": {
    },
  • "command": [
    ],
  • "args": [
    ],
  • "args_mode": "append",
  • "variables": {
    },
  • "isVariablesFileUploaded": false,
  • "variablesFile": "string",
  • "testSecretUUID": "7934600f-b367-48dd-b981-4353304362fb",
  • "testSuiteSecretUUID": "7934600f-b367-48dd-b981-4353304362fb",
  • "content": {
    },
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "duration": "88s",
  • "durationMs": 10000,
  • "executionResult": {
    },
  • "labels": {
    },
  • "uploads": [
    ],
  • "bucketName": "execution-c01d7cf6-ec3f-47f0-9556-a5d6e9009a43",
  • "artifactRequest": {
    },
  • "preRunScript": "echo -n '$SECRET_ENV' > ./secret_file",
  • "postRunScript": "sleep 30",
  • "executePostRunScriptBeforeScraping": true,
  • "sourceScripts": true,
  • "runningContext": {
    },
  • "containerShell": "/bin/sh",
  • "testExecutionName": "string",
  • "downloadArtifactExecutionIDs": [
    ],
  • "downloadArtifactTestNames": [
    ],
  • "slavePodRequest": {
    },
  • "executionNamespace": "string",
  • "disableWebhooks": [
    ]
}

Aborts execution

Aborts execution with given executionID

path Parameters
id
required
string

unique id of the object

executionID
required
string

unique id of the object execution

Responses

Response samples

Content type
application/problem+json
[]