From 6a40718b9e9290e9393726e6dc7affcb0451fd0d Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 13 Jan 2016 20:41:43 +0100 Subject: Fix tests Signed-off-by: Dmitriy Zaporozhets --- features/steps/shared/active_tab.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'features') diff --git a/features/steps/shared/active_tab.rb b/features/steps/shared/active_tab.rb index eb2ccd9d01e..0bee91d758d 100644 --- a/features/steps/shared/active_tab.rb +++ b/features/steps/shared/active_tab.rb @@ -6,7 +6,7 @@ module SharedActiveTab end def ensure_active_sub_tab(content) - expect(find('div.content ul.center-top-menu li.active')).to have_content(content) + expect(find('div.content ul.nav-links li.active')).to have_content(content) end def ensure_active_sub_nav(content) @@ -18,7 +18,7 @@ module SharedActiveTab end step 'no other sub tabs should be active' do - expect(page).to have_selector('div.content ul.center-top-menu li.active', count: 1) + expect(page).to have_selector('div.content ul.nav-links li.active', count: 1) end step 'no other sub navs should be active' do -- cgit v1.2.1 From e5d2a81b86d59c50ff5c488da017a9b56d0442f0 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 5 Jan 2016 12:46:42 +0000 Subject: Add basic spinach tests for project builds --- features/project/builds.feature | 11 +++++++++++ features/steps/project/builds.rb | 14 ++++++++++++++ features/steps/shared/builds.rb | 16 ++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 features/project/builds.feature create mode 100644 features/steps/project/builds.rb create mode 100644 features/steps/shared/builds.rb (limited to 'features') diff --git a/features/project/builds.feature b/features/project/builds.feature new file mode 100644 index 00000000000..3f005b5133c --- /dev/null +++ b/features/project/builds.feature @@ -0,0 +1,11 @@ +Feature: Project Builds + Background: + Given I sign in as a user + And I own a project + And CI is enabled + And I have recent build for my project + + Scenario: I browse build summary page + When I visit recent build summary page + Then I see summary for build + And I see build trace diff --git a/features/steps/project/builds.rb b/features/steps/project/builds.rb new file mode 100644 index 00000000000..769690dd79d --- /dev/null +++ b/features/steps/project/builds.rb @@ -0,0 +1,14 @@ +class Spinach::Features::ProjectBuilds < Spinach::FeatureSteps + include SharedAuthentication + include SharedProject + include SharedBuilds + include RepoHelpers + + step 'I see summary for build' do + expect(page).to have_content "Build ##{@build.id}" + end + + step 'I see build trace' do + expect(page).to have_css '#build-trace' + end +end diff --git a/features/steps/shared/builds.rb b/features/steps/shared/builds.rb new file mode 100644 index 00000000000..6f9cd174729 --- /dev/null +++ b/features/steps/shared/builds.rb @@ -0,0 +1,16 @@ +module SharedBuilds + include Spinach::DSL + + step 'CI is enabled' do + @project.enable_ci + end + + step 'I have recent build for my project' do + ci_commit = create :ci_commit, project: @project, sha: sample_commit.id + @build = create :ci_build, commit: ci_commit + end + + step 'I visit recent build summary page' do + visit namespace_project_build_path(@project.namespace, @project, @build) + end +end -- cgit v1.2.1 From 09c82c6fdc494de0d64cb58b4b61a86104ff1131 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Thu, 7 Jan 2016 10:33:07 +0100 Subject: Add spinach feature specs for build artifacts browser --- features/project/builds.feature | 21 +++++++++++++++++++++ features/steps/project/builds.rb | 34 ++++++++++++++++++++++++++++++++++ features/steps/shared/builds.rb | 12 ++++++++++++ 3 files changed, 67 insertions(+) (limited to 'features') diff --git a/features/project/builds.feature b/features/project/builds.feature index 3f005b5133c..14c9b6c9a35 100644 --- a/features/project/builds.feature +++ b/features/project/builds.feature @@ -9,3 +9,24 @@ Feature: Project Builds When I visit recent build summary page Then I see summary for build And I see build trace + + Scenario: I download build artifacts + Given recent build has artifacts available + When I visit recent build summary page + And I click artifacts download button + Then download of build artifacts archive starts + + Scenario: I browse build artifacts + Given recent build has artifacts available + And recent build has artifacts metadata available + When I visit recent build summary page + And I click artifacts browse button + Then I should see content of artifacts archive + + Scenario: I browse subdirectory of build artifacts + Given recent build has artifacts available + And recent build has artifacts metadata available + When I visit recent build summary page + And I click artifacts browse button + And I click link to subdirectory within build artifacts + Then I should see content of subdirectory within artifacts archive diff --git a/features/steps/project/builds.rb b/features/steps/project/builds.rb index 769690dd79d..5ee6226a522 100644 --- a/features/steps/project/builds.rb +++ b/features/steps/project/builds.rb @@ -11,4 +11,38 @@ class Spinach::Features::ProjectBuilds < Spinach::FeatureSteps step 'I see build trace' do expect(page).to have_css '#build-trace' end + + step 'I click artifacts download button' do + page.within('.artifacts') { click_link 'Download' } + end + + step 'download of build artifacts archive starts' do + expect(page.response_headers['Content-Type']).to eq 'application/zip' + expect(page.response_headers['Content-Transfer-Encoding']).to eq 'binary' + end + + step 'I click artifacts browse button' do + page.within('.artifacts') { click_link 'Browse' } + end + + step 'I should see content of artifacts archive' do + page.within('.tree-table') do + expect(page).to have_no_content '..' + expect(page).to have_content 'other_artifacts_0.1.2' + expect(page).to have_content 'ci_artifacts.txt' + expect(page).to have_content 'rails_sample.jpg' + end + end + + step 'I click link to subdirectory within build artifacts' do + page.within('.tree-table') { click_link 'other_artifacts_0.1.2' } + end + + step 'I should see content of subdirectory within artifacts archive' do + page.within('.tree-table') do + expect(page).to have_content '..' + expect(page).to have_content 'another-subdirectory' + expect(page).to have_content 'doc_sample.txt' + end + end end diff --git a/features/steps/shared/builds.rb b/features/steps/shared/builds.rb index 6f9cd174729..a83d74e5946 100644 --- a/features/steps/shared/builds.rb +++ b/features/steps/shared/builds.rb @@ -13,4 +13,16 @@ module SharedBuilds step 'I visit recent build summary page' do visit namespace_project_build_path(@project.namespace, @project, @build) end + + step 'recent build has artifacts available' do + artifacts = Rails.root + 'spec/fixtures/ci_build_artifacts.zip' + archive = fixture_file_upload(artifacts, 'application/zip') + @build.update_attributes(artifacts_file: archive) + end + + step 'recent build has artifacts metadata available' do + metadata = Rails.root + 'spec/fixtures/ci_build_artifacts_metadata.gz' + gzip = fixture_file_upload(metadata, 'application/x-gzip') + @build.update_attributes(artifacts_metadata: gzip) + end end -- cgit v1.2.1 From cde455c4e63c8c0e798562a29a5df5a7893eec95 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 12 Jan 2016 11:41:24 +0100 Subject: Add encoding feature tests for builds artifacts browser --- features/project/builds.feature | 18 ++++++++++++++++++ features/steps/project/builds.rb | 30 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) (limited to 'features') diff --git a/features/project/builds.feature b/features/project/builds.feature index 14c9b6c9a35..e7626222f7f 100644 --- a/features/project/builds.feature +++ b/features/project/builds.feature @@ -30,3 +30,21 @@ Feature: Project Builds And I click artifacts browse button And I click link to subdirectory within build artifacts Then I should see content of subdirectory within artifacts archive + + Scenario: I browse directory with UTF-8 characters in name + Given recent build has artifacts available + And recent build has artifacts metadata available + And recent build artifacts contain directory with UTF-8 characters + When I visit recent build summary page + And I click artifacts browse button + And I navigate to directory with UTF-8 characters in name + Then I should see content of directory with UTF-8 characters in name + + Scenario: I try to browse directory with invalid UTF-8 characters in name + Given recent build has artifacts available + And recent build has artifacts metadata available + And recent build artifacts contain directory with invalid UTF-8 characters + When I visit recent build summary page + And I click artifacts browse button + And I navigate to parent directory of directory with invalid name + Then I should not see directory with invalid name on the list diff --git a/features/steps/project/builds.rb b/features/steps/project/builds.rb index 5ee6226a522..12d0dd24427 100644 --- a/features/steps/project/builds.rb +++ b/features/steps/project/builds.rb @@ -45,4 +45,34 @@ class Spinach::Features::ProjectBuilds < Spinach::FeatureSteps expect(page).to have_content 'doc_sample.txt' end end + + step 'recent build artifacts contain directory with UTF-8 characters' do + # metadata fixture contains relevant directory + end + + step 'I navigate to directory with UTF-8 characters in name' do + page.within('.tree-table') { click_link 'tests_encoding' } + page.within('.tree-table') { click_link 'utf8 test dir ✓' } + end + + step 'I should see content of directory with UTF-8 characters in name' do + page.within('.tree-table') do + expect(page).to have_content '..' + expect(page).to have_content 'regular_file_2' + end + end + + step 'recent build artifacts contain directory with invalid UTF-8 characters' do + # metadata fixture contains relevant directory + end + + step 'I navigate to parent directory of directory with invalid name' do + page.within('.tree-table') { click_link 'tests_encoding' } + end + + step 'I should not see directory with invalid name on the list' do + page.within('.tree-table') do + expect(page).to have_no_content('non-utf8-dir') + end + end end -- cgit v1.2.1 From 6d7a77074fcdd57ccdc33e3cb39146da4afdc0f4 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 12 Jan 2016 15:16:16 +0100 Subject: Add specs for endpoint meant to be accelerated by workhorse --- features/project/builds.feature | 8 ++++++++ features/steps/project/builds.rb | 11 +++++++++++ 2 files changed, 19 insertions(+) (limited to 'features') diff --git a/features/project/builds.feature b/features/project/builds.feature index e7626222f7f..c00b0a7ae07 100644 --- a/features/project/builds.feature +++ b/features/project/builds.feature @@ -48,3 +48,11 @@ Feature: Project Builds And I click artifacts browse button And I navigate to parent directory of directory with invalid name Then I should not see directory with invalid name on the list + + Scenario: I download a single file from build artifacts + Given recent build has artifacts available + And recent build has artifacts metadata available + When I visit recent build summary page + And I click artifacts browse button + And I click download button for a file within build artifacts + Then download of a file extracted from build artifacts should start diff --git a/features/steps/project/builds.rb b/features/steps/project/builds.rb index 12d0dd24427..5702496ac84 100644 --- a/features/steps/project/builds.rb +++ b/features/steps/project/builds.rb @@ -75,4 +75,15 @@ class Spinach::Features::ProjectBuilds < Spinach::FeatureSteps expect(page).to have_no_content('non-utf8-dir') end end + + step 'I click download button for a file within build artifacts' do + page.within('.tree-table') { first('.artifact-download').click } + end + + step 'download of a file extracted from build artifacts should start' do + # this will be accelerated by Workhorse + response_json = JSON.parse(page.body, symbolize_names: true) + expect(response_json[:archive]).to end_with('build_artifacts.zip') + expect(response_json[:path]).to eq Base64.encode64('ci_artifacts.txt') + end end -- cgit v1.2.1 From 6b0a43aff36f0bbb9050b3c04155a3ccd9c1a75b Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 13 Jan 2016 21:17:28 +0100 Subject: Improve readability of artifacts browser `Entry` related code --- features/steps/project/builds.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'features') diff --git a/features/steps/project/builds.rb b/features/steps/project/builds.rb index 5702496ac84..28395281077 100644 --- a/features/steps/project/builds.rb +++ b/features/steps/project/builds.rb @@ -84,6 +84,6 @@ class Spinach::Features::ProjectBuilds < Spinach::FeatureSteps # this will be accelerated by Workhorse response_json = JSON.parse(page.body, symbolize_names: true) expect(response_json[:archive]).to end_with('build_artifacts.zip') - expect(response_json[:path]).to eq Base64.encode64('ci_artifacts.txt') + expect(response_json[:entry]).to eq Base64.encode64('ci_artifacts.txt') end end -- cgit v1.2.1