You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
make JavaScript screenshot CI fail when the underlying suite reports assertion or runtime errors
repair worker/host bindings, callback dispatch, and RTA retention for timers, crypto, browser components, camera, video, and related HTML5 APIs
fix JavaScript runtime semantics exposed by the port-status suite, including regex replacement, time-zone offsets, floating formatting, PrintStream, accessibility, chart construction, and orientation behavior
enable the HTML5 camera test with deterministic fake media and real asynchronous photo capture instead of skipping it
strengthen end-to-end assertions and add translator/core regression coverage
Root cause
Recent port-status reports combined several independent failures. Browser-facing callbacks were either missing host bindings or were culled because the bytecode-only reachability analysis could not see host-dispatched edges. Camera photo completion could also deadlock behind the EDT. Several Java runtime behaviors diverged on JavaScript, and the screenshot workflow did not make Java assertion/runtime markers fatal, allowing a green workflow to publish a red report.
This change fixes the runtime and lifecycle paths themselves, retains only the required dynamic dispatch targets, and makes report failures fail CI. It does not skip failing tests, force timeouts, reseed screenshot references, or relax comparison thresholds.
Validation
built a clean optimized JavaScript bundle and ran the complete browser suite twice from fresh browser/server sessions
all 164 JavaScript tests completed without assertion/runtime errors or report-level skips
180/180 screenshots delivered on each run with zero dropped frames
all 180 screenshot hashes were byte-for-byte identical between runs
ran focused CameraApiTest and StringApiTest browser checks successfully
emitted/source JavaScript syntax, shell syntax, and git diff --check passed
The local macOS normalized report still records pixel differences against CI-owned screenshot references. No references or thresholds were changed; screenshot sanity reported zero structurally wrong images, and both complete runs produced identical output. CI remains the authoritative pixel-reference environment.
Compared 146 screenshots: 146 matched.
Native Windows port (x64 / Intel-AMD): full hellocodenameone screenshot suite rendered offscreen with Direct2D/DirectWrite, plus the real benchmarks (base64 native/CN1/SIMD, image createMask/applyMask/modifyAlpha/PNG/JPEG, SSE2 SIMD kernels). Compared against the in-repo baseline in scripts/windows/screenshots.
Compared 146 screenshots: 146 matched.
Native Windows port (arm64 / Apple Silicon - Arm): full hellocodenameone screenshot suite rendered offscreen with Direct2D/DirectWrite, plus the real benchmarks (base64 native/CN1/SIMD, image createMask/applyMask/modifyAlpha/PNG/JPEG, NEON SIMD kernels). Compared against the in-repo baseline in scripts/windows/screenshots.
Compared 146 screenshots: 146 matched.
Native Windows port, REAL shipping pipeline: the hellocodenameone screenshot suite rendered by a binary CROSS-COMPILED on Linux (clang-cl + xwin, WebView2 linked) and RUN on a Windows x64 runner. Compared against the in-repo baseline in scripts/windows/screenshots.
Compared 147 screenshots: 147 matched.
Native Linux port (x64), GTK3/Cairo/Pango, ParparVM bytecode-to-C (no JVM): the hellocodenameone screenshot suite rendered by a native ELF built + run on the GitHub x64 runner. Baseline: scripts/linux/screenshots.
Compared 147 screenshots: 147 matched.
Native Linux port (arm64), GTK3/Cairo/Pango, ParparVM bytecode-to-C (no JVM): the hellocodenameone screenshot suite rendered by a native ELF built + run on the GitHub arm64 runner. Baseline: scripts/linux/screenshots-arm.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PrintStream, accessibility, chart construction, and orientation behaviorRoot cause
Recent port-status reports combined several independent failures. Browser-facing callbacks were either missing host bindings or were culled because the bytecode-only reachability analysis could not see host-dispatched edges. Camera photo completion could also deadlock behind the EDT. Several Java runtime behaviors diverged on JavaScript, and the screenshot workflow did not make Java assertion/runtime markers fatal, allowing a green workflow to publish a red report.
This change fixes the runtime and lifecycle paths themselves, retains only the required dynamic dispatch targets, and makes report failures fail CI. It does not skip failing tests, force timeouts, reseed screenshot references, or relax comparison thresholds.
Validation
CameraApiTestandStringApiTestbrowser checks successfullyJavascriptRuntimeSemanticsTest: 171 tests, 0 failures, 0 errors; one pre-existing deferred monitor-FIFO skipAccessibilitySemanticsTest,CombinedXYChartTest: 11 tests, 0 failures, 0 errors, 0 skipsgit diff --checkpassedThe local macOS normalized report still records pixel differences against CI-owned screenshot references. No references or thresholds were changed; screenshot sanity reported zero structurally wrong images, and both complete runs produced identical output. CI remains the authoritative pixel-reference environment.