{"record":{"id":"24c0200484baeb98","repo":"teamcapybara/capybara","slug":"no-driver-called-mode-inspect-was-found-availa","errorCode":null,"errorMessage":"no driver called #{mode.inspect} was found, available drivers: #{other_drivers.join(', ')}","messagePattern":"no driver called #(.+?) was found, available drivers: #(.+?)","errorType":"exception","errorClass":"Capybara::DriverNotFoundError","httpStatus":null,"severity":"error","filePath":"lib/capybara/session.rb","lineNumber":104,"sourceCode":"      @app = app\n      if block_given?\n        raise 'A configuration block is only accepted when Capybara.threadsafe == true' unless Capybara.threadsafe\n\n        yield config\n      end\n      @server = if config.run_server && @app && driver.needs_server?\n        server_options = { port: config.server_port, host: config.server_host, reportable_errors: config.server_errors }\n        server_options[:extra_middleware] = [Capybara::Server::AnimationDisabler] if config.disable_animation\n        Capybara::Server.new(@app, **server_options).boot\n      end\n      @touched = false\n    end\n\n    def driver\n      @driver ||= begin\n        unless Capybara.drivers[mode]\n          other_drivers = Capybara.drivers.names.map(&:inspect)\n          raise Capybara::DriverNotFoundError, \"no driver called #{mode.inspect} was found, available drivers: #{other_drivers.join(', ')}\"\n        end\n        driver = Capybara.drivers[mode].call(app)\n        driver.session = self if driver.respond_to?(:session=)\n        driver\n      end\n    end\n\n    ##\n    #\n    # Reset the session (i.e. remove cookies and navigate to blank page).\n    #\n    # This method does not:\n    #\n    # * accept modal dialogs if they are present (Selenium driver now does, others may not)\n    # * clear browser cache/HTML 5 local storage/IndexedDB/Web SQL database/etc.\n    # * modify state of the driver/underlying browser in any other way\n    #\n    # as doing so will result in performance downsides and it's not needed to do everything from the list above for most apps.","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/teamcapybara/capybara/blob/15b5fdb76e972e9623d5af2123ed3755594f9732/lib/capybara/session.rb#L86-L122","documentation":"Sessions resolve their driver lazily; when the requested mode symbol is not registered in Capybara.drivers, Capybara::DriverNotFoundError is raised with the list of registered driver names. The message exists to catch typos and unregistered third-party drivers.","triggerScenarios":"Capybara::Session.new(:selenium_firfox, app) (typo); Capybara.default_driver = :poltergeist after removing the poltergeist gem; using :cuprite/:apparition/:webkit without requiring the gem that registers it; registering the driver after the session/driver was first accessed.","commonSituations":"Replacing an abandoned driver (poltergeist/capybara-webkit) with cuprite while specs still name the old symbol; driver registration code in a file CI does not load; spring/forked runners skipping registration; typos in env-driven driver selection.","solutions":["Print Capybara.drivers.names and fix the symbol to a registered driver (built-ins include :rack_test, :selenium, :selenium_headless)","Register the driver before first use: Capybara.register_driver(:headless_chrome) { |app| ... } in a file loaded by spec_helper/rails_helper","If a gem provides the driver (cuprite, apparition), require it and follow its registration docs; verify the gem is in the CI bundle"],"exampleFix":"# before\nCapybara.default_driver = :headless_chrome # never registered\n\n# after\nCapybara.register_driver :headless_chrome do |app|\n  Capybara::Selenium::Driver.new(app, browser: :chrome,\n    options: Selenium::WebDriver::Chrome::Options.new(args: ['--headless=new']))\nend\nCapybara.default_driver = :headless_chrome","handlingStrategy":"validation","validationCode":"def driver_registered?(name)\n  Capybara.drivers.names.include?(name)\nend\n\nraise Capybara::DriverNotFoundError,\n      \"#{Capybara.default_driver} not registered. Have: #{Capybara.drivers.names.join(', ')}\" unless driver_registered?(Capybara.default_driver)","typeGuard":null,"tryCatchPattern":"begin\n  page.driver\nrescue Capybara::DriverNotFoundError => e\n  warn e.message # lists available drivers; fix the symbol or register it\n  raise\nend","preventionTips":["Load driver registration from spec_helper before any example runs","Add a smoke spec asserting the configured default_driver is registered","Audit driver symbols whenever adding or removing driver gems"],"tags":["driver","registration","configuration","driver-not-found"],"backgroundTag":"driver-not-found","analyzedSha":"15b5fdb76e972e9623d5af2123ed3755594f9732","analyzedAt":"2026-08-21T16:53:45.588Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}