{"record":{"id":"995840beb296fc48","repo":"karatelabs/karate","slug":"lowercase-needs-one-argument","errorCode":null,"errorMessage":"lowerCase() needs one argument","messagePattern":"lowerCase\\(\\) needs one argument","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"karate-core/src/main/java/io/karatelabs/core/KarateJsUtils.java","lineNumber":305,"sourceCode":"            return JsonPath.using(jsonPathConfig).parse(json).read(path);\n        };\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    static JavaInvokable keysOf() {\n        return args -> {\n            if (args.length == 0) {\n                throw new RuntimeException(\"keysOf() needs one argument\");\n            }\n            Map<String, Object> map = (Map<String, Object>) args[0];\n            return new ArrayList<>(map.keySet());\n        };\n    }\n\n    static JavaInvokable lowerCase() {\n        return args -> {\n            if (args.length == 0) {\n                throw new RuntimeException(\"lowerCase() needs one argument\");\n            }\n            Object obj = args[0];\n            if (obj instanceof String) {\n                return ((String) obj).toLowerCase();\n            } else if (obj instanceof Map) {\n                // Convert to JSON string, lowercase, parse back\n                String json = Json.stringifyStrict(obj).toLowerCase();\n                return Json.of(json).value();\n            } else if (obj instanceof List) {\n                String json = Json.stringifyStrict(obj).toLowerCase();\n                return Json.of(json).value();\n            } else if (obj instanceof Node) {\n                String xml = Xml.toString((Node) obj, false).toLowerCase();\n                return Xml.toXmlDoc(xml);\n            }\n            return obj;\n        };\n    }","sourceCodeStart":287,"sourceCodeEnd":323,"githubUrl":"https://github.com/karatelabs/karate/blob/a22eb90246d958d15a47bf436693d0121ad2812d/karate-core/src/main/java/io/karatelabs/core/KarateJsUtils.java#L287-L323","documentation":"lowerCase() is a Karate JS utility that lowercases a String, or (for Maps) converts to JSON, lowercases, and parses back. The library throws this error when it is called with zero arguments, since there is nothing to convert.","triggerScenarios":"Calling karate.lowerCase() with no arguments, e.g. lowerCase() instead of lowerCase(text).","commonSituations":"Argument dropped during a refactor; calling the function before assigning the source string; copy-paste where the variable name was omitted.","solutions":["Pass the value as the first argument: lowerCase(myString) or lowerCase(myMap).","Confirm the variable passed exists and is not undefined due to an earlier failed step.","If the input may be absent, check it before calling lowerCase()."],"exampleFix":"// before\ndef small = lowerCase()\n// after\ndef small = lowerCase(name)","handlingStrategy":"validation","validationCode":"def small = text ? lowerCase(text) : ''","typeGuard":"function safeLowerCase(v) { return v == null ? '' : lowerCase(v) }","tryCatchPattern":null,"preventionTips":["Never call string helpers on a bare line without their argument.","Check the source variable exists with karate.match or an if before transforming.","Keep helper one-liners together so a dropped argument is visible in review."],"tags":["karate","javascript","argument-count","strings"],"backgroundTag":"missing-required-argument","analyzedSha":"a22eb90246d958d15a47bf436693d0121ad2812d","analyzedAt":"2026-09-12T09:01:00.220Z","contentChangedAt":"2026-09-12T09:01:00.220Z","schemaVersion":2},"datasetVersion":"2026-09-19T12:17:13.211Z"}