Set it up
Merge request review
Automatic on a GitLab deployment, a
@qa.tech comment, CI, or the API.After merge
No preview environment. Review the merged request after the deploy job.
Mobile build
Upload the build in the merge request pipeline and pin the review to it.
What works on GitLab
What this does not do
- GitLab has no equivalent of the GitHub post-merge agent. A post-merge GitLab review tests the merged code. It does not promote tests into a regression suite.
- The review does not fail the pipeline. To gate a deploy on a test plan, use GitLab regression testing.
- Envoyer is not a GitLab pull request review. It only starts a test plan after a deploy.
Merge request review
Connect the repository on the GitLab setup page first. What a review does on every CI is on How a review works. When enabled, QA.tech can:- detect merge request activity from your connected repository
- post an introduction or progress comment on merge requests
- run exploratory and end-to-end testing against your merge request
- publish a final results-based review comment back on the merge request
What QA.tech posts on GitLab MRs
QA.tech posts comments and review notes on merge requests when the integration is triggered.QA.tech uses your connected GitLab OAuth integration to call GitLab APIs. That
means MR comments and review updates are posted through your connected GitLab
integration identity.
Automatic MR review triggering requires native GitLab deployment and
environment signals. If your flow does not publish those signals, use the
manual or CI-assisted
@qa.tech trigger path in Triggering a merge request
review.Triggering a merge request review
Option A: Automatic trigger for native GitLab deployments
If Auto-run on Merge Requests is enabled, QA.tech can auto-trigger reviews when deployment data is ready from native GitLab deployments and environments. High-level behavior:- MR is opened or updated.
- QA.tech checks if the MR commit is the latest and deployment(s) for that commit are ready.
- If deployments are ready, QA.tech starts the review flow automatically.
- If deployments are not ready, QA.tech can post a waiting comment (based on your setting) and wait for deployment readiness or a manual
@qa.techtrigger.
Option B: Manual trigger using a GitLab comment
Comment on the merge request and mention@qa.tech.
Include the preview deployment URL in the same comment. QA.tech parses URLs from MR comments and uses that URL as deployment context for the review run. In practice, this is required for reliable review targeting.
Example:
Option C: CI-assisted manual trigger
If your deployment process is custom, have CI post an MR comment that mentions@qa.tech and includes the preview URL. This gives you a consistent trigger pattern without requiring developers to comment manually each time.
Option D: API trigger (no @qa.tech comment)
Trigger the same MR review directly from CI by calling the Start change review chat API with mode: "pr". This runs the same review agent as Options A, B, and C and posts the same native MR review note, but you control exactly when it fires and which environment it targets, with no @qa.tech comment required.
This requires the repository to be connected in Settings → Integrations → GitLab so the agent can read the MR and post the review note.
Use this same API for post-merge reviews when you do not have per-MR
preview environments. See After merge.
Troubleshooting
No review starts after MR open- Verify the repository is selected in GitLab integration settings.
- Check whether Auto-run on Merge Requests is enabled.
- Confirm deployment status is successful for the latest MR commit, or manually trigger with
@qa.tech. - If you are not using native GitLab deployment/environment signals, use the manual
@qa.techtrigger with a preview URL.
- Enable Include Draft Merge Requests if you want draft MRs reviewed.
- Make sure the comment is on the merge request and includes
@qa.tech(case-insensitive). - If you expect preview-aware testing, include the preview URL in that same comment.
After merge
If you do not have preview environments for merge requests, you can run QA.tech change reviews after merging to your main branch. This tests the changes from each MR against your staging or production environment once they’re deployed. How it works- An MR is merged to
main/dev/staging. - Your deploy job deploys to staging/production.
- CI extracts the MR number from the merge commit message.
- The agent fetches the MR details (diff, changed files, description).
- Tests run against your deployed environment.
- Results are posted back on the merged MR as a note.
- Add
QA_TECH_API_TOKEN,QATECH_APP_SHORT_ID, andSTAGING_URLas CI/CD → Variables (mark the token Protected and Masked). - Set
QATECH_APP_SHORT_IDto your application’s short ID (found in Settings → Applications & Envs, e.g.app_gXeBl2). - Set
STAGING_URLto your staging/production URL. - Make sure the
change-reviewjob runs after your deploy job completes (needs: [deploy]). - Connect the repository in Settings → Integrations → GitLab so the agent can read the MR and post the review note.
- GitLab’s default merge commit message ends with
See merge request namespace/project!123. The script extracts the last!<number>token, so it assumes the MR reference is at the end of the message. - If you use squash merges with a custom template, include
%{reference}in the template so the MR reference is present in the commit message. - We extract the MR number from the commit message because
CI_MERGE_REQUEST_IIDis only set in merge request pipelines, not on push-to-main. - Direct pushes to
mainwithout an MR are skipped automatically. - Results are posted back on the merged MR as a note, since the MR is already merged.
No MR reference in your commits? Use
mode: "rawChanges" instead and pass a
changes object with changeDescription and a git diff computed in CI. See
the Start Change Review Chat
reference.Mobile build
StoreQA_TECH_API_TOKEN as a CI/CD variable. Upload the build, then start a change review. Change reviews need the repository connected under Settings → Integrations → GitLab.
testPlanShortId and the same applications override. Poll Get Run if the job should fail on test failure. See Mobile regression testing.