WireMock 3.0.0-beta-2 released

40 views
Skip to first unread message

Tom Akehurst

unread,
Dec 30, 2022, 2:09:53 PM12/30/22
to wiremock-user
(Please ignore 3.0.0-beta-1 - I'd released it without the Jetty 11 change merged)

This is the start of a series of beta releases of WireMock that will add some major new features and introduce some breaking changes, although we'll try to make these as painless as possible.

Changes in this release:
  • Minimum Java version is now 11
  • Jetty 11 upgrade (also considered beta as performance seems to have regressed a little vs. 9.x)
  • Introduction of a stores abstraction (with default implementations that maintain current behaviour) so that persistent storage backends can be plugged in. API may be subject to change during the beta period.

Andy Cross

unread,
Jan 6, 2023, 3:41:12 AM1/6/23
to wiremock-user
Thanks Tom.

Is there any documentation around the upcoming new features/breaking changes, and a rough timescale for WireMock 3 being released?

Cheers,
Andy

Tom Akehurst

unread,
Jan 6, 2023, 6:01:29 AM1/6/23
to wiremock-user
Hi Andy,

We're still figuring out exactly what's going to end up in the finalised version, which means timing for coming out of beta is a bit uncertain.

We're not planning on making a lot of breaking changes, and the intention is that most users won't notice them. These are what we've got in mind at the moment:
  • Defaulting to non-URL encoded keys and values when matching query params, headers and cookies. Currently if you need to match e.g. [ and ] you need to encode them in your expected values, which is a bit confusing.
  • Removing the Guava Optional class in favour of the JVM one.
  • Enabling per-stub (local) response templating by default.
  • Change the fault names to ones that more accurately reflect what they really do.
  • Possibly a minor package re-org, although TBH I'd prefer to do this in 4.x.
There will be a few places where we deprecate old bits of the API, converting old to new:
  • Introduce a new body type that supports strings, binary, JSON, plus metadata about encoding, format and compression. This will replace jsonBody in the JSON API, but we'll continue to support this on read.
  • No longer accept URLs with query parameters inline, but when we're given these, convert them to path + separate query param matchers.
  • New transformer extension points that provide more request context, dependency injection and the ability to load JARs from a folder.
  • Sub-events in the request log model. This will mostly replace the logging that's currently there and will enable errors/mismatches/failed validation etc. to be added to the current serve event so that they can be read back via the API (and also be included in-context when logging to stdout etc.).
Some additional candidate features (which may arrive after the beta is finished):
  • URL path template support
  • Extra extension points - add template helpers and custom data model providers.
  • Scenario key scoping, so that you can e.g. have separate scenario state per unique JSESSIONID
  • YAML stub definitions.
  • Major logging overhaul.

I hope this clarifies things, and as ever we're open to suggestions if there's something you think we should also be looking at.

Tom

Reply all
Reply to author
Forward
0 new messages