1616 runs-on : ubuntu-latest
1717 outputs :
1818 has-permission : ${{ steps.check.outputs.has-permission }}
19+ pr-number : ${{ steps.get-pr.outputs.pr-number }}
1920 steps :
2021 - name : Check if user has permission
2122 id : check
4344 });
4445 }
4546
46- test-e2e :
47+ - name : Get PR number
48+ id : get-pr
49+ if : steps.check.outputs.has-permission == 'true'
50+ run : echo "pr-number=${PR_URL##*/}" >> "$GITHUB_OUTPUT"
51+ env :
52+ PR_URL : ${{ github.event.issue.pull_request.url }}
53+
54+ start-comment :
4755 needs : check-permissions
4856 if : needs.check-permissions.outputs.has-permission == 'true'
4957 runs-on : ubuntu-latest
@@ -63,128 +71,24 @@ jobs:
6371 **Location:** ${{ vars.AZURE_LOCATION }}`
6472 });
6573
66- - name : Checkout
67- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
68-
69- - name : PR checkout
70- run : |
71- PR_URL="${{ github.event.issue.pull_request.url }}"
72- PR_NUM=${PR_URL##*/}
73- gh pr checkout $PR_NUM
74- env :
75- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
76-
77- - name : Install Terraform
78- uses : hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3
79-
80- - name : Install azd
81- uses : Azure/setup-azd@ae0f8b5482eeac61e940f447327d84c73beb8b1e # v2.1.0
82-
83- - name : Install kubelogin
84- uses : azure/use-kubelogin@76597ae0fcbaace21b05e13a2cbf8daee2c6e820 # v1
85- with :
86- kubelogin-version : " v0.2.8"
87-
88- - name : Azure login
89- uses : azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2
90- with :
91- client-id : ${{ secrets.AZURE_CLIENT_ID }}
92- tenant-id : ${{ secrets.AZURE_TENANT_ID }}
93- subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
94-
95- - name : Azure Developer CLI login
96- run : |
97- azd auth login \
98- --client-id ${{ secrets.AZURE_CLIENT_ID }} \
99- --federated-credential-provider "github" \
100- --tenant-id ${{ secrets.AZURE_TENANT_ID }}
101-
102- - name : Turn on Kustomize support
103- run : azd config set alpha.aks.kustomize on
104-
105- - name : Swap azd config files to build from source
106- run : |
107- mv azure.yaml azure.yaml.bak
108- mv azure-build-from-source.yaml azure.yaml
109-
110- - name : Provision resources and deploy app
111- run : |
112- azd env new ${{ vars.AZURE_ENV_NAME }}
113- azd env set DEPLOY_AZURE_CONTAINER_REGISTRY true
114- azd env set DEPLOY_AZURE_OPENAI true
115- azd env set AZURE_OPENAI_LOCATION ${{ vars.AZURE_LOCATION }}
116- azd env set DEPLOY_AZURE_SERVICE_BUS true
117- azd env set DEPLOY_AZURE_COSMOSDB true
118- azd env set AZURE_COSMOSDB_ACCOUNT_KIND MongoDB
119- azd env set DEPLOY_OBSERVABILITY_TOOLS true
120- azd up
121- env :
122- AZURE_ENV_NAME : ${{ vars.AZURE_ENV_NAME }}
123- AZURE_LOCATION : ${{ vars.AZURE_LOCATION }}
124- AZURE_SUBSCRIPTION_ID : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
125-
126- - name : Get endpoint URLs
127- id : azd_get_endpoint_urls
128- run : |
129- echo "STORE_ADMIN_URL=$(azd env get-value SERVICE_STORE_ADMIN_ENDPOINT_URL)" >> "$GITHUB_OUTPUT"
130- echo "STORE_FRONT_URL=$(azd env get-value SERVICE_STORE_FRONT_ENDPOINT_URL)" >> "$GITHUB_OUTPUT"
131-
132- - name : Install Playwright dependencies
133- run : npm ci
134- working-directory : tests
135-
136- - name : Wait for services to be ready
137- run : |
138- STORE_FRONT_URL="${{ steps.azd_get_endpoint_urls.outputs.STORE_FRONT_URL }}"
139- echo "Waiting for store-front at ${STORE_FRONT_URL}..."
140- for i in $(seq 1 30); do
141- if curl -sf "${STORE_FRONT_URL}" > /dev/null 2>&1; then
142- echo "Store front is responding"
143- break
144- fi
145- echo "Attempt ${i}/30: Store front not ready, waiting 10s..."
146- sleep 10
147- done
148-
149- echo "Waiting for order-service to be ready via ${STORE_FRONT_URL}/api/orders/health..."
150- for i in $(seq 1 30); do
151- if curl -sf "${STORE_FRONT_URL}/api/orders/health" > /dev/null 2>&1; then
152- echo "Order service is responding, waiting 30s for all services to stabilize..."
153- sleep 30
154- break
155- fi
156- echo "Attempt ${i}/30: Order service not ready, waiting 10s..."
157- sleep 10
158- done
159-
160- - name : Run Playwright tests
161- run : npx playwright test --config=playwright.service.config.ts --workers=20
162- working-directory : tests
163- env :
164- PLAYWRIGHT_SERVICE_URL : ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
165- PLAYWRIGHT_SERVICE_ACCESS_TOKEN : ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_TOKEN }}
166- STORE_ADMIN_URL : ${{ steps.azd_get_endpoint_urls.outputs.STORE_ADMIN_URL }}
167- STORE_FRONT_URL : ${{ steps.azd_get_endpoint_urls.outputs.STORE_FRONT_URL }}
168- CI : true
169-
170- - name : Upload Playwright report
171- uses : actions/upload-artifact@v6
172- if : always()
173- with :
174- name : playwright-report
175- path : tests/playwright-report/
176- retention-days : 10
177-
178- - name : Clean up resources
179- if : always()
180- run : azd down --force --purge
181- env :
182- AZURE_ENV_NAME : ${{ vars.AZURE_ENV_NAME }}
183- AZURE_LOCATION : ${{ vars.AZURE_LOCATION }}
184- AZURE_SUBSCRIPTION_ID : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
185-
74+ test-e2e :
75+ needs : [check-permissions, start-comment]
76+ if : needs.check-permissions.outputs.has-permission == 'true'
77+ uses : ./.github/workflows/test-e2e-reusable.yaml
78+ secrets : inherit
79+ with :
80+ deploy-from-source : true
81+ deploy-method : kustomize
82+ deploy-full-services : true
83+ pr-number : ${{ needs.check-permissions.outputs.pr-number }}
84+
85+ result-comment :
86+ needs : [check-permissions, test-e2e]
87+ if : always() && needs.check-permissions.outputs.has-permission == 'true'
88+ runs-on : ubuntu-latest
89+ steps :
18690 - name : Add status comment - Success
187- if : success()
91+ if : needs.test-e2e.result == ' success'
18892 uses : actions/github-script@v7
18993 with :
19094 script : |
@@ -208,7 +112,7 @@ jobs:
208112 });
209113
210114 - name : Add status comment - Failure
211- if : failure()
115+ if : needs.test-e2e.result == ' failure'
212116 uses : actions/github-script@v7
213117 with :
214118 script : |
0 commit comments