Scheduled UW IdP Test Matrix #613
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Scheduled UW IdP Test Matrix | |
on: | |
push: | |
branches: | |
# You can test this workflow by pushing to this branch | |
- run-scheduled-idp-web-tests | |
schedule: | |
# The cron string must be quoted! | |
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#schedule | |
# Do not change this without also changing stop-test-service-providers.yml | |
- cron: '0 10 * * *' # 3am PDT, 2am PST | |
workflow_dispatch: | |
inputs: | |
target-idp-env: | |
description: > | |
NOTE: Running this workflows manually via this form will allow you to test the yaml of this workflow file and it will run the same tests as found in "No Slack - Run UW IdP Web Tests." | |
For "normal" on demand running of the idp tests, the "No Slack - Run UW IdP Web Tests" can be used. | |
target-idp-env. Acceptable values are `eval`, `prod`. The idp environment | |
you want to test against. | |
required: true | |
default: eval | |
target-idp-host: | |
description: > | |
target-idp-host. Optional. If provided, will add an /etc/hosts entry | |
targeting this host. | |
required: false | |
reason: | |
description: > | |
reason. The reason for running this test suite; can be helpful to | |
provide context and distinguish different runs. | |
required: false | |
pytest-args: | |
description: > | |
pytest-args. Any args you want to send to pytest. You do not ever need to | |
supply `log_cli` arguments. | |
required: false | |
env: | |
############################################### | |
# Do not edit the env values below this line. # | |
# Other defaults are set in .github/scripts/configure-workflow.sh | |
TEAMS_INTEGRATIONS_DAILY_WEB_TESTS: ${{ secrets.TEAMS_INTEGRATIONS_DAILY_WEB_TESTS }} | |
ARTIFACT_BUCKET: ${{ secrets.IDENTITY_ARTIFACT_BUCKET }} | |
############################################### | |
jobs: | |
run-web-tests: | |
strategy: | |
matrix: | |
include: | |
- idp_env: eval | |
- idp_env: prod | |
fail-fast: false # Don't cancel prod tests if eval fails and vice versa | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
actions: write | |
env: | |
ARTIFACT_BUCKET: ${{ secrets.IDENTITY_ARTIFACT_BUCKET }} | |
steps: | |
- uses: actions/checkout@v3 | |
- id: config | |
run: | | |
set -x | |
timestamp=$(date "+%Y.%d.%m-%H.%m.%S") | |
storyboard_path="idp/schedule/${{ matrix.idp_env }}/${timestamp}" | |
report_dir="web-tests/${storyboard_path}" | |
echo timestamp=${timestamp} >> $GITHUB_OUTPUT | |
echo storyboard_path=${storyboard_path} >> $GITHUB_OUTPUT | |
echo report_dir=${report_dir} >> $GITHUB_OUTPUT | |
echo storyboard_link=${storyboard_url}/${report_dir}/index.html >> $GITHUB_OUTPUT | |
echo workflow_link=${{ env.workflow_link }} >> $GITHUB_OUTPUT | |
echo IDP_ENV=${{ env.IDP_ENV }} >> $GITHUB_OUTPUT | |
env: | |
storyboard_url: https://identity-artifact.iamdev.s.uw.edu/ | |
workflow_link: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
IDP_ENV: ${{ matrix.idp_env }} | |
- uses: UWIT-IAM/actions/[email protected] | |
with: | |
gcloud-token: ${{ secrets.TEST_RUNNER_GOOGLE_TOKEN }} | |
- name: Notify Teams of Test Run Start | |
env: | |
IDP_ENV: ${{ steps.config.outputs.idp-env }} | |
INPUT_REASON: ${{ steps.config.outputs.input-reason }} | |
run: | | |
curl -H "Content-Type: application/json" \ | |
-d '{ | |
"type": "message", | |
"attachments": [ | |
{ | |
"contentType": "application/vnd.microsoft.card.adaptive", | |
"content": { | |
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json", | |
"type": "AdaptiveCard", | |
"version": "1.4", | |
"body": [ | |
{ | |
"type": "TextBlock", | |
"size": "Large", | |
"weight": "Bolder", | |
"text": "IDP Test Run Notification" | |
}, | |
{ | |
"type": "TextBlock", | |
"text": "Starting - IDP Tests ⏳", | |
"wrap": true | |
}, | |
{ | |
"type": "FactSet", | |
"facts": [ | |
{"title": "IdP Web Tests running on ", "value": "'${{ env.IDP_ENV }}'"}, | |
{"title": "Reason for Test Run", "value": "GlenHardcodedReasonStart"} | |
] | |
} | |
] | |
} | |
} | |
] | |
}' \ | |
"${{ env.TEAMS_INTEGRATIONS_DAILY_WEB_TESTS }}" | |
- name: Run tests | |
run: ./scripts/run-tests.sh -- --env ${{ matrix.idp_env }} | |
id: run | |
- name: Determine post-test actions | |
if: always() | |
run: | | |
if test -f webdriver-report/index.html | |
then | |
mkdir -pv ${{ steps.config.outputs.report_dir }} | |
cp -r webdriver-report/* ${{ steps.config.outputs.report_dir }} | |
echo upload_storyboards='true' >> $GITHUB_OUTPUT | |
fi | |
id: post-run | |
- if: always() && steps.post-run.outputs.upload_storyboards == 'true' | |
name: Upload storyboards to identity-artifact | |
id: upload-storyboards | |
uses: google-github-actions/upload-cloud-storage@v2 | |
with: | |
path: 'web-tests' | |
destination: ${{ secrets.IDENTITY_ARTIFACT_BUCKET }} | |
- if: > | |
always() | |
&& steps.post-run.outputs.upload_storyboards == 'true' | |
&& steps.upload-storyboards.outcome == 'success' | |
name: Set notices on workflow | |
env: | |
storyboard_link: ${{ steps.config.outputs.storyboard_link }} | |
run: echo "::notice::Storyboards located at ${{ env.storyboard_link }}" | |
- name: Notify Teams of Test Run Completion | |
env: | |
TEST_STATUS: ${{ steps.run-tests.outputs.test-status }} | |
REPORT_URL: ${{ steps.config.outputs.report-url }} | |
INPUT_REASON: ${{ steps.config.outputs.input-reason }} | |
IDP_ENV: ${{ steps.config.outputs.idp-env }} | |
if: always() | |
run: | | |
# Set the message body dynamically based on TEST_STATUS | |
echo "TEST_STATUS=${{ env.TEST_STATUS }}" | |
if [ "$TEST_STATUS" = "succeeded" ]; then | |
test_result="Test run for IDP passed successfully ✅" | |
else | |
test_result="Test run for IDP failed ❌" | |
fi | |
# Notify Teams with the status of the test run | |
curl -H "Content-Type: application/json" \ | |
-d '{ | |
"type": "message", | |
"attachments": [ | |
{ | |
"contentType": "application/vnd.microsoft.card.adaptive", | |
"content": { | |
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json", | |
"type": "AdaptiveCard", | |
"version": "1.4", | |
"body": [ | |
{ | |
"type": "TextBlock", | |
"size": "Large", | |
"weight": "Bolder", | |
"text": "Completed - IDP Test Run Notification" | |
}, | |
{ | |
"type": "TextBlock", | |
"text": "'"$test_result"'", | |
"wrap": true | |
}, | |
{ | |
"type": "FactSet", | |
"facts": [ | |
{"title": "IdP Web Tests ran on ", "value": "'${{ env.IDP_ENV }}'"}, | |
{"title": "Reason for Test Run", "value": "GlenHardcodedReason"} | |
] | |
} | |
] | |
} | |
} | |
] | |
}' \ | |
"${{ secrets.TEAMS_INTEGRATIONS_DAILY_WEB_TESTS }}" | |