- Home
- /
- Salesforce Testing
- /
- DevOps Testing
- /
- Continuous Testing
Salesforce Continuous Testing in DevOps
Salesforce continuous testing in DevOps is the practice of running automated validation on every change and on a schedule, so the pipeline always holds a current answer to one question: does the org still work? It covers suite tiers, trigger rules, feedback loops, flaky test control and suite maintenance, the operating discipline that keeps pipeline testing trustworthy month after month.
Looking at the business case for moving from release-based to continuous testing? That situation is covered on the continuous testing use case page.
Practice, not a project
Most Salesforce teams have tried test automation at least once. A suite gets built before a big release, it runs well for a few weeks, and then it decays: record types change, a Lightning page is redesigned, a sandbox refresh wipes the test data, and failures pile up until someone turns the stage off. Continuous testing is the set of habits that prevents that decay. It treats the suite as a living asset with owners, tiers, triggers and hygiene rules, rather than a deliverable that was finished once.
This page is about that pipeline practice: how the suite is organized, when each tier runs, how results feed back to the people who can act, and how the suite is kept healthy. The continuous testing use case covers a different question, the business situation of an organization moving from occasional release testing to always-on validation, including the triggers, risks and teams involved. Read that page to build the case; read this one to run the practice.
The stage design of individual pipelines is on Salesforce CI/CD testing. Continuous testing sits one level above it: the same principles apply whether change arrives through DevOps Center, Copado, Gearset or a custom pipeline, and they also apply to change that arrives without a pipeline at all, such as Salesforce's seasonal releases and managed package upgrades.
Organizing the suite into tiers
A single monolithic suite cannot run continuously. Tiers let each trigger run what it can afford.
Smoke tier
A handful of critical journeys, such as login as each key persona, create and convert a lead, open and close a case. Runs in minutes after every deploy to any shared org.
Change-impact tier
Regression packs selected from the metadata delta. Runs on merges and deployments so the change in hand is validated where it is most likely to break something.
Process regression tier
Complete end-to-end business processes per cloud, for example quote to contract in CPQ or entitlement and milestone handling in Service Cloud. Runs on release candidates.
Access tier
Persona-based checks on object, field and record visibility. Runs when profiles, permission sets or sharing change, and on a schedule to catch drift.
Cross-system tier
Processes that continue into ERP, billing or identity systems through MuleSoft or direct integrations. Runs on release candidates and nightly.
Full regression
Everything, on a schedule. The safety net for anything selection-based runs missed and for change made outside the pipeline.
Trigger rules: what runs when
Change reaches a Salesforce org through more routes than the pipeline. Continuous testing needs a trigger for each.
| Trigger | Tiers to run | Why |
|---|---|---|
| Pull request opened or updated | Static checks, delta Apex tests, a small change-impact pack | Fast feedback while the author still has context; see pull-request testing |
| Merge or promotion to integration | Smoke, change-impact | Validates the change in combination with other recent merges |
| Release candidate to UAT or staging | Smoke, process regression, access, cross-system | Broad confidence before business sign-off |
| Production deployment | Smoke, targeted change-impact where safe | Confirms the change works in the real org; see post-deployment testing |
| Sandbox preview upgrade | Full regression | Salesforce upgrades preview sandboxes weeks before production; see sandbox preview testing |
| Managed package upgrade | Process regression for affected clouds | Package changes arrive outside your source control |
| Sandbox refresh | Smoke, then data reseed | Refreshes reset data and configuration that tests depend on |
| Nightly schedule | Full regression, configuration drift checks | Catches slow failures and direct changes made in production Setup |
Feedback loops that people act on
A test that fails silently is not continuous testing. The value comes from routing each result to someone who can do something about it, fast enough that the context is still fresh. For a pull request, that is the author and reviewer, directly on the pull request. For an integration stage, it is the team whose change entered the build, which means results need to name the components and work items involved. For a nightly run, it is a rotating owner who triages every failure before stand-up.
Triage needs categories. A useful set is: product defect, test defect, environment or data problem, and known issue. Each category has a different owner and a different fix, and tracking the mix over time shows where the practice is weak. If environment and data problems dominate, invest in test data reset before writing more tests. If test defects dominate, the suite needs maintenance time.
SyntraFlow is designed to return results that carry this context: the process, the persona, the step that failed and the org it ran against, plus an evidence record per run. Where a failure has a plausible cause in the change set, AI root cause analysis can shorten triage. These capabilities are available for demonstration and proof-of-concept validation.
Rules for handling flaky tests
Flaky tests are the main reason continuous testing programs lose trust. These rules keep them contained.
- Track flakiness explicitly. A test that passes on rerun without any change has failed once, and that failure should be counted rather than forgotten.
- Quarantine quickly. Move a flaky test out of blocking tiers into a report-only lane within a day, with an owner and a date to fix or delete it.
- Fix root causes, not symptoms. Common Salesforce causes are asynchronous automation such as Queueable Apex or scheduled paths in Flows finishing after the test checks, shared records edited by parallel runs, and Lightning components rendering late.
- Isolate data per run. Tests that create their own records with unique identifiers, or reserve records through data reservation, stop colliding with each other.
- Never add blind waits as a fix. Wait for a specific condition such as a field value or a platform event instead of a fixed number of seconds.
- Do not allow automatic reruns to turn a blocking gate green without recording that the first attempt failed.
Keeping the suite healthy over time
A recurring maintenance cycle that stops the suite from decaying between releases.
Review failures weekly
Look at the categories from triage, the flaky quarantine list and any tests that have not failed in a long time and may no longer assert anything useful.
Update tests with the change
When a story changes a screen, Flow or validation rule, update the affected tests in the same work item so the suite never lags the org.
Retire and consolidate
Delete tests for retired processes and merge near-duplicates. A smaller suite that runs cleanly is worth more than a large one people ignore.
Refresh the impact map
Re-check which metadata maps to which packs as the org evolves, using dependency analysis so selection stays accurate.
Prepare for seasonal releases
Before each Spring, Summer and Winter release, run the full suite on a preview sandbox and fix breakages in the suite as well as in the org.
Measures that show the practice is working
Qualitative signals rather than vanity metrics such as raw test counts.
Time to feedback
How long after a merge the responsible team learns about a regression. Shorter is better, and it should not grow as the suite grows.
Escaped defects by type
Production issues that a tier should have caught show which tier needs coverage, rather than a vague sense that testing failed.
Gate trust
Whether teams accept a red gate as real. Frequent overrides or reruns mean the practice has a trust problem to fix first.
Suite freshness
Whether tests are updated in the same work item as the change, or weeks later after a failure forces it.
Related pages
DevOps testing hub
The pipeline validation layer that continuous testing keeps running.
Continuous testing use case
The business situation and case for moving to always-on Salesforce testing.
Salesforce CI/CD testing
Stage-by-stage test design for an individual pipeline.
Quality gates
How continuous results become enforceable pass/fail decisions.
AI self-healing
Reducing the maintenance load when UI changes break tests.
Regression automation
Building the suite that continuous testing runs and maintains.
Continuous Testing testing FAQs
What is Salesforce continuous testing in DevOps?
It is the operating practice of running automated Salesforce validation on every change and on a schedule, with tiered suites, clear trigger rules, fast feedback, flaky test control and ongoing maintenance. The aim is that the pipeline always holds a current, trustworthy answer about whether the org still works.
How is this page different from the continuous testing use case?
This page covers the pipeline practice: suite tiers, triggers, feedback and upkeep. The continuous testing use case covers the business situation that leads an organization to adopt it, including typical triggers, what is at risk and which teams are involved.
Does continuous testing mean running every test on every commit?
No. That would make pipelines too slow to use. Continuous testing runs a small, relevant tier on each change and saves broad regression for release candidates and scheduled runs, so something is always validating the org without blocking developers.
Why include triggers that are not part of the pipeline?
Because Salesforce orgs change outside your pipeline. Seasonal releases upgrade preview sandboxes and then production, managed packages upgrade independently, sandbox refreshes reset data, and admins sometimes change production Setup directly. A continuous practice needs a test trigger for each route.
What causes flaky tests in Salesforce?
Common causes are asynchronous automation completing after the test checks a result, parallel runs editing the same records, Lightning components rendering late, and test data changed by a sandbox refresh. Isolating data per run and waiting on specific conditions fixes most of them.
Where does SyntraFlow fit in a continuous testing practice?
SyntraFlow is designed to run tiered regression packs when a pipeline, schedule or event triggers it, and to return results with process, persona and evidence context for triage. It works alongside the DevOps tool that deploys metadata and is available for demonstration and proof-of-concept validation.
Keep your Salesforce tests trustworthy every week
See how tiered suites, trigger rules and evidence records work together in a continuous testing practice.