class BrowserHelper

rubocop:disable Style/Documentation

def browser_options

def browser_options
  {
    'user-agent' => REALISTIC_USER_AGENT,
    'disable-gpu' => nil,
    'no-sandbox' => nil,
    'disable-blink-features' => 'AutomationControlled',
    'disable-infobars' => nil,
    'start-maximized' => nil
  }
end

def close

def close
  puts "\nClosing browser..."
  @browser.quit
rescue StandardError => e
  puts "  Warning: Error closing browser: #{e.message}"
end

def create_browser

def create_browser
  puts '  Initializing browser for manual interaction...'
  Ferrum::Browser.new(
    window_size: [1366, 768],
    headless: false,
    browser_options: browser_options,
    timeout: 120,
    process_timeout: 120,
    pending_connection_errors: false
  )
end

def current_url

def current_url
  @browser.page.url
rescue StandardError
  'N/A'
end

def get_page_content(context = 'current page') # rubocop:disable Metrics/MethodLength

rubocop:disable Metrics/MethodLength
def get_page_content(context = 'current page') # rubocop:disable Metrics/MethodLength
  puts "    Extracting HTML for #{context}..."
  begin
    sleep(1.0) # Small delay for page stability
    html = @browser.body
    if html && !html.empty?
      puts "      Extracted ~#{html.length} chars of HTML"
      puts '      WARNING: Challenge page detected' if html.match?(/challenge-platform|Checking site/)
      html
    else
      puts '      Warning: Empty content returned'
      ''
    end
  rescue StandardError => e
    puts "      Error getting HTML: #{e.class} - #{e.message}"
    ''
  end
end

def goto(url)

def goto(url)
  @browser.goto(url)
end

def handle_cloudflare_challenge # rubocop:disable Metrics/MethodLength

rubocop:disable Metrics/MethodLength
def handle_cloudflare_challenge # rubocop:disable Metrics/MethodLength
  puts "\nWaiting for Cloudflare challenge resolution..."
  puts 'c: Challenge solved'
  puts 'q: Quit/Skip'
  choice = CliHelper.get_user_choice('Confirm when ready', %w[c q])
  return false if choice == 'q'
  begin
    @browser.page.target_id
    true
  rescue StandardError
    puts 'Browser check failed after challenge'
    false
  end
end

def initialize

def initialize
  @browser = create_browser
end

def wait_for_page_load

def wait_for_page_load
  handle_cloudflare_challenge
end