Add AI Test Authoring commands and run kind - #1105
Open
slvinittomar wants to merge 6 commits into
Open
slvinittomar wants to merge 6 commits into
slvinittomar wants to merge 6 commits into
Conversation
The build job passed -X ldflags for github.com/saucelabs/saucectl/cli/version.*, a package that does not exist. Go ignores -X for symbols it cannot find, so CI binaries were never stamped. Point it at internal/version, as .goreleaser.yml does. The schema target used pushd/popd, which are bash builtins and fail under make's /bin/sh. A plain cd in the recipe's subshell is equivalent. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
region.Options() builds the list from sauceRegionMetas so help text and error messages cannot fall behind the table, which is what happened when asia-south-2 was added. None and the internal staging region are not advertised. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Every group advertised "us-west-1, eu-central-1", omitting us-east-4 and asia-south-2. Each now builds the list with region.Options(). Note that internal/cmd/run/run.go carries the same change, but it lands with the authoring dispatch it also contains. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The spec lives in a separate PR, so the pointer would dangle here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Sep 17, 2026
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.
Summary
Adds Sauce Labs AI Test Authoring to saucectl, and corrects the region list the CLI advertises.
Supersedes #1100, which carried the same feature alongside the Spec Kit toolchain and the specification documents; those are now in #1104. Rebuilt on current
mainas six commits, each of which builds and tests on its own.saucectl authoring— new command group31 commands over the AI Authoring API, every one supporting
-o text|json:testcasesgenerate(with--wait,--intent-file,--target/--target-json,--max-steps,--generation-timeout),generate-statusto reattach to a running task,list,get(--show-steps,--revision),rename,delete,run,list-runs,get-run,list-tags,codeandlist-code-targetsto export a case as Playwright/Selenium/WebdriverIO sourcetestsuitescreate,list,get,update(incremental--add-test-case/--remove-test-case),run,deleteschedulescreate,list,get,update(partial, with--unset),enable,disable,deletevariablescreate(--value-from-env,--value-from-file, masked prompt),list,get,update,delete, at org/team/suite/case scopedownload-artifactBehaviour worth knowing:
Ctrl-Cstops waiting locally while the task continues on Sauce Labs, printing the command to reattach.--yesbypasses it; a non-interactive run without--yesrefuses rather than hangs.variables getshows<secret>, and the JSON output omits the value entirely.--limit/--skip/--all, and--limit 0returns a count only.--expected-last-updatetoken and fail if the variable changed since it was read.kind: authoring— new run configurationAuthored suites now run through
saucectl run, so they get the existing reporters, artifact download, concurrency limit and CI exit codes:--asyncstarts the runs and returns;--dry-runresolves and prints what would run without starting anything.defaults.timeoutstops waiting and stops the jobs on Sauce Labs, so a timed-out run no longer leaves a VM busy.Ctrl-Cdoes the same.retries,env,launchOrder,--fail-fast,--live-logs,showConsoleLog, metadata tags) produce a warning each and are ignored, never silently dropped.testSuiteNamematch exactly and case-sensitively; an ambiguous name reports the candidate IDs.Region help, in every command group
--regionhelp and the invalid-region error advertisedus-west-1, eu-central-1, omittingus-east-4andasia-south-2. Both are now built from the region table itself, soauthoring,storage,builds,devices,jobs,artifacts,apit,initandrunlist every supported region and cannot drift again.Two repository fixes
-Xagainstcli/version.*, a package that does not exist, so released binaries reported no version. It now targetsinternal/version, matching.goreleaser.yml.make schemausedpushd/popd, which are bash builtins and fail under make's/bin/sh. It now usescd.How the client handles the live service
Several observed behaviours contradict the published API specification; each is handled here and carries a code comment:
GET /testcases/{id}/runsignores its path parametertestCaseIdalways sent as a query parameter; without it the whole org's runs come backsuccessappears ~19 s in, before the Sauce job completes*bool, run resource polled every 5 sscTunnelName: "", which fails runs withSC_TUNNEL_NOT_FOUNDnullwhen no tunnel is configuredjunit.xmlreporters.junitis not a set of empty containerserror.data[]with the actionable messagenullclears--unsetsendsnull;UTCis rejected, so--timezoneis requiredTesting
make lint,make test,make buildand a Windows cross-build pass. The schema bundle is byte-identical to a fresh regeneration, verified on Node 24 to match the pinned CI runtime.Notes for reviewers
config.ValidateSchemavalidates against the bundle onmain, sokind: authoringprints an advisory schema error locally until this merges. It fails soft, like every other new kind before it.storage deletebecause these are shared org-level assets with no undo.List[T],ListAll) are new to this repository.saucectl runduring the entitlement check reports a raw transport error instead ofRun was not started: interrupted., because that message lives inRunner.logResult, which an interrupt at the gate never reaches.saucelabs/sauce-docsand is not yet drafted.🤖 Generated with Claude Code