include: - project: gitlab-org/quality/pipeline-common ref: 5.1.1 file: - /ci/base.gitlab-ci.yml - /ci/allure-report.yml - /ci/knapsack-report.yml - template: Verify/Browser-Performance.gitlab-ci.yml .test-variables: variables: QA_GENERATE_ALLURE_REPORT: "true" QA_CAN_TEST_PRAEFECT: "false" GITLAB_USERNAME: "root" GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" GITLAB_ADMIN_USERNAME: "root" GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" GITLAB_QA_ADMIN_ACCESS_TOKEN: "${REVIEW_APPS_ROOT_TOKEN}" GITHUB_ACCESS_TOKEN: "${QA_GITHUB_ACCESS_TOKEN}" .bundle-base: extends: - .qa-cache image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3 before_script: - cd qa && bundle install .review-qa-base: image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.36-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23 extends: - .use-docker-in-docker - .bundle-base - .test-variables stage: qa needs: - review-deploy - download-knapsack-report variables: GIT_LFS_SKIP_SMUDGE: 1 WD_INSTALL_DIR: /usr/local/bin RSPEC_REPORT_OPTS: --force-color --order random --format documentation --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml script: - QA_COMMAND="bundle exec bin/qa ${QA_SCENARIO} ${QA_GITLAB_URL} -- ${QA_TESTS} ${RSPEC_REPORT_OPTS}" - echo "Running - '${QA_COMMAND}'" - eval "$QA_COMMAND" after_script: - | echo "Sentry errors for the current review-app test run can be found via following url:" echo "https://sentry.gitlab.net/gitlab/gitlab-review-apps/releases/$(echo "${CI_COMMIT_SHA}" | cut -c1-11)/all-events/." artifacts: paths: - qa/tmp reports: junit: qa/tmp/rspec-*.xml expire_in: 7 days when: always # Store knapsack report as artifact so the same report is reused across all jobs download-knapsack-report: extends: - .bundle-base - .rules:prepare-report stage: prepare script: - bundle exec rake "knapsack:download[qa]" allow_failure: true artifacts: paths: - qa/knapsack/review-qa-*.json expire_in: 1 day review-qa-smoke: extends: - .review-qa-base - .rules:qa-smoke variables: QA_SCENARIO: Test::Instance::Smoke QA_RUN_TYPE: review-qa-smoke retry: 1 review-qa-blocking: extends: - .review-qa-base - .rules:qa-blocking variables: QA_SCENARIO: Test::Instance::ReviewBlocking QA_RUN_TYPE: review-qa-blocking retry: 1 review-qa-blocking-parallel: extends: - review-qa-blocking - .rules:qa-blocking-parallel parallel: 10 review-qa-non-blocking: extends: - .review-qa-base - .rules:qa-non-blocking variables: QA_SCENARIO: Test::Instance::ReviewNonBlocking QA_RUN_TYPE: review-qa-non-blocking when: manual allow_failure: true review-qa-non-blocking-parallel: extends: - review-qa-non-blocking - .rules:qa-non-blocking-parallel parallel: 5 browser_performance: extends: - .default-retry - .review:rules:review-performance stage: qa needs: ["review-deploy"] variables: URL: environment_url.txt e2e-test-report: extends: - .generate-allure-report-base - .rules:prepare-report stage: post-qa variables: ALLURE_JOB_NAME: e2e-review-qa ALLURE_PROJECT_PATH: $CI_PROJECT_PATH ALLURE_RESULTS_GLOB: qa/tmp/allure-results ALLURE_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID GITLAB_AUTH_TOKEN: $PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE GIT_STRATEGY: none allow_failure: true when: always upload-knapsack-report: extends: - .generate-knapsack-report-base - .bundle-base stage: post-qa variables: QA_KNAPSACK_REPORT_FILE_PATTERN: $CI_PROJECT_DIR/qa/tmp/knapsack/*/*.json delete-test-resources: extends: - .bundle-base - .rules:prepare-report stage: post-qa variables: QA_TEST_RESOURCES_FILE_PATTERN: $CI_PROJECT_DIR/qa/tmp/test-resources-*.json GITLAB_QA_ACCESS_TOKEN: $REVIEW_APPS_ROOT_TOKEN script: - export GITLAB_ADDRESS="$QA_GITLAB_URL" - bundle exec rake "test_resources:delete[$QA_TEST_RESOURCES_FILE_PATTERN]" allow_failure: true when: always notify-slack: extends: - .notify-slack-qa - .qa-cache - .rules:main-run stage: post-qa variables: RUN_WITH_BUNDLE: "true" QA_PATH: qa ALLURE_JOB_NAME: e2e-review-qa SLACK_ICON_EMOJI: ci_failing STATUS_SYM: ☠️ STATUS: failed TYPE: "(review-app) " when: on_failure script: - bundle exec prepare-stage-reports --input-files "${CI_PROJECT_DIR}/qa/tmp/rspec-*.xml" - !reference [.notify-slack-qa, script] export-test-metrics: extends: - .bundle-base - .rules:main-run stage: post-qa when: always script: - bundle exec rake "ci:export_test_metrics[tmp/test-metrics-*.json]"