summaryrefslogtreecommitdiff
path: root/spec/support/shared_examples/features/runners_shared_examples.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/support/shared_examples/features/runners_shared_examples.rb')
-rw-r--r--spec/support/shared_examples/features/runners_shared_examples.rb141
1 files changed, 141 insertions, 0 deletions
diff --git a/spec/support/shared_examples/features/runners_shared_examples.rb b/spec/support/shared_examples/features/runners_shared_examples.rb
new file mode 100644
index 00000000000..d9460c7b8f1
--- /dev/null
+++ b/spec/support/shared_examples/features/runners_shared_examples.rb
@@ -0,0 +1,141 @@
+# frozen_string_literal: true
+
+RSpec.shared_examples 'shows and resets runner registration token' do
+ include Spec::Support::Helpers::ModalHelpers
+ include Spec::Support::Helpers::Features::RunnersHelpers
+
+ before do
+ click_on dropdown_text
+ end
+
+ describe 'shows registration instructions' do
+ before do
+ click_on 'Show runner installation and registration instructions'
+
+ wait_for_requests
+ end
+
+ it 'opens runner installation modal', :aggregate_failures do
+ within_modal do
+ expect(page).to have_text "Install a runner"
+ expect(page).to have_text "Environment"
+ expect(page).to have_text "Architecture"
+ expect(page).to have_text "Download and install binary"
+ end
+ end
+
+ it 'dismisses runner installation modal' do
+ within_modal do
+ click_button('Close', match: :first)
+ end
+
+ expect(page).not_to have_text "Install a runner"
+ end
+ end
+
+ it 'has a registration token' do
+ click_on 'Click to reveal'
+ expect(page.find('[data-testid="token-value"] input').value).to have_content(registration_token)
+ end
+
+ describe 'reset registration token' do
+ let!(:old_registration_token) { find('[data-testid="token-value"] input').value }
+
+ before do
+ click_on 'Reset registration token'
+
+ within_modal do
+ click_button('Reset token', match: :first)
+ end
+
+ wait_for_requests
+ end
+
+ it 'changes registration token' do
+ expect(find('.gl-toast')).to have_content('New registration token generated!')
+
+ click_on dropdown_text
+ click_on 'Click to reveal'
+
+ expect(old_registration_token).not_to eq registration_token
+ end
+ end
+end
+
+RSpec.shared_examples 'shows no runners' do
+ it 'shows counts with 0' do
+ expect(page).to have_text "Online runners 0"
+ expect(page).to have_text "Offline runners 0"
+ expect(page).to have_text "Stale runners 0"
+ end
+
+ it 'shows "no runners" message' do
+ expect(page).to have_text 'No runners found'
+ end
+end
+
+RSpec.shared_examples 'shows runner in list' do
+ it 'does not show empty state' do
+ expect(page).not_to have_content 'No runners found'
+ end
+
+ it 'shows runner row' do
+ within_runner_row(runner.id) do
+ expect(page).to have_text "##{runner.id}"
+ expect(page).to have_text runner.short_sha
+ expect(page).to have_text runner.description
+ end
+ end
+end
+
+RSpec.shared_examples 'pauses, resumes and deletes a runner' do
+ include Spec::Support::Helpers::ModalHelpers
+
+ it 'pauses and resumes runner' do
+ within_runner_row(runner.id) do
+ click_button "Pause"
+
+ expect(page).to have_text 'paused'
+ expect(page).to have_button 'Resume'
+ expect(page).not_to have_button 'Pause'
+
+ click_button "Resume"
+
+ expect(page).not_to have_text 'paused'
+ expect(page).not_to have_button 'Resume'
+ expect(page).to have_button 'Pause'
+ end
+ end
+
+ describe 'deletes runner' do
+ before do
+ within_runner_row(runner.id) do
+ click_on 'Delete runner'
+ end
+ end
+
+ it 'shows a confirmation modal' do
+ expect(page).to have_text "Delete runner ##{runner.id} (#{runner.short_sha})?"
+ expect(page).to have_text "Are you sure you want to continue?"
+ end
+
+ it 'deletes a runner' do
+ within_modal do
+ click_on 'Delete runner'
+ end
+
+ expect(page.find('.gl-toast')).to have_text(/Runner .+ deleted/)
+ expect(page).not_to have_content runner.description
+ end
+
+ it 'cancels runner deletion' do
+ within_modal do
+ click_on 'Cancel'
+ end
+
+ wait_for_requests
+
+ expect(page).to have_content runner.description
+ end
+ end
+end