Repository navigation
Description
Summary
Upstream chromiumembedded/java-cef (and this fork, prior to #2) has thin test coverage on both sides of the JNI boundary, and no CI running it:
- Java: 131 classes under
java/org/cef/, only 5 JUnit test classes injava/tests/junittests/(DisplayHandlerTest,DragDataTest,TestFrameTest, plusOsrSmokeTest/ModifiedUtf8Testadded in Fix modified-UTF-8 corruption in JNI string marshaling #1/Add CI (Azure Pipelines + CodeQL) with build/test/coverage, and test-bench fixes needed to get there #2). Covers a handful of code paths -- title/address change,CefDragDatagetters/setters, one browser lifecycle, JNI string encoding. No coverage forCefApp's state machine,CefClient,CefCookieManager, most ofCefRequest/CefResponse,CefMenuModel,CefPrintSettings, or the network/callback/misc packages. - Native/C++: 146 source files under
native/, zero test framework wired into the build at all (no gtest, no CTest -- greppedCMakeLists.txt, nothing). Native code is only exercised indirectly through whatever a JUnit browser test happens to touch. - CI: none prior to Add CI (Azure Pipelines + CodeQL) with build/test/coverage, and test-bench fixes needed to get there #2 --
.github/workflows/had only issue templates.
Target
Project requirement for the planned Panama/Silk JNI-boundary migration: 85% coverage, covering both happy and unhappy (error) paths, before that work begins in earnest. Rough sizing estimate given the surface area (131 Java classes, 146 native files): likely somewhere in the 800-1200 test range to hit that bar with meaningful branch coverage, not just line coverage.
Reference: JetBrains/jcef
JetBrains/jcef (shipped in JetBrainsRuntime/IntelliJ) has a substantially larger JUnit suite (~13 test classes vs our 5) including scenarios we have zero coverage for -- CefMessageRouter JS-query round-trips (HandleJSQueryTest), repeated browser create/dispose cycling (MultipleBrowserCreationTest), keyboard/mouse simulation, SSL. Not directly portable (built on their JBCefBrowser/CefLog wrapper classes, which don't exist upstream, and windowed-mode tests that would hit #3), but valuable as a source of test scenarios to reimplement against our own TestFrame+OSR pattern. Suggested priority: message-router round-trip and repeated-create/dispose cycling first, since those are currently completely uncovered.
Not in scope for this issue
This is a tracking/planning issue, not asking for all ~800-1200 tests in one PR. Use it to link sub-issues/PRs as coverage work lands.
Activity
Thrameos commentedon Aug 29, 2026
CI baseline (Test + Coverage jobs, currently 12 tests) landed in #2. This issue tracks the coverage-expansion work needed on top of that baseline to reach the 85% target.