apex-tests-git-delta
v3.2.0
Published
Determine Apex tests for incremental Salesforce deployments using git commit messages.
Maintainers
Readme
apex-tests-git-delta
A Salesforce CLI plugin that extracts Apex test class names from git commit messages for incremental test execution during deployments.
Why This Plugin?
sfdx-git-delta identifies changed Apex classes but running only those modified tests may not cover all required tests. This plugin lets you declare which tests belong to each commit directly in the commit message, giving you explicit control over test selection. It uses the same --from / --to SHA arguments as sfdx-git-delta, so the two tools compose naturally.
Install
sf plugins install apex-tests-git-deltaRequires git installed and available on PATH.
Usage
Create a config file
Create a .apextestsgitdeltarc file in your Salesforce DX project root. The file accepts up to two non-empty lines:
- Line 1 (required): regular expression to capture individual Apex test class names.
- Line 2 (optional): regular expression to capture Apex Test Suite names. Each matched suite name is resolved at the
--tocommit as<suiteName>.testSuite-meta.xmlinside yoursfdx-project.jsonpackage directories, and its<testClassName>entries are merged into the output.
[Aa][Pp][Ee][Xx]::(.*?)::[Aa][Pp][Ee][Xx]
[Ss][Uu][Ii][Tt][Ee]::(.*?)::[Ss][Uu][Ii][Tt][Ee]Omitting line 2 disables suite parsing and is fully backward compatible.
Use the format in commit messages
fix: update triggers Apex::AccountTriggerHandlerTest OpportunityTriggerHandlerTest::Apex
chore: add sandbox setup Apex::PrepareMySandboxTest::Apex
fix: resolve quoting issues Apex::QuoteControllerTest::Apex
chore: regression pass Suite::AccountRegressionSuite::SuiteApex Test Suite wildcards
The plugin supports the same <testClassName> wildcard conventions documented by Salesforce for ApexTestSuite metadata:
| <testClassName> entry | Resolution at --to |
| -------------------------------- | ------------------------------------------------------------------------------- |
| LocalTestClass | Literal local class. Validated like any class name from a commit message. |
| A*Class, *Test, Foo_* | Local wildcard. Expanded against all .cls files in your package directories. |
| * | Expands to every local Apex class at --to. |
| Namespace1.NamespacedTestClass | Managed-package test. Passed through as-is (not validated). |
| Namespace1.* | Managed-package wildcard. Passed through as-is; Salesforce resolves at runtime. |
Wildcard patterns that match nothing locally produce a warning and contribute no tests.
Run the command to extract tests
sf atgd delta --from "HEAD~1" --to "HEAD"Output is alphabetically sorted and space-separated:
AccountTriggerHandlerTest OpportunityTriggerHandlerTest PrepareMySandboxTest QuoteControllerTestUse the output in a deployment command
sf project deploy start -x package/package.xml -l RunSpecifiedTests -t $(sf atgd delta --from "HEAD~1" --to "HEAD")sf atgd delta
USAGE
$ sf atgd delta -f <value> -t <value> -v [--json]
FLAGS
-f, --from=<value> Commit SHA from where the commit message log is done.
This SHA's commit message will not be included in the results.
-t, --to=<value> Commit SHA to where the commit message log is done.
[default: HEAD]
-v, --skip-test-validation Skip validating that tests exist in the local package directories.
[default: false]
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Parse commit messages over a range and return the Apex tests to deploy against.
EXAMPLES
Get tests from the most recent commit, confirming they exist in the local package directories.
$ sf atgd delta --from "HEAD~1" --to "HEAD"
Get tests from the most recent commit, skipping the local package directory validation.
$ sf atgd delta --from "HEAD~1" --to "HEAD" -vAlternatives
| Plugin | Approach | | --------------------------------------------------------------------- | ---------------------------------------------- | | apex-tests-git-delta | Extracts test classes from commit messages | | sfdx-git-delta | Run modified Apex classes | | apex-test-list | Uses test annotations in Apex files |
Issues
Report bugs or suggest features by creating an issue.
