
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
@forestrie/canopy-e2e-kit
Advanced tools
Reusable Playwright e2e helpers for canopy system tests (ARC-0024 Layer 1)
Reusable Playwright helpers extracted from @canopy/api-e2e for cross-repo
system tests (ARC-0024).
| Suite | Scope | Univocity | CI entry |
|---|---|---|---|
| bootstrap | canopy's own genesis → grants → first entry | Ephemeral, provisioned per run (deploy provision e2e) | canopy tests-system.yml |
| lane | Cross-repo lane integration | Per-run deploy from the lane manifest's release pin | forestrie/system-testing |
Suites are named for what they exercise; the promotion phase that runs them
(pr, main, qualify, promote, nightly) is the other axis. The numbered
T0–T4 tiers are retired — one token could not carry both, so "T3" meant the lane
suite and the qualification gate interchangeably (FOR-531).
Both suites provision their own instances. There is no pinned-contract mode in
canopy: a supplied address set *_ALLOW_BOOTSTRAP=false, which skipped every
bootstrap spec.
Cross-repo lane specs (forest genesis, Mode B/C registration, BYOK) run in
forestrie/system-testing — not tests-system.yml.
hasCoordinatorApiE2eEnv, assertCoordinatorApiE2eEnv)mintOnboardTokenE2e)pollQueryRegistrationUntilReceiptRedirect, pollResolveReceiptUntil200, sequencingBackoff)univocityProvisionSkipReason, fetchOnChainBootstrapConfig, bootstrap contract helpers)ensureForestGenesisEs256E2e, ensureForestGenesisKs256E2e, genesisBodyEs256)E2E_BOOTSTRAP_VARIANTS, describeForEachBootstrapVariant)mintBootstrapGrant, signChildGrantUnderRoot, ES256 PEM + KS256 wallet signers)completeGrantRegistrationThroughReceipt, completeBootstrapGrantWithReceipt, buildCompletedGrantBase64)setupBootstrapCoordinatorDelegation, pollBootstrapRegistrationThroughReceipt)assertBootstrapMintE2eEnv, assertBootstrapReceiptE2eEnv, assertSystemE2eEnv)Grant, transparent-statement header labels) and COSE encoding vendored under src/wire/ and src/encoding/startModeCWebhookIngress, pollModeCWebhookSealThroughReceipt, modeCWebhookSealSkipReason)exchangeWalletChallengeSessionE2e)custodianApiV1BaseUrl, postCustodianApiSignPayload, custody grant builders)postEntriesExpectAccepted, etc.)mode-c-webhook-receiver (in-process webhook receiver for coordinator e2e)@forestrie/receipt-verify
(plan-0030, FOR-286):
verifyGrantReceiptOffline, parseReceipt, decodeTrustRootFromGenesis,
plus types VerifyGrantReceiptOfflineInput, ReceiptVerifyResult, ReceiptVerifyStage@forestrie/grant-builder / @forestrie/scrapi-client, which
exist only on npmjs, so a GitHub Packages release would be uninstallable
for consumers whose @forestrie scope maps to GitHub Packages@forestrie/receipt-verify 0.3.0 (canonical Grant from
@forestrie/grant-builder, FOR-353)endorsed-session-leaf.ts: passkeySessionCustody (synthetic passkey root
buildSyntheticSessionKeyEndorsement,
signEndorsedSessionStatement (leaf signed by the session key carrying the
endorsement at -65801, ADR-0065 §2)signStandingAdvanceDelegation signs the standing entry with the WebAuthn
two-gesture material when BootstrapSigningContext.passkeyRootKeyPair is set
(certificate envelope + onchainAuthenticatorData / onchainClientDataJSON)establishStandingDelegation exported; verifyEndorsedLeaf re-exportedPublished to public npmjs.org (0.5.0+; 0.4.x and earlier were on GitHub Packages) — no registry auth needed:
pnpm add -D @forestrie/canopy-e2e-kit
Workspace consumers: "@forestrie/canopy-e2e-kit": "workspace:*".
Peer dependencies: @playwright/test, viem (wallet challenge session).
pnpm --filter @forestrie/canopy-e2e-kit build
pnpm --filter @forestrie/canopy-e2e-kit test
Publish tag (npmjs, trusted publishing / OIDC): canopy-e2e-kit-v*.
Workflow: .github/workflows/publish-canopy-e2e-kit.yml (mirrors
publish-delegation-cose.yml).
Published dependencies (all npmjs): @forestrie/delegation-cose,
@forestrie/encoding, @forestrie/grant-builder, @forestrie/scrapi-client
and @forestrie/receipt-verify — workspace:*/workspace:^ in monorepo,
rewritten to concrete versions on pack.
Kit vendors a minimal subset of @forestrie/encoding and grant wire types under
src/encoding/ and src/wire/. When changing canopy-api grant or COSE paths,
update the kit copy in the same PR and bump the kit semver slice.
| Kit path | Canonical source |
|---|---|
src/encoding/* | packages/shared/encoding/src/ |
src/wire/grant/* | packages/apps/canopy-api/src/grant/ |
src/wire/forest/* | packages/apps/canopy-api/src/forest/ |
src/wire/cose/* | packages/apps/canopy-api/src/cose/ |
Drift guard: test/merge-cose-sign1-unprotected.test.ts mirrors
@forestrie/encoding golden vectors for mergeUnprotectedIntoCoseSign1.
Manifest placeholder: KS256_UNIVOCITY_MANIFEST_PLACEHOLDER in
system-test-manifest-constants.ts — keep aligned with
system-testing/manifests/lane-a.example.yaml.
Moved helpers live in this package; packages/tests/canopy-api/tests/utils/*.ts
files re-export from @forestrie/canopy-e2e-kit so Playwright specs keep
@e2e-utils/* import paths unchanged.
FAQs
Reusable Playwright e2e helpers for canopy system tests (ARC-0024 Layer 1)
The npm package @forestrie/canopy-e2e-kit receives a total of 297 weekly downloads. As such, @forestrie/canopy-e2e-kit popularity was classified as not popular.
We found that @forestrie/canopy-e2e-kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.