diff options
Diffstat (limited to 'qa')
-rw-r--r-- | qa/qa.rb | 5 | ||||
-rw-r--r-- | qa/qa/scenario/entrypoint.rb | 36 | ||||
-rw-r--r-- | qa/qa/scenario/test/instance.rb | 17 | ||||
-rw-r--r-- | qa/qa/scenario/test/integration/mattermost.rb | 15 | ||||
-rw-r--r-- | qa/qa/specs/features/login/standard_spec.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/mattermost/group_create_spec.rb | 16 | ||||
-rw-r--r-- | qa/qa/specs/features/project/create_spec.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/repository/clone_spec.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/repository/push_spec.rb | 4 | ||||
-rw-r--r-- | qa/qa/specs/runner.rb | 9 |
10 files changed, 87 insertions, 21 deletions
@@ -18,6 +18,7 @@ module QA # Support files # autoload :Actable, 'qa/scenario/actable' + autoload :Entrypoint, 'qa/scenario/entrypoint' autoload :Template, 'qa/scenario/template' ## @@ -25,6 +26,10 @@ module QA # module Test autoload :Instance, 'qa/scenario/test/instance' + + module Integration + autoload :Mattermost, 'qa/scenario/test/integration/mattermost' + end end ## diff --git a/qa/qa/scenario/entrypoint.rb b/qa/qa/scenario/entrypoint.rb new file mode 100644 index 00000000000..33cb2696f8f --- /dev/null +++ b/qa/qa/scenario/entrypoint.rb @@ -0,0 +1,36 @@ +module QA + module Scenario + ## + # Base class for running the suite against any GitLab instance, + # including staging and on-premises installation. + # + class Entrypoint < Template + def self.tags(*tags) + @tags = tags + end + + def self.get_tags + @tags + end + + def perform(address, *files) + Specs::Config.perform do |specs| + specs.address = address + end + + ## + # Perform before hooks, which are different for CE and EE + # + Runtime::Release.perform_before_hooks + + Specs::Runner.perform do |specs| + specs.rspec( + tty: true, + tags: self.class.get_tags, + files: files.any? ? files : 'qa/specs/features' + ) + end + end + end + end +end diff --git a/qa/qa/scenario/test/instance.rb b/qa/qa/scenario/test/instance.rb index 689292bc60b..e2a1f6bf2bd 100644 --- a/qa/qa/scenario/test/instance.rb +++ b/qa/qa/scenario/test/instance.rb @@ -5,21 +5,8 @@ module QA # Run test suite against any GitLab instance, # including staging and on-premises installation. # - class Instance < Scenario::Template - def perform(address, *files) - Specs::Config.perform do |specs| - specs.address = address - end - - ## - # Perform before hooks, which are different for CE and EE - # - Runtime::Release.perform_before_hooks - - Specs::Runner.perform do |specs| - specs.rspec('--tty', files.any? ? files : 'qa/specs/features') - end - end + class Instance < Entrypoint + tags :core end end end diff --git a/qa/qa/scenario/test/integration/mattermost.rb b/qa/qa/scenario/test/integration/mattermost.rb new file mode 100644 index 00000000000..4732f2b635b --- /dev/null +++ b/qa/qa/scenario/test/integration/mattermost.rb @@ -0,0 +1,15 @@ +module QA + module Scenario + module Test + module Integration + ## + # Run test suite against any GitLab instance where mattermost is enabled, + # including staging and on-premises installation. + # + class Mattermost < Scenario::Entrypoint + tags :core, :mattermost + end + end + end + end +end diff --git a/qa/qa/specs/features/login/standard_spec.rb b/qa/qa/specs/features/login/standard_spec.rb index 8e1ae6efa47..ba19ce17ee5 100644 --- a/qa/qa/specs/features/login/standard_spec.rb +++ b/qa/qa/specs/features/login/standard_spec.rb @@ -1,5 +1,5 @@ module QA - feature 'standard root login' do + feature 'standard root login', :core do scenario 'user logs in using credentials' do Page::Main::Entry.act { sign_in_using_credentials } diff --git a/qa/qa/specs/features/mattermost/group_create_spec.rb b/qa/qa/specs/features/mattermost/group_create_spec.rb new file mode 100644 index 00000000000..c4afd83c8e4 --- /dev/null +++ b/qa/qa/specs/features/mattermost/group_create_spec.rb @@ -0,0 +1,16 @@ +module QA + feature 'create a new group', :mattermost do + scenario 'creating a group with a mattermost team' do + Page::Main::Entry.act { sign_in_using_credentials } + Page::Main::Menu.act { go_to_groups } + + Page::Dashboard::Groups.perform do |page| + page.go_to_new_group + + expect(page).to have_content( + /Create a Mattermost team for this group/ + ) + end + end + end +end diff --git a/qa/qa/specs/features/project/create_spec.rb b/qa/qa/specs/features/project/create_spec.rb index 610492b9717..27eb22f15a6 100644 --- a/qa/qa/specs/features/project/create_spec.rb +++ b/qa/qa/specs/features/project/create_spec.rb @@ -1,5 +1,5 @@ module QA - feature 'create a new project' do + feature 'create a new project', :core do scenario 'user creates a new project' do Page::Main::Entry.act { sign_in_using_credentials } diff --git a/qa/qa/specs/features/repository/clone_spec.rb b/qa/qa/specs/features/repository/clone_spec.rb index 521bd955857..3571173783d 100644 --- a/qa/qa/specs/features/repository/clone_spec.rb +++ b/qa/qa/specs/features/repository/clone_spec.rb @@ -1,5 +1,5 @@ module QA - feature 'clone code from the repository' do + feature 'clone code from the repository', :core do context 'with regular account over http' do given(:location) do Page::Project::Show.act do diff --git a/qa/qa/specs/features/repository/push_spec.rb b/qa/qa/specs/features/repository/push_spec.rb index 5fe45d63d37..0e691fb0d75 100644 --- a/qa/qa/specs/features/repository/push_spec.rb +++ b/qa/qa/specs/features/repository/push_spec.rb @@ -1,7 +1,7 @@ module QA - feature 'push code to repository' do + feature 'push code to repository', :core do context 'with regular account over http' do - scenario 'user pushes code to the repository' do + scenario 'user pushes code to the repository' do Page::Main::Entry.act { sign_in_using_credentials } Scenario::Gitlab::Project::Create.perform do |scenario| diff --git a/qa/qa/specs/runner.rb b/qa/qa/specs/runner.rb index 83ae15d0995..2aa18d5d3a1 100644 --- a/qa/qa/specs/runner.rb +++ b/qa/qa/specs/runner.rb @@ -5,7 +5,14 @@ module QA class Runner include Scenario::Actable - def rspec(*args) + def rspec(tty: false, tags: [], files: ['qa/specs/features']) + args = [] + args << '--tty' if tty + tags.to_a.each do |tag| + args << ['-t', tag.to_s] + end + args << files + RSpec::Core::Runner.run(args.flatten, $stderr, $stdout).tap do |status| abort if status.nonzero? end |