Quality & Engineering

The evidence behind CanvasXpress as a dependency you can trust: automated visual regression across the chart library, continuous integration, cross-browser rendering, and reproducibility built into the engine.

Quality signals at a glance

634

pixel-snapshot baselines

40+

chart types under test

3

distributions in lockstep (npm, CRAN, PyPI)

Bi-weekly

or less — release cadence

Visual regression across the whole library

Every change is gated by a pixel-level regression suite. A headless browser renders each example and compares it, pixel for pixel, against a stored baseline image — 634 baselines spanning the chart families (heatmaps and dendrograms, scatter and line, boxplot and violin, network, genome, circular/Circos, Venn, treemap, meter and bullet, and the ggplot grammar-of-graphics parity corpus). A change is not considered done until the relevant suite is green with zero new diffs.

Tolerances are deliberate: standard charts must match within a tight pixel ratio; animated or layout-randomized families (network, genome, circular, oncoprint) use wider, per-example tolerances, and a small set of genuinely non-deterministic renders is explicitly tracked rather than silently ignored. The suite is committed in the repository (tests/regression/) and runnable by anyone.

Continuous integration

CanvasXpress builds and validates through automated workflows on every release, including the build itself, the release pipeline, and the regression gate that exits non-zero on any new visual diff. Issue reproduction, ggplot-parity checks, and example generation are automated as well, so the same standard applies whether a change is a one-line fix or a new chart type.

  • Build & minify — the distributed *.min.js is generated, never hand-edited.
  • Regression gate — the pixel suite must pass before a release proceeds.
  • Release pipeline — npm, CRAN and PyPI are published from one engine so the three stay in lockstep.

Browser support

CanvasXpress renders to the standard HTML5 Canvas API and runs in all current evergreen browsers — Chrome, Firefox, Safari and Edge — on desktop and mobile. The regression suite runs in a headless Chromium; the canvas rendering path is not browser-specific.

Reproducibility & accessibility, built in

Quality is not only tests. Every CanvasXpress figure serializes its complete state — data, layout, transforms and selections — to a single portable JSON specification (meta.cxplot), so a chart reproduces exactly, and every interaction is recorded as a replayable operation (the audit trail). Every rendered canvas also carries a WCAG 2.1 screen-reader alternative (role="img" + a generated aria-label) that regenerates whenever the chart updates.

What we are still improving

In the interest of an honest picture: a published bundle-size and tree-shaking story, a first-party ESM build, first-party TypeScript definitions, and a public reproducible performance benchmark are on the roadmap and not yet shipped. We would rather state that plainly than imply otherwise.

See for yourself

The source, the build, and the full regression harness are public. Browse the code and tests at github.com/neuhausi/canvasXpress, review how the project is maintained in GOVERNANCE.md, and read the user-facing CHANGELOG.md.