Skip to main content

test-template

Test templates with test_template.sh script

Jump to install

Source facts

Repository
forcedotcom/SalesforceMobileSDK-Templates
Last source activity
May 13, 2026 at 20:48
Detected SKILL.md language
English
Stars
58
Forks
63

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
test-template
description
Test templates with test_template.sh script
type
skill
# Test Templates with test_template.sh This skill documents testing templates in the Templates repository using the `test_template.sh` script. ## Purpose After modifying templates (adding, removing, or updating), you need to verify that: 1. Template `install.js` runs successfully 2. SDK dependencies are downloaded correctly 3. Projects build successfully with Xcode (iOS) or Gradle (Android) ## Prerequisites - Templates repo with changes committed locally - Know which templates to test (or test all) - Know which SDK branches to test against (if using custom branches) ## Basic Usage ### Test Specific Template ```bash ./test_template.sh --template iOSNativeSwiftTemplate ``` ### Test on Specific Platform ```bash ./test_template.sh --template ReactNativeTemplate --platform ios ``` ### Test All Templates ```bash ./test_template.sh ``` ## Testing with Custom SDK Branches When testing template changes alongside SDK changes, you can override SDK dependencies: ### iOS SDK Override ```bash ./test_template.sh \ --msdk-ios-org wmathurin \ --msdk-ios-branch feature/new-api \ --template iOSNativeSwiftTemplate --platform ios ``` This modifies `package.json` `sdkDependencies` to use: ```json { "SalesforceMobileSDK-iOS": "https://github.com/wmathurin/SalesforceMobileSDK-iOS.git#feature/new-api" } ``` ### Android SDK Override ```bash ./test_template.sh \ --msdk-android-org wmathurin \ --msdk-android-branch feature/new-api \ --template AndroidNativeKotlinTemplate --platform android ``` ### React Native with All Overrides ```bash ./test_template.sh \ --msdk-ios-branch my-feature \ --msdk-android-branch my-feature \ --rn-force-branch my-feature \ --template ReactNativeTemplate ``` This overrides: - `SalesforceMobileSDK-iOS` dependency - `SalesforceMobileSDK-Android` dependency - `react-native-force` npm dependency ## What Gets Tested ✅ **Tested**: - `install.js` execution - SDK dependency download (to `mobile_sdk/` directory) - CocoaPods installation (iOS) - Gradle dependency resolution (Android) - Xcode build (iOS) - Gradle build (Android) ❌ **NOT Tested**: - Running the generated app - Unit tests - UI tests ## Supported Platforms | Template Type | Test Support | |---------------|--------------| | **Native (iOS)** | ✅ Full support | | **Native (Android)** | ✅ Full support | | **React Native** | ✅ Full support (iOS and Android) | | **Hybrid** | ❌ Not supported | ## Common Testing Scenarios ### After Removing a Template Test that remaining templates still work: ```bash ./test_template.sh ``` ### After Modifying a Template Test the specific modified template: ```bash ./test_template.sh --template <TemplateName> ``` ### Testing Template with SDK Changes When coordinating template changes with SDK changes: ```bash ./test_template.sh \ --msdk-ios-branch my-feature \ --msdk-android-branch my-feature \ --template ReactNativeTemplate ``` ### Testing All iOS Templates with Custom SDK ```bash # Test each iOS template manually for template in iOSNativeSwiftTemplate iOSNativeSwiftPackageManagerTemplate iOSIDPTemplate; do ./test_template.sh \ --msdk-ios-branch my-feature \ --template $template --platform ios done ``` ## Output Interpretation **Success**: - Template generates successfully - Dependencies install without errors - Build completes without errors **Failure**: - Template generation fails - `install.js` errors - Dependency installation fails - Build errors (compilation, linking, etc.) ## Validation Checklist - [ ] Test script runs without errors - [ ] All applicable templates tested - [ ] Build succeeds for all tested templates - [ ] No dependency resolution errors - [ ] No compilation errors ## Integration with Other Skills This skill is used by: - **remove-template**: After removing a template, test that remaining templates work - **add-template**: After adding a template, test that it works - **update-template**: After modifying a template, test that changes work ## Example: Testing After Template Removal ```bash cd SalesforceMobileSDK-Templates # After removing a template, test remaining iOS templates ./test_template.sh --template iOSNativeSwiftTemplate --platform ios ./test_template.sh --template iOSIDPTemplate --platform ios ./test_template.sh --template iOSNativeLoginTemplate --platform ios # Or test all templates ./test_template.sh ``` ## Example: Testing with Custom SDK Branch ```bash cd SalesforceMobileSDK-Templates # Testing modified template with custom iOS SDK ./test_template.sh \ --msdk-ios-org wmathurin \ --msdk-ios-branch fix/template-issue \ --template iOSNativeSwiftTemplate --platform ios ``` ## Notes - **test_template.sh location**: Located in Templates repo root - **Output directory**: Creates `test_output/` directory with generated projects - **Cleanup**: Script cleans up test output after successful builds - **CI Integration**: Used by GitHub Actions PR and nightly workflows - **Performance**: Testing all templates can take 30-60 minutes ## Related Documentation - See `TESTING.md` for comprehensive testing documentation - See `.github/workflows/pr.yaml` for CI test configuration - See workspace skill `test-templates.md` for cross-repo testing coordination
View on GitHub