Create named targets in a project, choose a Default environment, and sign in to your app.
An environment is a named target within a project: the URL to test plus what a run needs there, such as sign-in settings and custom variables. Names are unique per project. Every run uses exactly one environment: the project’s Default (DEFAULT yes in project env list) unless you pass --env <name>. An unknown name fails and lists available names; it never falls back to Default.An environment whose origin is a loopback address opens a tunnel automatically; see Testing Local Apps.
create needs --name and exactly one of --url or --local. --url takes a public HTTP(S) URL or a loopback origin. Prefer --password-file; passwords are write-only.
With no stored account, --username and --password-file go together (exit 5 otherwise).
Repeatable --var KEY=VALUE sets custom variables for frontend runs; update merges by key. Values are shown in plain text, so do not store secrets in them. Keys start with a letter or underscore and use letters, digits, and underscores (up to 64 characters); up to 50 variables, 4096 bytes per value.
--clear-credentials removes the stored username and password and turns off account sign-in; it cannot be combined with --username, --password, or --password-file.
Delete is soft: the name can be reused and history keeps the old name. Change the Default before deleting it.
Sign-in is a property of the environment. Read or change it with project sign-in (without --env, the Default environment):
testsprite project sign-in get <project-id> --env stagingtestsprite project sign-in set <project-id> --env staging --mode account \ --username tester@example.com --password-file ./test-password.txt
Mode
Aliases
What runs do
public
none
Test the app without signing in.
account
credentials
Sign in with the stored test-account username and password.
otp
Sign in with one-time codes sent to an inbox or phone number TestSprite provisions. Chosen at creation (project env create --sign-in otp, channels with --otp-channel email,sms); to change it, create a new environment and set it as Default.
manual
sso
A person logs in once in a live browser and runs reuse that session.
For manual, log in once in the Portal under Project, Settings, Environments, the environment name, Log in. The CLI warns when no session is captured. --session-ttl takes 1 to 2592000 seconds, or never. Selecting SSO needs a feature flag on your account; without it the command exits 13 (FEATURE_GATED).
SSO and OTP environments keep no username or password: project env update --username on one exits 6.
Loopback environments support only public and account. A temporary environment has no settable sign-in.
Free and Starter allow one environment per project (the Default counts), Standard 3, Pro and Enterprise unlimited; temporary environments do not count. Going over fails with exit 13 (FEATURE_GATED). On one environment, change the Default’s URL with project update <project-id> --url <url>, or use --target-url for a single run.
testsprite test run <test-id> --env staging --waittestsprite test rerun <test-id> --env staging --waittestsprite test create --plan-from plan.json --run --env staging --wait
test run --all, test create, and test create-batch take --env too; without it they use Default.A backend test picks up an environment’s URL only if its code uses the environment URL placeholder; a URL written into the code stays as written. Check backend targets before using --env as a staging gate.
--target-url <url> runs a frontend test against an address that is not saved as an environment, such as a pull-request preview. --local <port> does the same for a port on your machine; the two cannot be combined. The temporary environment (see the diagram above) is removed when the run finishes. See Running Tests.
Sign-in comes from --env <name> if given (--env staging --local 5173 is allowed; the CLI notes it on stderr), else from the Default (same test account or one-time-code setup).
Results keep the run’s address as targetUrl (userinfo removed), even after the environment’s URL changes.
A recorded session is not cloned. A Default that signs in with a recorded session (manual or SSO) only works on its own origin. An ad-hoc target on another origin without --env is refused before any charge: exit 6, frontend-auth-target-origin-mismatch. Pass --env <name> for an environment that can sign in at the target, or save the address as an environment. A named environment is refused on another origin when it uses a recorded session, a one-time code, or a login-once step; a test-account environment is not.
Temporary environments are hidden from project env list and statusByEnvironment, and do not count toward the plan limit. They appear in test result --history.
Changing an environment’s URL keeps test IDs, code versions, and history, but does not rewrite hosts written into a test’s steps. A hard-coded host that no longer belongs to any of the project’s environments keeps pointing at the old site. Review steps with testsprite test get <test-id> and fix them with testsprite test plan put <test-id> --steps <file>.
If a test’s steps name one of the project’s environments (for example Navigate to https://staging.example.com) and you run it on another saved environment, TestSprite points those steps at the run’s environment at dispatch; the stored plan is unchanged. Tunnel runs and cross-origin target overrides repoint navigation the same way. A URL that belongs to none of the project’s environments is left as written.
test list and test get show each test’s latest result in the Default environment. JSON keeps status and adds statusByEnvironment (saved environments only); the text table has an ENV column. To read another environment:
testsprite test list --project <project-id> --env stagingtestsprite test result <test-id> --history --env staging
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TestSprite Documentation","colors":{"primary":"#54B365","light":"#54B365","dark":"#54B365"},"logo":{"light":"https://mintcdn.com/testspriteinc/-Pguo2A-jFFq2l4c/logo/light-mode.svg?fit=max\u0026auto=format\u0026n=-Pguo2A-jFFq2l4c\u0026q=85\u0026s=ae3fa561b9ee31984d80d787a7fa166e","dark":"https://mintcdn.com/testspriteinc/-Pguo2A-jFFq2l4c/logo/dark-mode.svg?fit=max\u0026auto=format\u0026n=-Pguo2A-jFFq2l4c\u0026q=85\u0026s=b8554ece60a00f55f9ce274355c66df8"},"favicon":{"light":"https://mintcdn.com/testspriteinc/3tFsKENc_ol65zBe/favicon-light.svg?fit=max\u0026auto=format\u0026n=3tFsKENc_ol65zBe\u0026q=85\u0026s=f9f0ae65cbbf1b93530a042cda417060","dark":"https://mintcdn.com/testspriteinc/3tFsKENc_ol65zBe/favicon.svg?fit=max\u0026auto=format\u0026n=3tFsKENc_ol65zBe\u0026q=85\u0026s=e8840d7f1d55131c5e93a60d9ef34334"},"appearance":{"default":"system","strict":false},"background":{"color":{"light":"#F9FCF9","dark":"#181818"}},"navbar":{"primary":{"type":"button","label":"Sign In","href":"https://www.testsprite.com/auth/cognito/sign-in"}},"footer":{"socials":{"x":"https://x.com/Test_Sprite","github":"https://github.com/TestSprite/Docs","linkedin":"https://linkedin.com/company/testsprite","discord":"https://discord.gg/QQB9tJ973e"}},"fonts":{"heading":{"family":"IBM Plex Mono"},"body":{"family":"OpenSauceTwo","weight":400,"source":"https://testsprite-website-font.s3.us-east-1.amazonaws.com/fonts/OpenSauceTwoVF.woff2","format":"woff2"}},"contextual":{"options":["copy"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://www.testsprite.com/"},{"anchor":"Community","icon":"comments","href":"https://discord.gg/QQB9tJ973e"},{"anchor":"Contact Us","icon":"address-book","href":"https://calendly.com/contact-hmul/schedule"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"testspriteinc","hasAudioNarration":false,"actualSubdomain":"testspriteinc","customDomains":["docs.testsprite.com"],"gitSource":{"type":"github","owner":"testsprite","repo":"docs","deployBranch":"v1.0","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adbed1f17b7e6fbc7daa94b","collectionId":"b26d7474-8ad4-45dc-9958-a9871991adeb","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adbed1f17b7e6fbc7daa94b"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{},"buildId":"6adbed1f17b7e6fbc7daa94b","clientVersion":"0.0.3962","searchFilterCounts":[{"language":"default","tag":"Core","count":62},{"language":"default","tag":"Web Portal","count":44},{"language":"default","tag":"MCP Server","count":25},{"language":"default","tag":"CLI","count":23},{"language":"default","tag":"Getting Started","count":16},{"language":"default","tag":"API Testing","count":11},{"language":"default","tag":"UI Testing","count":10},{"language":"default","tag":"Automation \u0026 Integrations","count":8},{"language":"default","tag":"Concepts","count":7},{"language":"default","tag":"Tests","count":7}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"styles/border-radius.css","content":":root{--border-radius-sm:2px;--border-radius-md:4px;--border-radius-lg:6px;--border-radius-xl:8px;--border-radius-2xl:10px}.rounded-full{border-radius:var(--border-radius-lg)!important}.rounded-sm{border-radius:var(--border-radius-sm)!important}.rounded,.rounded-md{border-radius:var(--border-radius-md)!important}.rounded-lg,div[class*=Frame] img,div[class*=frame] img,section[class*=Frame] img,section[class*=frame] img{border-radius:var(--border-radius-lg)!important}.rounded-xl{border-radius:var(--border-radius-xl)!important}.rounded-2xl,.rounded-3xl{border-radius:var(--border-radius-2xl)!important}article iframe,div[class*=Frame] iframe,div[class*=content] iframe,div[class*=frame] iframe,iframe.aspect-video,iframe.rounded-xl,iframe.w-full,iframe[class*=rounded],iframe[className],iframe[class],main iframe,section iframe,section[class*=Frame] iframe,section[class*=frame] iframe,video{border-radius:var(--border-radius-lg)!important;overflow:hidden!important}.button,[class*=Button],a[role=button],button,header a[role=button],header button,nav a[role=button],nav button{border-radius:var(--border-radius-md)!important}.icon-button,[class*=IconButton],button[class*=icon]{border-radius:var(--border-radius-sm)!important}[class*=CardGroup],[class*=card-group],div[class*=Columns],div[class*=columns]{border-radius:0!important}.card,a[class*=Card],a[class*=card]{border-radius:var(--border-radius-lg)!important}.feature-card,[class*=Feature]:not([class*=group]),[class*=feature]:not([class*=group]),article[class*=Card]:not([class*=Group]),div[class*=Card]:not([class*=Group]):not([class*=Columns]),section[class*=Card]:not([class*=Group]){border-radius:var(--border-radius-lg)!important}.code-block,[class*=codeblock],code[class*=language-],div[class*=CodeBlock],pre,pre[class*=language-]{border-radius:var(--border-radius-md)!important}code:not([class*=language-]),code:not(pre code){border-radius:var(--border-radius-sm)!important}[class*=CopyButton],[class*=Sidebar] a,[class*=Sidebar] a[class*=active],[class*=code-toolbar],[class*=sidebar] a,[class*=sidebar] a[class*=active],aside[class*=nav] a,button[class*=copy],nav a[class*=active],nav[class*=nav] a{border-radius:var(--border-radius-sm)!important}.code-block [data-fade-overlay]{display:none!important}.code-block [data-component-part=scroll-area-viewport][data-overflow-x-end]{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 120px),transparent calc(100% - 40px));mask-image:linear-gradient(to right,#000 calc(100% - 120px),transparent calc(100% - 40px))}.info,.note,.tip,.warning,[class*=Alert],[class*=Callout],[class*=alert],[class*=callout],aside,footer [class*=container],footer section,header [class*=container]{border-radius:var(--border-radius-lg)!important}[class*=Image],[class*=Input],[class*=image],[class*=input],img,input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],picture,select,textarea{border-radius:var(--border-radius-md)!important}[class*=Search] input,[class*=search] input,input[placeholder*=Search],input[placeholder*=search]{border-radius:var(--border-radius-xl)!important}[class*=Frame],[class*=frame],article[class*=Frame],article[class*=frame],body frame,body frameset,div[class*=Frame-container],div[class*=Frame-wrapper],div[class*=Frame],div[class*=frame-container],div[class*=frame-wrapper],div[class*=frame],div[style*=border],div[style*=frame],embed,frame,frame[style],frameset,frameset[style],html frame,html frameset,iframe,iframe[style*=border],iframe[style*=frame],iframe[style],object,section[class*=Frame],section[class*=frame]{border-radius:var(--border-radius-lg)!important;overflow:hidden!important}frame,frameset,iframe{border:0!important}frame *,frameset *,iframe *{border-radius:inherit!important}[class*=Tab],[class*=tab],[role=tab]{border-radius:var(--border-radius-sm)!important}[class*=TabPanel],[role=tabpanel]{border-radius:var(--border-radius-md)!important}[class*=Dialog],[class*=Modal],[class*=dialog],[class*=modal],[role=alertdialog],[role=dialog]{border-radius:var(--border-radius-xl)!important}[class*=Backdrop],[class*=Overlay],[class*=backdrop],[class*=overlay]{backdrop-filter:blur(8px)}.badge,.pill,[class*=Badge],[class*=Tag],[class*=badge],[class*=tag]{border-radius:var(--border-radius-xl)!important}[class*=Status],[class*=status],span[class*=indicator]{border-radius:50%!important}[class*=Dropdown],[class*=Menu],[class*=Popover],[class*=dropdown],[class*=menu],[class*=popover],[role=menu]{border-radius:var(--border-radius-md)!important}[class*=MenuItem],[class*=Tooltip],[class*=menuitem],[class*=tooltip],[role=menuitem],[role=tooltip]{border-radius:var(--border-radius-sm)!important}[class*=Progress],[class*=progress],progress{border-radius:var(--border-radius-xl)!important}[class*=Loader],[class*=Spinner],[class*=loader],[class*=spinner]{border-radius:50%!important}[class*=Divider],[class*=Separator],[class*=anchor] a,[class*=divider],a[class*=anchor],hr{border-radius:var(--border-radius-sm)!important}[class*=Step],[class*=step]{border-radius:var(--border-radius-lg)!important}[class*=ParamField],[class*=ResponseField],[class*=param-field],[class*=response-field]{border-radius:var(--border-radius-md)!important}@media (max-width:768px){:root{--border-radius-sm:4px;--border-radius-md:8px;--border-radius-lg:12px;--border-radius-xl:16px;--border-radius-2xl:20px}}kbd{white-space:nowrap!important}@media (prefers-color-scheme:dark){kbd{background-color:#2f3033!important;color:#f9fafb!important;border:1px solid #3a3a3a!important}}.dark kbd,[data-theme=dark] kbd{background-color:#2f3033!important;color:#f9fafb!important;border:1px solid #3a3a3a!important}#sidebar ul.sidebar-group>li>ul{border-left:1px solid rgb(0 0 0/.1);margin-left:calc(1.5rem - .5px);padding-left:.375rem}#sidebar ul.sidebar-group>li>ul a{padding-left:.5rem!important}.dark #sidebar ul.sidebar-group>li>ul,[data-theme=dark] #sidebar ul.sidebar-group>li>ul,html.dark #sidebar ul.sidebar-group>li>ul{border-left-color:rgb(255 255 255/.14)}#sidebar,#sidebar .sidebar-group-header,#sidebar a,#sidebar button,#table-of-contents,#table-of-contents a,#table-of-contents div,#table-of-contents span{font-size:13px;line-height:1.45}#sidebar .sidebar-group-header,.steps .step>div>p.font-semibold{font-weight:500}*,::after,::before,html{scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}#sidebar a,#sidebar ul.sidebar-group>li>button{border-radius:var(--border-radius-xl)!important}.card .prose{font-size:14px;line-height:1.5}"}],"page":{"pagePath":"cli/core/environments","slug":"/cli/core/environments","pageMetadata":{"title":"Environments","description":"Create named targets in a project, choose a Default environment, and sign in to your app.","href":"/cli/core/environments"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create named targets in a project, choose a Default environment, and sign in to your app.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CodeBlock,Heading,Mermaid,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`An `,_jsx(_components.strong,{children:`environment`}),` is a named target within a project: the URL to test plus what a run needs there, such as sign-in settings and custom variables. Names are unique per project. Every run uses exactly one environment: the project’s Default (`,_jsx(_components.code,{children:`DEFAULT yes`}),` in `,_jsx(_components.code,{children:`project env list`}),`) unless you pass `,_jsx(_components.code,{children:`--env \u003cname>`}),`. An unknown name fails and lists available names; it never falls back to Default.`]}),`\n`,_jsxs(_components.p,{children:[`An environment whose origin is a loopback address opens a tunnel automatically; see `,_jsx(_components.a,{href:`/cli/core/local-apps`,children:`Testing Local Apps`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`manage-environments`,children:`Manage environments`}),`\n`,_jsxs(_components.p,{children:[`On a legacy-engine project, `,_jsx(_components.code,{children:`project env`}),` exits `,_jsx(_components.code,{children:`7`}),` (`,_jsx(_components.code,{children:`environments-unsupported-on-v2`}),`); use `,_jsx(_components.code,{children:`project update \u003cproject-id> --url \u003curl>`}),` instead.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # names, URLs, login modes, DEFAULT marker`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # login summary and custom variables; never passwords`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://staging.example.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` production`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://app.example.com`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --username`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tester@example.com`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --password-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./test-password.txt`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` update`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://new-staging.example.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set-default`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` update`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --rename`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` preview`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` delete`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --confirm`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`create`}),` needs `,_jsx(_components.code,{children:`--name`}),` and exactly one of `,_jsx(_components.code,{children:`--url`}),` or `,_jsx(_components.code,{children:`--local`}),`. `,_jsx(_components.code,{children:`--url`}),` takes a public HTTP(S) URL or a loopback origin. Prefer `,_jsx(_components.code,{children:`--password-file`}),`; passwords are write-only.`]}),`\n`,_jsxs(_components.li,{children:[`With no stored account, `,_jsx(_components.code,{children:`--username`}),` and `,_jsx(_components.code,{children:`--password-file`}),` go together (exit `,_jsx(_components.code,{children:`5`}),` otherwise).`]}),`\n`,_jsxs(_components.li,{children:[`Repeatable `,_jsx(_components.code,{children:`--var KEY=VALUE`}),` sets custom variables for frontend runs; `,_jsx(_components.code,{children:`update`}),` merges by key. Values are shown in plain text, so do not store secrets in them. Keys start with a letter or underscore and use letters, digits, and underscores (up to 64 characters); up to 50 variables, 4096 bytes per value.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`--clear-credentials`}),` removes the stored username and password and turns off account sign-in; it cannot be combined with `,_jsx(_components.code,{children:`--username`}),`, `,_jsx(_components.code,{children:`--password`}),`, or `,_jsx(_components.code,{children:`--password-file`}),`.`]}),`\n`,_jsx(_components.li,{children:`Delete is soft: the name can be reused and history keeps the old name. Change the Default before deleting it.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`sign-in-modes`,children:`Sign-in modes`}),`\n`,_jsxs(_components.p,{children:[`Sign-in is a property of the environment. Read or change it with `,_jsx(_components.code,{children:`project sign-in`}),` (without `,_jsx(_components.code,{children:`--env`}),`, the Default environment):`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sign-in`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sign-in`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --mode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` account`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --username`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tester@example.com`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --password-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./test-password.txt`})]}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Mode`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Aliases`}),_jsx(_components.th,{style:{textAlign:`left`},children:`What runs do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`public`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`none`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Test the app without signing in.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`account`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`credentials`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Sign in with the stored test-account username and password.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`otp`})}),_jsx(_components.td,{style:{textAlign:`left`}}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Sign in with one-time codes sent to an inbox or phone number TestSprite provisions. Chosen at creation (`,_jsx(_components.code,{children:`project env create --sign-in otp`}),`, channels with `,_jsx(_components.code,{children:`--otp-channel email,sms`}),`); to change it, create a new environment and set it as Default.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`manual`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`sso`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`A person logs in once in a live browser and runs reuse that session.`})]})]})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For `,_jsx(_components.code,{children:`manual`}),`, log in once in the Portal under `,_jsx(_components.strong,{children:`Project, Settings, Environments, the environment name, Log in`}),`. The CLI warns when no session is captured. `,_jsx(_components.code,{children:`--session-ttl`}),` takes 1 to 2592000 seconds, or `,_jsx(_components.code,{children:`never`}),`. Selecting SSO needs a feature flag on your account; without it the command exits `,_jsx(_components.code,{children:`13`}),` (`,_jsx(_components.code,{children:`FEATURE_GATED`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`SSO and OTP environments keep no username or password: `,_jsx(_components.code,{children:`project env update --username`}),` on one exits `,_jsx(_components.code,{children:`6`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Loopback environments support only `,_jsx(_components.code,{children:`public`}),` and `,_jsx(_components.code,{children:`account`}),`. A temporary environment has no settable sign-in.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`plan-limits`,children:`Plan limits`}),`\n`,_jsxs(_components.p,{children:[`Free and Starter allow `,_jsx(_components.strong,{children:`one environment per project`}),` (the Default counts), Standard `,_jsx(_components.strong,{children:`3`}),`, Pro and Enterprise unlimited; temporary environments do not count. Going over fails with exit `,_jsx(_components.code,{children:`13`}),` (`,_jsx(_components.code,{children:`FEATURE_GATED`}),`). On one environment, change the Default’s URL with `,_jsx(_components.code,{children:`project update \u003cproject-id> --url \u003curl>`}),`, or use `,_jsx(_components.code,{children:`--target-url`}),` for a single run.`]}),`\n`,_jsx(Heading,{level:`2`,id:`choose-an-environment-for-a-run`,children:`Choose an environment for a run`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` test`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`test-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --wait`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` test`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rerun`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`test-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --wait`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` test`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --plan-from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` plan.json`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --run`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --wait`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`test run --all`}),`, `,_jsx(_components.code,{children:`test create`}),`, and `,_jsx(_components.code,{children:`test create-batch`}),` take `,_jsx(_components.code,{children:`--env`}),` too; without it they use Default.`]}),`\n`,_jsxs(_components.p,{children:[`A backend test picks up an environment’s URL only if its code uses the environment URL placeholder; a URL written into the code stays as written. Check backend targets before using `,_jsx(_components.code,{children:`--env`}),` as a staging gate.`]}),`\n`,_jsx(Card,{children:_jsx(Mermaid,{chart:`flowchart LR\n S([\"test run / rerun /\u003cbr/>create --run\"]) --> Q1{\"--target-url or\u003cbr/>--local given?\"}\n Q1 -->|no| E1[\"Chosen environment\u003cbr/>--env, else project Default\"]\n Q1 -->|yes| E2[\"Environment at that origin,\u003cbr/>else a hidden\u003cbr/>temporary one\u003cbr/>sign-in: --env, else Default\"]\n E1 --> Q2{\"Origin is\u003cbr/>loopback?\"}\n E2 --> Q2\n Q2 -->|no| R1[Run in the cloud]\n Q2 -->|yes| Q3{\"--no-wait?\"}\n Q3 -->|yes| R2[\"Refused before charge\u003cbr/>exit 6 tunnel-required\"]\n Q3 -->|no| R3[\"CLI opens a tunnel,\u003cbr/>waits for the verdict\u003cbr/>closes it on exit\"]`})}),`\n`,_jsx(Heading,{level:`3`,id:`ad-hoc-targets-and-temporary-environments`,children:`Ad-hoc targets and temporary environments`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--target-url \u003curl>`}),` runs a frontend test against an address that is not saved as an environment, such as a pull-request preview. `,_jsx(_components.code,{children:`--local \u003cport>`}),` does the same for a port on your machine; the two cannot be combined. The `,_jsx(_components.strong,{children:`temporary`}),` environment (see the diagram above) is removed when the run finishes. See `,_jsx(_components.a,{href:`/cli/core/running-tests#run-against-a-url-without-creating-an-environment`,children:`Running Tests`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sign-in`}),` comes from `,_jsx(_components.code,{children:`--env \u003cname>`}),` if given (`,_jsx(_components.code,{children:`--env staging --local 5173`}),` is allowed; the CLI notes it on stderr), else from the Default (same test account or one-time-code setup).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Results keep the run’s address`}),` as `,_jsx(_components.code,{children:`targetUrl`}),` (userinfo removed), even after the environment’s URL changes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A recorded session is not cloned.`}),` A Default that signs in with a recorded session (manual or SSO) only works on its own origin. An ad-hoc target on another origin without `,_jsx(_components.code,{children:`--env`}),` is refused before any charge: exit `,_jsx(_components.code,{children:`6`}),`, `,_jsx(_components.code,{children:`frontend-auth-target-origin-mismatch`}),`. Pass `,_jsx(_components.code,{children:`--env \u003cname>`}),` for an environment that can sign in at the target, or save the address as an environment. A named environment is refused on another origin when it uses a recorded session, a one-time code, or a login-once step; a test-account environment is not.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Temporary environments are hidden`}),` from `,_jsx(_components.code,{children:`project env list`}),` and `,_jsx(_components.code,{children:`statusByEnvironment`}),`, and do not count toward the plan limit. They appear in `,_jsx(_components.code,{children:`test result --history`}),`.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Changing an environment’s URL keeps test IDs, code versions, and history, but does not rewrite hosts written into a test’s steps. A hard-coded host that no longer belongs to any of the project’s environments keeps pointing at the old site. Review steps with `,_jsx(_components.code,{children:`testsprite test get \u003ctest-id>`}),` and fix them with `,_jsx(_components.code,{children:`testsprite test plan put \u003ctest-id> --steps \u003cfile>`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`runs-follow-their-own-environment`,children:`Runs follow their own environment`}),`\n`,_jsxs(_components.p,{children:[`If a test’s steps name one of the project’s environments (for example `,_jsx(_components.code,{children:`Navigate to https://staging.example.com`}),`) and you run it on another saved environment, TestSprite points those steps at the run’s environment at dispatch; the stored plan is unchanged. Tunnel runs and cross-origin target overrides repoint navigation the same way. A URL that belongs to none of the project’s environments is left as written.`]}),`\n`,_jsx(Heading,{level:`2`,id:`status-per-environment`,children:`Status per environment`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`test list`}),` and `,_jsx(_components.code,{children:`test get`}),` show each test’s latest result in the Default environment. JSON keeps `,_jsx(_components.code,{children:`status`}),` and adds `,_jsx(_components.code,{children:`statusByEnvironment`}),` (saved environments only); the text table has an `,_jsx(_components.code,{children:`ENV`}),` column. To read another environment:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` test`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --project`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`testsprite`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` test`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`test-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --history`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` staging`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`A test with no result there shows `,_jsx(_components.code,{children:`ready`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Schedules follow environments too; see `,_jsx(_components.a,{href:`/cli/integrations/test-lists-and-schedules#run-on-a-schedule`,children:`Test Lists \u0026 Schedules`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`For every flag, see `,_jsx(_components.a,{href:`/cli/reference/command-reference`,children:`Command Reference`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Environments","description":"Create named targets in a project, choose a Default environment, and sign in to your app.","href":"/cli/core/environments"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Manage environments","slug":"manage-environments","depth":2,"children":[]},{"title":"Sign-in modes","slug":"sign-in-modes","depth":2,"children":[]},{"title":"Plan limits","slug":"plan-limits","depth":2,"children":[]},{"title":"Choose an environment for a run","slug":"choose-an-environment-for-a-run","depth":2,"children":[{"title":"Ad-hoc targets and temporary environments","slug":"ad-hoc-targets-and-temporary-environments","depth":3,"children":[]}]},{"title":"Runs follow their own environment","slug":"runs-follow-their-own-environment","depth":2,"children":[]},{"title":"Status per environment","slug":"status-per-environment","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"testspriteinc","siteName":"TestSprite Documentation","title":"Environments - TestSprite Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T23:26:41.594Z","originalFileLocation":"cli/core/environments.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create named targets in a project, choose a Default environment, and sign in to your app.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TestSprite Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Environments - TestSprite Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create named targets in a project, choose a Default environment, and sign in to your app.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TestSprite Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.testsprite.com/cli/core/environments\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://testspriteinc.mintlify.app/_mintlify/api/og/v2?division=Project+Setup\u0026amp;title=Environments\u0026amp;description=Create+named+targets+in+a+project%2C+choose+a+Default+environment%2C+and+sign+in+to+your+app.\u0026amp;theme=b4c5e5e16d412dca9f1c7cc3\u0026amp;signature=1f3b557a93611881752a59f34348e242bf78a179ad945ade65ce939e473dc4b0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Environments - TestSprite Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create named targets in a project, choose a Default environment, and sign in to your app.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://testspriteinc.mintlify.app/_mintlify/api/og/v2?division=Project+Setup\u0026amp;title=Environments\u0026amp;description=Create+named+targets+in+a+project%2C+choose+a+Default+environment%2C+and+sign+in+to+your+app.\u0026amp;theme=b4c5e5e16d412dca9f1c7cc3\u0026amp;signature=1f3b557a93611881752a59f34348e242bf78a179ad945ade65ce939e473dc4b0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/testspriteinc/wPegTz1809S7PG91/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TestSprite Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#54B365\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.testsprite.com/cli/core/environments\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/core/environments.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.testsprite.com/#organization\",\"name\":\"TestSprite Documentation\",\"url\":\"https://docs.testsprite.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/testspriteinc/-Pguo2A-jFFq2l4c/logo/light-mode.svg?fit=max\u0026auto=format\u0026n=-Pguo2A-jFFq2l4c\u0026q=85\u0026s=ae3fa561b9ee31984d80d787a7fa166e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.testsprite.com#website\",\"name\":\"TestSprite Documentation\",\"url\":\"https://docs.testsprite.com\",\"publisher\":{\"@id\":\"https://docs.testsprite.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.testsprite.com/cli/core/environments#webpage\",\"url\":\"https://docs.testsprite.com/cli/core/environments\",\"name\":\"Environments\",\"description\":\"Create named targets in a project, choose a Default environment, and sign in to your app.\",\"dateModified\":\"2026-10-23T23:26:41.594Z\",\"isPartOf\":{\"@id\":\"https://docs.testsprite.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.testsprite.com/cli/core/environments#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.testsprite.com/cli/core/environments#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Core\",\"item\":\"https://docs.testsprite.com/cli/core/projects\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Project Setup\",\"item\":\"https://docs.testsprite.com/cli/core/projects\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Environments\",\"item\":\"https://docs.testsprite.com/cli/core/environments\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.testsprite.com/cli/core/environments#article\",\"headline\":\"Environments\",\"name\":\"Environments\",\"description\":\"Create named targets in a project, choose a Default environment, and sign in to your app.\",\"url\":\"https://docs.testsprite.com/cli/core/environments\",\"mainEntityOfPage\":{\"@id\":\"https://docs.testsprite.com/cli/core/environments#webpage\"},\"dateModified\":\"2026-10-23T23:26:41.594Z\",\"publisher\":{\"@id\":\"https://docs.testsprite.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.testsprite.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TestSprite Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TestSprite Documentation","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://www.testsprite.com/"},{"anchor":"Community","icon":"comments","href":"https://discord.gg/QQB9tJ973e"},{"anchor":"Contact Us","icon":"address-book","href":"https://calendly.com/contact-hmul/schedule"}]},"tabs":[{"tab":"Web Portal","icon":"window-maximize","pages":[{"title":"Web Portal","href":"/web-portal/getting-started/overview"}]},{"tab":"CLI","icon":"terminal","groups":[{"group":"Getting Started","pages":[{"title":"Overview","icon":"clipboard-list","href":"/cli/getting-started/overview"},{"title":"Installation","icon":"download","href":"/cli/getting-started/installation"},{"title":"Quickstart","icon":"play","href":"/cli/getting-started/quickstart"},{"group":"Concepts","icon":"book","expanded":true,"pages":[{"title":"Key Terms","href":"/cli/concepts/key-terms"},{"title":"The Agent Loop","href":"/cli/concepts/the-agent-loop"}]}]},{"group":"Core","pages":[{"group":"Project Setup","icon":"folder","expanded":true,"pages":[{"title":"Projects","description":"List, inspect, create, and update the typed (frontend or backend) projects that hold your tests.","href":"/cli/core/projects"},{"title":"Environments","href":"/cli/core/environments"}]},{"group":"Tests","icon":"flask","expanded":true,"pages":[{"title":"Creating Tests","description":"Author frontend test plans and backend test code, then create individual tests or batches from the CLI.","href":"/cli/core/creating-tests"},{"title":"Editing \u0026 Deleting Tests","href":"/cli/core/editing-tests"},{"title":"Running Tests","href":"/cli/core/running-tests"},{"title":"Testing Local Apps","href":"/cli/core/local-apps"},{"title":"Rerun \u0026 Auto-Heal","href":"/cli/core/rerun-and-auto-heal"},{"title":"Cancelling a Run","href":"/cli/core/cancelling-runs"},{"title":"Reading Results","href":"/cli/core/reading-results"}]},{"group":"Automation \u0026 Integrations","icon":"plug","expanded":true,"pages":[{"title":"CI/CD","href":"/cli/integrations/ci-cd"},{"title":"Test Lists \u0026 Schedules","href":"/cli/integrations/test-lists-and-schedules"},{"title":"Coding Agent Integration","href":"/cli/core/agent-integration"}]},{"group":"Workspace \u0026 Access","icon":"key","expanded":true,"pages":[{"title":"Authentication","href":"/cli/core/authentication"}]}]},{"group":"Reference","pages":[{"title":"Command Reference","icon":"wrench","href":"/cli/reference/command-reference"},{"title":"Configuration","icon":"gear","href":"/cli/reference/configuration"},{"title":"Output \u0026 Scripting","icon":"terminal","href":"/cli/reference/output-and-scripting"},{"title":"Exit Codes \u0026 Errors","icon":"list-ol","href":"/cli/reference/exit-codes"}]},{"group":"Troubleshooting","pages":[{"title":"Common Issues","icon":"wrench","href":"/cli/troubleshooting/common-issues"}]}]},{"tab":"MCP Server","icon":"square-terminal","pages":[{"title":"MCP Server","href":"/mcp/getting-started/introduction"}]},{"tab":"Learn","icon":"graduation-cap","pages":[{"title":"Learn","href":"/learn/mcp-demo"}]}]},"title":"Environments - TestSprite Documentation","buildId":"dpl_7EGD3AHhNmnVNgQ8U7beMHiqTzw8","deploymentId":"dpl_7EGD3AHhNmnVNgQ8U7beMHiqTzw8","dynamics":[],"chunks":[]}