karatelabs/karate · info
parsed only
Error message
parsed only
What it means
This is not an exception — it is the console summary status string SuiteResult.printSummary() emits in place of 'all passed' when the suite was a dry run. Because nothing executes in a dry run, Karate refuses to print a green 'all passed' (which would falsely imply the system under test was exercised) and prints 'parsed only' as a warning-styled status.
Solutions
- If real execution was intended, remove the dryRun option from the Runner/CLI invocation
- Treat 'parsed only' as success for a parse/tag validation dry run — it is informational, not an error
- Gate CI job success on non-dry-run runs only, or assert the summary explicitly
- Check for dryRun=true leaking from shared runner configuration
Example fix
// before: accidental dry run in CI
Runner.path(classpath("features")).dryRun(true)
// after
Runner.path(classpath("features")).dryRun(false) Defensive patterns
Strategy: validation
Validate before calling
// assert the run was real, not a dry run, before marking CI green
if (result.isDryRun()) throw new IllegalStateException("suite ran in dry-run mode; parsed only, nothing executed"); Type guard
function isRealRun(suiteResult){ return suiteResult != null && suiteResult.getScenarioCount() > 0 && !suiteResult.isDryRun(); } Prevention
- Keep dryRun flags out of shared runner configuration; pass them explicitly per job
- Add a CI assertion that scenario counts are > 0 for gating pipelines
- Grep pipeline config for dryRun/dry-run before promoting jobs
- Use dry run only as an explicit preflight parse check step
When it happens
Trigger: Running Karate in dry-run mode (Runner with dryRun=true, or CLI dry-run flag) and reaching the end with zero failed features — printSummary shows features status 'parsed only' and scenarios status 'DRY RUN — nothing was executed'.
Common situations: CI jobs accidentally left in dry-run mode showing green-ish output; developers validating that all features parse/tag-filter correctly; someone expecting real execution but a dryRun flag was set in config.
Related errors
AI-assisted analysis of karatelabs/karate@a22eb90246 (2026-09-12).
Data as JSON: /api/errors/e32c6716bc4091bc.
Report an issue: GitHub.
Appendix: source
Thrown at karate-core/src/main/java/io/karatelabs/core/SuiteResult.java:308
// Timing info
double elapsedSecs = getDurationMillis() / 1000.0;
double threadTimeSecs = getThreadTimeMillis() / 1000.0;
double efficiency = threadCount > 0 && elapsedSecs > 0
? threadTimeSecs / (elapsedSecs * threadCount)
: 1.0;
Console.println(String.format("elapsed: %6.2fs | threads: %3d | efficiency: %.2f",
elapsedSecs, threadCount, efficiency));
// Feature stats
int featureTotal = getFeatureCount();
int featurePassed = getFeaturePassedCount();
int featureFailed = getFeatureFailedCount();
// a dry run cannot fail (nothing runs) and its skips count as passed — printing "all passed" for it
// would report a green for a suite that never touched the system under test
String featureStatus = featureFailed > 0
? Console.fail(featureFailed + " failed")
: dryRun ? Console.warn("parsed only") : Console.pass("all passed");
Console.println(String.format("features: %4d | passed: %4d | %s",
featureTotal, featurePassed, featureStatus));
// Scenario stats
int scenarioTotal = getScenarioCount();
int scenarioPassed = getScenarioPassedCount();
int scenarioFailed = getScenarioFailedCount();
int scenarioSkipped = getScenarioSkippedCount();
String scenarioStatus = scenarioFailed > 0
? Console.fail(scenarioFailed + " failed")
: dryRun ? Console.warn("DRY RUN — nothing was executed") : Console.pass("all passed");
if (scenarioSkipped > 0) {
Console.println(String.format("scenarios: %3d | passed: %4d | skipped: %4d | %s",
scenarioTotal, scenarioPassed, scenarioSkipped, scenarioStatus));
} else {
Console.println(String.format("scenarios: %3d | passed: %4d | %s",View on GitHub (pinned to a22eb90246)