Skip to content

Verification: Frontend Deployment Pipeline

RequirementVerificationRunStatus
REQ-INFRA-001Demo Amplify app exists, connected to demo branch, auto-build disabled, site loads at demo.alpha001.app.arda.cards1Pending
REQ-INFRA-002amplifyBranch.cfn.yaml validates with EnableAutoBuild parameter; Kyle deployment unaffected (auto-build still true)1Pending
REQ-INFRA-003CloudFormation export Alpha001-demo-I-AmplifyBranchName available after stack deployment1Pending
REQ-INFRA-004amplifyExports.cfn.yaml validates; produces correct exports when deployed with test parameters4Pending
REQ-INFRA-005amm.sh contains all four mapping constants; gate condition allows Alpha001/demo and SandboxKyle002/kyle; blocks other pairs1Pending
REQ-INFRA-006amm.yml workflow uses secrets[format('ARDA_API_KEY_{0}', partition)]; demo deployment receives correct API key1Pending
REQ-INFRA-007IAM role exists in both accounts; aws iam get-role succeeds; OIDC assumption works from arda-frontend-app demo branch1Pending
REQ-WF-001deploy.yaml triggers on demo branch, deploys to demo partition, Amplify build succeeds2Pending
REQ-WF-002redeploy.yaml deploys a specific SHA to demo; CI check gate functions correctly3Pending
REQ-WF-003Reusable workflow: purpose-config fetch, OIDC assume, CloudFormation export read, StartJob, GetJob poll all succeed2Pending
REQ-WF-004GitHub environments exist with correct protection rules; stage/prod pause for approval2Pending
REQ-CUT-001Each partition migrated and verified individually: auto-build disabled, deployment succeeds, site functional4Pending
REQ-CUT-002Test PR triggers Amplify preview build; preview URL posted on PR; sign-in works; cleanup on PR close4Pending
REQ-CUT-003Rollback dry-run: redeploy.yaml deploys previous SHA to dev successfully4Pending
REQ-CUT-004deploy.yaml on main triggers via workflow_run on CI success; workflow_dispatch also works4Pending
REQ-DOC-001Frontend development guide exists at expected path; covers all required topics4Pending
REQ-DOC-002rollback-plan.md exists with per-partition commands before cutover begins4Pending
REQ-DOC-003post-cutover-instructions.md exists with all deferred procedures documented4Pending
Terminal window
# REQ-INFRA-001: Demo Amplify app exists
aws amplify get-app --app-id "$(aws cloudformation list-exports \
--region us-east-1 --output text \
--query "Exports[?Name=='Alpha001-demo-I-AmplifyAppId'].Value")" \
--region us-east-1
# REQ-INFRA-001: Auto-build disabled
aws amplify get-branch --app-id {demo-app-id} --branch-name demo \
--region us-east-1 \
--query "branch.enableAutoBuild"
# Expected: false
# REQ-INFRA-002: Template validates
aws cloudformation validate-template \
--template-body file://src/main/cfn/amplifyBranch.cfn.yaml
# REQ-INFRA-003: Branch name export available
aws cloudformation list-exports --region us-east-1 --output text \
--query "Exports[?Name=='Alpha001-demo-I-AmplifyBranchName'].Value"
# Expected: demo
# REQ-INFRA-004: Export template validates
aws cloudformation validate-template \
--template-body file://src/main/cfn/amplifyExports.cfn.yaml
# REQ-INFRA-007: IAM role exists (Alpha001)
aws iam get-role --role-name Alpha001-API-GitHubActionFrontEnd
# REQ-INFRA-007: IAM role exists (Alpha002)
aws iam get-role --role-name Alpha002-API-GitHubActionFrontEnd
Terminal window
# REQ-WF-001/003: Trigger deploy.yaml on demo branch via GitHub Actions UI
# Verify in workflow logs:
# - purpose-config fetch succeeded
# - OIDC role assumption succeeded (aws sts get-caller-identity)
# - StartJob returned a jobId
# - GetJob polling shows SUCCEED
# - demo.alpha001.app.arda.cards loads
# REQ-WF-004: Environments exist
gh api repos/Arda-cards/arda-frontend-app/environments
Terminal window
# REQ-WF-002: Redeploy with specific SHA
# Trigger redeploy.yaml with an older commit SHA from demo branch
# Verify Amplify Console shows the specified commit in the build log
# REQ-CUT-003: CI check gate
# Attempt redeploy with a SHA that has no CI status
# Verify workflow handles it (runs CI inline or aborts)
Terminal window
# REQ-CUT-001: Auto-build disabled per partition
aws amplify get-branch --app-id d38w5m1ngjza76 --branch-name dev \
--region us-east-1 --query "branch.enableAutoBuild"
aws amplify get-branch --app-id d1kbrvra79y8sc --branch-name stage \
--region us-east-1 --query "branch.enableAutoBuild"
aws amplify get-branch --app-id duhexavnwh88g --branch-name main \
--region us-east-2 --query "branch.enableAutoBuild"
# All expected: false
# REQ-CUT-001: Export stacks deployed (all in us-east-1)
aws cloudformation list-exports --region us-east-1 --output text \
--query "Exports[?Name=='Alpha002-dev-I-AmplifyAppId'].Value"
aws cloudformation list-exports --region us-east-1 --output text \
--query "Exports[?Name=='Alpha002-stage-I-AmplifyAppId'].Value"
aws cloudformation list-exports --region us-east-1 --output text \
--query "Exports[?Name=='Alpha001-prod-I-AmplifyAppId'].Value"
# REQ-CUT-002: PR preview enabled (automated check)
aws amplify get-branch --app-id d38w5m1ngjza76 --branch-name dev \
--region us-east-1 --query "branch.enablePullRequestPreview"
# Expected: true
# REQ-CUT-002: PR preview functional (manual verification)
# 1. Open a test PR against `main` in arda-frontend-app
# 2. Wait for Amplify to build the PR branch (webhook-triggered, independent of GHA)
# 3. Verify Amplify posts the preview URL as a comment on the PR
# (e.g., pr-{N}.d38w5m1ngjza76.amplifyapp.com)
# 4. Visit the preview URL — page loads without errors
# 5. Sign in with test credentials — sign-in works (USER_PASSWORD_AUTH, no callback URL needed)
# 6. Push a new commit to the PR branch — verify it redeploys to the same URL
# 7. Close the PR — verify the preview deployment is deleted