<aside> ⚠️

While these endpoints are stable and in use by our SDK, we highly recommend using one of our other methods if possible. Check Integrating QA Wolf into your CI/CD for more details.

</aside>

Uploading run input executables

This endpoint is for uploading executables, such as mobile apps and browser extensions, that we execute tests against. It is done in two steps:

  1. Generate a signed URL to upload the executable file to
  2. Upload the file to the signed URL

Once uploaded, you may want to trigger a run against the new executable. Please reference the Deploy Success Webhook page for details on that.

<aside> ⚠️

Only certain file types are allowed: .apk, .aab, .deb, .ipa, .zip

</aside>

1. Generate signed URL

The DESTINATION_FILE_PATH should at minimum be the filename and extension, but may also include directories. Reach out to QA Wolf for what this should be set to.

GET <https://app.qawolf.com/api/v0/run-inputs-executables-signed-urls?file=$DESTINATION_FILE_PATH>
Authorization: Bearer $QAWOLF_API_KEY

On success, it responds with this JSON:

{
  "fileLocation": "$TEAM_ID/$DESTINATION_FILE_PATH",
  "playgroundFileLocation": "$DESTINATION_FILE_PATH",
  "signedUrl": "https://..."
}

2. Upload the file

This requires the signedUrl from the endpoint above.

PUT $SIGNED_URL

How you attach the file to this request varies. The key point is that the file itself is the request body, not part of the form data. Some examples:

curl -X PUT \\
  --header "Content-Type:application/octet-stream" \\
  --data-binary @some_file.zip \\
  $SIGNED_URL
await fetch(SIGNED_URL, {
  body: fileBuffer,
  headers: { 'content-type': 'application/octet-stream' },
  method: 'PUT',
});