module Capybara::SpecHelper

def run_specs(session, name, **options, &filter_block)

def run_specs(session, name, **options, &filter_block)
  specs = @specs
  RSpec.describe Capybara::Session, name, options do
    include Capybara::SpecHelper
    include Capybara::RSpecMatchers
    before do |example|
      @session = session
      instance_exec(example, &filter_block) if filter_block
    end
    after do
      session.reset_session!
    end
    before :each, :psc do
      SpecHelper.reset_threadsafe(bool: true, session: session)
    end
    after psc: true do
      SpecHelper.reset_threadsafe(session: session)
    end
    before :each, :exact_false do
      Capybara.exact = false
    end
    specs.each do |spec_name, spec_options, block|
      describe spec_name, *spec_options do
        class_eval(&block)
      end
    end
  end
end