mirror of
				https://github.com/teampoltergeist/poltergeist.git
				synced 2022-11-09 12:05:00 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
POLTERGEIST_ROOT = File.expand_path('../..', __FILE__)
 | 
						|
$:.unshift(POLTERGEIST_ROOT + '/lib')
 | 
						|
 | 
						|
require 'bundler/setup'
 | 
						|
 | 
						|
require 'rspec'
 | 
						|
require 'capybara/spec/spec_helper'
 | 
						|
require 'capybara/poltergeist'
 | 
						|
 | 
						|
require 'support/test_app'
 | 
						|
require 'support/spec_logger'
 | 
						|
 | 
						|
Capybara.register_driver :poltergeist do |app|
 | 
						|
  debug = !ENV['DEBUG'].nil?
 | 
						|
  options = {
 | 
						|
    logger: TestSessions.logger,
 | 
						|
    inspector: debug,
 | 
						|
    debug: debug
 | 
						|
  }
 | 
						|
 | 
						|
  options[:phantomjs] = ENV['PHANTOMJS'] if ENV['TRAVIS'] && ENV['PHANTOMJS']
 | 
						|
 | 
						|
  Capybara::Poltergeist::Driver.new(
 | 
						|
    app, options
 | 
						|
  )
 | 
						|
end
 | 
						|
 | 
						|
module TestSessions
 | 
						|
  def self.logger
 | 
						|
    @logger ||= SpecLogger.new
 | 
						|
  end
 | 
						|
 | 
						|
  Poltergeist = Capybara::Session.new(:poltergeist, TestApp)
 | 
						|
end
 | 
						|
 | 
						|
module Poltergeist
 | 
						|
  module SpecHelper
 | 
						|
    class << self
 | 
						|
      def set_capybara_wait_time(t)
 | 
						|
        Capybara.default_max_wait_time = t
 | 
						|
      rescue
 | 
						|
        Capybara.default_wait_time = t
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
RSpec::Expectations.configuration.warn_about_potential_false_positives = false if ENV['TRAVIS']
 | 
						|
 | 
						|
RSpec.configure do |config|
 | 
						|
  config.before do
 | 
						|
    TestSessions.logger.reset
 | 
						|
  end
 | 
						|
 | 
						|
  config.after do |example|
 | 
						|
    if ENV['DEBUG']
 | 
						|
      puts TestSessions.logger.messages
 | 
						|
    elsif ENV['TRAVIS'] && example.exception
 | 
						|
      example.exception.message << "\n\nDebug info:\n" + TestSessions.logger.messages.join("\n") unless example.exception.message.frozen?
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  Capybara::SpecHelper.configure(config)
 | 
						|
 | 
						|
  config.filter_run_excluding :full_description => lambda { |description, metadata|
 | 
						|
    [
 | 
						|
      # test is marked pending in Capybara but Poltergeist passes - disable here - have our own test in driver spec
 | 
						|
      /Capybara::Session Poltergeist node #set should allow me to change the contents of a contenteditable elements child/,
 | 
						|
      # should not pass because PhantomJS doesn't support datalist
 | 
						|
      /Capybara::Session Poltergeist #select input with datalist/
 | 
						|
    ].any? { |desc| description =~ desc }
 | 
						|
  }
 | 
						|
 | 
						|
  config.before(:each) do
 | 
						|
    Poltergeist::SpecHelper.set_capybara_wait_time(0)
 | 
						|
  end
 | 
						|
 | 
						|
  [:js, :modals, :windows].each do |cond|
 | 
						|
    config.before(:each, :requires => cond) do
 | 
						|
      Poltergeist::SpecHelper.set_capybara_wait_time(1)
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
def phantom_version_is?(ver_spec, driver)
 | 
						|
  Cliver.detect(driver.options[:phantomjs] || Capybara::Poltergeist::Client::PHANTOMJS_NAME, ver_spec)
 | 
						|
end
 | 
						|
 |