Add testing guidance for Azure Functions to prevent common pitfalls#1013
Add testing guidance for Azure Functions to prevent common pitfalls#1013
Conversation
Add common/testing.md with critical testing pitfalls: - Route prefix: /api/ is default, document how to test correctly - Cold start delays: explain wait times for Consumption plans - RBAC propagation: 30-60s delay after provision - Testing checklist and sample script - Common errors and solutions table Update composition.md Step 8 to reference testing guide with mandatory callout about route prefix. This addresses recurring issues where functions appear broken due to testing with wrong URL (missing /api/ prefix). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🔍 Token Analysis Report
fatal: path 'plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/testing.md' exists on disk, but not in 'origin/main' 📊 Token Change ReportComparing Summary
Changed Files
📊 Token Limit Check ReportChecked: 389 files
|
| File | Tokens | Limit | Over By |
|---|---|---|---|
.github/skills/file-test-bug/SKILL.md |
613 | 500 | +113 |
.github/skills/sensei/README.md |
3530 | 1000 | +2530 |
.github/skills/sensei/SKILL.md |
2216 | 500 | +1716 |
.github/skills/sensei/references/EXAMPLES.md |
3328 | 1000 | +2328 |
.github/skills/sensei/references/LOOP.md |
3717 | 1000 | +2717 |
.github/skills/sensei/references/SCORING.md |
2521 | 1000 | +1521 |
.github/skills/sensei/references/TOKEN-INTEGRATION.md |
1094 | 1000 | +94 |
.github/skills/skill-authoring/SKILL.md |
732 | 500 | +232 |
plugin/skills/appinsights-instrumentation/SKILL.md |
952 | 500 | +452 |
plugin/skills/azure-ai/SKILL.md |
835 | 500 | +335 |
plugin/skills/azure-aigateway/SKILL.md |
6329 | 500 | +5829 |
plugin/skills/azure-compliance/SKILL.md |
1238 | 500 | +738 |
plugin/skills/azure-compliance/references/azqr-recommendations.md |
1447 | 1000 | +447 |
plugin/skills/azure-compliance/references/azqr-remediation-patterns.md |
1987 | 1000 | +987 |
plugin/skills/azure-compliance/references/azure-keyvault-expiration-audit.md |
1286 | 1000 | +286 |
plugin/skills/azure-compliance/references/azure-quick-review.md |
1268 | 1000 | +268 |
plugin/skills/azure-cost-optimization/SKILL.md |
3456 | 500 | +2956 |
plugin/skills/azure-deploy/SKILL.md |
961 | 500 | +461 |
plugin/skills/azure-deploy/references/pre-deploy-checklist.md |
1004 | 1000 | +4 |
plugin/skills/azure-deploy/references/recipes/azd/errors.md |
1136 | 1000 | +136 |
plugin/skills/azure-deploy/references/troubleshooting.md |
1527 | 1000 | +527 |
plugin/skills/azure-diagnostics/SKILL.md |
876 | 500 | +376 |
plugin/skills/azure-kusto/SKILL.md |
2167 | 500 | +1667 |
plugin/skills/azure-messaging/SKILL.md |
857 | 500 | +357 |
plugin/skills/azure-messaging/references/service-troubleshooting.md |
1044 | 1000 | +44 |
plugin/skills/azure-observability/SKILL.md |
939 | 500 | +439 |
plugin/skills/azure-postgres/SKILL.md |
1519 | 500 | +1019 |
plugin/skills/azure-postgres/references/entra-rbac-overview.md |
1823 | 1000 | +823 |
plugin/skills/azure-postgres/references/group-sync.md |
1844 | 1000 | +844 |
plugin/skills/azure-postgres/references/permission-templates.md |
1647 | 1000 | +647 |
plugin/skills/azure-postgres/references/troubleshooting.md |
1959 | 1000 | +959 |
plugin/skills/azure-prepare/SKILL.md |
1545 | 500 | +1045 |
plugin/skills/azure-prepare/references/aspire.md |
2633 | 1000 | +1633 |
plugin/skills/azure-prepare/references/azure-context.md |
1019 | 1000 | +19 |
plugin/skills/azure-prepare/references/recipes/azd/aspire.md |
1289 | 1000 | +289 |
plugin/skills/azure-prepare/references/recipes/azd/azure-yaml.md |
1709 | 1000 | +709 |
plugin/skills/azure-prepare/references/recipes/azd/terraform.md |
2924 | 1000 | +1924 |
plugin/skills/azure-prepare/references/research.md |
1797 | 1000 | +797 |
plugin/skills/azure-prepare/references/runtimes/nodejs.md |
1508 | 1000 | +508 |
plugin/skills/azure-prepare/references/security.md |
1784 | 1000 | +784 |
plugin/skills/azure-prepare/references/services/functions/bicep.md |
1969 | 1000 | +969 |
plugin/skills/azure-prepare/references/services/functions/templates/SPEC-composable-templates.md |
6187 | 1000 | +5187 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/README.md |
1354 | 1000 | +354 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md |
1034 | 1000 | +34 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/uami-bindings.md |
1223 | 1000 | +223 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md |
4762 | 1000 | +3762 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md |
1467 | 1000 | +467 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md |
1149 | 1000 | +149 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md |
1403 | 1000 | +403 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/java.md |
1312 | 1000 | +312 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/python.md |
1207 | 1000 | +207 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/typescript.md |
1138 | 1000 | +138 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md |
1171 | 1000 | +171 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/source/dotnet.md |
1256 | 1000 | +256 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/source/java.md |
1009 | 1000 | +9 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/source/python.md |
1080 | 1000 | +80 |
plugin/skills/azure-prepare/references/services/functions/terraform.md |
2358 | 1000 | +1358 |
plugin/skills/azure-prepare/references/services/service-bus/patterns.md |
1010 | 1000 | +10 |
plugin/skills/azure-resource-lookup/SKILL.md |
1379 | 500 | +879 |
plugin/skills/azure-resource-lookup/references/azure-resource-graph.md |
1307 | 1000 | +307 |
plugin/skills/azure-resource-visualizer/SKILL.md |
2091 | 500 | +1591 |
plugin/skills/azure-storage/SKILL.md |
1092 | 500 | +592 |
plugin/skills/azure-storage/references/sdk-usage.md |
1096 | 1000 | +96 |
plugin/skills/azure-validate/SKILL.md |
734 | 500 | +234 |
plugin/skills/azure-validate/references/recipes/azd/README.md |
1147 | 1000 | +147 |
plugin/skills/entra-app-registration/SKILL.md |
2055 | 500 | +1555 |
plugin/skills/entra-app-registration/references/api-permissions.md |
2545 | 1000 | +1545 |
plugin/skills/entra-app-registration/references/cli-commands.md |
2211 | 1000 | +1211 |
plugin/skills/entra-app-registration/references/console-app-example.md |
2752 | 1000 | +1752 |
plugin/skills/entra-app-registration/references/first-app-registration.md |
1846 | 1000 | +846 |
plugin/skills/entra-app-registration/references/oauth-flows.md |
2375 | 1000 | +1375 |
plugin/skills/entra-app-registration/references/troubleshooting.md |
1896 | 1000 | +896 |
plugin/skills/microsoft-foundry/SKILL.md |
1934 | 500 | +1434 |
plugin/skills/microsoft-foundry/foundry-agent/create/create.md |
3095 | 1000 | +2095 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md |
1177 | 1000 | +177 |
plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md |
3557 | 1000 | +2557 |
plugin/skills/microsoft-foundry/foundry-agent/invoke/invoke.md |
1273 | 1000 | +273 |
plugin/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md |
1299 | 1000 | +299 |
plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md |
1627 | 500 | +1127 |
plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md |
1725 | 500 | +1225 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md |
2220 | 500 | +1720 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md |
1859 | 1000 | +859 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md |
1212 | 500 | +712 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md |
4252 | 1000 | +3252 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md |
1315 | 1000 | +315 |
plugin/skills/microsoft-foundry/project/create/create-foundry-project.md |
1218 | 1000 | +218 |
plugin/skills/microsoft-foundry/quota/references/ptu-guide.md |
1473 | 1000 | +473 |
plugin/skills/microsoft-foundry/quota/references/troubleshooting.md |
1807 | 1000 | +807 |
plugin/skills/microsoft-foundry/quota/references/workflows.md |
1614 | 1000 | +614 |
plugin/skills/microsoft-foundry/rbac/rbac.md |
1752 | 1000 | +752 |
plugin/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md |
1888 | 1000 | +888 |
plugin/skills/microsoft-foundry/resource/create/create-foundry-resource.md |
1489 | 1000 | +489 |
plugin/skills/microsoft-foundry/resource/create/references/workflows.md |
1637 | 1000 | +637 |
.github/agents/SkillCreator.agent.md |
1044 | 1000 | +44 |
Consider moving content to
references/subdirectories.
Automated token analysis. See skill authoring guidelines for best practices.
There was a problem hiding this comment.
Pull request overview
This PR adds comprehensive testing guidance for Azure Functions to prevent common deployment testing failures. The documentation addresses three recurring issues: missing /api/ route prefix in test URLs, cold start delays on Consumption plans, and RBAC propagation delays causing auth failures.
Changes:
- Added new
recipes/common/testing.mdfile with detailed testing guidance covering route prefix behavior, cold start delays, RBAC propagation, testing checklist, sample test scripts, and common errors - Added Step 8 to
recipes/composition.mdthat mandates reading the testing guide before testing, with a quick reference to the most common pitfalls
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/testing.md |
New comprehensive testing guide documenting route prefix behavior, cold start delays, RBAC propagation, testing strategies, and common errors |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md |
Added Step 8 with mandatory callout to testing guide and quick test examples showing correct /api/ prefix usage |
| echo -e "\nTesting create endpoint..." | ||
| RESULT=$(curl -s -X POST "$FUNC_URL/api/shorten" \ | ||
| -H "Content-Type: application/json" \ | ||
| -d '{"url": "https://example.com"}') |
There was a problem hiding this comment.
I recommend using a placeholder value that is clearly a placehold instead (e.g. {function_endpoint}) of https://example.com.
| - [ ] **Cold start**: Waited for first request to complete (up to 30s) | ||
| - [ ] **RBAC**: Waited 60s after provision for role assignments to propagate | ||
| - [ ] **App settings**: Verified settings are deployed (`az functionapp config appsettings list`) | ||
| - [ ] **Logs**: Checked Application Insights for actual errors |
There was a problem hiding this comment.
Curious if this works? as in will it look in logs for actual errors?
|
@paulyuk Please resolve the remaining comments. Explain what changes you made or why you chose not to make any changes for each comment. |
Problem
When testing Azure Functions after deployment, we repeatedly hit the same issues:
/api/prefix - Functions return 404 because we test/shorteninstead of/api/shortenThese cause functions to appear "broken" when they're actually working correctly.
Solution
1. New
common/testing.mdfileComprehensive testing guide covering:
2. Updated
composition.mdStep 8Added mandatory callout to read testing guide before testing, with quick example showing correct URL format.
Key Guidance
Or set
routePrefix: ""in host.json to remove the prefix.Files Changed
recipes/common/testing.md(new) - Testing guidance documentrecipes/composition.md- Added Step 8 with testing calloutTesting
Validated by deploying test3 with Bicep and confirming the route prefix issue was the root cause of apparent 404s.