What happens when you have to release a patch or service pack for a version that is not your latest one? How do you know which steps to run and what functionality to validate, when that version was released months or even years ago, and the product has since moved on?
This is exactly where Test Versioning in PractiTest comes into play. Preserve and revisit the exact set of steps that were relevant at the time of that release, so you can confidently validate fixes and changes against the correct version of the product, not the one currently under development.
Note: This feature is available only for Corporate accounts.
How to work with Test Versioning?
The recommended way to use Test Versioning is at the end of a sprint or release, once testing activity for that scope is complete.
A typical flow looks like this:
- During the sprint, tests evolve with steps that are updated and edge cases are added.
- Throughout this phase, you continue working on the latest version of each test, without creating a new version of it.
- Once the sprint or release is complete, you label the relevant tests in a batch operation from the Test Library or manually to individual tests from within the test screen.
- PractiTest saves a snapshot of each selected test and attaches the chosen label, for example: Sprint-34, Release-2025.11, or Regression-Q4.
- When needed later, you can run your tests exactly as they were when the label was created, regardless of any changes made to them since then.
Core Concepts
Understanding a few key concepts will help you use Test Versioning effectively and avoid confusion between day-to-day editing and formal version creation.
Latest Version
The Latest version represents the current working copy of a test.
This is the version you:
- Edit during the sprint
- Update as requirements change
- Run as part of your “regular” tests and test sets
Saving changes to the latest version does not automatically create a label. The test remains flexible and editable until you explicitly decide to version-it.
Snapshot
A snapshot is an immutable copy of a test at a specific point in time. When a snapshot is created, PractiTest captures the following data:
- Name
- Description
- Preconditions
- Steps and expected results
Once created, a snapshot does not change. Any future edits are applied only to the latest version of the test, not to existing snapshots.
Label
A label is a human-readable name attached to a snapshot to describe its purpose or context.
Common examples include:
- Sprint-34
- Release-2025.11
- Regression-Q4
Important notes:
- Labels can and should be reused across your project
- A single snapshot can have multiple labels, for example, when a test remains unchanged across several releases.
- A label can be used only once in the same test
Enable Test Versioning
To start using Test Versioning, it must first be enabled at the project level.
- Go to Project Settings.
- Under Project Settings, locate Test Versioning.
- Check the Test Versioning checkbox.
Only Project Admins and Account Owners can enable or disable this option.
Create Versions Using Labels
Once Test Versioning is enabled, you can start creating versions for your tests by assigning labels. This can be done either in bulk from the Test Library (recommended) or individually from within a test.
Batch Labeling from the Test Library
To version multiple tests at once:
- Go to the Test Library.
- Select one or more tests.
- Click the ‘Set Label/s’ button at the top of the library grid.
4. In the pop-up window:
- Choose one or more labels from the existing list, or
- Create a new label by entering a name.
5. Confirm your selection.
PractiTest will save a snapshot of each selected test and attach the chosen label(s). If a test has not changed since its last snapshot, the label will be attached to the existing snapshot instead of creating a new one.
Version Management Inside a Test
When the feature is enabled, each test includes a new section called Test Versioning. In this section, you can:
- See whether the test is currently labeled
- Understand whether the working copy matches a saved snapshot
- Create new snapshots and assign labels directly from the test
Note: A version can be saved only when there are no unsaved changes in the test. Make sure to save the test before creating or updating labels.
Understanding the Test States
The Test Versioning section reflects one of the following states, based on the relationship between the working copy and saved snapshots.
State 1: Unlabeled Test (No Previous Labels)
This is the initial state of a test that has never been versioned.
- No labeled snapshot exists yet.
- The Label field says ‘Unlabeled’.
- The user can:
- Click Save as New Label
- Select any existing labels or create new labels
- A snapshot will be created and the selected labels will be attached to it.
State 2: Labeled Test (Working Copy Matches a Snapshot)
In this state, the working copy of the test exactly matches an existing labeled snapshot.
- The Label field shows one or more labels.
- If multiple labels are attached, they are shown separated by commas.
The user can:- Add additional labels to the same snapshot (only labels that are not already used by this test are available for selection).
Note: In case changes have been made and saved since the last snapshot, then the test will become “Unlabeled” again.
Permissions
Test Versioning has 2 permission levels that control how users can create and use labels.
- Save as a Label and Use Existing Labels – this permission allows users to:
- Click Save as Label
- Choose from existing labels
This is the default permission for the Testers group.
- Save as a Label and Create New Labels – this permission allows users to:
- Click Save as Label
- Choose from existing labels
- Create new labels
- Remove Labels
This is the default permission for the Administrators group.
Versions’ Label Management Tab (Inside a Test)
Once Test Versioning is enabled, a new tab called Versions’ Label Management is available inside each test. This tab provides visibility and control over all labeled snapshots created for the test.
What you’ll find in the tab
The tab includes a table with the following columns:
- Version Label Name – The label attached to the snapshot.
- Created At – The date when the label was assigned to the snapshot.
Created By – The user who created the labeled snapshot. - View Button – Clicking it will open a read-only test form that includes:
- Title
- Description
- Precondition, Steps, and Expected Results
- Remove Label – Removes the label from the test.
Removing a Label from a Test
Removing a label affects only the association between the label and this test, and does not delete data. When a label is removed:
- The snapshot associated with that label is no longer shown and cannot be selected for future runs of this test.
- Existing runs and instances are not deleted, and the instance will be assigned to the latest version of the test for future runs.
- The same label can be reused again and attached to a different snapshot of this test.
Running Tests on Specific Versions
Test Versioning allows you to control which version of a test is executed from within a test set, at the instance level.
Adding a Test to a Test Set
When a test is added to a Test Set, the created instance is assigned by default to the Latest working copy of the test. This means: that regardless of whether the working copy matches a labeled snapshot or unlabeled, it will be the default pick.
Selecting a Version Label to Run On
If you need to run a test on a version that is different from the latest version, you can select a previous version instead:
- From the Instance grid inside the Test Set, select multiple or all instances.
- Click Set Label.
- Choose a label from the list.
The list will include only labels that exist on all selected tests. For example, if a label exists on only 2 out of 5 selected tests, it will not appear as an option.
You can also select the version only for a specific instance by clicking on it, accessing the instance screen, and choosing the desired version from the picklist under the run button.
Run Traceability
Each run is documented with the version it was executed on:
- The Instance page records each run along with its associated label.
If a run is executed on the Latest version, no label value is shown. - The selected label on the instance determines which version will be used for all future runs, as long as the label remains unchanged.
- Users can switch labels at any time, allowing the same instance to have multiple runs associated with different labels.
Test Versioning with Call to Test
Test Versioning supports scenarios where a test includes Call to Test steps. When labeling and versioning are used together with a call to test, PractiTest applies specific rules to ensure consistency and traceability.
Labeling a Test That Calls Another Test
When a user labels a test that calls another test:
- The label is applied to both:
- The calling test (the test being labeled)
The called test (the test referenced by the call to test step)
- The calling test (the test being labeled)
- The same label is attached to snapshots of both tests.
This ensures that the version of the calling test always points to a compatible labeled version of the called test.
Note: This behavior applies only in this direction. If a user labels a test that is being called by other tests, only that test is labeled. The calling tests are not affected.
Changes After Labeling
Once a labeled snapshot exists:
- If changes are made to the calling test:
- The test becomes unlabeled.
- The previously created snapshot remains unchanged.
- The snapshot of the calling test continues to reference the labeled snapshot of the called test.