> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spurtest.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Environment-specific variables that store configuration values like URLs, credentials, API keys, and custom settings. Properties enable tests to adapt automatically based on the environment they're running in.

# Properties

## What are Properties?

Environment variables allow you to parameterize your tests with environment-specific values like URLs, credentials, API keys, and configuration settings. Properties are key-value pairs associated with specific environments that automatically apply when tests run in those environments.

## Variable Types

<AccordionGroup>
  <Accordion title="URL Variables">
    Store base domains and full URLs for your application.

    <Warning>
      URL variables are validated to ensure they're valid URLs. They must include the protocol (http\:// or https\://).
    </Warning>
  </Accordion>

  <Accordion title="HTTPS Credentials">
    Store a username and password combination to be used in all HTTPS requests.
  </Accordion>

  <Accordion title="Secrets">
    Encrypted variables to store values useable in test steps.

    <Info>
      Secret variables are write-only after creation. You can replace them but cannot view the current value.
    </Info>
  </Accordion>

  <Accordion title="Headers">
    Custom HTTP headers sent with every request in that environment.

    <Tip>
      Headers are useful for feature flags or routing requests to specific backend services.
    </Tip>
  </Accordion>
</AccordionGroup>

## How to Create Properties

<Steps>
  <Step title="Navigate to Environment and Change Tabs">
    Navigate to the Environments page and switch from the **Web URL tab** to the **Properties tab**.

    <Frame>
      <img src="https://mintcdn.com/spur/BvhWQtDOy3g9ZJZN/images/step1.gif?s=c8f4d02bf42b6c1a00cc1c7e237cc945" alt="Step1" width="1976" height="1080" data-path="images/step1.gif" />
    </Frame>
  </Step>

  <Step title="Click + Add Property Button">
    Click the **+ Add Property** button at the extreme right to begin creating a new property.

    <Frame>
      <img src="https://mintcdn.com/spur/H3xqe3VyV7YeO-e5/images/Screenshot2026-02-04at9.03.54PM.png?fit=max&auto=format&n=H3xqe3VyV7YeO-e5&q=85&s=1744c3a4f9580554bc385d0d72eb0fc7" alt="Screenshot 2026 02 04 At 9 03 54 PM" width="1196" height="224" data-path="images/Screenshot2026-02-04at9.03.54PM.png" />
    </Frame>
  </Step>

  <Step title="Select Property Type">
    Select a property type - **Header, Variable or HTTPS Configuration**. Each type serves different purposes as explained in the Variable Types section above.

    <Frame>
      <img src="https://mintcdn.com/spur/BvhWQtDOy3g9ZJZN/images/step3-2.png?fit=max&auto=format&n=BvhWQtDOy3g9ZJZN&q=85&s=0599be64314df5e2d9efa131f0607986" alt="Step3 2" width="938" height="578" data-path="images/step3-2.png" />
    </Frame>
  </Step>

  <Step title="Name the Property">
    Enter a descriptive name for your property and click **Create Property**.

    <Frame>
      <img src="https://mintcdn.com/spur/BvhWQtDOy3g9ZJZN/images/step4-1.png?fit=max&auto=format&n=BvhWQtDOy3g9ZJZN&q=85&s=4b03cdcbca8a253cab24ad8faf33c4a2" alt="Step4 1" width="926" height="580" data-path="images/step4-1.png" />
    </Frame>
  </Step>

  <Step title="Configure Values for Each Environment">
    All configured environments will display in the table. For each environment, set whether the property is required and enter the appropriate value.

    <Accordion title="Required vs Optional Variables">
      Mark a variable as required for each environment to specify if the environment must have a value for the variable.

      **Required Variables** must have values in all environments before tests can run.

      **Optional Variables** can be left empty in some environments, allowing tests to run without them.
    </Accordion>

    <Note>
      **Note:** You can also apply the same value to other properties automatically by clicking Apply value to all environments option
    </Note>

    <Frame>
      <img src="https://mintcdn.com/spur/BvhWQtDOy3g9ZJZN/images/step5-1.gif?s=e07b38353a8185db8b8f9b95068a6c67" alt="Step5 1" width="1584" height="1080" data-path="images/step5-1.gif" />
    </Frame>
  </Step>

  <Step title="Click Create Property">
    Click **Create Property** and a new property is created. This is available to all tests running in the configured environments.

    <Frame>
      <img src="https://mintcdn.com/spur/BvhWQtDOy3g9ZJZN/images/step6-1.png?fit=max&auto=format&n=BvhWQtDOy3g9ZJZN&q=85&s=aa3ff1664dfb2740f0aad9bbbf02e2a9" alt="Step6 1" width="1812" height="530" data-path="images/step6-1.png" />
    </Frame>
  </Step>

  <Step title="Using Properties in Tests">
    Once created, properties automatically apply to tests running in their configured environments.

    The Spur Agent uses the appropriate property value based on which environment the test executes in.
  </Step>
</Steps>

## Best Practices

* **Use descriptive names**: Make property names self-explanatory for team collaboration
* **Mark required properties appropriately**: Only mark properties as required if tests cannot run without them
* **Use Secrets for sensitive data**: Store passwords, API keys, and tokens as Secret variables for security
* **Validate URL variables**: Ensure all URL variables include the protocol (https\://)
* **Document property purposes**: Add clear descriptions when creating properties to help team members understand their use
* **Apply values across environments strategically**: Use "apply to all environments" only when values are truly universal
