Integration suite · 10 shared checks

Make every entry point agree.

Integration checks connect package exports, the CommonJS identity marker, supported direct paths, and the classic browser global without restating lower-level behavior.

js-message works with bundlers and without a bundler.

Bundlers resolve the bare js-message import normally. Native browser ESM resolves it through a standard import map, with no build or transpilation step.

Runtime entry points

IDFocused check
INT-01Root default and named exports share one class.
INT-02The supported index.js and legacy Message.js paths share the root class.
INT-03The browser-global entry exposes a constructor.
INT-04The global JSON getter stays on a non-enumerable prototype.
INT-05The global load() method stays on a non-enumerable prototype.
INT-06Module and global entries agree on JSON text.
INT-07Module and global entries agree on object input.
INT-08The global entry serializes malformed input errors.
INT-09The global toJSON() method returns the exact envelope.
INT-10The module constructor exposes its named CommonJS identity.

Chrome-only playground integration

These twelve cases exercise browser-only UI and Worker boundaries. They are distinct from—and are not added to—the 83 shared runtime checks.

IDFocused check
INT-BROWSER-01The playground completes its same-origin ready and load handshake.
INT-BROWSER-02The default playground module completes with visible round-trip output.
INT-BROWSER-03A snippet cannot spoof runner messages through the Worker global channel.
INT-BROWSER-04Revoked Proxy logging is contained and later console output survives.
INT-BROWSER-05An infinite module is terminated at the playground run limit.
INT-BROWSER-06Excess console lines terminate the module at the output limit.
INT-BROWSER-07Loading source during a run restores the editor controls.
INT-BROWSER-08The editor does not cancel keyboard exit commands.
INT-BROWSER-09Large primitive console strings are bounded before rendering.
INT-BROWSER-10Undefined custom JSON output fails promptly with a readable value.
INT-BROWSER-11A focused recipe opens its exact source in the live workbench.
INT-BROWSER-12The recovery recipe executes malformed JSON as a successful error envelope.

Repository boundary gates

  • Real Chrome runs the shared catalog against the same shipped source as Node.
  • The live playground is exercised through its frame, editor controls, worker, and visible output.
  • The local documentation server verifies routes, module headers, and security policies.
  • A packed tarball is installed in a clean project and checked through every declared export.
Two layers of integration evidence.

The ten shared IDs remain portable between Node and Chrome. The twelve INT-BROWSER cases and other environment-specific gates stay separate so their setup does not masquerade as duplicate protocol coverage.