{"record":{"id":"41d5e2e562061a17","repo":"SeleniumHQ/selenium","slug":"unknown-pattern-type-pattern-type","errorCode":null,"errorMessage":"Unknown pattern type: #{pattern_type}","messagePattern":"Unknown pattern type: #(.+?)","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"rb/lib/selenium/webdriver/bidi/network/url_pattern.rb","lineNumber":39,"sourceCode":"\nmodule Selenium\n  module WebDriver\n    class BiDi\n      #\n      # @api private\n      #\n\n      module UrlPattern\n        module_function\n\n        def format_pattern(url_patterns, pattern_type)\n          case pattern_type\n          when :string\n            to_url_string_pattern(url_patterns)\n          when :url\n            to_url_pattern(url_patterns)\n          else\n            raise ArgumentError, \"Unknown pattern type: #{pattern_type}\"\n          end\n        end\n\n        def to_url_pattern(*url_patterns)\n          url_patterns.flatten.map do |url_pattern|\n            uri = URI.parse(url_pattern)\n\n            {\n              type: 'pattern',\n              protocol: uri.scheme || '',\n              hostname: uri.host || '',\n              port: uri.port.to_s,\n              pathname: uri.path || '',\n              search: uri.query || ''\n            }\n          end\n        end\n","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/SeleniumHQ/selenium/blob/aa36b38e696a0909e973bdf5e2f9031ffe842c4b/rb/lib/selenium/webdriver/bidi/network/url_pattern.rb#L21-L57","documentation":"UrlPattern.format_pattern converts caller-supplied URL filters into the BiDi network interception wire shape. It only knows two strategies: :string (string match) and :url (parsed URL pattern). Any other pattern_type symbol raises ArgumentError. This is an internal helper used when building network intercept arguments.","triggerScenarios":"Calling the internal format_pattern / network intercept API with a pattern_type other than :string or :url. Most often reached through a library bug or monkey-patch that passes :regex, :glob, :wildcard, or nil.","commonSituations":"Library internal misuse, downstream gem extending network interception with a custom type without patching format_pattern, typo in a fork.","solutions":["Pass pattern_type: :string for substring/string match or pattern_type: :url for a parsed URL pattern.","If you need a new kind, extend UrlPattern with a matching to_*_pattern method rather than passing an unknown type.","Search your codebase for callers of format_pattern / add_intercept to find the bad type."],"exampleFix":"// before\nUrlPattern.format_pattern(patterns, :regex)\n// after\nUrlPattern.format_pattern(patterns, :string)","handlingStrategy":"validation","validationCode":"VALID_PATTERN_TYPES = %i[string url].freeze\n\nraise ArgumentError, 'bad pattern_type' unless VALID_PATTERN_TYPES.include?(pattern_type)\nUrlPattern.format_pattern(url_patterns, pattern_type)","typeGuard":"def valid_pattern_type?(t)\n  %i[string url].include?(t)\nend","tryCatchPattern":"begin\n  UrlPattern.format_pattern(patterns, type)\nrescue ArgumentError => e\n  raise unless e.message =~ /Unknown pattern type/\n  type = :string\n  retry\nend","preventionTips":["Restrict callers to :string or :url via a constant whitelist.","Treat format_pattern as internal API; do not pass user-supplied types directly.","Add a unit test covering both valid types plus the rejection path."],"tags":["bidi","network","argument","ruby"],"backgroundTag":null,"analyzedSha":"aa36b38e696a0909e973bdf5e2f9031ffe842c4b","analyzedAt":"2026-08-14T02:32:32.244Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}