# Test settings

A test needs no settings. Without them, its clock is fixed at
2000-01-01T00:00:00Z, never the real time; each configuration field
has its `test:` or `default:` value from `config.jadpo`; each call to a
provider answers with its fake's generated default; and each feature flag
has its `default:`.

To change any of these, write a `name: value` setting at the top of the
test's body, before its first statement. There are four, and all are
optional.

## `clock:`

The instant the test starts at, written out: `"2026-01-15T12:00:00Z"`
([Controlling time](/docs/controlling-time.md)).

## `config:`

Configuration values that differ from the test values in `config.jadpo`
([Configuration in tests](/docs/configuration-in-tests.md)).

## `fakes:`

The responses each integration operation gives, in order
([Fakes for integrations](/docs/fakes-for-integrations.md)).

## `flags:`

The value each feature flag it names has for every caller in the test,
`flags: { new_checkout: true }`, written as the flag's `default:` is: `true`
or `false`, or the enum's variant
([What the compiler checks](/docs/feature-flags.md#what-the-compiler-checks)).
A flag it doesn't name has its `default:`, never a value an environment
holds.

## Everything in the test itself

Settings are written once per test, so a reader sees everything that
shapes the result in the test itself; one written twice is
`semantic.test_setting_duplicate`. Shared data isn't a setting: it
comes from fixtures ([Shared test data: fixtures](/docs/shared-test-data-fixtures.md)).
