README.md 3.52 KB
Newer Older
1
# GitLab QA - Integration tests for GitLab
2

3 4
This directory contains integration tests for GitLab.

5
It is part of the [GitLab QA project](https://gitlab.com/gitlab-org/gitlab-qa).
6

7
## What is it?
8 9 10 11 12 13 14 15 16 17 18

GitLab QA is an integration tests suite for GitLab.

These are black-box and entirely click-driven integration tests you can run
against any existing instance.

## How does it work?

1. When we release a new version of GitLab, we build a Docker images for it.
1. Along with GitLab Docker Images we also build and publish GitLab QA images.
1. GitLab QA project uses these images to execute integration tests.
Stan Hu's avatar
Stan Hu committed
19

20 21 22 23 24 25 26 27 28
## Validating GitLab views / partials / selectors in merge requests

We recently added a new CI job that is going to be triggered for every push
event in CE and EE projects. The job is called `qa:selectors` and it will
verify coupling between page objects implemented as a part of GitLab QA
and corresponding views / partials / selectors in CE / EE.

Whenever `qa:selectors` job fails in your merge request, you are supposed to
fix [page objects](qa/page/README.md). You should also trigger end-to-end tests
Toon Claes's avatar
Toon Claes committed
29
using `package-and-qa` manual action, to test if everything works fine.
30

Stan Hu's avatar
Stan Hu committed
31 32 33
## How can I use it?

You can use GitLab QA to exercise tests on any live instance! For example, the
34
following call would login to a local [GDK] instance and run all specs in
Stan Hu's avatar
Stan Hu committed
35 36 37
`qa/specs/features`:

```
38
bin/qa Test::Instance::All http://localhost:3000
Stan Hu's avatar
Stan Hu committed
39 40
```

41 42 43 44
### Writing tests

1. [Using page objects](qa/page/README.md)

45 46 47
### Running specific tests

You can also supply specific tests to run as another parameter. For example, to
48
run the repository-related specs, you can execute:
Stan Hu's avatar
Stan Hu committed
49 50

```
51
bin/qa Test::Instance::All http://localhost qa/specs/features/repository/
52 53 54 55 56 57
```

Since the arguments would be passed to `rspec`, you could use all `rspec`
options there. For example, passing `--backtrace` and also line number:

```
58
bin/qa Test::Instance::All http://localhost qa/specs/features/project/create_spec.rb:3 --backtrace
59 60 61 62 63 64 65 66 67 68 69
```

### Overriding the authenticated user

Unless told otherwise, the QA tests will run as the default `root` user seeded
by the GDK.

If you need to authenticate as a different user, you can provide the
`GITLAB_USERNAME` and `GITLAB_PASSWORD` environment variables:

```
70
GITLAB_USERNAME=jsmith GITLAB_PASSWORD=password bin/qa Test::Instance::All https://gitlab.example.com
Stan Hu's avatar
Stan Hu committed
71 72
```

73 74 75 76 77
If your user doesn't have permission to default sandbox group
`gitlab-qa-sandbox`, you could also use another sandbox group by giving
`GITLAB_SANDBOX_NAME`:

```
78
GITLAB_USERNAME=jsmith GITLAB_PASSWORD=password GITLAB_SANDBOX_NAME=jsmith-qa-sandbox bin/qa Test::Instance::All https://gitlab.example.com
79 80
```

81
All [supported environment variables are here](https://gitlab.com/gitlab-org/gitlab-qa/blob/master/docs/what_tests_can_be_run.md#supported-environment-variables).
82

83 84 85 86 87 88 89 90 91
### Sending additional cookies

The environment variable `QA_COOKIES` can be set to send additional cookies
on every request. This is necessary on gitlab.com to direct traffic to the
canary fleet. To do this set `QA_COOKIES="gitlab_canary=true"`.

To set multiple cookies, separate them with the `;` character, for example: `QA_COOKIES="cookie1=value;cookie2=value2"` 


92 93 94 95 96 97 98 99 100 101
### Building a Docker image to test

Once you have made changes to the CE/EE repositories, you may want to build a
Docker image to test locally instead of waiting for the `gitlab-ce-qa` or
`gitlab-ee-qa` nightly builds. To do that, you can run from this directory:

```sh
docker build -t gitlab/gitlab-ce-qa:nightly .
```

102
[GDK]: https://gitlab.com/gitlab-org/gitlab-development-kit/