Skip to content

axafrance/webengine-cli

v0.2.0MIT

Use the WebEngine CLI and local daemon for persistent browser automation without MCP.

WebEngine CLI plugin

This plugin provides agent skills for the webengine .NET tool and its local daemon. It deliberately contains no MCP configuration, for environments where MCP servers are not permitted.

The skill checks for the webengine command on first use. If it is missing, the agent installs the stable NuGet package. When no stable package is available, it retries with --prerelease. Installation and SDK, permission, or network errors are reported instead of being hidden by an unconditional fallback.

webengine --version

After bootstrap, use one persistent JSON-lines shell for a workflow:

webengine --json

Send one command per input line and read one JSON response line before sending the next command. Use webengine -c "<command>" only when the host cannot keep a process handle. The daemon owns browser sessions and the shell owns one reusable named-pipe connection. Command failures are returned as structured errors; they do not terminate the shell.

The default browser session is visible, which is useful when observing a workflow, building tests, or debugging locators:

web session open
web session list
web navigate --session <id> --url https://example.test
web wait --session <id> --text "Ready"
web inspect --session <id>
web click --session <id> --ref ref=3
web type --session <id> --selector '#search' --text 'example'
web check --session <id> --id agreeTerms
web uncheck --session <id> --name marketing
web select --session <id> --name country --text France
web select --session <id> --selector '#country' --text 'France'
web actions --session <id>
web session close --session <id>

Use --headless for CI/CD, cloud agents without a desktop display, or when the user explicitly asks for a background run. Do not silently make an observation or test-authoring workflow headless.

Use web wait for SPA routes and asynchronous page states instead of inserting arbitrary sleeps:

web wait --session <id> --url /userstory/TQSI-3457
web wait --session <id> --text "Test Cases"
web wait --session <id> --selector "[role='alert']"

For web type, use exactly one text source: --text, --text-file, or --stdin. File input is UTF-8 and file/stdin content is preserved as one value, including CR/LF characters. Use web key --key Enter (or another supported named key) when a form action requires an intentional key press instead of relying on newline characters in a single-line input. File and stdin input avoid command-line exposure but do not bypass the action log; only recognized password fields are redacted. In the persistent shell, use --text-file for multiline values because stdin is the command channel. Reserve --stdin for one-shot direct commands.

Mobile/Appium commands are not yet exposed by this plugin. Never place passwords, tokens, encryption keys, or real personal data in command-line arguments, and stop before irreversible submissions.