Example Salesfoce CI using GitHub actions.
- Static code scan
- Build scratch org
- Run unit tests
The lighting app in this repo has been specififcally written to highlight the workflow's behaviour. Not implementing Salesforce best practices ultimatly leads to a failed unit test.
=== Apex Code Coverage for Test Run 7073G00000sJ2H1 TEST NAME CLASS BEING TESTED OUTCOME PERCENT MESSAGE RUNTIME (MS) ─────────────────────────────────── ────────────────── ─────── ─────── ──────────────────────────────────────────────────────────── ──────────── AncestryHelperTest.testGetAncestors AncestryHelper Fail 89% System.LimitException: Too many SOQL queries: 101 Class.AncestryHelper.getAncestors: line 22, column 1 Class.AncestryHelperTest.testGetAncestors: line 23, column 1 594 Looking at the action log we can see that the potential for this failure is highlighted by the static code scanner.
LOCATION DESCRIPTION CATEGORY U R L ───────────────────────────────────────────────────── ───────────────────────────────────────────────────── ───────────── ────────────────────────────────────────────────────────────────────────────────────────── force-app/main/default/classes/AncestryHelper.cls:12 Missing ApexDoc comment Documentation https://pmd.github.io/pmd-6.55.0/pmd_rules_apex_documentation.html#apexdoc force-app/main/default/classes/AncestryHelper.cls:14 Validate CRUD permission before SOQL/DML operation Security https://pmd.github.io/pmd-6.55.0/pmd_rules_apex_security.html#apexcrudviolation or enforce user mode force-app/main/default/classes/AncestryHelper.cls:22 Avoid Soql queries inside loops Performance https://pmd.github.io/pmd-6.55.0/pmd_rules_apex_performance.html#avoidsoqlinloops The "Avoid Soql queries inside loops" message references the same line as the failed unit test. (force-app/main/default/classes/AncestryHelper.cls:22)