Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • rails-next protected
  • ruby-next protected
  • backfill-desired-sharding-key-small-table-scan_result_policies
  • backfill-multiple-desired-sharding-key-small-table-snippet_statistics
  • backfill-desired-sharding-key-large-table-push_event_payloads
  • sharding-key-backfill-keeps
  • backfill-desired-sharding-key-small-table-incident_management_pending_issue_escalations
  • issue_509317
  • eduardosanz/update-codeowners
  • document-new-golang-runbook
  • 505041-add-parent-param-groups-resolver
  • axil-docs-redirects-skip_indexmd
  • 514146-add-sharding-key-for-redirect_routes
  • qa-knapsack-master-report-update
  • brodock/unified-backup-use-rake-directly
  • 515975-project-tool-coverage-indicator
  • 515035-add-ability-to-manage-admin-custom-roles
  • 448868-mr-badge-count
  • quarantine-flaky-tests-spec-models-concerns-cross_database_ignored_tables_spec-rb-176
  • v17.7.6-ee protected
  • v17.8.4-ee protected
  • v17.9.1-ee protected
  • v17.8.3-ee protected
  • v17.7.5-ee protected
  • v17.9.0-ee protected
  • v17.9.0-rc42-ee protected
  • v17.6.5-ee protected
  • v17.7.4-ee protected
  • v17.8.2-ee protected
  • v17.6.4-ee protected
  • v17.7.3-ee protected
  • v17.8.1-ee protected
  • v17.8.0-ee protected
  • v17.7.2-ee protected
  • v17.8.0-rc42-ee protected
  • v17.5.5-ee protected
  • v17.6.3-ee protected
  • v17.7.1-ee protected
  • v17.7.0-ee protected
40 results

qa

  • Clone with SSH
  • Clone with HTTPS
  • Dan Davison's avatar
    Dan Davison authored
    Wait for auto-devops CI jobs on the job page
    
    See merge request gitlab-org/gitlab-ce!24839
    3a042391
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.

    GitLab QA - Integration tests for GitLab

    This directory contains integration tests for GitLab.

    It is part of the GitLab QA project.

    What is it?

    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.
    2. Along with GitLab Docker Images we also build and publish GitLab QA images.
    3. GitLab QA project uses these images to execute integration tests.

    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. You should also trigger end-to-end tests using package-and-qa manual action, to test if everything works fine.

    How can I use it?

    You can use GitLab QA to exercise tests on any live instance! For example, the following call would login to a local GDK instance and run all specs in qa/specs/features:

    bin/qa Test::Instance::All http://localhost:3000

    Writing tests

    1. Using page objects

    Running specific tests

    You can also supply specific tests to run as another parameter. For example, to run the repository-related specs, you can execute:

    bin/qa Test::Instance::All http://localhost qa/specs/features/repository/

    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::All http://localhost qa/specs/features/project/create_spec.rb:3 --backtrace

    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::All https://gitlab.example.com

    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:

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

    All supported environment variables are here.

    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"

    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:

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

    Quarantined tests

    Tests can be put in quarantine by assigning :quarantine metadata. This means they will be skipped unless run with --tag quarantine. This can be used for tests that are expected to fail while a fix is in progress (similar to how skip or pending can be used).

    bin/qa Test::Instance::All http://localhost --tag quarantine

    If quarantine is used with other tags, tests will only be run if they have at least one of the tags other than quarantine. This is different from how RSpec tags usually work, where all tags are inclusive.

    For example, suppose one test has :smoke and :quarantine metadata, and another test has :ldap and :quarantine metadata. If the tests are run with --tag smoke --tag quarantine, only the first test will run. The test with :ldap will not run even though it also has :quarantine.