> ## Documentation Index
> Fetch the complete documentation index at: https://docs.testorim.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub

> Run your tests on every pull request, and see your own CI alongside them.

The GitHub integration does two things: it runs your saved tests against a
pull request and reports back in one comment, and it mirrors your own check
runs so you can see your CI and your QA on one timeline.

## Setting it up

<Steps>
  <Step title="Install the GitHub App">
    Project settings → **GitHub** → connect. You will be taken to GitHub to
    install the Testorim app on the repository you want.
  </Step>

  <Step title="Link the repository to the project">
    Back in project settings, pick the repository. One repository links to one
    project.
  </Step>

  <Step title="Choose which tests run">
    Select the saved tests that should run on a pull request. Keep it to the
    ones that matter on every PR. A slow suite makes people ignore the
    comment.
  </Step>

  <Step title="Subscribe to check runs (optional)">
    To mirror your own CI, the app's webhook subscription must include the
    **check\_run** event. In GitHub: the app's settings → Permissions &
    events → Subscribe to events.
  </Step>
</Steps>

## What happens on a pull request

1. Testorim resolves the pull request's preview URL and uses it as the base
   address for the run.
2. The selected tests are dispatched in chunks sized to your plan's concurrent
   run limit, each chunk finishing before the next starts.
3. One comment is posted and **edited in place** as results arrive, not a new
   comment per run. While work is queued, the comment says how many are done
   and how many are waiting.

If the workspace is out of runs, the comment says so instead of dispatching.
If it has lost access entirely, a single "Testorim is paused for this project"
comment is posted and nothing runs.

## PR activity

With `check_run` subscribed, Testorim keeps a read-only mirror of your
repository's check runs: lint, test, build, deploy, whatever you have.

* The project overview shows **recent PR activity**: the last pull requests
  with an aggregated status of `in progress`, `success`, `failure` or `mixed`.
* `/project/<project-id>/pr/<number>` shows one pull request's unified
  timeline: your check runs and Testorim's QA runs together, auto-refreshing
  while anything is in progress.

Full logs link out to GitHub; Testorim stores a truncated summary, not your
build output.

## Security

Webhook deliveries are verified by HMAC with a constant-time comparison, and
each delivery is processed exactly once. A redelivery is acknowledged and
does nothing.


## Related topics

- [CLI](/developers/cli.md)
- [Integrations overview](/integrations/overview.md)
- [Create a project](/getting-started/create-a-project.md)
- [Environments](/projects/environments.md)
- [Core capabilities](/introduction/core-capabilities.md)
