thefrontside / interactors

Composable page objects for components
https://frontside.com/interactors
MIT License
27 stars 2 forks source link

Interactors CLI #271

Open cowboyd opened 1 month ago

cowboyd commented 1 month ago

Discussed in https://github.com/thefrontside/interactors/discussions/270

Originally posted by **cowboyd** July 12, 2024 I wanted to get the ball rolling on a zero-dependency `interactors` cli that can build a set of interactors into an agent that can be injected into any browsing context. We need to lay out @wKich has implemented a [working prototype](#264) and so this will focus on what is needed to make that into a delightful product. This list of questions is by no means exhaustive. ## Versioning How will `interactor` CLI be versioned? Will it share a version with interactors core? Or should there be some slippage allowed. For example, should you be able to build with different versions of `@interactors/html` ? It seems to me that if a patch release for interactors comes out, then you shouldn't have to install a completely new version of the CLI just in order to avail yourself of it. ## Distribution Channels Once we have the binary, how will we install it? Being able to codesign would be nice, but I think we can circumvent that by using curl / pkgx However, we still need a NPM package to be able to use the binary from a javascript project. In the same way that there is a JS api for `esbuild`, but rebuild itself is a platform executable. ## Plugins We need to describe a round trip scenario of how the interactors CLI will be used in conjunction with some javascript to show how this can be used with Playwright and vitest browser. The goal would be that we can make this happen with a few moving parts as possible. For example `@interactors/vitest` would use our npm package to interface with the CLI, but then what? How would it integrate the creation and loading of interactors into the runtime? ## LSP Integration When using interactors with the CLI, they will not be built, linted, formatted etc by the rest of the project. They might exist completely outside the project and have different settings like the fact that the `Dom` lib will be there, not `Node`. How will it look when the user opens one of their Interactor files with VSCode? How will it get the types for `@interactors/html`? How do we make this as smooth as possible?
taras commented 1 month ago

@cowboyd, how do you think we should answer these questions? Should we just itemize them?