2017-10-05 06:36:28 -04:00
|
|
|
# GitLab QA - Integration tests for GitLab
|
2017-02-20 06:45:04 -05:00
|
|
|
|
2017-02-20 07:18:41 -05:00
|
|
|
This directory contains integration tests for GitLab.
|
|
|
|
|
2017-10-05 06:36:28 -04:00
|
|
|
It is part of the [GitLab QA project](https://gitlab.com/gitlab-org/gitlab-qa).
|
2017-03-09 04:41:10 -05:00
|
|
|
|
2017-10-05 06:36:28 -04:00
|
|
|
## What is it?
|
2017-03-09 04:41:10 -05:00
|
|
|
|
|
|
|
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.
|
2017-09-30 02:38:12 -04:00
|
|
|
|
2018-01-12 05:04:41 -05:00
|
|
|
## 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
|
|
|
|
using `package-qa` manual action, to test if everything works fine.
|
|
|
|
|
2017-09-30 02:38:12 -04:00
|
|
|
## How can I use it?
|
|
|
|
|
|
|
|
You can use GitLab QA to exercise tests on any live instance! For example, the
|
2017-10-05 06:36:28 -04:00
|
|
|
following call would login to a local [GDK] instance and run all specs in
|
2017-09-30 02:38:12 -04:00
|
|
|
`qa/specs/features`:
|
|
|
|
|
2018-01-31 02:40:19 -05:00
|
|
|
First, `cd` into the `$gdk/gitlab/qa` directory.
|
|
|
|
The `bin/qa` script expects you to be in the `qa` folder of the app.
|
|
|
|
|
2017-09-30 02:38:12 -04:00
|
|
|
```
|
2017-10-05 06:36:28 -04:00
|
|
|
bin/qa Test::Instance http://localhost:3000
|
2017-09-30 02:38:12 -04:00
|
|
|
```
|
|
|
|
|
2018-01-11 04:26:48 -05:00
|
|
|
### Writing tests
|
|
|
|
|
|
|
|
1. [Using page objects](qa/page/README.md)
|
|
|
|
|
2017-10-05 06:36:28 -04:00
|
|
|
### Running specific tests
|
|
|
|
|
|
|
|
You can also supply specific tests to run as another parameter. For example, to
|
2018-01-11 04:26:48 -05:00
|
|
|
run the repository-related specs, you can execute:
|
2017-09-30 02:38:12 -04:00
|
|
|
|
|
|
|
```
|
2018-01-11 04:26:48 -05:00
|
|
|
bin/qa Test::Instance http://localhost qa/specs/features/repository/
|
2017-12-20 06:03:10 -05:00
|
|
|
```
|
|
|
|
|
|
|
|
Since the arguments would be passed to `rspec`, you could use all `rspec`
|
|
|
|
options there. For example, passing `--backtrace` and also line number:
|
|
|
|
|
|
|
|
```
|
|
|
|
bin/qa Test::Instance http://localhost qa/specs/features/login/standard_spec.rb:3 --backtrace
|
2017-10-05 06:36:28 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
### 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:
|
|
|
|
|
|
|
|
```
|
|
|
|
GITLAB_USERNAME=jsmith GITLAB_PASSWORD=password bin/qa Test::Instance https://gitlab.example.com
|
2017-09-30 02:38:12 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
All [supported environment variables are here](https://gitlab.com/gitlab-org/gitlab-qa#supported-environment-variables).
|
2017-10-05 06:36:28 -04:00
|
|
|
|
|
|
|
[GDK]: https://gitlab.com/gitlab-org/gitlab-development-kit/
|