{"record":{"id":"a7dc8d8e0fcbf885","repo":"SeleniumHQ/selenium","slug":"wrong-version","errorCode":null,"errorMessage":"Wrong {} version: '{}'","messagePattern":"Wrong (.+?) version: '(.+?)'","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"rust/src/lib.rs","lineNumber":1162,"sourceCode":"    fn get_major_version(&self, full_version: &str) -> Result<String, Error> {\n        get_index_version(full_version, 0)\n    }\n\n    fn get_selenium_release_version(&self) -> Result<String, Error> {\n        let driver_version = self.get_driver_version();\n        if driver_version.contains(SNAPSHOT) {\n            return Ok(NIGHTLY.to_string());\n        }\n\n        let mut release_version = driver_version.to_string();\n        if !driver_version.ends_with('0') && !self.is_nightly(driver_version) {\n            // E.g.: version 4.8.1 is shipped within release 4.8.0\n            let error_message = format!(\n                \"Wrong {} version: '{}'\",\n                self.get_driver_name(),\n                driver_version\n            );\n            let index = release_version.rfind('.').ok_or(anyhow!(error_message))? + 1;\n            release_version = release_version[..index].to_string();\n            release_version.push('0');\n        }\n        Ok(format!(\"selenium-{release_version}\"))\n    }\n\n    fn assert_online_or_err(&self, message: &str) -> Result<(), Error> {\n        if self.is_offline() {\n            return Err(anyhow!(format_one_arg(message, self.get_driver_name())));\n        }\n        Ok(())\n    }\n\n    fn get_driver_name_with_extension(&self) -> String {\n        format!(\n            \"{}{}\",\n            self.get_driver_name(),\n            get_binary_extension(self.get_os())","sourceCodeStart":1144,"sourceCodeEnd":1180,"githubUrl":"https://github.com/SeleniumHQ/selenium/blob/aa36b38e696a0909e973bdf5e2f9031ffe842c4b/rust/src/lib.rs#L1144-L1180","documentation":"Thrown inside get_selenium_release_version() while normalizing a Selenium/IEDriver release version (e.g. turning 4.8.1 into the release 4.8.0). When the version does not end in '0' and is not a nightly, the code calls rfind('.') to find the last dot; if there is no dot at all, ok_or turns None into this error. The placeholders are the driver name and the offending version string.","triggerScenarios":"get_selenium_release_version() receives a driver_version that contains no '.' character and is neither a SNAPSHOT/nightly nor ending in '0'. rfind('.') returns None, so ok_or(error_message) fails.","commonSituations":"A malformed or single-token version string came back for the IEDriverServer or Selenium Grid jar (e.g. just \"4\" or a non-semver tag); the version endpoint changed its format.","solutions":["Inspect the Selenium Manager debug log to see the exact driver_version string that lacked a dot.","Pin a well-formed driver version explicitly (e.g. --driver-version 4.20.0) so the normalization branch is not taken.","Update Selenium Manager to the latest build in case a version-source format change has already been handled."],"exampleFix":"# before (malformed single-token version from source)\nselenium-manager --driver iedriver   # version resolved as e.g. '4'\n# after\nselenium-manager --driver iedriver --driver-version 4.20.0","handlingStrategy":"validation","validationCode":"fn is_well_formed_release_version(v: &str) -> bool {\n    v.contains('.') && v.split('.').all(|p| !p.is_empty())\n}\n// before calling get_selenium_release_version / pinning:\nlet dv = manager.get_driver_version();\nif !is_well_formed_release_version(&dv) {\n    manager.set_driver_version(\"4.20.0\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin a fully-qualified driver version (major.minor.patch).","Log the resolved driver version in debug builds to catch malformed sources early.","Update Selenium Manager when version-source formats change."],"tags":["version-parsing","selenium-manager","rust"],"backgroundTag":null,"analyzedSha":"aa36b38e696a0909e973bdf5e2f9031ffe842c4b","analyzedAt":"2026-08-14T02:32:32.244Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}