1.7 KiB
Production JAR Gherkin acceptance
WJ-020 executes through the productionAcceptance Gradle JavaExec task, after test and bootJar. It is deliberately outside JUnit discovery, so packaging can follow the JVM tests without a dependency cycle. The main pipeline runs this task after the frontend checks and before creating the release manifest or invoking deployment.
The Given step reads the JVM XML results, requires executed tests and rejects failures/errors. The When step runs tools/smoke-jvm against the packaged JAR. That script starts a real Java process in a temporary directory with a fresh database and a minimal environment, checks HTTP readiness and PWA resources, then checks the packaged offline administrator-recovery command. The Gherkin assertions validate process, readiness and notification isolation. Its JSON report is build/reports/cucumber/production.json; the existing smoke JSON remains available to release packaging.
The smoke explicitly disables push and replaces sendmail with a local executable which records any invocation and fails. A recorded invocation fails the smoke; no production mail transport or production data is available to the process.
This proves the isolated production JAR smoke, not rollback, Hostsharing restore or real device push acceptance. Those retain their own open scenarios.
Validation: the complete local pipeline on 0.1.66-SNAPSHOT passed, including all five WJ-020 steps, the production/admin-recovery smoke, 193 executed JVM tests, 68 operations tests and 17 frontend tests. There were 41 filtered JVM reports. The second Gradle invocation reused the successful JVM test task. The completion push increments the version to 0.1.67-SNAPSHOT.