Conversation
Contributor
Package Changes Through ddd6d0bThere are 1 changes which include @interactors/core with minor Planned Package VersionsThe following package releases are the planned based on the context of changes in this pull request.
Add another change file through the GitHub UI by following this link. Read about change files or the docs at github.com/jbolda/covector |
Contributor
|
🚀 Deploy Preview Ready!
|
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.
Motivation
Playwright and other out-of-process browser runners cannot directly use Interactor constructors defined in the test process. They need a small, deterministic artifact boundary that preserves the Interactor API while placing its implementation in the browser.
Approach
Add a Deno-first
interactors compilecommand and programmatic API that discovers named Interactor and matcher exports through constructor metadata. It emits exactly three coordinated artifacts: a self-contained browser agent, a versioned and hashed JSON registry, and type-only declarations. Compilation validates browser dependencies, public definition names, reserved methods, and registry ambiguity before writing output.Define the command tree with Configliere, including its positional entrypoint, output-directory option, generated help, and diagnostics. The runtime bundle and declaration types are vendored from Configliere PR #27 at commit
7ea47ca0e3026356285f3f6f4b95f24d3a4ff7b7, with reproduction instructions and MIT attribution.Alternate Designs
Loading project source directly from every test runner would make runner configuration and dependency resolution part of the protocol. Generating a runner-specific JavaScript API was also considered, but a registry plus declarations lets each adapter provide its native transport without duplicating the public types.
Depending directly on an unpublished Configliere preview would make installation depend on a mutable experimental package. Vendoring the pinned build keeps this layer reproducible while still exercising the experimental typed command model.
Possible Drawbacks or Risks
Compilation evaluates the trusted entrypoint with the compiler process Deno permissions. The entrypoint should therefore contain definitions rather than application startup side effects. The executable is Deno-first; Node-native CLI packaging is intentionally outside this layer.
Configliere is experimental and vendored. Updating it requires regenerating both the runtime bundle and declaration sidecar from a deliberately selected commit.
TODOs and Open Questions
None within this layer of the stack.
Learning
ES module namespaces can themselves become thenables when an entrypoint exports a callable named
then; boxing the imported namespace avoids Promise assimilation while allowing the compiler to report a deliberate validation error.Configliere positional parameters and named options propose claims against the same token stream. Its earliest-claim precedence allows
--outdir build index.tswithout letting the positional argument stealbuildfrom the option.Screenshots
Not applicable; this change produces command-line artifacts.