Profiles #

URLs: /profiles (list), /profiles/{name} (detail)

A profile is a named configuration set declared in litmus.yaml under profiles: or as a standalone file in profiles/*.yaml. It carries session-wide test configuration — limits, mocks, markers, retry rules — plus metadata that ties the profile to a station type and a fixture, with optional facet labels. Profiles are config-only: they exist in YAML and are resolved at session start. The Profiles pages browse declared profiles and inspect one profile's resolved state.

List — /profiles #

A table with one row per configured profile. A badge in the page header shows the total count.

ColumnWhat it shows
NameThe profile name (key in litmus.yaml or YAML filename stem)
ExtendsThe parent profile this profile inherits from, or if none
Station TypeThe station_type this profile requires at session start, or if unset
FixtureThe fixture ID this profile selects, or if unset
FacetsKey=value pairs from the profile's facets: map, comma-separated, or
TestsCount of test-level overrides declared in this profile's tests: block

The table has no Configured / Observed chip or filter. Profiles are declared in YAML and have no run-history backing, so the merged-with-badge pattern does not apply — every row is configured-only by definition.

Clicking a row navigates to /profiles/{name}.

Empty state #

When no profiles are declared in the project, the table is replaced with a card:

No profiles configured.

Add profile YAML files under profiles/ or declare them inline in litmus.yaml. See the profiles reference for the schema.

Detail — /profiles/{name} #

The detail page has no tabs. It renders three cards stacked vertically:

Summary card — shows the same five fields as the list (Extends, Station type, Fixture, Facets, Tests count) in a row of labeled key-value pairs.

Inheritance card — present only when the profile has one or more parents. It displays the full extends chain as a left-to-right sequence of names separated by arrows, root-first. Parent names are links to their own detail pages. The current profile's name appears as a primary badge (not a link). The card carries a note: "Parent profiles are applied first; this profile's fields override the merged result."

The Inheritance card is omitted when the profile has no extends: set.

Resolved YAML card — displays the profile's merged configuration as YAML in a code block. It shows the profile's configuration after its parent profiles are merged in — values inherited from a parent that this profile didn't override appear here as if declared locally. The YAML is read-only; edits require changing the source file directly.

Launch shortcut #

A Launch Test button appears in the page header (top right). It navigates to /launch?test_profile={name}, which pre-selects this profile in the launch page's Profile dropdown.

Not-found state #

When {name} does not match any declared profile, the page shows a card:

Profile '{name}' not found.

with a "← Back to Profiles" link.

Underlying data #

Profiles are loaded by merging two sources at server start:

  1. The profiles: block declared inline in litmus.yaml.
  2. Any profiles/*.yaml files in the project root (loaded by filename stem).

A name collision between an inline entry and a file raises an error at load time. The detail page's Resolved YAML reflects this merged state — the same config the session resolver acts on at runtime.

For the full schema of a profile block, see Configuration reference → Profile blocks.

For the workflow of authoring and selecting profiles, see How-to → Profiles.

See also #