Sha256: 15e6cc7190b14a9eab008bd4a4824b3040cbe94291a48b59da104998dd6fd09f

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

require 'kommando'

module Superbot
  module Capybara
    class Runner
      def initialize(script)
        @script = script
      end

      def self.run(*args)
        new(*args).run
      end

      def run
        run_script
      end

      private

      attr_accessor :script

      def run_script
        gem 'superbot-capybara'

        k = Kommando.new "sb-capybara"
        k.in.writeln({ eval: script }.to_json)

        finished = false

        k.out.once(/{"type":"ok".*\n/) do
          puts "Test succeed"
          finished = true
        end

        k.out.once(/{"type":"error".*\n/) do
          begin
            parsed_error = JSON.parse(k.out.lines.last, symbolize_names: true)
            error_message = parsed_error[:message]
            puts "Test failed with #{error_message}"
          end
          finished = true
        end

        k.run_async

        loop do
          break if finished

          sleep 0.001
        end

        begin
          k.kill
        rescue Timeout::Error
          p # do nothing
        end
      rescue Gem::LoadError
        puts "superbot-capybara not installed"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
superbot-0.1.3 lib/superbot/capybara/runner.rb
superbot-0.1.2 lib/superbot/capybara/runner.rb