Skip to content

Determine Apex tests for incremental Salesforce deployments using git commit messages.

License

Notifications You must be signed in to change notification settings

mcarvin8/apex-tests-git-delta

Repository files navigation

Apex Tests Git Delta

NPM Downloads/week License

Table of Contents

A Salesforce CLI plugin that extracts Apex test class names from git commit messages, enabling incremental test execution during deployments.

This plugin helps you:

✅ Automate test selection based on commit history
✅ Ensure critical tests run before deployment
✅ Seamlessly integrate with sfdx-git-delta

Install

sf plugins install [email protected]

System Dependencies

Requires git to be installed and that it can be called using the command git.

Usage

Create a config file

Create a .apextestsgitdeltarc file in your Salesforce DX project root with the regular expression:

[Aa][Pp][Ee][Xx]::(.*?)::[Aa][Pp][Ee][Xx]

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

Run the command to extract tests

sf atgd delta --from "HEAD~1" --to "HEAD"

Output (alphabetically sorted, space-separated test classes):

AccountTriggerHandlerTest OpportunityTriggerHandlerTest PrepareMySandboxTest QuoteControllerTest

Use 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")

Why This Plugin

sfdx-git-delta is great for identifying changed Apex classes, but running only those modified tests may not be enough. Other dependencies or testing strategies may require additional tests.

This plugin lets you define which tests to run for each commit, ensuring better coverage. It seamlessly integrates with sfdx-git-delta using the same --from and --to SHA arguments.

Command

  • sf atgd delta

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" -v

Alternatives

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

If you encounter any issues or would like to suggest features, please create an issue.

License

This project is licensed under the MIT license. Please see the LICENSE file for details.

About

Determine Apex tests for incremental Salesforce deployments using git commit messages.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •