diff --git a/features/project/builds/badge.feature b/features/project/builds/badge.feature new file mode 100644 index 0000000000000000000000000000000000000000..4a198488f3d1cd491f247e5403d64481b7d43968 --- /dev/null +++ b/features/project/builds/badge.feature @@ -0,0 +1,17 @@ +Feature: Project Builds Badge + Background: + Given project exists in some group namespace + And project has CI enabled + And project has a recent build + + Scenario: I want to see a badge for successfully built project + Given recent build is successfull + When I display builds badge for a master branch + Then I should see a build success badge + And build badge is a svg image + + Scenario: I want to see a badge for project with filed builds + Given recent build failed + When I display builds badge for a master branch + Then I should see a build failed badge + And build badge is a svg image diff --git a/features/steps/project/builds/badge.rb b/features/steps/project/builds/badge.rb new file mode 100644 index 0000000000000000000000000000000000000000..3cf1e2cab5e7e11a9fa4fe6d0fdc7fa57e12e478 --- /dev/null +++ b/features/steps/project/builds/badge.rb @@ -0,0 +1,25 @@ +class Spinach::Features::ProjectBuildsBadge < Spinach::FeatureSteps + include SharedProject + include SharedBuilds + include RepoHelpers + + step 'I display builds badge for a master branch' do + visit badge_namespace_project_builds_path(@project.namespace, @project, ref: :master, format: :svg) + end + + step 'I should see a build success badge' do + expect(svg.at('text:contains("success")')).to be_truthy + end + + step 'I should see a build failed badge' do + expect(svg.at('text:contains("failed")')).to be_truthy + end + + step 'build badge is a svg image' do + expect(page.response_headers).to include('Content-Type' => 'image/svg+xml') + end + + def svg + Nokogiri::HTML.parse(page.body) + end +end diff --git a/features/steps/shared/builds.rb b/features/steps/shared/builds.rb index 726e2e814adbc67faae94c683aa89aa63ef913ca..055ebe1c8156adb2aaa6ed5dd204567c60653e82 100644 --- a/features/steps/shared/builds.rb +++ b/features/steps/shared/builds.rb @@ -6,8 +6,16 @@ module SharedBuilds end step 'project has a recent build' do - ci_commit = create :ci_commit, project: @project, sha: sample_commit.id - @build = create :ci_build, commit: ci_commit + @ci_commit = create(:ci_commit, project: @project, sha: @project.commit.sha) + @build = create(:ci_build, commit: @ci_commit) + end + + step 'recent build is successfull' do + @build.update_column(:status, 'success') + end + + step 'recent build failed' do + @build.update_column(:status, 'failed') end step 'I visit recent build details page' do