Consolidate system specs into single directory, use rspec tags for configuration (#30206)
This commit is contained in:
1 parent
164b09bfcc
commit
0d397db5dd
30 files changed
+32
-47
No files matched your search
@@ -186,6 +186,8 @@ jobs:
|
||||
DISABLE_SIMPLECOV: true
|
||||
RAILS_ENV: test
|
||||
BUNDLE_WITH: test
|
||||
LOCAL_DOMAIN: localhost:3000
|
||||
LOCAL_HTTPS: false
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -215,7 +217,7 @@ jobs:
|
||||
- name: Load database schema
|
||||
run: './bin/rails db:create db:schema:load db:seed'
|
||||
|
||||
- run: bundle exec rake spec:system
|
||||
- run: bin/rspec spec/system --tag streaming --tag js
|
||||
|
||||
- name: Archive logs
|
||||
uses: actions/upload-artifact@v4
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ Style/FetchEnvVar:
|
||||
- 'config/initializers/vapid.rb'
|
||||
- 'lib/mastodon/redis_config.rb'
|
||||
- 'lib/tasks/repo.rake'
|
||||
- 'spec/features/profile_spec.rb'
|
||||
- 'spec/system/profile_spec.rb'
|
||||
|
||||
# This cop supports safe autocorrection (--autocorrect).
|
||||
# Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns.
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
if Rake::Task.task_defined?('spec:system')
|
||||
namespace :spec do
|
||||
task :enable_system_specs do # rubocop:disable Rails/RakeEnvironment
|
||||
ENV['LOCAL_DOMAIN'] = 'localhost:3000'
|
||||
ENV['LOCAL_HTTPS'] = 'false'
|
||||
ENV['RUN_SYSTEM_SPECS'] = 'true'
|
||||
end
|
||||
end
|
||||
|
||||
Rake::Task['spec:system'].enhance ['spec:enable_system_specs']
|
||||
end
|
||||
+14
-22
@@ -3,12 +3,8 @@
|
||||
ENV['RAILS_ENV'] ||= 'test'
|
||||
|
||||
# This needs to be defined before Rails is initialized
|
||||
RUN_SYSTEM_SPECS = ENV.fetch('RUN_SYSTEM_SPECS', false)
|
||||
|
||||
if RUN_SYSTEM_SPECS
|
||||
STREAMING_PORT = ENV.fetch('TEST_STREAMING_PORT', '4020')
|
||||
ENV['STREAMING_API_BASE_URL'] = "http://localhost:#{STREAMING_PORT}"
|
||||
end
|
||||
STREAMING_PORT = ENV.fetch('TEST_STREAMING_PORT', '4020')
|
||||
ENV['STREAMING_API_BASE_URL'] = "http://localhost:#{STREAMING_PORT}"
|
||||
|
||||
require File.expand_path('../config/environment', __dir__)
|
||||
|
||||
@@ -26,10 +22,12 @@ require 'test_prof/recipes/rspec/before_all'
|
||||
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
|
||||
|
||||
ActiveRecord::Migration.maintain_test_schema!
|
||||
WebMock.disable_net_connect!(allow: Chewy.settings[:host], allow_localhost: RUN_SYSTEM_SPECS)
|
||||
WebMock.disable_net_connect!(
|
||||
allow_localhost: true,
|
||||
allow: Chewy.settings[:host]
|
||||
)
|
||||
Sidekiq.logger = nil
|
||||
|
||||
# System tests config
|
||||
DatabaseCleaner.strategy = [:deletion]
|
||||
|
||||
Devise::Test::ControllerHelpers.module_eval do
|
||||
@@ -49,16 +47,14 @@ Devise::Test::ControllerHelpers.module_eval do
|
||||
end
|
||||
|
||||
RSpec.configure do |config|
|
||||
# This is set before running spec:system, see lib/tasks/tests.rake
|
||||
config.filter_run_excluding type: lambda { |type|
|
||||
case type
|
||||
when :system
|
||||
!RUN_SYSTEM_SPECS
|
||||
end
|
||||
}
|
||||
# By default, skip specs that need full JS browser
|
||||
config.filter_run_excluding :js
|
||||
|
||||
# By default, skip the elastic search integration specs
|
||||
config.filter_run_excluding search: true
|
||||
# By default, skip specs that need elastic search server
|
||||
config.filter_run_excluding :search
|
||||
|
||||
# By default, skip specs that need the streaming server
|
||||
config.filter_run_excluding :streaming
|
||||
|
||||
config.fixture_paths = [
|
||||
Rails.root.join('spec', 'fixtures'),
|
||||
@@ -81,7 +77,7 @@ RSpec.configure do |config|
|
||||
config.include Devise::Test::ControllerHelpers, type: :controller
|
||||
config.include Devise::Test::ControllerHelpers, type: :helper
|
||||
config.include Devise::Test::ControllerHelpers, type: :view
|
||||
config.include Devise::Test::IntegrationHelpers, type: :feature
|
||||
config.include Devise::Test::IntegrationHelpers, type: :system
|
||||
config.include Devise::Test::IntegrationHelpers, type: :request
|
||||
config.include ActionMailer::TestHelper
|
||||
config.include Paperclip::Shoulda::Matchers
|
||||
@@ -111,10 +107,6 @@ RSpec.configure do |config|
|
||||
stub_reset_connection_pools
|
||||
end
|
||||
|
||||
config.before :each, type: :feature do
|
||||
Capybara.current_driver = :rack_test
|
||||
end
|
||||
|
||||
config.before do |example|
|
||||
allow(Resolv::DNS).to receive(:open).and_raise('Real DNS queries are disabled, stub Resolv::DNS as needed') unless example.metadata[:type] == :system
|
||||
end
|
||||
|
||||
@@ -23,7 +23,7 @@ describe 'Content-Security-Policy' do
|
||||
<<~CSP.split("\n").map(&:strip)
|
||||
base-uri 'none'
|
||||
child-src 'self' blob: https://cb6e6126.ngrok.io
|
||||
connect-src 'self' data: blob: https://cb6e6126.ngrok.io ws://cb6e6126.ngrok.io:4000
|
||||
connect-src 'self' data: blob: https://cb6e6126.ngrok.io #{Rails.configuration.x.streaming_api_base_url}
|
||||
default-src 'none'
|
||||
font-src 'self' https://cb6e6126.ngrok.io
|
||||
form-action 'self'
|
||||
|
||||
@@ -26,6 +26,10 @@ Capybara.javascript_driver = :headless_chrome
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.before(:each, type: :system) do
|
||||
driven_by :rack_test
|
||||
end
|
||||
|
||||
config.before(:each, :js, type: :system) do
|
||||
driven_by Capybara.javascript_driver
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.after(:each, type: :system) do
|
||||
config.after(:each, :js, type: :system) do
|
||||
errors = page.driver.browser.logs.get(:browser)
|
||||
if errors.present?
|
||||
aggregate_failures 'javascript errrors' do
|
||||
|
||||
@@ -95,7 +95,7 @@ RSpec.configure do |config|
|
||||
end
|
||||
end
|
||||
|
||||
config.around :each, type: :system do |example|
|
||||
config.around :each, :streaming, type: :system do |example|
|
||||
# Streaming server needs DB access but `use_transactional_tests` rolls back
|
||||
# every transaction. Disable this feature for streaming tests, and use
|
||||
# DatabaseCleaner to clean the database tables between each test.
|
||||
@@ -125,6 +125,6 @@ RSpec.configure do |config|
|
||||
end
|
||||
|
||||
def streaming_examples_present?
|
||||
RUN_SYSTEM_SPECS
|
||||
RSpec.world.filtered_examples.values.flatten.any? { |example| example.metadata[:streaming] == true }
|
||||
end
|
||||
end
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -2,7 +2,7 @@
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'NewStatuses', :sidekiq_inline do
|
||||
describe 'NewStatuses', :js, :sidekiq_inline, :streaming do
|
||||
include ProfileStories
|
||||
|
||||
subject { page }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'Using OAuth from an external app' do
|
||||
describe 'Using OAuth from an external app', :js, :streaming do
|
||||
let(:client_app) { Doorkeeper::Application.create!(name: 'test', redirect_uri: about_url(host: Rails.application.config.x.local_domain), scopes: 'read') }
|
||||
|
||||
context 'when the user is already logged in' do
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'OCR', :paperclip_processing, :sidekiq_inline do
|
||||
describe 'OCR', :js, :paperclip_processing, :sidekiq_inline, :streaming do
|
||||
include ProfileStories
|
||||
|
||||
let(:email) { 'test@example.com' }
|
||||
|
||||
File renamed without changes.
File renamed without changes.
@@ -2,7 +2,7 @@
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'report interface', :paperclip_processing do
|
||||
describe 'report interface', :js, :paperclip_processing, :streaming do
|
||||
include ProfileStories
|
||||
|
||||
let(:email) { 'admin@example.com' }
|
||||
|
||||
File renamed without changes.
@@ -2,7 +2,7 @@
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'ShareEntrypoint' do
|
||||
describe 'ShareEntrypoint', :js, :streaming do
|
||||
include ProfileStories
|
||||
|
||||
subject { page }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'UnloggedBrowsing' do
|
||||
describe 'UnloggedBrowsing', :js, :streaming do
|
||||
subject { page }
|
||||
|
||||
before do
|
||||
|
||||
Reference in new issue
Block a user