1# frozen_string_literal: true 2 3module QA 4 RSpec.describe 'Verify', :runner do 5 describe 'Code coverage statistics' do 6 let(:simplecov) { '\(\d+.\d+\%\) covered' } 7 let(:executor) { "qa-runner-#{Time.now.to_i}" } 8 let(:runner) do 9 Resource::Runner.fabricate_via_api! do |runner| 10 runner.name = executor 11 runner.tags = ['e2e-test'] 12 end 13 end 14 15 let(:merge_request) do 16 Resource::MergeRequest.fabricate_via_api! do |mr| 17 mr.project = runner.project 18 mr.file_name = '.gitlab-ci.yml' 19 mr.file_content = <<~EOF 20 test: 21 tags: [e2e-test] 22 script: 23 - echo '(66.67%) covered' 24 EOF 25 end 26 end 27 28 before do 29 Flow::Login.sign_in 30 end 31 32 after do 33 runner.remove_via_api! 34 end 35 36 it 'creates an MR with code coverage statistics', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348068' do 37 runner.project.visit! 38 configure_code_coverage(simplecov) 39 merge_request.visit! 40 41 Page::MergeRequest::Show.perform do |mr_widget| 42 mr_widget.has_pipeline_status?('passed') 43 expect(mr_widget).to have_content('Test coverage 66.67%') 44 end 45 end 46 end 47 48 private 49 50 def configure_code_coverage(coverage_tool_pattern) 51 Page::Project::Menu.perform(&:go_to_ci_cd_settings) 52 Page::Project::Settings::CiCd.perform do |settings| 53 settings.expand_general_pipelines do |coverage| 54 coverage.configure_coverage_regex(coverage_tool_pattern) 55 end 56 end 57 end 58 end 59end 60