Data Models
Conceptual model of the entities in SmoothDeploy and how they relate.
The core entities in SmoothDeploy, their user-visible properties, and how they relate to one another. For task-oriented guides, follow the links in each section.
Organization
The top-level container that owns all other entities.
| Property | Values / notes |
|---|---|
name | Display name |
slug | URL-friendly identifier |
logo | Logo URL (optional) |
license | Concurrency limit, retention period, active flag |
Member
A user's membership in an organization. Each user belongs to exactly one organization.
| Property | Values / notes |
|---|---|
role | member, admin, or owner |
createdAt | When the membership was created |
The role field on the member record controls what the member can do. See Roles and Permissions.
Project
A logical grouping of related tests and branches within an organization.
| Property | Values / notes |
|---|---|
name | Up to 32 characters |
status | active or archived |
config | Playwright configuration (browser, timeouts, etc.) applied to all tests by default |
vars | Default variables source for tests in this project |
See Projects.
Branch
A version-control branch scoped to a project. Each project has one default branch; additional branches can be created.
| Property | Values / notes |
|---|---|
name | Up to 64 characters; unique within the project |
isDefault | Whether this is the project's default branch |
See Branches.
Test
A test is an identity record for a test case. The user-visible properties (name, status, steps, config) are stored per-branch in a Test Revision, not on the test itself.
| Property | Values / notes |
|---|---|
projectId | The project this test belongs to |
parentTestId | If set, this test is a child of a directory test |
A test with directory = true in its revision acts as a folder rather than an executable test case. See Tests.
Test Revision
All branch-specific content for a test lives here. There is always one working revision per test per branch (the editable state), plus any number of snapshot revisions.
| Property | Values / notes |
|---|---|
name | Display name, up to 64 characters |
status | draft, active, or archived |
directory | true if this is a folder rather than an executable test |
revisionType | working (current editable state), auto (system snapshot), or manual (user-created snapshot) |
versionNumber | null for the working revision; 1, 2, 3… for snapshots |
message | Optional description for manual snapshots |
config | Playwright config override for this test |
vars | Variables source for this test |
parameters | Parameters source for this test |
metadata | Includes test type (visual or script) |
See Revisions, Parameters, Variables.
Step
A reusable unit of browser action (click, fill, assert, etc.). A step holds the action definition; the display name and ordering are tracked on the revision step.
| Property | Values / notes |
|---|---|
action | The action object (navigate, click, fill, assert…) |
group | true if this step is a group container |
shared | true if the step was created as an org-level shared step |
Revision Step
Links a test revision to a step and records branch-specific display data and execution context.
| Property | Values / notes |
|---|---|
name | Display name shown in the test editor |
order | Execution order within the test |
condition | When to run the step (always-run, skip, condition, element-visibility, element-text) |
frame | Frame context (for steps inside iframes) |
shared | Branch-scoped flag controlling visibility as a shared step |
See Step Management and Shared Steps.
Test Run
An execution instance of a test.
| Property | Values / notes |
|---|---|
name | Display name |
status | pending, queued, running, completed, failed, or cancelled |
config | Playwright config used for this run |
vars | Resolved variables |
parameters | Input parameters |
secrets | Secrets injected for this run |
duration | Elapsed milliseconds |
startedAt / completedAt / cancelledAt | Timestamps |
See View Results and Run Remotely.
Schedule
An automated trigger that starts test runs on a cron schedule or at a specific time.
| Property | Values / notes |
|---|---|
name | Up to 64 characters |
scheduleType | single_test, directory, or tag |
scheduleMode | recurring or once |
cronExpression | UTC cron expression (recurring) or ISO datetime (once) |
enabled | Whether the schedule is active |
config / vars / parameters | Overrides applied to each triggered run |
See Schedules.
Tag
A label for organizing and filtering tests.
| Property | Values / notes |
|---|---|
name | Up to 64 characters; unique within the organization |
color | Hex color code (optional) |
description | Free-text description (optional) |
See Tags.
Secret
Secure storage for sensitive values such as passwords and API tokens. Values are injected into test runs. The console does not display a value after it is saved.
| Property | Values / notes |
|---|---|
name | Alphanumeric and underscores only; up to 64 characters; unique within the organization |
description | Free-text description |
status | never_used, recently_used, or expired |
See Secrets.
Config Preset
A named, reusable Playwright configuration that can be applied to any test run.
| Property | Values / notes |
|---|---|
name | Up to 64 characters |
description | Free-text description (optional) |
isDefault | If true, this preset is pre-selected in the run dialog when a test has no saved config |
config | Playwright config object |
See Config Presets.
API Key
A scoped credential for accessing the SmoothDeploy API without user authentication.
| Property | Values / notes |
|---|---|
name | Up to 128 characters |
keyPrefix | Short prefix shown in the console to identify the key |
permissions | Scoped permission set (e.g. emailInbox: ["read", "delete"]) |
deletedAt | Set when the key is revoked; null while active |
See API Keys and API Reference.
Email Inbox
A managed email address that a test can read during execution (for OTP and email-verification flows).
| Property | Values / notes |
|---|---|
address | The email address |
type | temporary (auto-expires) or permanent |
name | Human-readable label (optional) |
expiresAt | Expiry timestamp for temporary inboxes |
See Email Inboxes.