module Cucumber::Runtime::UserInterface

def ask(question, timeout_seconds)


that makes a sound before invoking #ask.
If that doesn't issue a beep, you can shell out to something else

ask("#{7.chr}How many cukes are in the external system?")

just prepend ASCII character 7 to the question:
If you want a beep to happen (to grab the manual tester's attention),

the result is added to the output using #puts.
. The entered text is returned, and both +question+ and
An operator (manual tester) can then enter a line of text and hit
Suspends execution and prompts +question+ to the console (STDOUT).
def ask(question, timeout_seconds)
  $stdout.puts(question)
  $stdout.flush
  puts(question)
  answer = if Cucumber::JRUBY
             jruby_gets(timeout_seconds)
           else
             mri_gets(timeout_seconds)
           end
  raise("Waited for input for #{timeout_seconds} seconds, then timed out.") unless answer
  puts(answer)
  answer
end