Skip to content

Test bench and versioning

Test a configurator against live inputs and keep past prices explainable as the definition changes.

The test bench is the right-hand panel in the builder. You enter inputs and see the outputs and the full breakdown update live. The browser evaluates the same engine for the preview, and the server re-evaluates on save and on every real run, where the server result is authoritative.

Saved test cases

You can save a set of inputs together with the outputs you expect. These cases are stored with the definition and run on every save.

If a saved test case fails, activation is blocked. This stops a pricing change from going live until the expected results match again.

Why saved cases block activation

A configurator is production pricing. Once it is live, a change to a rate does not just affect the next quote you look at, it affects every quote anyone raises from that moment on, including ones raised automatically from a request at three in the morning. There is no review step in front of that, so the review has to be built into the save.

A saved case is you writing down what the right answer looks like at a point where you are certain of it: a 10mm four flute at £13.40, a 2 metre run at £847. When a later edit changes one of those, activation stops and tells you which case moved. Most of the time that is a mistake caught early. Occasionally it is a deliberate change, and then you update the expected figure and save again, which is a decision rather than an accident.

Versioning

Definitions are immutable per version. Saving a change bumps the definition version and keeps the prior version in the definition history, capped at the last twenty.

Every config run and every service quote records the version it used, so a price from last quarter can still be explained against the definition that produced it.

  • Edit and test freely in the builder before you save.
  • Saving bumps the version and stores the previous one in history.
  • Past runs stay tied to the version that priced them.

The practical consequence is that "why did we quote that" always has an answer. A quote raised in March was priced by the definition as it stood in March, and that definition still exists to be read. Without versioning the only honest answer to the question would be a guess about what the formula used to say.