For a visual architecture explanation, please read the GitLab QA architecture documentation.
exe/gitlab-qa
calls.perform
on the fully qualified constantGitlab::QA::Scenario::
+ the scenario name, e.g.QA::Scenario::Test::Instance::Image
- A new
gitlab-ce
container is started withComponent::Gitlab.perform
- Then
Component::Specs.perform
is called, which starts agitlab/gitlab-qa
container (fromgitlab-org/gitlab-ce@qa/Dockerfile
) and pass it the instance-level scenario to run (e.g.Test::Instance
forgitlab-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. - Within the
gitlab/gitlab-qa
container, these arguments are passed tobin/test
(since it's theENTRYPOINT
defined atgitlab-org/gitlab-ce@qa/Dockerfile
), and then tobin/qa
. bin/qa
then calls.launch!
on the fully qualified constantQA::Scenario::
+ the scenario name, e.g.QA::Scenario::Test::Instance
, and ultimately calls.perform
- The
.perform
method saves the instance address for later, then sets up anRSpec::Core::Runner
, pass it the extra arguments, configure theCapybara
browser environment, and starts the actualRSpec
run.