You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is deliberately a manual end-to-end pass. The affected flows cross CLI mode selection, local storage, Cloud APIs, browser infrastructure, generated adapters, file transfer, and tenant scoping; unit/contract coverage alone cannot establish the complete user experience.
Goals
Validate and record the behavior of:
plugin overrides
adapter source discovery and editing
adapter authoring through browser init and browser verify
site memory, fixtures, and response samples
mutable input-output file arguments
hosted marketplace availability reporting
local/hosted isolation and regression boundaries
If local and hosted behavior is intentionally different, verify that the difference is explicit and produces actionable CLI guidance.
First determine the intended hosted behavior of webcmd adapter override. If direct override is unsupported, it must fail with explicit guidance to browser init / private adapter authoring rather than falling through as an unknown hosted command.
Create or identify an editable private hosted adapter, then run:
source is downloaded from the private Cloud package
source put reinventories the package and reports registered commands
the edited command executes using the new source
system/default packages remain read-only
invalid keys such as ../bad/search and site/../bad are rejected without writing
source paths never escape the tenant package root
Also verify webcmd adapter path "$TEST_SITE_COMMAND" returns the stable hosted cache destination and does not misrepresent it as the authoritative Cloud storage path.
3. Site memory
Run the same logical workflow in both modes:
webcmd site note add "$TEST_SITE" --text "Manual parity note" --author "manual-tester"
webcmd site endpoint set"$TEST_SITE" search-api \
--url "https://example.com/api/search" \
--method GET \
--params '{"q":"test"}' \
--rows-path items \
--fields title,url \
--notes "Manual endpoint"
webcmd site field-map add "$TEST_SITE"'items[].title' \
--meaning "Result title" \
--source manual-test \
--force
webcmd site memory list "$TEST_SITE"
webcmd site memory show "$TEST_SITE" --kind notes
webcmd site memory show "$TEST_SITE" --kind endpoints
webcmd site memory show "$TEST_SITE" --kind field-map
Run once with HOME="$LOCAL_TEST_HOME", then with HOME="$HOSTED_TEST_HOME" WEBCMD_WORKSPACE="$WEBCMD_WORKSPACE_A".
Expected locally:
content persists under the local site-memory root
list reports notes.md, endpoints.json, and field-map.json
writes are atomic and stay inside the selected test home
Expected hosted:
the same CLI commands use Cloud APIs
no local site-memory files are created
data persists across CLI invocations
list/show output is equivalent where the backend semantics match
Mark the endpoint stale and confirm the resulting state:
webcmd site endpoint stale "$TEST_SITE" search-api
webcmd site memory show "$TEST_SITE" --kind endpoints
webcmd site fixture put "$TEST_SITE_COMMAND" /tmp/manual-fixture.json
webcmd site fixture get "$TEST_SITE_COMMAND" --output /tmp/manual-fixture-roundtrip.json
webcmd site sample add "$TEST_SITE_COMMAND" /tmp/manual-fixture.json
Expected:
fixture round-trips without corruption
response sample appears under fixtures/
malformed JSON is rejected
a fixture with rowCount.min > rowCount.max is rejected
a failed write leaves the previous valid fixture intact
Summary
Manually validate the WebCMD
0.7.1authoring and override workflows in both local and hosted modes after:This is deliberately a manual end-to-end pass. The affected flows cross CLI mode selection, local storage, Cloud APIs, browser infrastructure, generated adapters, file transfer, and tenant scoping; unit/contract coverage alone cannot establish the complete user experience.
Goals
Validate and record the behavior of:
browser initandbrowser verifyinput-outputfile argumentsIf local and hosted behavior is intentionally different, verify that the difference is explicit and produces actionable CLI guidance.
Prerequisites
0.7.1or the head of Prepare WebCMD 0.7.1 cloud/plugin parity #309input-outputargumentRecord before testing:
webcmd --version node --version which webcmd curl -sS "$WEBCMD_CLOUD_URL/version"Suggested placeholders:
Run
webcmd setupseparately with each test home and select the appropriate mode. Do not reuse one home between modes.Test matrix
path/source get/source putbrowser initbrowser verifyand all new flagsinput-outputfiles1. Mode boundaries
Local
Run basic commands without a Cloud API key:
Expected:
Hosted
After hosted setup:
Expected:
availabilityandexcludedCommands~/.webcmd/clisCreate a fake adapter inside the hosted test home and confirm it never appears in hosted
webcmd list.2. Plugin override and adapter source behavior
Use a real installed command such as
linkedin/searchfor local testing.Local override
Expected:
adapter pathprints an existing source pathadapter source getprints the same path, not copied source contentsNegative checks:
Expected:
webcmd adapter path <site>/<command>Reset the override and confirm the original command provenance and behavior return:
Hosted override/source editing
First determine the intended hosted behavior of
webcmd adapter override. If direct override is unsupported, it must fail with explicit guidance tobrowser init/ private adapter authoring rather than falling through as an unknown hosted command.Create or identify an editable private hosted adapter, then run:
Expected:
source putreinventories the package and reports registered commands../bad/searchandsite/../badare rejected without writingAlso verify
webcmd adapter path "$TEST_SITE_COMMAND"returns the stable hosted cache destination and does not misrepresent it as the authoritative Cloud storage path.3. Site memory
Run the same logical workflow in both modes:
Run once with
HOME="$LOCAL_TEST_HOME", then withHOME="$HOSTED_TEST_HOME" WEBCMD_WORKSPACE="$WEBCMD_WORKSPACE_A".Expected locally:
listreportsnotes.md,endpoints.json, andfield-map.jsonExpected hosted:
Mark the endpoint stale and confirm the resulting state:
Fixtures and samples
Create a valid fixture:
{ "args": {"q": "agent"}, "expect": { "columns": ["title", "url"], "notEmpty": ["title"], "rowCount": {"min": 1} } }In both modes:
Expected:
fixtures/rowCount.min > rowCount.maxis rejected4. Adapter authoring: browser init and verify
Run in both modes:
Expected locally:
adapter pathresolves the new fileExpected hosted:
adapter source getmaxTopLevelKeysreaches Cloud as numeric12, not string"12"Exercise every verify option in both modes:
--no-fixture--write-fixture--update-fixture--strict-memory--seed-args <value>--trace off|on|retain-on-failure--max-top-level-keys <positive integer>Negative checks:
5. Mutable
input-outputfilesUse
twitter/bookmarks --resume-fileortwitter/likes --resume-file. If the required account is unavailable, create a private test adapter declaring:Test both an existing and missing resume file in local and hosted modes.
Existing file expectations:
input-outputreference containing filename, content type, andinputIdMissing file expectations:
Regression checks:
HOSTED_FILE_OUTPUT_INVALID6. Hosted workspace and user isolation
Same user, different workspaces
Write a unique site-memory marker, private adapter edit, fixture, and execution artifact in workspace A. Attempt to read each from workspace B.
Expected:
Different users
Repeat using a second API key with the same workspace ID string.
Expected:
Artifact checks must cover upload, run, and download. Browser checks must cover profiles, persistent sessions, and live-view capabilities.
7. Hosted marketplace/catalog
Expected:
availabilityandexcludedCommandsInstall one hosted plugin and one mixed plugin. Confirm supported commands enter the tenant manifest and excluded commands do not.
8. Regression checks
0.7.1wording and exit code in both modessource putremains rejected rather than pretending to update sourceEvidence to attach
For every failure, record:
Acceptance criteria
browser initverified locally and hostedbrowser verifyflags verified locally and hosted