Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
		
							parent
							
								
									0aa559415c
								
							
						
					
					
						commit
						1947c080b3
					
				| 
						 | 
				
			
			@ -26,7 +26,6 @@ module MembershipActions
 | 
			
		|||
 | 
			
		||||
    member_data = if member.expires?
 | 
			
		||||
                    {
 | 
			
		||||
                      expires_in: helpers.distance_of_time_in_words_to_now(member.expires_at),
 | 
			
		||||
                      expires_soon: member.expires_soon?,
 | 
			
		||||
                      expires_at_formatted: member.expires_at.to_time.in_time_zone.to_s(:medium)
 | 
			
		||||
                    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -128,6 +128,10 @@ From there, you can see the following actions:
 | 
			
		|||
- Release was updated
 | 
			
		||||
- Release milestone associations changed
 | 
			
		||||
- Permission to approve merge requests by committers was updated ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7531) in GitLab 12.9)
 | 
			
		||||
- Permission to approve merge requests by committers was updated.
 | 
			
		||||
  - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7531) in GitLab 12.9.
 | 
			
		||||
  - Message for event [changed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72623/diffs) in GitLab 14.6.
 | 
			
		||||
 | 
			
		||||
- Permission to approve merge requests by authors was updated ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7531) in GitLab 12.9)
 | 
			
		||||
- Number of required approvals was updated ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7531) in GitLab 12.9)
 | 
			
		||||
- Added or removed users and groups from project approval groups ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/213603) in GitLab 13.2)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -277,7 +277,7 @@ Example response:
 | 
			
		|||
    "entity_id": 7,
 | 
			
		||||
    "entity_type": "Project",
 | 
			
		||||
    "details": {
 | 
			
		||||
        "change": "prevent merge request approval from reviewers",
 | 
			
		||||
        "change": "prevent merge request approval from committers",
 | 
			
		||||
        "from": "",
 | 
			
		||||
        "to": "true",
 | 
			
		||||
        "author_name": "Administrator",
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ Example response:
 | 
			
		|||
  "entity_id": 7,
 | 
			
		||||
  "entity_type": "Project",
 | 
			
		||||
  "details": {
 | 
			
		||||
      "change": "prevent merge request approval from reviewers",
 | 
			
		||||
      "change": "prevent merge request approval from committers",
 | 
			
		||||
      "from": "",
 | 
			
		||||
      "to": "true",
 | 
			
		||||
      "author_name": "Administrator",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -256,7 +256,7 @@ GitLab supports the [dotenv (`.env`)](https://github.com/bkeepers/dotenv) file f
 | 
			
		|||
and expands the `environment:url` value with variables defined in the `.env` file.
 | 
			
		||||
 | 
			
		||||
To use this feature, specify the
 | 
			
		||||
[`artifacts:reports:dotenv`](../yaml/index.md#artifactsreportsdotenv) keyword in `.gitlab-ci.yml`.
 | 
			
		||||
[`artifacts:reports:dotenv`](../yaml/artifacts_reports.md#artifactsreportsdotenv) keyword in `.gitlab-ci.yml`.
 | 
			
		||||
 | 
			
		||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
 | 
			
		||||
For an overview, see [Set dynamic URLs after a job finished](https://youtu.be/70jDXtOf4Ig).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ For an MR, the values of these metrics from the feature branch are compared to t
 | 
			
		|||
 | 
			
		||||
## How to set it up
 | 
			
		||||
 | 
			
		||||
Add a job that creates a [metrics report](yaml/index.md#artifactsreportsmetrics) (default filename: `metrics.txt`). The file should conform to the [OpenMetrics](https://openmetrics.io/) format.
 | 
			
		||||
Add a job that creates a [metrics report](yaml/artifacts_reports.md#artifactsreportsmetrics) (default filename: `metrics.txt`). The file should conform to the [OpenMetrics](https://openmetrics.io/) format.
 | 
			
		||||
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ Consider the following workflow:
 | 
			
		|||
## How it works
 | 
			
		||||
 | 
			
		||||
First, GitLab Runner uploads all [JUnit report format XML files](https://www.ibm.com/docs/en/adfz/developer-for-zos/14.1.0?topic=formats-junit-xml-format)
 | 
			
		||||
as [artifacts](yaml/index.md#artifactsreportsjunit) to GitLab. Then, when you visit a merge request, GitLab starts
 | 
			
		||||
as [artifacts](yaml/artifacts_reports.md#artifactsreportsjunit) to GitLab. Then, when you visit a merge request, GitLab starts
 | 
			
		||||
comparing the head and base branch's JUnit report format XML files, where:
 | 
			
		||||
 | 
			
		||||
- The base branch is the target branch (usually the default branch).
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +77,7 @@ If a test failed in the project's default branch in the last 14 days, a message
 | 
			
		|||
## How to set it up
 | 
			
		||||
 | 
			
		||||
To enable the Unit test reports in merge requests, you need to add
 | 
			
		||||
[`artifacts:reports:junit`](yaml/index.md#artifactsreportsjunit)
 | 
			
		||||
[`artifacts:reports:junit`](yaml/artifacts_reports.md#artifactsreportsjunit)
 | 
			
		||||
in `.gitlab-ci.yml`, and specify the path(s) of the generated test reports.
 | 
			
		||||
The reports must be `.xml` files, otherwise [GitLab returns an Error 500](https://gitlab.com/gitlab-org/gitlab/-/issues/216575).
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -377,7 +377,7 @@ GitLab does not parse very [large nodes](https://nokogiri.org/tutorials/parsing_
 | 
			
		|||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/202114) in GitLab 13.0 behind the `:junit_pipeline_screenshots_view` feature flag, disabled by default.
 | 
			
		||||
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/216979) in GitLab 13.12.
 | 
			
		||||
 | 
			
		||||
Upload your screenshots as [artifacts](yaml/index.md#artifactsreportsjunit) to GitLab. If JUnit
 | 
			
		||||
Upload your screenshots as [artifacts](yaml/artifacts_reports.md#artifactsreportsjunit) to GitLab. If JUnit
 | 
			
		||||
report format XML files contain an `attachment` tag, GitLab parses the attachment. Note that:
 | 
			
		||||
 | 
			
		||||
- The `attachment` tag **must** contain the relative path to `$CI_PROJECT_DIR` of the screenshots you uploaded. For
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -554,7 +554,7 @@ These variables cannot be used as CI/CD variables to configure a pipeline, but
 | 
			
		|||
they can be used in job scripts.
 | 
			
		||||
 | 
			
		||||
1. In the job script, save the variable as a `.env` file.
 | 
			
		||||
1. Save the `.env` file as an [`artifacts:reports:dotenv`](../yaml/index.md#artifactsreportsdotenv)
 | 
			
		||||
1. Save the `.env` file as an [`artifacts:reports:dotenv`](../yaml/artifacts_reports.md#artifactsreportsdotenv)
 | 
			
		||||
artifact.
 | 
			
		||||
1. Set a job in a later stage to receive the artifact by using the [`dependencies`](../yaml/index.md#dependencies)
 | 
			
		||||
   or the [`needs`](../yaml/index.md#needs) keywords.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,297 @@
 | 
			
		|||
---
 | 
			
		||||
stage: Verify
 | 
			
		||||
group: Testing
 | 
			
		||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
# GitLab CI/CD artifacts reports types **(FREE)**
 | 
			
		||||
 | 
			
		||||
Use [`artifacts:reports`](index.md#artifactsreports) to:
 | 
			
		||||
 | 
			
		||||
- Collect test reports, code quality reports, security reports, and other artifacts generated by included templates in
 | 
			
		||||
  jobs.
 | 
			
		||||
- Some of these reports are used to display information in:
 | 
			
		||||
  - Merge requests.
 | 
			
		||||
  - Pipeline views.
 | 
			
		||||
  - [Security dashboards](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
The test reports are collected regardless of the job results (success or failure).
 | 
			
		||||
You can use [`artifacts:expire_in`](index.md#artifactsexpire_in) to set up an expiration
 | 
			
		||||
date for their artifacts.
 | 
			
		||||
 | 
			
		||||
Some `artifacts:reports` types can be generated by multiple jobs in the same pipeline, and used by merge request or
 | 
			
		||||
pipeline features from each job.
 | 
			
		||||
 | 
			
		||||
To be able to browse the report output files, include the [`artifacts:paths`](index.md#artifactspaths) keyword.
 | 
			
		||||
 | 
			
		||||
NOTE:
 | 
			
		||||
Combined reports in parent pipelines using [artifacts from child pipelines](index.md#needspipelinejob) is
 | 
			
		||||
not supported. Track progress on adding support in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/215725).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:accessibility`
 | 
			
		||||
 | 
			
		||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39425) in GitLab 12.8.
 | 
			
		||||
 | 
			
		||||
The `accessibility` report uses [pa11y](https://pa11y.org/) to report on the accessibility impact
 | 
			
		||||
of changes introduced in merge requests.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[accessibility widget](../../user/project/merge_requests/accessibility_testing.md#accessibility-merge-request-widget).
 | 
			
		||||
 | 
			
		||||
For more information, see [Accessibility testing](../../user/project/merge_requests/accessibility_testing.md).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:api_fuzzing` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 13.4.
 | 
			
		||||
> - Requires GitLab Runner 13.4 or later.
 | 
			
		||||
 | 
			
		||||
The `api_fuzzing` report collects [API Fuzzing bugs](../../user/application_security/api_fuzzing/index.md)
 | 
			
		||||
as artifacts.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [security widget](../../user/application_security/api_fuzzing/index.md#view-details-of-an-api-fuzzing-vulnerability).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [security dashboard](../../user/application_security/api_fuzzing/index.md#security-dashboard).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:browser_performance` **(PREMIUM)**
 | 
			
		||||
 | 
			
		||||
> [Name changed](https://gitlab.com/gitlab-org/gitlab/-/issues/225914) from `artifacts:reports:performance` in GitLab 14.0.
 | 
			
		||||
 | 
			
		||||
The `browser_performance` report collects [Browser Performance Testing metrics](../../user/project/merge_requests/browser_performance_testing.md)
 | 
			
		||||
as artifacts.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one report in the merge request
 | 
			
		||||
[browser performance testing widget](../../user/project/merge_requests/browser_performance_testing.md#how-browser-performance-testing-works).
 | 
			
		||||
 | 
			
		||||
GitLab cannot display the combined results of multiple `browser_performance` reports.
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:cluster_image_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 14.1.
 | 
			
		||||
> - Requires GitLab Runner 14.1 and above.
 | 
			
		||||
 | 
			
		||||
The `cluster_image_scanning` report collects `CLUSTER_IMAGE_SCANNING` vulnerabilities. The collected
 | 
			
		||||
`CLUSTER_IMAGE_SCANNING` report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:cobertura`
 | 
			
		||||
 | 
			
		||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/3708) in GitLab 12.9.
 | 
			
		||||
 | 
			
		||||
The `cobertura` report collects [Cobertura coverage XML files](../../user/project/merge_requests/test_coverage_visualization.md).
 | 
			
		||||
The collected Cobertura coverage reports upload to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[diff annotations](../../user/project/merge_requests/test_coverage_visualization.md).
 | 
			
		||||
 | 
			
		||||
Cobertura was originally developed for Java, but there are many third-party ports for other languages such as
 | 
			
		||||
JavaScript, Python, and Ruby.
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:codequality`
 | 
			
		||||
 | 
			
		||||
> [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) to GitLab Free in 13.2.
 | 
			
		||||
 | 
			
		||||
The `codequality` report collects [code quality issues](../../user/project/merge_requests/code_quality.md). The
 | 
			
		||||
collected code quality report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of:
 | 
			
		||||
 | 
			
		||||
- One or more reports in the merge request [code quality widget](../../user/project/merge_requests/code_quality.md#code-quality-widget).
 | 
			
		||||
- Only one report in:
 | 
			
		||||
  - The merge request [diff annotations](../../user/project/merge_requests/code_quality.md#code-quality-in-diff-view).
 | 
			
		||||
    Track progress on adding support for multiple reports in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/328257).
 | 
			
		||||
  - The [full report](../metrics_reports.md). Track progress on adding support for multiple reports in
 | 
			
		||||
    [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/9014).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:container_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
The `container_scanning` report collects [Container Scanning vulnerabilities](../../user/application_security/container_scanning/index.md).
 | 
			
		||||
The collected Container Scanning report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [container scanning widget](../../user/application_security/container_scanning/index.md).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:coverage_fuzzing` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 13.4.
 | 
			
		||||
> - Requires GitLab Runner 13.4 or later.
 | 
			
		||||
 | 
			
		||||
The `coverage_fuzzing` report collects [coverage fuzzing bugs](../../user/application_security/coverage_fuzzing/index.md).
 | 
			
		||||
The collected coverage fuzzing report uploads to GitLab as an artifact.
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [coverage fuzzing widget](../../user/application_security/coverage_fuzzing/index.md#interacting-with-the-vulnerabilities).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:dast` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
The `dast` report collects [DAST vulnerabilities](../../user/application_security/dast/index.md). The collected DAST
 | 
			
		||||
report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [security widget](../../user/application_security/dast/index.md#view-details-of-a-vulnerability-detected-by-dast).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:dependency_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
The `dependency_scanning` report collects [Dependency Scanning vulnerabilities](../../user/application_security/dependency_scanning/index.md).
 | 
			
		||||
The collected Dependency Scanning report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [dependency scanning widget](../../user/application_security/dependency_scanning/index.md#overview).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The [dependency list](../../user/application_security/dependency_list/).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:dotenv`
 | 
			
		||||
 | 
			
		||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/17066) in GitLab 12.9.
 | 
			
		||||
 | 
			
		||||
The `dotenv` report collects a set of environment variables as artifacts.
 | 
			
		||||
 | 
			
		||||
The collected variables are registered as runtime-created variables of the job,
 | 
			
		||||
which is useful to [set dynamic environment URLs after a job finishes](../environments/index.md#set-dynamic-environment-urls-after-a-job-finishes).
 | 
			
		||||
 | 
			
		||||
The exceptions to the [original dotenv rules](https://github.com/motdotla/dotenv#rules) are:
 | 
			
		||||
 | 
			
		||||
- The variable key can contain only letters, digits, and underscores (`_`).
 | 
			
		||||
- The maximum size of the `.env` file is 5 KB.
 | 
			
		||||
- In GitLab 13.5 and older, the maximum number of inherited variables is 10.
 | 
			
		||||
- In [GitLab 13.6 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/247913),
 | 
			
		||||
  the maximum number of inherited variables is 20.
 | 
			
		||||
- Variable substitution in the `.env` file is not supported.
 | 
			
		||||
- The `.env` file can't have empty lines or comments (starting with `#`).
 | 
			
		||||
- Key values in the `env` file cannot have spaces or newline characters (`\n`), including when using single or double quotes.
 | 
			
		||||
- Quote escaping during parsing (`key = 'value'` -> `{key: "value"}`) is not supported.
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:junit`
 | 
			
		||||
 | 
			
		||||
The `junit` report collects [JUnit report format XML files](https://www.ibm.com/docs/en/adfz/developer-for-zos/14.1.0?topic=formats-junit-xml-format).
 | 
			
		||||
The collected Unit test reports upload to GitLab as an artifact. Although JUnit was originally developed in Java, there
 | 
			
		||||
are many third-party ports for other languages such as JavaScript, Python, and Ruby.
 | 
			
		||||
 | 
			
		||||
See [Unit test reports](../unit_test_reports.md) for more details and examples.
 | 
			
		||||
Below is an example of collecting a JUnit report format XML file from Ruby's RSpec test tool:
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
rspec:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
    - bundle install
 | 
			
		||||
    - rspec --format RspecJunitFormatter --out rspec.xml
 | 
			
		||||
  artifacts:
 | 
			
		||||
    reports:
 | 
			
		||||
      junit: rspec.xml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [code quality widget](../../ci/unit_test_reports.md#how-it-works).
 | 
			
		||||
- The [full report](../../ci/unit_test_reports.md#viewing-unit-test-reports-on-gitlab).
 | 
			
		||||
 | 
			
		||||
Some JUnit tools export to multiple XML files. You can specify multiple test report paths in a single job to
 | 
			
		||||
concatenate them into a single file. Use either:
 | 
			
		||||
 | 
			
		||||
- A filename pattern (`junit: rspec-*.xml`).
 | 
			
		||||
- an array of filenames (`junit: [rspec-1.xml, rspec-2.xml, rspec-3.xml]`).
 | 
			
		||||
- A Combination of both (`junit: [rspec.xml, test-results/TEST-*.xml]`).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:license_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> Introduced in GitLab 12.8.
 | 
			
		||||
 | 
			
		||||
The License Compliance report collects [Licenses](../../user/compliance/license_compliance/index.md). The License
 | 
			
		||||
Compliance report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [license compliance widget](../../user/compliance/license_compliance/index.md).
 | 
			
		||||
- The [license list](../../user/compliance/license_compliance/index.md#license-list).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:load_performance` **(PREMIUM)**
 | 
			
		||||
 | 
			
		||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/35260) in GitLab 13.2.
 | 
			
		||||
> - Requires GitLab Runner 11.5 and above.
 | 
			
		||||
 | 
			
		||||
The `load_performance` report collects [Load Performance Testing metrics](../../user/project/merge_requests/load_performance_testing.md).
 | 
			
		||||
The report is uploaded to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of only one report in the merge request
 | 
			
		||||
[load testing widget](../../user/project/merge_requests/load_performance_testing.md#how-load-performance-testing-works).
 | 
			
		||||
 | 
			
		||||
GitLab cannot display the combined results of multiple `load_performance` reports.
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:metrics` **(PREMIUM)**
 | 
			
		||||
 | 
			
		||||
The `metrics` report collects [Metrics](../metrics_reports.md). The collected Metrics report uploads to GitLab as an
 | 
			
		||||
artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[metrics reports widget](../../ci/metrics_reports.md#metrics-reports).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:requirements` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2859) in GitLab 13.1.
 | 
			
		||||
 | 
			
		||||
The `requirements` report collects `requirements.json` files. The collected Requirements report uploads to GitLab as an
 | 
			
		||||
artifact and existing [requirements](../../user/project/requirements/index.md) are marked as Satisfied.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the
 | 
			
		||||
[project requirements](../../user/project/requirements/index.md#view-a-requirement).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:sast`
 | 
			
		||||
 | 
			
		||||
> - [Moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) from GitLab Ultimate to GitLab Free in 13.3.
 | 
			
		||||
 | 
			
		||||
The `sast` report collects [SAST vulnerabilities](../../user/application_security/sast/index.md). The collected SAST
 | 
			
		||||
report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [SAST widget](../../user/application_security/sast/index.md#static-application-security-testing-sast).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:secret_detection`
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 13.1.
 | 
			
		||||
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/222788) to GitLab Free in 13.3.
 | 
			
		||||
> - Requires GitLab Runner 11.5 and above.
 | 
			
		||||
 | 
			
		||||
The `secret-detection` report collects [detected secrets](../../user/application_security/secret_detection/index.md).
 | 
			
		||||
The collected Secret Detection report is uploaded to GitLab.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [secret scanning widget](../../user/application_security/secret_detection/index.md).
 | 
			
		||||
- The [pipeline **Security** tab](../../user/application_security/index.md#view-security-scan-information-in-the-pipeline-security-tab).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
## `artifacts:reports:terraform`
 | 
			
		||||
 | 
			
		||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207528) in GitLab 13.0.
 | 
			
		||||
> - Requires [GitLab Runner](https://docs.gitlab.com/runner/) 11.5 and above.
 | 
			
		||||
 | 
			
		||||
The `terraform` report obtains a Terraform `tfplan.json` file. [JQ processing required to remove credentials](../../user/infrastructure/iac/mr_integration.md#configure-terraform-report-artifacts).
 | 
			
		||||
The collected Terraform plan report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[terraform widget](../../user/infrastructure/iac/mr_integration.md#output-terraform-plan-information-into-a-merge-request).
 | 
			
		||||
 | 
			
		||||
For more information, see [Output `terraform plan` information into a merge request](../../user/infrastructure/iac/mr_integration.md).
 | 
			
		||||
| 
						 | 
				
			
			@ -2854,189 +2854,15 @@ artifacts:
 | 
			
		|||
 | 
			
		||||
#### `artifacts:reports`
 | 
			
		||||
 | 
			
		||||
Use [`artifacts:reports`](#artifactsreports) to:
 | 
			
		||||
Use [`artifacts:reports`](artifacts_reports.md) to collect artifacts generated by
 | 
			
		||||
included templates in jobs.
 | 
			
		||||
 | 
			
		||||
- Collect test reports, code quality reports, security reports, and other artifacts generated by included templates in
 | 
			
		||||
  jobs.
 | 
			
		||||
- Some of these reports are used to display information in:
 | 
			
		||||
  - Merge requests.
 | 
			
		||||
  - Pipeline views.
 | 
			
		||||
  - [Security dashboards](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
**Keyword type**: Job keyword. You can use it only as part of a job or in the
 | 
			
		||||
[`default:` section](#default).
 | 
			
		||||
 | 
			
		||||
The test reports are collected regardless of the job results (success or failure).
 | 
			
		||||
You can use [`artifacts:expire_in`](#artifactsexpire_in) to set up an expiration
 | 
			
		||||
date for their artifacts.
 | 
			
		||||
**Possible inputs**: See list of available [artifacts reports types](artifacts_reports.md).
 | 
			
		||||
 | 
			
		||||
Some `artifacts:reports` types can be generated by multiple jobs in the same pipeline, and used by merge request or
 | 
			
		||||
pipeline features from each job.
 | 
			
		||||
 | 
			
		||||
To be able to browse the report output files, include the [`artifacts:paths`](#artifactspaths) keyword.
 | 
			
		||||
 | 
			
		||||
NOTE:
 | 
			
		||||
Combined reports in parent pipelines using [artifacts from child pipelines](#needspipelinejob) is
 | 
			
		||||
not supported. Track progress on adding support in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/215725).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:accessibility` **(FREE)**
 | 
			
		||||
 | 
			
		||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39425) in GitLab 12.8.
 | 
			
		||||
 | 
			
		||||
The `accessibility` report uses [pa11y](https://pa11y.org/) to report on the accessibility impact
 | 
			
		||||
of changes introduced in merge requests.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[accessibility widget](../../user/project/merge_requests/accessibility_testing.md#accessibility-merge-request-widget).
 | 
			
		||||
 | 
			
		||||
For more information, see [Accessibility testing](../../user/project/merge_requests/accessibility_testing.md).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:api_fuzzing` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 13.4.
 | 
			
		||||
> - Requires GitLab Runner 13.4 or later.
 | 
			
		||||
 | 
			
		||||
The `api_fuzzing` report collects [API Fuzzing bugs](../../user/application_security/api_fuzzing/index.md)
 | 
			
		||||
as artifacts.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [security widget](../../user/application_security/api_fuzzing/index.md#view-details-of-an-api-fuzzing-vulnerability).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [security dashboard](../../user/application_security/api_fuzzing/index.md#security-dashboard).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:browser_performance` **(PREMIUM)**
 | 
			
		||||
 | 
			
		||||
> [Name changed](https://gitlab.com/gitlab-org/gitlab/-/issues/225914) from `artifacts:reports:performance` in GitLab 14.0.
 | 
			
		||||
 | 
			
		||||
The `browser_performance` report collects [Browser Performance Testing metrics](../../user/project/merge_requests/browser_performance_testing.md)
 | 
			
		||||
as artifacts.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one report in the merge request
 | 
			
		||||
[browser performance testing widget](../../user/project/merge_requests/browser_performance_testing.md#how-browser-performance-testing-works).
 | 
			
		||||
 | 
			
		||||
GitLab cannot display the combined results of multiple `browser_performance` reports.
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:cluster_image_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 14.1.
 | 
			
		||||
> - Requires GitLab Runner 14.1 and above.
 | 
			
		||||
 | 
			
		||||
The `cluster_image_scanning` report collects `CLUSTER_IMAGE_SCANNING` vulnerabilities. The collected
 | 
			
		||||
`CLUSTER_IMAGE_SCANNING` report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:cobertura`
 | 
			
		||||
 | 
			
		||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/3708) in GitLab 12.9.
 | 
			
		||||
 | 
			
		||||
The `cobertura` report collects [Cobertura coverage XML files](../../user/project/merge_requests/test_coverage_visualization.md).
 | 
			
		||||
The collected Cobertura coverage reports upload to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[diff annotations](../../user/project/merge_requests/test_coverage_visualization.md).
 | 
			
		||||
 | 
			
		||||
Cobertura was originally developed for Java, but there are many third-party ports for other languages such as
 | 
			
		||||
JavaScript, Python, and Ruby.
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:codequality`
 | 
			
		||||
 | 
			
		||||
> [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) to GitLab Free in 13.2.
 | 
			
		||||
 | 
			
		||||
The `codequality` report collects [code quality issues](../../user/project/merge_requests/code_quality.md). The
 | 
			
		||||
collected code quality report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of:
 | 
			
		||||
 | 
			
		||||
- One or more reports in the merge request [code quality widget](../../user/project/merge_requests/code_quality.md#code-quality-widget).
 | 
			
		||||
- Only one report in:
 | 
			
		||||
  - The merge request [diff annotations](../../user/project/merge_requests/code_quality.md#code-quality-in-diff-view).
 | 
			
		||||
    Track progress on adding support for multiple reports in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/328257).
 | 
			
		||||
  - The [full report](../metrics_reports.md). Track progress on adding support for multiple reports in
 | 
			
		||||
    [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/9014).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:container_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
The `container_scanning` report collects [Container Scanning vulnerabilities](../../user/application_security/container_scanning/index.md).
 | 
			
		||||
The collected Container Scanning report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [container scanning widget](../../user/application_security/container_scanning/index.md).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:coverage_fuzzing` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 13.4.
 | 
			
		||||
> - Requires GitLab Runner 13.4 or later.
 | 
			
		||||
 | 
			
		||||
The `coverage_fuzzing` report collects [coverage fuzzing bugs](../../user/application_security/coverage_fuzzing/index.md).
 | 
			
		||||
The collected coverage fuzzing report uploads to GitLab as an artifact.
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [coverage fuzzing widget](../../user/application_security/coverage_fuzzing/index.md#interacting-with-the-vulnerabilities).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:dast` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
The `dast` report collects [DAST vulnerabilities](../../user/application_security/dast/index.md). The collected DAST
 | 
			
		||||
report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [security widget](../../user/application_security/dast/index.md#view-details-of-a-vulnerability-detected-by-dast).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:dependency_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
The `dependency_scanning` report collects [Dependency Scanning vulnerabilities](../../user/application_security/dependency_scanning/index.md).
 | 
			
		||||
The collected Dependency Scanning report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [dependency scanning widget](../../user/application_security/dependency_scanning/index.md#overview).
 | 
			
		||||
- The pipeline [**Security** tab](../../user/application_security/security_dashboard/index.md#pipeline-security).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
- The [Project Vulnerability report](../../user/application_security/vulnerability_report/index.md).
 | 
			
		||||
- The [dependency list](../../user/application_security/dependency_list/).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:dotenv`
 | 
			
		||||
 | 
			
		||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/17066) in GitLab 12.9.
 | 
			
		||||
 | 
			
		||||
The `dotenv` report collects a set of environment variables as artifacts.
 | 
			
		||||
 | 
			
		||||
The collected variables are registered as runtime-created variables of the job,
 | 
			
		||||
which is useful to [set dynamic environment URLs after a job finishes](../environments/index.md#set-dynamic-environment-urls-after-a-job-finishes).
 | 
			
		||||
 | 
			
		||||
The exceptions to the [original dotenv rules](https://github.com/motdotla/dotenv#rules) are:
 | 
			
		||||
 | 
			
		||||
- The variable key can contain only letters, digits, and underscores (`_`).
 | 
			
		||||
- The maximum size of the `.env` file is 5 KB.
 | 
			
		||||
- In GitLab 13.5 and older, the maximum number of inherited variables is 10.
 | 
			
		||||
- In [GitLab 13.6 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/247913),
 | 
			
		||||
  the maximum number of inherited variables is 20.
 | 
			
		||||
- Variable substitution in the `.env` file is not supported.
 | 
			
		||||
- The `.env` file can't have empty lines or comments (starting with `#`).
 | 
			
		||||
- Key values in the `env` file cannot have spaces or newline characters (`\n`), including when using single or double quotes.
 | 
			
		||||
- Quote escaping during parsing (`key = 'value'` -> `{key: "value"}`) is not supported.
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:junit`
 | 
			
		||||
 | 
			
		||||
The `junit` report collects [JUnit report format XML files](https://www.ibm.com/docs/en/adfz/developer-for-zos/14.1.0?topic=formats-junit-xml-format).
 | 
			
		||||
The collected Unit test reports upload to GitLab as an artifact. Although JUnit was originally developed in Java, there
 | 
			
		||||
are many third-party ports for other languages such as JavaScript, Python, and Ruby.
 | 
			
		||||
 | 
			
		||||
See [Unit test reports](../unit_test_reports.md) for more details and examples.
 | 
			
		||||
Below is an example of collecting a JUnit report format XML file from Ruby's RSpec test tool:
 | 
			
		||||
**Example of `artifacts:reports`**:
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
rspec:
 | 
			
		||||
| 
						 | 
				
			
			@ -3049,100 +2875,14 @@ rspec:
 | 
			
		|||
      junit: rspec.xml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
**Additional details**:
 | 
			
		||||
 | 
			
		||||
- The merge request [code quality widget](../../ci/unit_test_reports.md#how-it-works).
 | 
			
		||||
- The [full report](../../ci/unit_test_reports.md#viewing-unit-test-reports-on-gitlab).
 | 
			
		||||
 | 
			
		||||
Some JUnit tools export to multiple XML files. You can specify multiple test report paths in a single job to
 | 
			
		||||
concatenate them into a single file. Use either:
 | 
			
		||||
 | 
			
		||||
- A filename pattern (`junit: rspec-*.xml`).
 | 
			
		||||
- an array of filenames (`junit: [rspec-1.xml, rspec-2.xml, rspec-3.xml]`).
 | 
			
		||||
- A Combination of both (`junit: [rspec.xml, test-results/TEST-*.xml]`).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:license_scanning` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> Introduced in GitLab 12.8.
 | 
			
		||||
 | 
			
		||||
The License Compliance report collects [Licenses](../../user/compliance/license_compliance/index.md). The License
 | 
			
		||||
Compliance report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [license compliance widget](../../user/compliance/license_compliance/index.md).
 | 
			
		||||
- The [license list](../../user/compliance/license_compliance/index.md#license-list).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:load_performance` **(PREMIUM)**
 | 
			
		||||
 | 
			
		||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/35260) in GitLab 13.2.
 | 
			
		||||
> - Requires GitLab Runner 11.5 and above.
 | 
			
		||||
 | 
			
		||||
The `load_performance` report collects [Load Performance Testing metrics](../../user/project/merge_requests/load_performance_testing.md).
 | 
			
		||||
The report is uploaded to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of only one report in the merge request
 | 
			
		||||
[load testing widget](../../user/project/merge_requests/load_performance_testing.md#how-load-performance-testing-works).
 | 
			
		||||
 | 
			
		||||
GitLab cannot display the combined results of multiple `load_performance` reports.
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:metrics` **(PREMIUM)**
 | 
			
		||||
 | 
			
		||||
The `metrics` report collects [Metrics](../metrics_reports.md). The collected Metrics report uploads to GitLab as an
 | 
			
		||||
artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[metrics reports widget](../../ci/metrics_reports.md#metrics-reports).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:requirements` **(ULTIMATE)**
 | 
			
		||||
 | 
			
		||||
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2859) in GitLab 13.1.
 | 
			
		||||
 | 
			
		||||
The `requirements` report collects `requirements.json` files. The collected Requirements report uploads to GitLab as an
 | 
			
		||||
artifact and existing [requirements](../../user/project/requirements/index.md) are marked as Satisfied.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the
 | 
			
		||||
[project requirements](../../user/project/requirements/index.md#view-a-requirement).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:sast`
 | 
			
		||||
 | 
			
		||||
> - [Moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) from GitLab Ultimate to GitLab Free in 13.3.
 | 
			
		||||
 | 
			
		||||
The `sast` report collects [SAST vulnerabilities](../../user/application_security/sast/index.md). The collected SAST
 | 
			
		||||
report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [SAST widget](../../user/application_security/sast/index.md#static-application-security-testing-sast).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:secret_detection`
 | 
			
		||||
 | 
			
		||||
> - Introduced in GitLab 13.1.
 | 
			
		||||
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/222788) to GitLab Free in 13.3.
 | 
			
		||||
> - Requires GitLab Runner 11.5 and above.
 | 
			
		||||
 | 
			
		||||
The `secret-detection` report collects [detected secrets](../../user/application_security/secret_detection/index.md).
 | 
			
		||||
The collected Secret Detection report is uploaded to GitLab.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in:
 | 
			
		||||
 | 
			
		||||
- The merge request [secret scanning widget](../../user/application_security/secret_detection/index.md).
 | 
			
		||||
- The [pipeline **Security** tab](../../user/application_security/index.md#view-security-scan-information-in-the-pipeline-security-tab).
 | 
			
		||||
- The [security dashboard](../../user/application_security/security_dashboard/index.md).
 | 
			
		||||
 | 
			
		||||
##### `artifacts:reports:terraform`
 | 
			
		||||
 | 
			
		||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207528) in GitLab 13.0.
 | 
			
		||||
> - Requires [GitLab Runner](https://docs.gitlab.com/runner/) 11.5 and above.
 | 
			
		||||
 | 
			
		||||
The `terraform` report obtains a Terraform `tfplan.json` file. [JQ processing required to remove credentials](../../user/infrastructure/iac/mr_integration.md#configure-terraform-report-artifacts).
 | 
			
		||||
The collected Terraform plan report uploads to GitLab as an artifact.
 | 
			
		||||
 | 
			
		||||
GitLab can display the results of one or more reports in the merge request
 | 
			
		||||
[terraform widget](../../user/infrastructure/iac/mr_integration.md#output-terraform-plan-information-into-a-merge-request).
 | 
			
		||||
 | 
			
		||||
For more information, see [Output `terraform plan` information into a merge request](../../user/infrastructure/iac/mr_integration.md).
 | 
			
		||||
- Combining reports in parent pipelines using [artifacts from child pipelines](#needspipelinejob) is
 | 
			
		||||
  not supported. Track progress on adding support in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/215725).
 | 
			
		||||
- To be able to browse the report output files, include the [`artifacts:paths`](#artifactspaths) keyword.
 | 
			
		||||
- The test reports are collected regardless of the job results (success or failure).
 | 
			
		||||
  You can use [`artifacts:expire_in`](#artifactsexpire_in) to set up an expiration
 | 
			
		||||
  date for artifacts reports.
 | 
			
		||||
 | 
			
		||||
#### `artifacts:untracked`
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ all repositories and all attachments.
 | 
			
		|||
 | 
			
		||||
You can only restore a backup to **exactly the same version and type (CE/EE)**
 | 
			
		||||
of GitLab on which it was created. The best way to migrate your repositories
 | 
			
		||||
from one server to another is through backup restore.
 | 
			
		||||
from one server to another is through a backup and restore.
 | 
			
		||||
 | 
			
		||||
WARNING:
 | 
			
		||||
GitLab doesn't back up items that aren't stored in the file system. If you're
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +70,7 @@ Backups do not include:
 | 
			
		|||
- [Mattermost data](https://docs.mattermost.com/administration/config-settings.html#file-storage)
 | 
			
		||||
 | 
			
		||||
WARNING:
 | 
			
		||||
GitLab does not back up any configuration files, SSL certificates, or system
 | 
			
		||||
GitLab does not back up any configuration files (`/etc/gitlab`), SSL certificates, or system
 | 
			
		||||
files. You are highly advised to read about [storing configuration files](#storing-configuration-files).
 | 
			
		||||
 | 
			
		||||
WARNING:
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +190,7 @@ on a Kubernetes cluster, you must follow the
 | 
			
		|||
[Back up the secrets](https://docs.gitlab.com/charts/backup-restore/backup.html#backup-the-secrets)
 | 
			
		||||
instructions.
 | 
			
		||||
 | 
			
		||||
You may also want to back up any TLS keys and certificates, and your
 | 
			
		||||
You may also want to back up any TLS keys and certificates (`/etc/gitlab/ssl`), and your
 | 
			
		||||
[SSH host keys](https://superuser.com/questions/532040/copy-ssh-keys-from-one-server-to-another-server/532079#532079).
 | 
			
		||||
 | 
			
		||||
If you use Omnibus GitLab, review additional information to
 | 
			
		||||
| 
						 | 
				
			
			@ -903,7 +903,7 @@ If you fail to restore this encryption key file along with the application data
 | 
			
		|||
backup, users with two-factor authentication enabled and GitLab Runner
 | 
			
		||||
loses access to your GitLab server.
 | 
			
		||||
 | 
			
		||||
You may also want to restore any TLS keys, certificates, or
 | 
			
		||||
You may also want to restore any TLS keys, certificates (`/etc/gitlab/ssl`), or
 | 
			
		||||
[SSH host keys](https://superuser.com/questions/532040/copy-ssh-keys-from-one-server-to-another-server/532079#532079).
 | 
			
		||||
 | 
			
		||||
Starting with GitLab 12.9, if an untarred backup (like the ones made with
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -153,7 +153,7 @@ The included template:
 | 
			
		|||
  fetches vulnerabilities found by [Starboard Operator](https://aquasecurity.github.io/starboard/v0.10.3/operator/).
 | 
			
		||||
 | 
			
		||||
GitLab saves the results as a
 | 
			
		||||
[Cluster Image Scanning report artifact](../../../ci/yaml/index.md#artifactsreportscluster_image_scanning)
 | 
			
		||||
[Cluster Image Scanning report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportscluster_image_scanning)
 | 
			
		||||
that you can download and analyze later. When downloading, you always receive the most recent
 | 
			
		||||
artifact.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ The included template:
 | 
			
		|||
  (see [requirements](#requirements)) and scans it for possible vulnerabilities.
 | 
			
		||||
 | 
			
		||||
GitLab saves the results as a
 | 
			
		||||
[Container Scanning report artifact](../../../ci/yaml/index.md#artifactsreportscontainer_scanning)
 | 
			
		||||
[Container Scanning report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportscontainer_scanning)
 | 
			
		||||
that you can download and analyze later. When downloading, you always receive the most-recent
 | 
			
		||||
artifact.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ group: Dynamic Analysis
 | 
			
		|||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
# AspNet Header(s) exposes version information
 | 
			
		||||
# AspNet header exposes version information
 | 
			
		||||
 | 
			
		||||
## Description
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
---
 | 
			
		||||
stage: Secure
 | 
			
		||||
group: Dynamic Analysis
 | 
			
		||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
# AspNetMvc header exposes version information
 | 
			
		||||
 | 
			
		||||
## Description
 | 
			
		||||
 | 
			
		||||
The target website returns AspNet header(s) along with version information of this website. By
 | 
			
		||||
exposing these values attackers may attempt to identify if the target software is vulnerable to known
 | 
			
		||||
vulnerabilities. Or catalog known sites running particular versions to exploit in the future when a
 | 
			
		||||
vulnerability is identified in the particular version.
 | 
			
		||||
 | 
			
		||||
## Remediation
 | 
			
		||||
 | 
			
		||||
To remove the `X-AspNetMvc-Version` information set `MvcHandler.DisableMvcResponseHeader = true;` in the
 | 
			
		||||
`Global.asax.cs` file in the `Application_Start()` method.
 | 
			
		||||
 | 
			
		||||
```cs
 | 
			
		||||
protected void Application_Start()
 | 
			
		||||
{
 | 
			
		||||
    MvcHandler.DisableMvcResponseHeader = true;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Details
 | 
			
		||||
 | 
			
		||||
| ID | Aggregated | CWE | Type | Risk |
 | 
			
		||||
|:---|:--------|:--------|:--------|:--------|
 | 
			
		||||
| 16.6 | true | 16 | Passive | Low |
 | 
			
		||||
 | 
			
		||||
## Links
 | 
			
		||||
 | 
			
		||||
- [cwe](https://cwe.mitre.org/data/definitions/16.html)
 | 
			
		||||
- [IIS Remove Unwanted Headers](https://techcommunity.microsoft.com/t5/iis-support-blog/remove-unwanted-http-response-headers/ba-p/369710)
 | 
			
		||||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ The [DAST browser-based crawler](../browser_based.md) provides a number of vulne
 | 
			
		|||
| [16.2](16.2.md) | Server header exposes version information | Low | Passive |
 | 
			
		||||
| [16.3](16.3.md) | X-Powered-By header exposes version information | Low | Passive |
 | 
			
		||||
| [16.4](16.4.md) | X-Backend-Server header exposes server information | Info | Passive |
 | 
			
		||||
| [16.5](16.5.md) | AspNet Header(s) exposes version information | Low | Passive |
 | 
			
		||||
| [16.5](16.5.md) | AspNet header exposes version information | Low | Passive |
 | 
			
		||||
| [16.6](16.6.md) | AspNetMvc header exposes version information | Low | Passive |
 | 
			
		||||
| [614.1](614.1.md) | Sensitive cookie without `Secure` attribute | Low | Passive |
 | 
			
		||||
| [693.1](693.1.md) | Missing X-Content-Type-Options: nosniff | Low | Passive |
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -254,7 +254,7 @@ The included template creates a `dast` job in your CI/CD pipeline and scans
 | 
			
		|||
your project's running application for possible vulnerabilities.
 | 
			
		||||
 | 
			
		||||
The results are saved as a
 | 
			
		||||
[DAST report artifact](../../../ci/yaml/index.md#artifactsreportsdast)
 | 
			
		||||
[DAST report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsdast)
 | 
			
		||||
that you can later download and analyze. Due to implementation limitations, we
 | 
			
		||||
always take the latest DAST artifact available. Behind the scenes, the
 | 
			
		||||
[GitLab DAST Docker image](https://gitlab.com/security-products/dast)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -425,7 +425,7 @@ include:
 | 
			
		|||
The included template creates dependency scanning jobs in your CI/CD
 | 
			
		||||
pipeline and scans your project's source code for possible vulnerabilities.
 | 
			
		||||
The results are saved as a
 | 
			
		||||
[dependency scanning report artifact](../../../ci/yaml/index.md#artifactsreportsdependency_scanning)
 | 
			
		||||
[dependency scanning report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsdependency_scanning)
 | 
			
		||||
that you can later download and analyze. Due to implementation limitations, we
 | 
			
		||||
always take the latest dependency scanning artifact available.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ The included template creates IaC scanning jobs in your CI/CD pipeline and scans
 | 
			
		|||
your project's configuration files for possible vulnerabilities.
 | 
			
		||||
 | 
			
		||||
The results are saved as a
 | 
			
		||||
[SAST report artifact](../../../ci/yaml/index.md#artifactsreportssast)
 | 
			
		||||
[SAST report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportssast)
 | 
			
		||||
that you can download and analyze.
 | 
			
		||||
 | 
			
		||||
### Enable IaC Scanning via an automatic merge request
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -184,7 +184,7 @@ The included template creates SAST jobs in your CI/CD pipeline and scans
 | 
			
		|||
your project's source code for possible vulnerabilities.
 | 
			
		||||
 | 
			
		||||
The results are saved as a
 | 
			
		||||
[SAST report artifact](../../../ci/yaml/index.md#artifactsreportssast)
 | 
			
		||||
[SAST report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportssast)
 | 
			
		||||
that you can later download and analyze. Due to implementation limitations, we
 | 
			
		||||
always take the latest SAST artifact available.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -134,7 +134,7 @@ The included template creates Secret Detection jobs in your CI/CD pipeline and s
 | 
			
		|||
your project's source code for secrets.
 | 
			
		||||
 | 
			
		||||
The results are saved as a
 | 
			
		||||
[Secret Detection report artifact](../../../ci/yaml/index.md#artifactsreportssecret_detection)
 | 
			
		||||
[Secret Detection report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportssecret_detection)
 | 
			
		||||
that you can later download and analyze. Due to implementation limitations, we
 | 
			
		||||
always take the latest Secret Detection artifact available.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,7 +126,7 @@ the `license_management` job, so you must migrate to the `license_scanning` job
 | 
			
		|||
`License-Scanning.gitlab-ci.yml` template.
 | 
			
		||||
 | 
			
		||||
The results are saved as a
 | 
			
		||||
[License Compliance report artifact](../../../ci/yaml/index.md#artifactsreportslicense_scanning)
 | 
			
		||||
[License Compliance report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportslicense_scanning)
 | 
			
		||||
that you can later download and analyze. Due to implementation limitations, we
 | 
			
		||||
always take the latest License Compliance artifact available. Behind the scenes, the
 | 
			
		||||
[GitLab License Compliance Docker image](https://gitlab.com/gitlab-org/security-products/analyzers/license-finder)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ Collaborating around Infrastructure as Code (IaC) changes requires both code cha
 | 
			
		|||
 | 
			
		||||
## Output Terraform Plan information into a merge request
 | 
			
		||||
 | 
			
		||||
Using the [GitLab Terraform Report artifact](../../../ci/yaml/index.md#artifactsreportsterraform),
 | 
			
		||||
Using the [GitLab Terraform Report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsterraform),
 | 
			
		||||
you can expose details from `terraform plan` runs directly into a merge request widget,
 | 
			
		||||
enabling you to see statistics about the resources that Terraform creates,
 | 
			
		||||
modifies, or destroys.
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ To manually configure a GitLab Terraform Report artifact:
 | 
			
		|||
1. Define a `script` that runs `terraform plan` and `terraform show`. These commands
 | 
			
		||||
   pipe the output and convert the relevant bits into a store variable `PLAN_JSON`.
 | 
			
		||||
   This JSON is used to create a
 | 
			
		||||
   [GitLab Terraform Report artifact](../../../ci/yaml/index.md#artifactsreportsterraform).
 | 
			
		||||
   [GitLab Terraform Report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsterraform).
 | 
			
		||||
   The Terraform report obtains a Terraform `tfplan.json` file. The collected
 | 
			
		||||
   Terraform plan report is uploaded to GitLab as an artifact, and is shown in merge requests.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ Consider the following workflow:
 | 
			
		|||
## How browser performance testing works
 | 
			
		||||
 | 
			
		||||
First, define a job in your `.gitlab-ci.yml` file that generates the
 | 
			
		||||
[Browser Performance report artifact](../../../ci/yaml/index.md#artifactsreportsbrowser_performance).
 | 
			
		||||
[Browser Performance report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsbrowser_performance).
 | 
			
		||||
GitLab then checks this report, compares key performance metrics for each page
 | 
			
		||||
between the source and target branches, and shows the information in the merge request.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +89,7 @@ The above example:
 | 
			
		|||
  GitLab 12.3 or earlier, you must [add the configuration manually](#gitlab-versions-132-and-earlier).
 | 
			
		||||
 | 
			
		||||
The template uses the [GitLab plugin for sitespeed.io](https://gitlab.com/gitlab-org/gl-performance),
 | 
			
		||||
and it saves the full HTML sitespeed.io report as a [Browser Performance report artifact](../../../ci/yaml/index.md#artifactsreportsbrowser_performance)
 | 
			
		||||
and it saves the full HTML sitespeed.io report as a [Browser Performance report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsbrowser_performance)
 | 
			
		||||
that you can later download and analyze. This implementation always takes the latest
 | 
			
		||||
Browser Performance artifact available. If [GitLab Pages](../pages/index.md) is enabled,
 | 
			
		||||
you can view the report directly in your browser.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -87,7 +87,7 @@ include:
 | 
			
		|||
 | 
			
		||||
The above example creates a `code_quality` job in your CI/CD pipeline which
 | 
			
		||||
scans your source code for code quality issues. The report is saved as a
 | 
			
		||||
[Code Quality report artifact](../../../ci/yaml/index.md#artifactsreportscodequality)
 | 
			
		||||
[Code Quality report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportscodequality)
 | 
			
		||||
that you can later download and analyze.
 | 
			
		||||
 | 
			
		||||
It's also possible to override the URL to the Code Quality image by
 | 
			
		||||
| 
						 | 
				
			
			@ -343,7 +343,7 @@ It's possible to have a custom tool provide Code Quality reports in GitLab. To
 | 
			
		|||
do this:
 | 
			
		||||
 | 
			
		||||
1. Define a job in your `.gitlab-ci.yml` file that generates the
 | 
			
		||||
   [Code Quality report artifact](../../../ci/yaml/index.md#artifactsreportscodequality).
 | 
			
		||||
   [Code Quality report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportscodequality).
 | 
			
		||||
1. Configure your tool to generate the Code Quality report artifact as a JSON
 | 
			
		||||
   file that implements a subset of the [Code Climate
 | 
			
		||||
   spec](https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#data-types).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ GET calls to a popular API endpoint in your application to see how it performs.
 | 
			
		|||
## How Load Performance Testing works
 | 
			
		||||
 | 
			
		||||
First, define a job in your `.gitlab-ci.yml` file that generates the
 | 
			
		||||
[Load Performance report artifact](../../../ci/yaml/index.md#artifactsreportsload_performance).
 | 
			
		||||
[Load Performance report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsload_performance).
 | 
			
		||||
GitLab checks this report, compares key load performance metrics
 | 
			
		||||
between the source and target branches, and then shows the information in a merge request widget:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -140,7 +140,7 @@ For example, you can override the duration of the test with a CLI option:
 | 
			
		|||
 | 
			
		||||
GitLab only displays the key performance metrics in the MR widget if k6's results are saved
 | 
			
		||||
via [summary export](https://k6.io/docs/results-visualization/json#summary-export)
 | 
			
		||||
as a [Load Performance report artifact](../../../ci/yaml/index.md#artifactsreportsload_performance).
 | 
			
		||||
as a [Load Performance report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportsload_performance).
 | 
			
		||||
The latest Load Performance artifact available is always used, using the
 | 
			
		||||
summary values from the test.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ between pipeline completion and the visualization loading on the page.
 | 
			
		|||
 | 
			
		||||
For the coverage analysis to work, you have to provide a properly formatted
 | 
			
		||||
[Cobertura XML](https://cobertura.github.io/cobertura/) report to
 | 
			
		||||
[`artifacts:reports:cobertura`](../../../ci/yaml/index.md#artifactsreportscobertura).
 | 
			
		||||
[`artifacts:reports:cobertura`](../../../ci/yaml/artifacts_reports.md#artifactsreportscobertura).
 | 
			
		||||
This format was originally developed for Java, but most coverage analysis frameworks
 | 
			
		||||
for other languages have plugins to add support for it, like:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -134,7 +134,7 @@ You can also sort the requirements list by:
 | 
			
		|||
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2859) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.1.
 | 
			
		||||
> - [Added](https://gitlab.com/gitlab-org/gitlab/-/issues/215514) ability to specify individual requirements and their statuses in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.2.
 | 
			
		||||
 | 
			
		||||
GitLab supports [requirements test reports](../../../ci/yaml/index.md#artifactsreportsrequirements) now.
 | 
			
		||||
GitLab supports [requirements test reports](../../../ci/yaml/artifacts_reports.md#artifactsreportsrequirements) now.
 | 
			
		||||
You can add a job to your CI pipeline that, when triggered, marks all existing
 | 
			
		||||
requirements as Satisfied (you may manually satisfy a requirement in the edit form [edit a requirement](#edit-a-requirement)).
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -293,7 +293,6 @@ RSpec.describe Groups::GroupMembersController do
 | 
			
		|||
      context 'when `expires_at` is set' do
 | 
			
		||||
        it 'returns correct json response' do
 | 
			
		||||
          expect(json_response).to eq({
 | 
			
		||||
            "expires_in" => "about 1 month",
 | 
			
		||||
            "expires_soon" => false,
 | 
			
		||||
            "expires_at_formatted" => expiry_date.to_time.in_time_zone.to_s(:medium)
 | 
			
		||||
          })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -369,7 +369,6 @@ RSpec.describe Projects::ProjectMembersController do
 | 
			
		|||
      context 'when `expires_at` is set' do
 | 
			
		||||
        it 'returns correct json response' do
 | 
			
		||||
          expect(json_response).to eq({
 | 
			
		||||
            "expires_in" => "about 1 month",
 | 
			
		||||
            "expires_soon" => false,
 | 
			
		||||
            "expires_at_formatted" => expiry_date.to_time.in_time_zone.to_s(:medium)
 | 
			
		||||
          })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue