Skip to main content
Your pipeline makes one HTTP call and vikingQA runs your suite. A later step can wait for the result and fail the build when a test fails. It works from any CI system, and your repository needs nothing installed. The API has two endpoints: Both are served from https://app.vikingqa.io and return the same JSON shape.

Authenticate

Every request carries a project API token:
An organisation admin creates tokens in Project settings → API tokens. A token is shown once, when you create it, so copy it straight into your CI system’s secret store. The examples below read it from VIKINGQA_TOKEN.
  • A token belongs to one project. It can start batches in that project and read that project’s batches, and nothing else.
  • A project can have as many tokens as you like. Create one per pipeline, so that if one leaks you revoke it without touching the others.
  • Revoke takes effect at once. A revoked token gets 401, exactly like a token that never existed.
  • The API tokens page shows when each token was last used, so you can check nothing still depends on one before you revoke it.

Start a batch

The body has exactly these fields. Any other field is refused with 400. There is no default environment. A request without environment, or naming one the project doesn’t have, is refused rather than run somewhere else. Each of environment, appVersion, name and every tag is text of 200 characters or fewer, and none of them may be empty or only spaces. tags may name at most 20 tags — a pipeline selects a handful, and a longer list is a runaway loop in a script rather than a selection. Anything over a limit is refused with 400, and the message names the field.
The call returns 202 Accepted straight away, with the new batch:

Run only some of the tests

Give tags to run a part of your suite — a smoke set on every deploy, and the whole suite once a night:
  • A test runs when it carries at least one of the tags you name.
  • Write a tag as it is in your code, @smoke, or without the @, smoke. Both select the same tests. vikingQA shows tags without the @, which is how Playwright reports them.
  • Upper and lower case are not the same here: @Smoke and @smoke are two different tags, in your code and in this field.
  • Leave tags out, or send [], to run every test on the branch.
  • You cannot select tests by folder or by name. Tags are the one way.
If no test carries the tags you name, the batch fails with empty_selection instead of passing with nothing tested. vikingQA can only know that after it has read your branch, so it appears on the batch and not as an error on this call. PENDING means the batch exists and nothing has run yet. Behind the response, vikingQA first reads the environment’s branch as it is now, then runs the suite at that commit. A pipeline usually fires right after a push, so this is what makes the batch test the code you just pushed, not an older copy. The commit that ran appears as commitSha once it has been read. Two calls a second apart start two batches, and both run. There is no rate limit and no limit on how many batches run at once. The one wait is the read of the branch: vikingQA reads one branch one step at a time, so a batch started while that branch is already being read waits for that read to finish, usually a few seconds and at most a few minutes, before it starts.

Read a batch

It returns 200 and the same shape as above. key is the batch key vikingQA shows in the interface, and url opens that batch’s page.

The batch

Wait on finished, not on a list of statuses. vikingQA may add status values later. finished will stay correct when it does, and a script that lists the final statuses itself would not. Once finished is true, read status: While it is not finished, status is PENDING or RUNNING. When error is set, its code says what went wrong: Treat a code you don’t recognise as a failure to look at, not as a success. vikingQA adds codes as it learns to report new failures, so match on the ones your pipeline handles specially and send everything else to the batch’s url, which always says more than this field can.

Errors

A refused request returns a code you can check and a message for your log:
409 is never about other batches that are running.

Use it from a pipeline

Run your tests from GitHub Actions is the whole setup — the token, the secret, and a workflow file to copy, with variations for gating a deploy, running a tagged subset, and commenting on a pull request. The same two calls work from any CI system that has a shell, such as AWS CodeBuild or GitLab CI.