Back to Karate

TODOs

docs/TODOS.md

2.0.74.7 KB
Original Source

TODOs

Scratch pad for tracking work across the project. See also CAPABILITIES.yaml for the full feature inventory.


Runtime / Core

  • HTTP/2 support
  • Response time validation
  • Priority 7: JavaScript script execution (*.karate.js files)
  • Priority 9: configure report = { showJsLineNumbers: true }
  • Priority 9: karate-base.js (shared config from classpath JAR)
  • Step definitions with regex pattern matching
  • Multiple Suite Execution: Runner.suites().add(...).parallel(n).run()
  • Shared "misc" JS engine for tag-selector evaluation, @setup dynamic expressions, and examples-table cell interpolation. Currently TagSelector.evaluate creates a fresh Engine per call — low individual cost but adds up across per-section pre-filter + per-scenario runtime evaluation. Would need per-thread or pooled engines for parallel execution.

JavaScript Engine (karate-js)

  • BigInt -> BigInteger (large IDs, timestamps, financial identifiers)
  • BigDecimal -> BigDecimal (money/finance)
  • ArrayBuffer -> byte[] (raw binary data)
  • JsRegex + JavaMirror (return Pattern from getJavaValue())
  • Set -> java.util.Set (deduplication, membership)
  • Map (proper JS Map) -> java.util.Map (ordered keys, non-string keys)
  • Iterator/for-of -> java.util.Iterator
  • Console log levels — console.warn(), console.error(), console.trace() etc. should map to appropriate log levels (WARN, ERROR, TRACE) when cascading onto core/karate logging
  • async/await -> CompletableFuture / virtual threads
  • setTimeout() and timer functions
  • ES Modules (import/export) for JS reuse across tests

Parser / IDE

  • Code formatting (JSON-based options, token-based and AST-based strategies)
  • Source reconstitution (regenerate source from AST)
  • Embedded language support (JS highlighting inside Gherkin steps)

CLI

  • --listener / --listener-factory CLI flags
  • Mock CLI options (-m, -s, -W, etc.)

Reports

  • HTML report cosmetic improvements
  • PROGRESS events for real-time progress display
  • FeatureResult.fromJson() for offline report generation from JSONL
  • JS line-level logging in reports (opt-in)
  • Report rendering test cases for nested calls (karate.call() from JS, Background calls, multi-level chains)

WebSocket

  • WsServerOptions, WsServer, WsServerHandler (not started)
  • Unit tests for echo server (in progress)

Browser / Driver

  • Playwright emulation (Firefox/WebKit via Playwright CDP)
  • Runner.Builder exposure via protocol.runner() for Gatling
  • Add SSE browser-side test to DriverFeatureTest — verify EventSource connects to SseHandler and receives events in a real browser. Current SSE tests only validate server-side wire format. This would cover the HTMX sse-swap and Alpine EventSource patterns end-to-end.
  • Consider find / findAll as aliases for locate / locateAll — jQuery, Cypress, Selenium (findElement) all use find for scoped descendant lookups, and $() / $$() shorthands are near-universal. locate is internally consistent with Karate's "locator" noun but non-standard elsewhere. Cost is ~5 lines (bind as aliases in Driver.jsGet and BaseElement.jsGet); benefit is one less thing for users arriving from other frameworks to learn. Skip until someone actually asks — existing locate is established, documented, and v1-compatible.

Cross-Language / Platform

  • Continue Karate CLI development (platform binaries)
  • .NET, Python, Go client libraries
  • Desktop automation (macOS, Windows, Linux)
  • Mobile automation (iOS, Android)

Mocks

  • Expand JS mock documentation in MOCKS.md — more examples of pathMatches, session patterns, and comparison with feature-file mocks

Docs / Quality

  • Create release notes and blog post for karate 2.0.0
  • Update karate-docs (Docusaurus site) with v2 documentation
  • Update MIGRATION_GUIDE.md with WebDriver section (type mapping, capabilities config, CDP-only operations)
  • Merge karate-demo + karate-e2e-tests into karate-examples
  • Clean up GitHub issues (close stale, redirect to docs.karatelabs.io)
  • Redirect GitHub wiki pages to docs.karatelabs.io
  • Release compatible IDE plugins (VS Code extension, IntelliJ plugin)
  • Automated version bumping and changelog generation
  • Automate karate-examples version bump with CI/CD (see RELEASING.md step 7)

CI/CD

  • CI/CD workflow for karate-examples to bump version and run tests on release
  • Telemetry — anonymous usage ping, opt-out: KARATE_TELEMETRY=false