40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module BrowserErrorsHelpers
 | 
						|
  def ignore_js_error(error)
 | 
						|
    @ignored_js_errors_for_spec << error
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
RSpec.configure do |config|
 | 
						|
  config.include BrowserErrorsHelpers, :js, type: :system
 | 
						|
 | 
						|
  config.before(:each, :js, type: :system) do
 | 
						|
    @ignored_js_errors_for_spec = []
 | 
						|
  end
 | 
						|
 | 
						|
  config.after(:each, :js, type: :system) do
 | 
						|
    # Classes of intermittent ignorable errors
 | 
						|
    ignored_errors = [
 | 
						|
      /Error while trying to use the following icon from the Manifest/, # https://github.com/mastodon/mastodon/pull/30793
 | 
						|
      /Manifest: Line: 1, column: 1, Syntax error/, # Similar parsing/interruption issue as above
 | 
						|
    ].concat(@ignored_js_errors_for_spec)
 | 
						|
 | 
						|
    errors = page.driver.browser.logs.get(:browser).reject do |error|
 | 
						|
      ignored_errors.any? { |pattern| pattern.match(error.message) }
 | 
						|
    end
 | 
						|
 | 
						|
    if errors.present?
 | 
						|
      aggregate_failures 'browser errrors' do
 | 
						|
        errors.each do |error|
 | 
						|
          expect(error.level).to_not eq('SEVERE'), error.message
 | 
						|
          next unless error.level == 'WARNING'
 | 
						|
 | 
						|
          warn 'WARN: browser warning'
 | 
						|
          warn error.message
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |