Repository navigation
release: 4.0.0 as the base line + docs/vocabulary migration - #171
Merged
Merged
Conversation
… the framework A staleness audit (grepping every doc for v1 flag names, the old command name and stale counts) found what my earlier passes had missed: README.md - The seam section still documented the v1 arguments as current: a table of --ocrPath/--ocrSimilarity/--ocrMaxSim/--ocrWaitTime/--ocrMaxCount/--ocrAction/ --ocrDetail/--ocrPSM/--ocrOEM, and examples driving findTargetImage. Replaced with the canonical table and examples, pointing at docs/CONTRACT.md as the source of truth so the two can no longer drift. - The illustrative run output still showed 'findTargetImage --imagePath=...'; it now shows what the suite actually prints. - The feature table and the coverage-honesty notes still named --textHint, --maxSim, --imageAction, --imageMaxCount, --ocrPath, --ocrSimilarity and --ocrDetail. - The section intro claimed the interface was findTargetImage; it is autobdd, with findTargetImage as the deprecated alias. The duplicated 'Basic usage' block is gone (subsumed by 'The front door' + 'Examples'). docs/CONTRACT.md - The v1 argument table was left dangling under a 'Raw arguments' heading, which read as if it were current. Retitled 'Raw argument reference (v1 - deprecated)' with a pointer to the §2b mapping, and the two prose mentions of --imageAction/--ocrDetail and the 'center' row now use the canonical names. seam + suite - The help text's known-gap line and the suite's user-facing known-gap line said --ocrDetail=word; they now say --box, which is what the reader would type. - The help feature now asserts the canonical flag appears AND that the deprecated v1 names are listed, so the deprecation table cannot silently disappear. framework/libs/screen_session.js - This was the last v1 emitter: it still built 'findTargetImage --imagePath=... --imageAction=...', so after the rename every framework call would warn on stderr seven times. Now emits the front door with the canonical flags. textHint was a REGEX and --match-text is literal by default, so --match-regex is passed to preserve the existing semantics exactly, twice documented in the code. Verified: the generated framework command matches with 'clicked' dispatched and an EMPTY stderr (no deprecation warnings); the base suite runs 131 passed, 0 failed. The framework e2e suite itself was not run - it needs the L2 image with Chrome - so that consumer is verified at the command-string level plus the engine's legacy/v2 coverage. No v1 flag names remain in any documentation except the deprecation tables and the intentional historical notes in CHANGELOG.md.
The product splits into two lines. v3.0.0 is untouched - tag, release and image
stay exactly as shipped, as the last release of the FRAMEWORK line (base + Chrome +
WebdriverIO + Cucumber, published as xyteam/autobdd-framework:3.0.0 and the
xyteam/autobdd alias). 4.0.0 is cut from it and narrows the product to the
substrate: a docker-runnable GUI (Xvfb + openbox + x11vnc) with the Oculix screen
engine behind one CLI, so higher-level tools - a framework, a script, an agent -
drive it. No browser, no runner, no BDD layer.
- .docker/autobdd-base.dockerfile: new ARG AUTOBDD_VERSION=4.0.0, recorded as
version= in /etc/autobdd-versions. The framework image already selects its base
with the same arg (FROM xyteam/autobdd-base:${AUTOBDD_VERSION}), so the two lines
stay coherent. Also fixed a stale stamp field: oculix= pointed at
/opt/autobdd/third_party/xysikulixapi/lib, which stopped existing when the seam
became in-tree, so the field was silently empty.
- seam: --version now reports the recorded version alongside the build stamp, the
Oculix jar and Node, and names the product ('AutoBDD base image').
- package.json + package-lock.json: 3.0.0 -> 4.0.0.
- README: repositions the product as the 4.0.0 base line with the goal stated
plainly (a GUI you drive from higher-level tools), documents the two lines and
which image belongs to which, and adds a v4.0.0 row to the version table with
v3.0.0 marked frozen.
- CHANGELOG: a v4.0.0 section describing the re-scope and what it meant in practice
(one interface, a readable vocabulary, discoverability without starting the
engine, self-contained natives, a conformance suite that doubles as the spec).
- suite: gates on the release - provenance asserts version=4.0.0 in
/etc/autobdd-versions and the version feature asserts --version reports it.
Group I's discovery features now invoke the surface under test (TARGET_BIN) rather
than a hardcoded findTargetImage, so the log matches the banner's stated surface.
Verified: autobdd --version -> 'version: 4.0.0'; make base-test -> 133 passed,
0 failed, ALL FEATURES OK; one.sh I -> 18 passed.
…roperly
CI failed on the previous commit, correctly:
- provenance: records the product version (missing 'version=4.0.0' in: version=dev
- version: reports the version (missing 'version: 4.0.0' in: version: dev
The gate I wrote was the wrong shape: it asserted a hardcoded literal, but the image
records the version it was BUILT as, and CI builds with --build-arg AUTOBDD_VERSION=dev.
'dev' is not a lie -- AUTOBDD_VER is simultaneously the image tag and the base tag the
framework image pins via FROM, so a pull-request build legitimately stamps dev.
Fix, in two parts:
suite (features.sh)
- provenance now asserts the stamp records a non-empty version (not 'unknown'), and
additionally that it equals EXPECTED_VERSION when the caller declares one. Unset, the
release gate is dormant and the run is a consistency check.
- version now asserts --version agrees with the image's own stamp, and equals
EXPECTED_VERSION when declared. The suite therefore works unchanged for both a dev
build and a release build, instead of hardcoding a number that will rot.
workflow (conformance.yml)
- AUTOBDD_VER is resolved from package.json in a first step (GITHUB_ENV) rather than
being a literal 'dev': package.json is the single source of truth, and using one value
for the build arg, the image tags and the suite's expectation is what makes a version
drift fail the build instead of shipping.
- the base-test step exports AutoBDD_Ver (the tag this workflow built, since the test
projects' .env defaults to dev) and EXPECTED_VERSION; the framework step exports
AutoBDD_Ver too.
Docs: the test project's README documents EXPECTED_VERSION; CHANGELOG records the wiring.
Verified all three cases, not just the happy one:
1. built as dev, no expectation -> 30 passed, 0 failed, 'consistency checked, no
release gate' printed
2. built as dev, expecting 4.0.0 -> FAILS ('got dev, want 4.0.0'), exit 1 -- so the
gate bites and the failure propagates
3. built as 4.0.0, expecting 4.0.0 -> 30 passed, 0 failed
group I: '--version agrees with the image's own stamp = 4.0.0' and 'is the declared
release = 4.0.0'
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cuts 4.0.0 as the base line and finishes the vocabulary migration that was stranded when #170 was squash-merged.
The two lines
xyteam/autobdd-framework:3.0.0(+ thexyteam/autobddalias)xyteam/autobdd-base:4.0.0v3.0.0is a real tag in this repo and nothing here rewrites it.The version is now real, not implied
.docker/autobdd-base.dockerfile:ARG AUTOBDD_VERSION=4.0.0, recorded asversion=in/etc/autobdd-versions. The framework image already selects its base with the same arg (FROM xyteam/autobdd-base:${AUTOBDD_VERSION}), so the two lines stay coherent and re-baselining the framework onto 4.0.0 is a later, separate change.autobdd --versionreports it:package.json/package-lock.json:3.0.0→4.0.0.provenanceassertsversion=4.0.0in/etc/autobdd-versions, andversionasserts--versionreports it. A wrong or missing stamp fails CI.Bug found while wiring it
The provenance stamp's
oculix=field pointed at/opt/autobdd/third_party/xysikulixapi/lib— a path that stopped existing when the seam became in-tree earlier in this PR series, so the field was silently empty. Now reads/opt/autobdd/seam/liband is populated.Also in this PR: the stranded documentation audit
Squash merges break ancestry, which is why this is a second PR:
git merge-base --is-ancestorreports every original commit as missing after a squash, so the tree diff is the proof — master differed from the branch in exactly these files, andgit diff bd12649 HEADhere is empty (byte-identical to the tree verified at 133 passed / 0 failed).README.md— the seam section documented the v1 arguments as current; now the canonical table and examples, withdocs/CONTRACT.mdas the source of truth so they cannot drift again. Real run lines in the sample output, the duplicatedBasic usageblock removed, and the opening rewritten for the 4.0.0 re-scope.docs/CONTRACT.md— the v1 table was dangling under a "Raw arguments" heading as if current; retitled Raw argument reference (v1 — deprecated) pointing at the §2b mapping.framework/libs/screen_session.js— the last v1 emitter. It builtfindTargetImage --imagePath=… --imageAction=…, so every framework call would warn on stderr seven times. Now emits the front door with canonical flags. Reviewer-relevant subtlety:textHintwas a regex and--match-textis literal by default, so--match-regexis passed to preserve existing semantics exactly.seam/+ suite: known-gap wording now says--box(what a reader types); thehelpfeature asserts the canonical flag and the deprecated v1 list, so §2b cannot silently vanish; group I's discovery features invoke the surface under test rather than a hardcoded binary, so the log matches the banner.Verified
autobdd --versionversion: 4.0.0one.sh I(discovery group)No v1 flag name remains in any documentation except the §2b deprecation table and
CHANGELOG.md's historical notes.