---
layout: post
title: "Difference between Travis CI tests: PR and Push"
permalink: travis-ci-pr-push/
categories: programming
excerpt_separator:
---
I just want to leave this here as I often tend to look it up myself and the
first time it was not as easy to figure out.
When using Travis CI along with GitHub (or other git integrations), Travis runs
two tests: pr
and push
.
![travis-pr-push-github](/img/travis-ci-pr-push-github.jpg)
Most of the time you see both tests passing and you do not have to even wonder
how they are different, but it has happened to me that one of the tests fails
while the other passes and I started to wonder why.
### pr The pr
test is a test run on the result of a merge between
the pull-request branch and the main branch. As an example, let's say your
pull-request's branch is called fix-user-auth
and your main branch
is master
, in this case, pr
merges
fix-user-auth
into master
and then runs the tests on
the result of the merge.
### push On the other hand, push
is run on the pull-request branch
itself, without merging. So in our example above, Travis would checkout to
fix-user-auth
and run the tests.
### A case of difference
A case in which this difference might be more apparent is when your pull-request
is based on a branch other than master
, and some changes that your
pull-request depends on are missing from master
, in this case the
push
test may pass, but the pr
test will fail.