API reference / Tests and incidents
Try a place as first users
The QA tester tries a place as 5 kinds of first-time user, one after the other, from the first page to a first success: an impatient one, a skeptic, a mobile user on a slow network, a literal reader and a breaker. It reports each place where one gets stuck, with pictures. The breaker runs only where the QA tester may press buttons. Give goal to say what a first success is.
/api/v1/test-environments/{id}/first-usersOther ways to call it
troopy tests first-userstroopy_test_first_usersIdempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.Path parameters
id*stringA 24-character id
Body
application/jsongoalstringWhat a first success is, like a first page published
At least 1 characters · At most 300 characters
Response
202 · application/jsondata*object18 properties
id*stringA 24-character id
kind*enum<string>ticket: a change. review: Troopy's code review of a change. screens: the blind critic's look at the pictures of a change. cases: tests of the library. explore: a look for problems. first_users: the QA tester tries it as 5 kinds of new user. check: whether the place loads
ticketreviewscreenscasesexplorefirst_userscheck
status*enum<string>queuedrunningdonecanceled
waitingFor*enum<string> | nullIn the queue: a QA tester to hire, one of the workspace's 2 places, the computer, a release that reaches Production, or a Claude plan that is out of usage
qaslotcomputerdeployplan
verdict*enum<string> | nullWhen done: fail when a part failed, blocked when a part couldn't be checked, pass only when each part passed
passfailblocked
error*string | nullWhy it ended early: its place didn't load or is gone, or its ticket moved on
environment*object | nullThe place, as it was when the run started: a place to test, or a preview of a ticket's change. Null when it reads only the code of the change
4 properties
id*string | nullNull for the preview of a ticket's change, which is no place of the workspace
name*stringkind*enum<string>productionstagingpreview
url*stringnote*string | nullWhat Troopy noted on the way, like a preview that didn't load
ticket*object | nullThe engineering ticket whose change it tests: its key, its pull request, and the commit tested
5 properties
id*stringA 24-character id
key*stringrepo*stringpr*integersha*stringprogress*objectIts parts: one for each test, or one for a ticket or a look
2 properties
done*integertotal*integertrigger*enum<string> | nullschedule: its place's schedule started it. release: a release started it. null: a person, the API or a ticket
schedulerelease
release*object | nullA check after a release: the tickets that the release took live
1 properties
tickets*array<object>2 properties
id*stringA 24-character id
key*stringreplayed*integerParts that replayed a test's recording whole, with no AI
replaying*booleanTroopy replays a part now, with no AI
createdBy*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringcreatedAt*stringISO 8601 date and time
finishedAt*string | nullstatusUrl*string