How it works

Architecture

For a visual architecture explanation, please read the GitLab QA architecture documentation.

What happens when you run gitlab-qa Test::Instance::Image CE

  1. exe/gitlab-qa calls .perform on the fully qualified constant Gitlab::QA::Scenario:: + the scenario name, e.g. QA::Scenario::Test::Instance::Image
  2. A new gitlab-ce container is started with Component::Gitlab.perform
  3. Then Component::Specs.perform is called, which starts a gitlab/gitlab-qa container (from gitlab-org/gitlab-ce@qa/Dockerfile) and pass it the instance-level scenario to run (e.g. Test::Instance for gitlab-org/gitlab-qa@lib/gitlab/qa/scenario/test/instance/image.rb), then the address of the live instance to be tested, and optional extra arguments.
  4. Within the gitlab/gitlab-qa container, these arguments are passed to bin/test (since it's the ENTRYPOINT defined at gitlab-org/gitlab-ce@qa/Dockerfile), and then to bin/qa.
  5. bin/qa then calls .launch! on the fully qualified constant QA::Scenario:: + the scenario name, e.g. QA::Scenario::Test::Instance, and ultimately calls .perform
  6. The .perform method saves the instance address for later, then sets up an RSpec::Core::Runner, pass it the extra arguments, configure the Capybara browser environment, and starts the actual RSpec run.

Back to README.md