class Selenium::WebDriver::TargetLocator

def new_window(type = :window)

steep:ignore:start
def new_window(type = :window)
  raise ArgumentError, "Valid types are :tab and :window, received: #{type.inspect}" unless %i[window
                                                                                               tab].include?(type)
  handle = @bridge.new_window(type)['handle']
  if block_given?
    execute_and_close = proc do
      yield(self)
      begin
        @bridge.close
      rescue Error::NoSuchWindowError
        # window already closed
      end
    end
    window(handle, &execute_and_close)
  else
    window(handle)
  end
end