Story/241800 user redirect #2428
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: Run E2E Tests | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: ["main", "development"] | |
paths: | |
- "src/**" | |
- "tests/Dfe.PlanTech.Web.E2ETests/**" | |
- ".github/workflows/e2e-tests.yml" | |
- ".github/actions/run-e2e-tests/action.yml" | |
- ".gitmodules" | |
concurrency: | |
group: "${{ github.workflow }}" | |
cancel-in-progress: false | |
env: | |
DOTNET_VERSION: ${{ vars.DOTNET_VERSION }} | |
jobs: | |
clear-db: | |
name: Clear database | |
runs-on: ubuntu-latest | |
env: | |
az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv | |
az_keyvault_database_connectionstring_name: ${{ secrets.AZ_KEYVAULT_DATABASE_CONNECTIONSTRING_NAME }} | |
az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} | |
az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} | |
SQL_IP_NAME: e2e-tests-clear-db | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Login with AZ | |
uses: ./.github/actions/azure-login | |
with: | |
az_tenant_id: ${{ secrets.AZ_TENANT_ID }} | |
az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} | |
az_client_id: ${{ secrets.AZ_CLIENT_ID }} | |
az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} | |
- name: Get workflow IP address | |
id: whats-my-ip | |
uses: ./.github/actions/whats-my-ip-address | |
- name: Add Azure firewall rules | |
uses: ./.github/actions/azure-ip-whitelist | |
with: | |
ip_address: ${{ steps.whats-my-ip.outputs.ip }} | |
verb: "add" | |
az_keyvault_name: ${{ env.az_keyvault_name }} | |
az_ip_name: ${{ env.SQL_IP_NAME }} | |
az_resource_group: ${{ env.az_resource_group_name}} | |
az_sql_database_server_name: ${{ env.az_sql_database_server_name }} | |
- name: Get connection string | |
id: get-connection-string | |
uses: ./.github/actions/azure-get-keyvault-secret | |
with: | |
az_keyvault_name: ${{ env.az_keyvault_name }} | |
az_keyvault_secret_name: ${{ env.az_keyvault_database_connectionstring_name }} | |
- name: Execute stored procedure | |
uses: azure/sql-action@v2.2 | |
with: | |
connection-string: ${{ steps.get-connection-string.outputs.secret_value }} | |
path: "./.github/scripts/drop-establishment-data.sql" | |
- name: Remove Azure firewall rules | |
if: always() | |
uses: ./.github/actions/azure-ip-whitelist | |
with: | |
ip_address: ${{ steps.whats-my-ip.outputs.ip }} | |
verb: "remove" | |
az_keyvault_name: ${{ env.az_keyvault_name }} | |
az_ip_name: ${{ env.SQL_IP_NAME }} | |
az_resource_group: ${{ env.az_resource_group_name}} | |
az_sql_database_server_name: ${{ env.az_sql_database_server_name }} | |
run-tests: | |
name: Run E2E Tests | |
runs-on: ubuntu-20.04 | |
needs: [clear-db] | |
env: | |
PROJECT_PATH: ./src/Dfe.PlanTech.Web/Dfe.PlanTech.Web.csproj | |
KEYVAULT_NAME: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv | |
RESOURCE_GROUP: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} | |
SQL_IP_NAME: e2e-tests-pr | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Azure CLI Login | |
uses: ./.github/actions/azure-login | |
with: | |
az_tenant_id: ${{ secrets.AZ_TENANT_ID }} | |
az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} | |
az_client_id: ${{ secrets.AZ_CLIENT_ID }} | |
az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Clear NuGet Cache | |
shell: bash | |
run: dotnet nuget locals all --clear | |
- name: Install dependencies | |
shell: bash | |
run: dotnet restore ${{ env.PROJECT_PATH }} | |
- name: Build project | |
shell: bash | |
run: dotnet publish ./src/Dfe.PlanTech.Web/Dfe.PlanTech.Web.csproj --configuration Release --no-restore --output ./build | |
- name: Create overwrite json file | |
shell: bash | |
working-directory: ./build | |
run: | | |
echo "{ \"DfeSignIn\": { \"FrontDoorUrl\": \"https://localhost:8081\"}}" > overrides.json | |
- name: Get workflow IP address | |
id: whats-my-ip | |
uses: ./.github/actions/whats-my-ip-address | |
- name: Add Azure firewall rules | |
uses: ./.github/actions/azure-ip-whitelist | |
with: | |
ip_address: ${{ steps.whats-my-ip.outputs.ip }} | |
verb: "add" | |
az_keyvault_name: ${{ env.KEYVAULT_NAME }} | |
az_ip_name: ${{ env.SQL_IP_NAME }} | |
az_resource_group: ${{ env.RESOURCE_GROUP}} | |
az_sql_database_server_name: ${{ env.RESOURCE_GROUP }} | |
- name: Run project | |
shell: bash | |
working-directory: ./build | |
run: | | |
export ASPNETCORE_ENVIRONMENT=E2E | |
export KeyVaultName=${{ env.KEYVAULT_NAME }} | |
export Kestrel__Endpoints__Https__Url=https://*:8081 | |
export DfeSignIn__FrontDoorUrl=https://localhost:8081 | |
export GTM__Id=gtm_id | |
export GTM__SiteVerificationId=testing_site_verification_id | |
dotnet ./Dfe.PlanTech.Web.dll --DfeSignIn:FrontDoorUrl=https://localhost:8081 & | |
- name: Cypress tests | |
uses: ./.github/actions/run-e2e-tests | |
with: | |
url: https://localhost:8081 | |
dsi_url: ${{ secrets.DSI_URL }} | |
dsi_username: ${{ secrets.DSI_USERNAME }} | |
dsi_password: ${{ secrets.DSI_PASSWORD }} | |
environment: "E2E" | |
dsi_noorg_username: ${{ secrets.DSI_NOORG_USERNAME }} | |
dsi_noorg_password: ${{ secrets.DSI_NOORG_PASSWORD }} | |
- name: Remove Azure firewall rules | |
if: always() | |
uses: ./.github/actions/azure-ip-whitelist | |
with: | |
ip_address: ${{ steps.whats-my-ip.outputs.ip }} | |
verb: "remove" | |
az_keyvault_name: ${{ env.KEYVAULT_NAME }} | |
az_ip_name: ${{ env.SQL_IP_NAME }} | |
az_resource_group: ${{ env.RESOURCE_GROUP}} | |
az_sql_database_server_name: ${{ env.RESOURCE_GROUP }} |