Skip to content

Browser coverage for the polyglot fan-out in the registry UI - #5

Merged
ORESoftware merged 1 commit into
mainfrom
zed-pkg/polyglot-browser-coverage
Aug 2, 2026
Merged

Browser coverage for the polyglot fan-out in the registry UI#5
ORESoftware merged 1 commit into
mainfrom
zed-pkg/polyglot-browser-coverage

Conversation

@ORESoftware

Copy link
Copy Markdown
Contributor

The zed-cli polyglot workflow proves the artifacts are well-formed — isolated, test-free, natively publishable. It never puts them in a registry a human navigates. This covers the other half.

What it asserts

One zed publish of a four-language repository, then through a real browser:

  • each language is a separate page with an install snippet naming that package — the decisive property from doc 17 (a Go consumer downloads Go bytes, and does not reach into a shared page)
  • the whole-repository artifact coexists with the slices ([targets.repository] dir = \".\", the goal-2 surface)
  • the polyglot source name is deliberately NOT a packageacme-clients 404s while acme-clients-<target> resolve. Without this, consumers could depend on a name whose contents are undefined.
  • one version, one provenance tag across every slice (lockstep versioning is the point of a single-manifest polyglot repo)
  • slices are distinct artifacts, not aliases — asserted on sha256, because identical digests would mean the registry is serving one fat tarball under several names, which is exactly the design doc 17 rejected
  • each slice is independently resolvable over the API, so a UI regression stays distinguishable from a registry regression

Covered on Playwright and mirrored on Puppeteer, matching this repo's multi-engine convention for the MASH/HTMX UI.

Verification

npm run typecheck passes. Docker was unavailable in the authoring environment, so the live stack was not exercised locally; the fixture manifest and the exact package set every assertion depends on were verified against a real zed publish into a file:// registry:

published acme/acme-clients-golang@1.1.2
published acme/acme-clients-nodejs@1.1.2
published acme/acme-clients-python@1.1.2
published acme/acme-clients-repository@1.1.2
published acme/acme-clients-rust@1.1.2
unique digests: 5 / 5

acme-clients itself is absent, confirming the 404 assertion. CI runs the suites against the live stack.

Gap this coverage surfaces

There is nothing in the UI to assert about a package's language. package.language / package.ecosystem are declared in the manifest and enforced by the install guard, but they never reach the registry API DTOs (PackageMetadata, PackageSummary) or the web UI. Browsing the registry, acme-clients-java is indistinguishable from any unrelated package, and the language guard can only act after download rather than being advertised up front. Worth a follow-up.

🤖 Generated with Claude Code

The zed-cli polyglot workflow proves the artifacts are well-formed -- isolated,
test-free, natively publishable -- but never puts them in a registry a human
navigates. Nothing covered the other half: that one publish of a multi-language
repo leaves the registry in a state where a consumer of any single language can
find and install exactly their package.
Adds publishPolyglotFixture()/ensurePolyglotSeeded() and a four-language seed
whose slices each carry their ecosystem's own native manifest, then asserts
through a real browser that each language is a separate page with its own
install snippet, that the whole-repository target coexists with the slices,
that the polyglot source name is deliberately NOT a package, that every slice
shares one version and provenance tag, and that the slices are distinct
artifacts rather than aliases of one fat tarball.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ORESoftware
ORESoftware merged commit 76a06a9 into mainAug 2, 2026
1 of 2 checks passed
@linear-code

Copy link
Copy Markdown

DEN-1381

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ORESoftware@alexddl329