Releases: apinizer/testnizer
Testnizer v1.4.30
v1.4.30
Signed installers on Windows and macOS — no more "unknown publisher" /
"unidentified developer" warnings. This release also rolls up the v1.4.19
launch-crash fix, so it is the recommended build for everyone.
Signed installers
- Windows: installers are now Authenticode-signed with a Certum Open Source
code-signing certificate. SmartScreen no longer shows "unknown publisher", and
the in-app auto-update accepts the signed build. - macOS: builds are signed with an Apple Developer ID and notarized by Apple,
so Gatekeeper opens them without the "unidentified developer" block. macOS
auto-update is working again (thelatest-mac.ymlmanifest is published with
the build).
Rolled-up launch-crash fix (was v1.4.20, never shipped)
The v1.4.19 "one shared script runtime" change pulled the script libraries into
the app's startup path, where two of them broke the production build. Both are
fixed here:
- App would not start (all platforms): the bundled
uuidis ESM-only and
was left as a runtimerequire()in the main process, which Electron's Node
runtime cannot load (ERR_REQUIRE_ESM) — the app crashed before any window
opened.uuidis now bundled into the main process. - Blank window: the renderer referenced Node's
Bufferglobal (needed by
the script libraries) which does not exist in the browser context. ABuffer
polyfill is now installed before the app loads.
All of the v1.4.19 scripting work (full Chai assertions, the built-in
require() libraries, the legacy Postman interface, Insomnia/Bruno aliases,
Send/Run parity) is intact and now actually runs.
CI hardening: the launch-smoke test that caught the crash now runs on the
Windows and Linux build jobs too (previously macOS only), so a startup crash can
no longer ship undetected on any platform.
Testnizer v1.4.18
v1.4.18
Scripting levels up: built-in OAuth 2.0 tokens (no more hand-scripted token
requests), pm.sendRequest, response cookies in scripts, and the same script
runtime in Send and Run. Plus a rewritten Scripts guide on the website.
- Built-in OAuth 2.0 token grant: the OAuth 2.0 auth type now actually
fetches a token. Pick Client Credentials or Password grant, fill in
the token URL / client id / secret / scope, and Testnizer requests the token
automatically before the request and caches it until it nears expiry. The
Get New Access Token button works too. Combined with folder/project auth
inheritance, you can set OAuth 2.0 once on a folder and every request below it
gets a fresh token — no token-fetch request or script required. pm.sendRequest: scripts can now fire an auxiliary HTTP request
mid-script —await pm.sendRequest(...)or the Node-style callback. Useful for
token fetch, polling, and setup. Works in both Send and the Collection Runner.- Response cookies in scripts:
pm.response.cookies.get('session')
(.has,.toObject) reads the cookies the server set. pm.*.toObject()snapshots forenvironment/globals/
collectionVariables/variables.- Send / Run script parity: the Collection Runner now exposes the same
globals as Send —CryptoJSand thetalias. A script using
CryptoJS.HmacSHA256(...)that passed on Send used to throw "CryptoJS is not
defined" on Run; both run identically now. - Scripts are async: you can
awaitinside pre-request and test scripts. - Docs: the Scripts guide was
rewritten to match the real runtime —CryptoJSinstead of the (unsupported)
require(), the fullpmAPI, the project → folder → request script cascade,
auth inheritance, and built-in OAuth 2.0.
Tests: OAuth2 grant (client_credentials / password / client-auth modes),
pm.sendRequest (Send + Run, await + callback), response cookies, toObject, and
runner CryptoJS/t parity. Unit suite now at 1758.
Testnizer v1.4.17
v1.4.17
Packaging fix: macOS (and Windows) auto-update works again. No app changes —
this release only repairs the release pipeline that produced broken update
metadata in v1.4.16.
-
macOS auto-update fixed (v1.4.16 regression): in v1.4.16 the macOS update
failed withsha512 checksum mismatch. Root cause: macOS and Windows builds
produced a zip with the same filename (Testnizer-<version>-<arch>.zip)
and published it to the same GitHub release, so the Windows arm64 zip
overwrote the macOS arm64 zip — the updater then downloaded a Windows file
where it expected the macOS app. The Windowsziptarget has been removed
(Windows ships the NSIS installer; the portable zip was unused), eliminating
the collision. -
Both architectures update again (mac + Windows): each platform now builds
both arches (arm64 + x64) in a single packaging step, emitting one
completelatest-mac.yml/latest.yml. Previously the two per-arch jobs each
wrote their own manifest and clobbered each other on the release, so only one
architecture was ever listed — the other arch's users silently got "no
update". Apple-Silicon and Intel Macs, and x64 and arm64 Windows, can all
auto-update now. -
Runner now refreshes script-written variables: after a folder/collection
Run, a variable a post-response script captured (e.g.pm.environment.set ("accessToken", …)in a Create-Token request) now shows up immediately in the
environment editor and resolves on the next Send — previously the value was
saved to disk but the in-app environment stayed stale, so it looked empty and
had to be retyped by hand. The "Keep variable values" toggle is also honored
on these run paths now.
Upgrading from v1.4.16 on macOS: because v1.4.16's update metadata is
broken, the in-app updater can't carry you to v1.4.17 automatically. Download
the v1.4.17 .dmg from the releases page once; auto-update will work normally
from v1.4.17 onward.
Testnizer v1.4.16
v1.4.16
Folder- and project-level authorization + scripts that requests inherit, plus
two Insomnia/Postman import fixes so imported collections run in the right order
with their shared auth intact.
- Inherit auth from folder / project: a request's Auth tab gains an Inherit
from parent option (now the default for new requests). The effective auth is
resolved nearest-wins — request → nearest folder → project — so you can set a
Bearer {{accessToken}}once on a folder (or in Project Settings →
Authorization) and every request below it picks it up. An explicit No Auth
on a request or folder stops the inheritance. - Folder Settings (auth + scripts): right-click any folder → Settings to
set its authorization and its pre-request / test scripts. - Cascade scripts: project and folder pre-request / test scripts now run
around every request in the cascade order project → folder → request, on
both Send and Run. (Project-level auth + scripts were configurable
before but weren't applied at runtime — now they are.) - Insomnia import order fixed: Insomnia v5 collections are now imported in
meta.sortKeyorder (what Insomnia actually runs), not raw file order — so a
Run fires requests in the intended sequence instead of a scrambled one. - Insomnia/Postman auth inheritance on import: a collection's root (and any
folder's)authenticationis now carried onto child requests that don't set
their own. Previously an imported collection that definedBearer {{accessToken}}once at the root sent no Authorization on its child requests
and failed with 401 "Empty Key".
Tests: new pure-resolver, runner-integration and renderer-mirror suites for
auth/script inheritance, plus end-to-end Playwright coverage (folder bearer
inherited + overridden against the live echo server, the cascade pre-request
script, and the Folder Settings modal). Unit suite now at 1738.
Testnizer v1.4.15
v1.4.15
macOS in-app auto-update now actually works, the update panel stops claiming
"you're up to date" before it has checked, and the welcome screen gained the
version number plus a working About menu.
- macOS auto-update (for real): now that builds are signed and notarized
(v1.4.13+), the in-app Download & Install flow works on macOS too — the
old block that forced macOS users to a manual download has been removed. The
manual download link remains as a fallback if an install can't complete. - Honest update status: the update panel no longer shows a green "you're up
to date" before any check has run. Opening it now runs a check automatically,
shows a neutral prompt until the result is in, and only reports "up to date"
once a check confirms there's no newer version. - About works on the welcome screen: selecting Testnizer → About
Testnizer from the menu now opens the About dialog even before you've signed
in / chosen a profile (previously it did nothing on the first screen). - Version on the welcome screen: the first-run screen now shows the build
version. - Turkish polish: the update-panel Turkish strings now use correct
diacritics (e.g. "Güncelsiniz" instead of "Guncelsiniz").
Tests: updater event→status mapping (incl. the new not-available → up-to-date
split), the macOS in-app Download path, and the welcome-screen version badge —
unit suite now at 1715.
Testnizer v1.4.14
v1.4.14
Scripts can now fetch a token once and reuse it across the whole suite —
insomnia.* / bru.* script APIs are supported, and the Collection Runner
persists the variables your scripts write (Postman "Keep variable values").
- Insomnia / Bruno scripts: pre-request and test scripts can now use the
insomnia.*andbru.*objects (aliases ofpm.*), so collections imported
from Insomnia v5 and Bruno run unchanged. Previously
insomnia.environment.set(...)threw "insomnia is not defined" — the error
was swallowed and the variable was silently never set, so a token created in a
setup request never reached later requests and folder Runs failed with 401
Empty Key! (issue #12). - Runner — persisted variables: the Collection Runner now honours its
"Keep variable values" setting. Environment / global variables written by
scripts during a run (pm.environment.set,insomnia.environment.set,
pm.globals.set) are saved back to the active environment / project globals
when the run finishes, so a token fetched once is reused — and refreshed in
one place — by every later request and by subsequent runs. Request-local
pm.variables.*stay ephemeral, matching Postman.
Tests: 10 new regression tests (fail-before / pass-after) — 6 Runner cases
(in-run token reuse, insomnia.environment.set, persistence to the database,
update-not-duplicate, side-effect-free when the setting is off, pm.globals.set)
and 4 script-alias cases — bringing the unit suite to 1706.
Testnizer v1.4.13
v1.4.13
macOS builds are now signed with an Apple Developer ID and notarized by
Apple — no more "unidentified developer" / "app is damaged" Gatekeeper block,
and in-app auto-update now works on macOS too.
- macOS — signed & notarized: every macOS build is now code-signed with a
Developer ID Application certificate and notarized through Apple's notary
service, with the hardened runtime enabled. Gatekeeper opens the app directly
— no right-click → Open workaround, and no "app is damaged and can't be
opened" error on Apple Silicon.spctlreports the app as
"Notarized Developer ID". - macOS — auto-update: because builds are now notarized, in-app automatic
updates work on macOS as well (previously macOS users were routed to a manual
download, issue #34). - Quality: the automated test layer grew to 679 UI E2E tests (163 spec
files, parallel-stable at 4 workers) and 1696 unit tests after a
manual-checklist coverage sweep — new journeys cover header autocomplete,
the resolved actual-request view, auth-type selection, mock CORS and proxy
recording, Insomnia export, PFX/PKCS12 certificates and suite-item rename.
No functional changes to requests, protocols or data — this release is about
trust (signing) and verification (tests). Windows signing is still in progress.
Testnizer v1.4.12
v1.4.12
Request lifecycle polish (open-on-create, unsaved-changes dialog, dirty dots
for every protocol), real Digest/NTLM authentication, the Runner resolving
variables in every body type, and four reliability fixes — from corrupt-database
startup recovery to lost Socket.IO events.
- Requests: a request created from the tree's right-click Add Request is
now opened and focused immediately, matching the global "+ New" dropdown
(issue #6). - Requests: the unsaved-changes blue dot now appears for all protocols —
SOAP, WebSocket, SSE, Socket.IO, gRPC and GraphQL — not just HTTP (issue #8). - Requests: closing a modified tab no longer silently discards your edits.
A three-way Save / Discard / Cancel dialog now guards the × button and the
context-menu Close for every protocol (issue #9). - Auth: Digest and NTLM authentication are now actually implemented.
Previously both silently fell back to Basic, so servers requiring
challenge-response auth always returned 401. - Runner:
{{variables}}inside form-data, x-www-form-urlencoded
and binary file path bodies are now resolved during a Run, mirroring Send.
Previously only raw body content was substituted, so form fields reached the
wire as literal{{...}}(issue #10). - Import: importing an Insomnia v5 collection now also imports its
bundled environments as real environment rows with variables — no more adding
every variable by hand after an import (issue #11). - Export: the environment export dialog now suggests a
*.testnizer_environment.jsonfile name instead of a Postman-branded one.
The file content stays Postman-schema compatible (issue #7). - SSE: setting a Last-Event-ID before connecting no longer breaks the
connection with a DOMException — custom headers are now merged correctly with
the reconnect bookkeeping of the SSE client. - Socket.IO: events pushed by the server immediately on connect (e.g. a
welcomeevent) are no longer lost. The engine now buffers early events until
the UI's event listener is attached, then replays them in order. - WebSocket: a saved WebSocket request now restores its URL and settings
when its tab is reopened. Previously the editor reverted to the default
wss://echo.websocket.orgeven though the request was saved correctly. - Reliability: if the local database file is corrupted, the app no longer
fails to launch with no window and no message. The corrupt file is backed up
next to the original, a fresh database is created, and a dialog explains what
happened and where the backup lives.
Tests: the UI E2E layer grew to 663 tests across 154 spec files
(parallel-stable at 4 workers, ~5 min), covering 255 of the 292 master-plan
scenarios — shell, secure storage, dialogs, DB corruption/WAL/migration, WSSE,
all six realtime protocols and the import/export matrix. The unit suite now
counts 1689 tests, including a schema-sync guard that keeps the test database
helper aligned with production migrations.
Testnizer v1.4.11
Release notes for v1.4.11 not yet published — see https://www.testnizer.com/docs/changelog/
Testnizer v1.4.10
Two follow-up fixes on top of v1.4.9 — the Home page now refreshes after
an import, and the folder Run action opens the run instead of the Tests
overview.
- Import: importing a project no longer requires an app restart to show
up — the Home page project list refreshes immediately after the import
completes. - Runner: right-click Run on a folder now opens the run scoped to
that folder's endpoints (the run config, ready to fire) instead of landing
on the generic Tests overview.