Validate mobile app deep links in GitHub PRs with automated testing
Needs changesNeeds changes. This template uses 1 thing(s) that n8n 3.0 removes: Function (legacy). 1 breaking item(s) found. Static check, last run 2026-10-19.
What to replace before upgrading
| Removed in 3.0 | Replace with |
|---|---|
| Function (legacy) Format Markdown | Code node, mode 'Run Once for All Items' |
Nodes used (5)
- Webhook
n8n-nodes-base.webhook - Edit Fields (Set)
n8n-nodes-base.set - Execute Command
n8n-nodes-base.executeCommand - Function
n8n-nodes-base.function - GitHub
n8n-nodes-base.github
What it does
GitHub PR Deep-Link & Routing Validator (ExecuteCommand + GitHub Comment) 🚀 Quick-Start TL;DR 1. Import the workflow JSON into n8n (Cloud or self-hosted). 2. Create a GitHub Personal Access Token with repo:publicrepo (or repo) scope and add it to n8n credentials. 3. Open the “CONFIG - Variables” node and tweak: manifestPath – path to your deep-link manifest (AndroidManifest.xml, Info.plist, etc.). scriptPath – helper script that boots the emulator & checks each route. 4. Enable the workflow. Every push to a PR branch triggers validation and posts a Markdown pass/fail matrix back to the PR. What It Does This workflow delivers an automated, CI-friendly smoke-test of every deep link defined in your mobile app. On each push to an open GitHub PR, it: 1. Clones the PR branch. 2. Runs a lightweight validation script (provided) that spins up an emulator/simulator, attempts to open each declared URI, and records OK/FAIL. 3. Generates a Markdown table summarizing the results. 4. Comments that table in the PR, letting reviewers spot broken schemes at a glance. Who’s It For Mobile teams maintaining Android or iOS deep-link manifests. CI engineers who need a simple, language-agnostic check they can publish to each PR. OSS maintainers wanting a template-library-ready n8n recipe. Requirements | Requirement | Notes | |-------------|-------| | n8n Cloud / CE | Works everywhere; self-hosted users need Docker with Android / Xcode if validating on-runner. | | GitHub Personal Access Token | Used for posting PR comments. | | Emulator-capable runner | Local dev hardware or CI image that can run adb / xcrun simctl. | How It Works 1. GitHub Trigger fires on pullrequest → synchronize (i.e., each push to the PR branch). 2. Set (CONFIG - Variables) centralises repo URL, manifest path, script path, timeout, and comment mode. 3. ExecuteCommand clones the repo and calls the validation script. 4. Function converts CLI CSV output into a Markdown table. 5. GitHub node posts (or appends) the results as a comment on the PR. How To Set Up 1. Auth: In n8n, add a GitHub credential with your PAT named “GitHub Personal Access Token”. 2. Import: Settings → Import workflow and paste the JSON above. 3. Edit Config: Double-click CONFIG - Variables and change any default values. 4. Validation Script: Commit scripts/validatedeeplinks.sh into your repo (see sample below). 5. Enable the workflow. Push to any PR branch and watch the comment appear. Sample validatedeeplinks.sh bash !/usr/bin/env bash set -e while getopts "m:" opt; do case $opt in m) MANIFEST="$OPTARG" ;; esac done echo "⇨ Parsing deep links from $MANIFEST" rudimentary parser—replace with something smarter for XML/Plist grep -oE 'https?://^" +' "$MANIFEST" | while read -r uri; do if adb shell am start -W -a android.intent.action.VIEW -d "$uri" >/dev/null 2>&1; then echo "$uri,OK" else echo "$uri,FAIL" fi done How To Customise Multiple manifests: duplicate the Execute-Command step or extend the script to accept a list. Replace-latest comment: switch commentMode to replace-latest and update the GitHub node to search for the newest bot comment before editing. Status checks instead of comments: call the GitHub → “Create Commit Status” endpoint. Add-Ons | Add-On | Idea | |--------|------| | Multi-platform sweep | Loop over Android + iOS manifests and aggregate results. | | Slack/Teams alert | Push failures into your chat of choice via Incoming-Webhook node. | | Parallel device grid | Trigger multiple emulators (API 19 → 34) to catch OS-specific issues. | Use Case Examples 1. Ensure new features don’t break existing URI schemes before merge. 2. Catch mis-typed hosts/paths introduced by junior devs. 3. Baseline check on dependency bumps (e.g., upgrading Navigation libraries). 4. Validate white-label builds that override path segments. 5. Automated QA gate that blocks merge if any link fails. (…and many more!) Troubleshooting Guide | Issue | Possible Cause | Solution | |-------|---------------|----------| | Work