require 'core/loader.rb' # Notes # We need to load vairables that 'beef' usually does for us ## config config = BeEF::Core::Configuration.new('config.yaml') ## home_dir $home_dir = Dir.pwd ## root_dir $root_dir = Dir.pwd require 'core/bootstrap.rb' require 'rack/test' require 'curb' require 'rest-client' require 'yaml' require 'selenium-webdriver' require 'browserstack/local' require 'byebug' # Require supports Dir['spec/support/*.rb'].each do |f| require f end ENV['RACK_ENV'] ||= 'test' ARGV = [] ## BrowserStack config # Monkey patch to avoid reset sessions class Capybara::Selenium::Driver < Capybara::Driver::Base def reset! if @browser @browser.navigate.to('about:blank') end end end TASK_ID = (ENV['TASK_ID'] || 0).to_i CONFIG_FILE = ENV['CONFIG_FILE'] || 'windows/win10/win10_chrome_81.config.yml' CONFIG = YAML.safe_load(File.read("./spec/support/browserstack/#{CONFIG_FILE}")) CONFIG['user'] = ENV['BROWSERSTACK_USERNAME'] || '' CONFIG['key'] = ENV['BROWSERSTACK_ACCESS_KEY'] || '' ## DB config ActiveRecord::Base.logger = nil OTR::ActiveRecord.migrations_paths = [File.join('core', 'main', 'ar-migrations')] OTR::ActiveRecord.configure_from_hash!(adapter:'sqlite3', database:':memory:') ActiveRecord::Schema.verbose = false context = ActiveRecord::Migration.new.migration_context if context.needs_migration? ActiveRecord::Migrator.new(:up, context.migrations, context.schema_migration).migrate end RSpec.configure do |config| config.disable_monkey_patching! config.bisect_runner = :shell config.order = :random Kernel.srand config.seed config.include Rack::Test::Methods config.expect_with :rspec do |c| c.syntax = :expect end config.around do |example| ActiveRecord::Base.transaction do example.run raise ActiveRecord::Rollback end end def server_teardown(webdriver, server_pid, server_pids) begin webdriver.quit rescue => exception print_info "Exception: #{exception}" print_info "Exception Class: #{exception.class}" print_info "Exception Message: #{exception.message}" print_info "Exception Stack Trace: #{exception.backtrace}" exit 0 ensure print_info "Shutting down server" Process.kill("KILL", server_pid) Process.kill("KILL", server_pids) end end end