Skip to main content
Sends one lab run of a pytest suite that never runs in your CI, such as device tests on lab hardware. Peeps files it as a CI run of the project’s repository, at the commit and branch you send, and analyzes its failures. An upload of a fix’s peeps/… branch can also settle that fix’s pull request. For the setup and an example workflow, see Send results from your lab. The project must be backed by a repository, and the key must name it under Only these projects. A key for all web projects can’t send lab results, and gets 404. Sending again files a second batch: Peeps doesn’t recognize a resend. Lab runs count toward the same minute limits as report files. See Rate limits.

Errors

Besides 401, 429, 503 and 500 from the errors table, sending lab results can return:

Authorizations

Authorization
string
header
required

Bearer followed by your API key.

Path Parameters

project
string
required

The project's acronym, in any case, such as LAB, or its ID. The project must be backed by a repository, and the key must name it under Only these projects.

Body

application/json

The lab run as JSON, up to 50 MiB. Send its size in bytes as Content-Length; curl --data-binary @file sends it for you. The whole body must arrive within 120 seconds.

commitSha
string
required

The full 40-character commit the tests were built from. It must be on gitRef: its latest commit or an earlier one.

Pattern: ^[0-9a-fA-F]{40}$
gitRef
string
required

The branch the commit is on: the headline branch, a branch listed under Tracked branches, or the peeps/… branch of a fix waiting for the lab, at the commit Peeps pushed.

Required string length: 1 - 200
junit
string
required

The JUnit XML that pytest's --junitxml option wrote, as text.

Minimum string length: 1
rootDir
string
default:.

pytest's rootdir, relative to the repository root, with no . or .. segment. Leave it out, or send ., when pytest runs from the repository root.

Maximum string length: 500
jobUrl
string<uri> | null

A link to the lab run. Peeps shows it as Lab run: in the comment it leaves on a fix the upload settles.

Maximum string length: 2000
context
object

What the lab knows about the run. Peeps shows it first on each result, and names the batch after the camera model and firmware. Any other field is refused.

Response

Peeps filed the run.

batchNumber
integer

The number of the batch Peeps filed the runs in.

filed
integer

How many tests Peeps filed.

unmatched
object[]

Tests in the JUnit that the project has no test case for. An upload never creates a test case, so these aren't filed.

verification
object

Only for an upload of a fix's peeps/… branch: what the upload did to the fix's pull request.