Repository navigation
test(plugins): add an exhaustive registry fixture - #3236
Conversation
🦋 Changeset detectedLatest commit: 25c8081 The changes in this PR will be included in the next version bump. This PR includes changesets to release 13 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Scope checkThis PR changes 3,807 lines across 25 files. Large PRs are harder to review and more likely to be closed without review. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-test
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/registry-loader
@emdash-cms/registry-moderation
@emdash-cms/registry-verification
@emdash-cms/sandbox-workerd
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
docs | 91bc1ef | Sep 21 2026, 12:26 PM |
There was a problem hiding this comment.
Reviewed the full diff for PR #3236. This is a large, well-scoped test-only change that makes the marketplace fixture exhaustive, closes a core manifest-schema gap so content:publish, content:restore, and content:policy declared-access facets validate, and adds registry conformance tests, a plugin-test inventory suite, and a Playwright Block Kit spec.
I verified the new fixture’s capabilities, hooks, route permissions, and Block Kit declarations against the production allowlists in @emdash-cms/plugin-types, @emdash-cms/auth, and @emdash-cms/blocks. The core schema fix in packages/core/src/plugins/manifest-schema.ts is mirrored correctly in @emdash-cms/plugin-types and covered by the new registry-install conformance test. The wrapped/sandboxed runtime receives the new content-create callback wiring, and the plugin-test host now exposes the R2 media binding used by the updated fixture.
No blocking logic bugs, security issues, or backward-incompatible changes were found. One cross-target test-matrix gap is noted below.
Findings
-
[suggestion]
e2e/fixture-cloudflare/astro.config.mjs:37The Cloudflare e2e fixture does not load
@emdash-cms/plugin-marketplace-test, and itssandboxRunnerresolves to a noop whenever the marketplace URL is set (line 39). The newmarketplace-test-block-kit.spec.tswill 404 or fail underEMDASH_E2E_TARGET=cloudflarebecause/plugins/marketplace-test/*and the sandboxed plugin routes are unavailable.plugins: [colorPlugin()], marketplace: marketplaceUrl, sandboxRunner: marketplaceUrl ? "./noop-sandbox.mjs" : undefined,Consider either:
- Adding
marketplaceTestPluginto the Cloudflare fixture (mirroringe2e/fixture/astro.config.mjs), or - Guarding
marketplace-test-block-kit.spec.tswithtest.skip(process.env.EMDASH_E2E_TARGET === "cloudflare", ...)so the spec only runs on the Node target that actually installs the fixture plugin.
- Adding
|
/accept-baselines |
|
✅ Baselines accepted by @ascorbic and committed to this PR. |
…ace-fixture # Conflicts: # e2e/tests/visual-regression.spec.ts-snapshots/content-editor-ltr-chromium-linux.png # e2e/tests/visual-regression.spec.ts-snapshots/content-editor-rtl-chromium-linux.png
Overlapping PRsThis PR modifies files that are also changed by other open PRs:
This may cause merge conflicts or duplicated work. A maintainer will coordinate. |
|
/accept-baselines |
|
✅ Baselines accepted by @ascorbic and committed to this PR. |
What does this PR do?
Adds a deliberately exhaustive registry fixture and uses it across the real plugin build, registry, installation, sandbox, MCP, and admin boundaries. The fixture keeps the historical package and plugin slug
marketplace-testfor compatibility, but its purpose and new test terminology are registry-specific.PluginContextmethods.@emdash-cms/plugin-test, including production Worker Loader bridges and a disposable R2 bucket for media operations.0.2.0; the generated registry manifest reports the same version.The coverage exposed and fixes two production compatibility bugs:
content.publish,content.restore, andcontent.policydeclarations, allowing those registry plugins to reach the normal installation consent checks.The release notes are split by concern:
.changeset/shy-cats-test-media.mdcovers the plugin test harness and registry manifest validation..changeset/calm-tools-build.mdcovers the independent plugin CLI MCP build fix.Related issue: none.
Type of change
Checklist
pnpm typecheckpassespnpm lintpassespnpm testpasses (or targeted tests for my change)pnpm formathas been runmessages.pochanges except in translation PRs — a workflow extracts catalogs on merge tomain. N/A: this changes an internal registry fixture whose manifest and Block Kit labels are static plugin metadata, not admin source strings.AI-generated code disclosure
gpt-5.6-sol)Screenshots / test output
Before, the historical fixture exposed a small dashboard and only a few primitive checks:
After, the registry fixture exposes its declared authority and diagnostics in the rendered Arabic RTL admin:
Validated after merging
origin/main(32f7d2011) into exact head25c8081b9:pnpm formatpnpm buildpnpm lint,pnpm lint:quick, and zero type-aware lint JSON diagnosticspnpm typecheckpnpm changeset status --since=origin/main0.2.0