Sha256: df90b3878ed34fbafad90fffe42c9cc907bd96c4b51745a4434be6b3c69040e5

Contents?: true

Size: 1.74 KB

Versions: 3

Compression:

Stored size: 1.74 KB

Contents

require 'webrick'
require 'json'

module Cypress
  class Server
    def initialize(args)
      @args            = args
      @callback_server = CallbackServer.new(self)
      @runner          = Runner.new self, @callback_server.callback_url
      @scenario_bank   = ScenarioBank.new
    end

    def mode
      if @args.first == 'run'
        'run'
      else
        'open'
      end
    end

    def run
      load_cypress_helper
      server_port = boot_rails
      @scenario_bank.boot

      @callback_thread = Thread.new { @callback_server.start }
      @runner_thread   = Thread.new { @runner.run server_port }
      @runner_thread.join

      @callback_server.shutdown
    end

    def run_command(command)
      @scenario_bank.load

      if command['scenario'] and (block = @scenario_bank[command['scenario']])
        reset_rspec           if configuration.test_framework == :rspec
        call_database_cleaner if configuration.db_resetter    == :database_cleaner
        configuration.before.call

        block.call
      end
    end

    private
      def configuration
        Cypress.configuration
      end

      def boot_rails
        ENV['RAILS_ENV'] ||= 'test'
        require './config/environment'
        require 'capybara/rails'

        Capybara.current_driver = :selenium # oh, the irony....
        Capybara.current_session.server.port
      end

      def load_cypress_helper
        require "./spec/cypress/cypress_helper"
        configuration.disable_class_caching if mode == 'open'
      end

      def reset_rspec
        RSpec::Mocks.teardown
        RSpec::Mocks.setup
      end

      def call_database_cleaner
        require 'database_cleaner'
        DatabaseCleaner.strategy = :truncation
        DatabaseCleaner.clean
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cypress-on-rails-0.1.2 lib/cypress/server.rb
cypress-on-rails-0.1.1 lib/cypress/server.rb
cypress-on-rails-0.1 lib/cypress/server.rb