Skip to content

Commit

Permalink
Merge pull request #365 from DFE-Digital/main
Browse files Browse the repository at this point in the history
Merge main into release-manage-back-button
  • Loading branch information
stevesatdfe authored Jan 15, 2025
2 parents a65d649 + 6fbb0d4 commit b0a5082
Show file tree
Hide file tree
Showing 22 changed files with 876 additions and 130 deletions.
9 changes: 9 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -269,4 +269,13 @@ jobs:
app_name: ${{ matrix.app_name }}
test_project_name: ${{ matrix.test_project_name }}
project_type: service
secrets: inherit

run-ui-e2e-tests:
if: ${{ startsWith(inputs.environment, 'Test') || inputs.environment == 'Pre-production' }}
name: Run E2E Test Suite
needs: [ deploy-ui-services ]
uses: ./.github/workflows/run-e2e-tests.yml
with:
environment: ${{ inputs.environment }}
secrets: inherit
106 changes: 106 additions & 0 deletions .github/workflows/e2e-seed-database.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Seed Database with E2E Test Data
run-name: Seed ${{ inputs.environment }} Database with E2E Test Data (${{ inputs.action }})

on:
workflow_dispatch:
inputs:
environment:
description: The environment target to seed test data in
default: 'Development'
type: choice
options:
- 'Development'
- 'Test'
- 'Test2'
- 'Pre-production'
action:
description: Whether to run the setup or teardown script
default: 'Teardown'
type: choice
options:
- 'Setup'
- 'Teardown'
workflow_call:
inputs:
environment:
required: true
type: string
action:
required: true
type: string

permissions:
id-token: write
contents: read

jobs:
run-seed-script:
name: Run ${{ inputs.action }} Script
runs-on: ubuntu-24.04
environment: ${{ inputs.environment }}
defaults:
run:
working-directory: "test/e2e-seed-data-framework"
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ github.ref }}

- name: Install NodeJS
uses: actions/setup-node@v4
with:
node-version: "lts/Jod" # 22 LTS

- name: Install NPM Packages
shell: bash
run: npm i

- name: Get Workflow Runner IP
id: runner-ip
uses: ./.github/actions/get-runner-ip-address

- name: Azure CLI Login
uses: azure/#@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: Add Azure Firewall Rule
uses: ./.github/actions/azure-firewall-ip
with:
ip_address: ${{ steps.runner-ip.outputs.ip_address }}
action: "Add"
az_resource_group: ${{ vars.AZURE_RESOURCE_PREFIX }}-familyhubs
az_sql_server_name: ${{ vars.AZURE_RESOURCE_PREFIX }}-as-fh-sql-server
az_firewall_rule_name: E2E-SEED-SCRIPT

- name: Create Environment Variables
shell: bash
run: |
cat <<'EOF' > .env
IDS_START_FROM=1000000
CONNECTION_STRING_SERVICEDIRECTORY='${{ secrets.PLAYWRIGHT_CONNECTION_STRING_SERVICE_DIRECTORY_DATABASE }}'
CONNECTION_STRING_REFERRAL='${{ secrets.PLAYWRIGHT_CONNECTION_STRING_REFERRAL_DATABASE }}'
CONNECTION_STRING_REPORT='${{ secrets.PLAYWRIGHT_CONNECTION_STRING_REPORT_DATABASE }}'
ENCRYPTION_KEY='${{ secrets.PLAYWRIGHT_REFERRAL_COLUMN_ENCRYPTION_KEY }}'
INITIALISATION_VECTOR='${{ secrets.PLAYWRIGHT_REFERRAL_COLUMN_INITIALISATION_VECTOR }}'
EXAMPLE_SEED=False
EOF
- name: Run ${{ inputs.action }}
shell: bash
run: |
SCRIPT=$(tr '[:upper:]' '[:lower:]' <<< "${{ inputs.action }}")
npm run $SCRIPT:dev
- name: Remove Azure Firewall Rule
if: always()
uses: ./.github/actions/azure-firewall-ip
with:
ip_address: ${{ steps.runner-ip.outputs.ip_address }}
action: "Remove"
az_resource_group: ${{ vars.AZURE_RESOURCE_PREFIX }}-familyhubs
az_sql_server_name: ${{ vars.AZURE_RESOURCE_PREFIX }}-as-fh-sql-server
az_firewall_rule_name: E2E-SEED-SCRIPT
132 changes: 132 additions & 0 deletions .github/workflows/run-e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: Run E2E Test Suite
run-name: Run E2E Test Suite on ${{ inputs.environment }}

on:
workflow_dispatch:
inputs:
environment:
description: The environment to run the E2E tests on
default: 'Development'
type: choice
options:
- 'Development'
- 'Test'
- 'Test2'
- 'Pre-production'
workflow_call:
inputs:
environment:
required: true
type: string

permissions:
id-token: write
contents: read

jobs:
pre-test-teardown:
name: Pre-Test Database Teardown
uses: ./.github/workflows/e2e-seed-database.yml
with:
environment: ${{ inputs.environment }}
action: 'Teardown'
secrets: inherit

pre-test-setup:
needs: [ pre-test-teardown ]
name: Pre-Test Database Setup
uses: ./.github/workflows/e2e-seed-database.yml
with:
environment: ${{ inputs.environment }}
action: 'Setup'
secrets: inherit

run-test-suite:
needs: [ pre-test-setup ]
name: ${{ matrix.job_name }}
strategy:
fail-fast: false
matrix:
suite: [ find-e2e-tests, manage-e2e-tests ]
include:
- suite: find-e2e-tests
job_name: E2E - Find UI
base_url: ${{ vars.PLAYWRIGHT_FIND_BASE_URL }}
- suite: manage-e2e-tests
job_name: E2E - Manage UI
base_url: ${{ vars.PLAYWRIGHT_MANAGE_BASE_URL }}
runs-on: ubuntu-24.04
environment: ${{ inputs.environment }}
defaults:
run:
working-directory: "test/${{ matrix.suite }}"
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ github.ref }}

- name: Install NodeJS
uses: actions/setup-node@v4
with:
node-version: "lts/Jod" # 22 LTS

- name: Install NPM Packages
shell: bash
run: npm i

- name: Install Playwright Dependencies
shell: bash
run: npx playwright install-deps

- name: Get Playwright Version
id: playwright-version
shell: bash
run: |
ARRAY=($(npx playwright --version))
VERSION=${ARRAY[1]}
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
- name: Playwright Browser Cache
id: playwright-cache
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-PlayWright-${{ steps.playwright-version.outputs.VERSION }}

- name: Install Playwright Browsers
if: steps.playwright-cache.outputs.cache-hit != 'true'
shell: bash
run: npx playwright install

- name: Create Environment Variables
shell: bash
run: |
cat <<'EOF' > .env
BASE_URL='${{ vars.PLAYWRIGHT_ENVIRONMENT_PREFIX }}${{ matrix.base_url }}'
USER_NAME='${{ secrets.PLAYWRIGHT_USER_NAME }}'
PASSWORD='${{ secrets.PLAYWRIGHT_PASSWORD }}'
DFE_ADMIN_USER='${{ secrets.PLAYWRIGHT_GOVLOGIN_DFE_ADMIN_USER }}'
GOV_LOGIN_PASSWORD='${{ secrets.PLAYWRIGHT_GOVLOGIN_PASSWORD }}'
EOF
- name: Run Playwright Test Suite
shell: bash
run: npx playwright test --workers `nproc`

- name: Upload Report
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report-${{ matrix.suite }}
path: "**/playwright-report/"

# Intentionally doesn't run after test failure to facilitate analysis
post-test-teardown:
needs: [ run-test-suite ]
name: Post-Test Database Teardown
uses: ./.github/workflows/e2e-seed-database.yml
with:
environment: ${{ inputs.environment }}
action: 'Teardown'
secrets: inherit
10 changes: 9 additions & 1 deletion test/e2e-seed-data-framework/scripts/seed/seed-referral-db.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,19 @@ import * as Database from "../../core/referral-db-context.js";
*/

export async function seed() {
// Create an Organisation for our E2E tests
// Create an LA Organisation for our E2E tests
await Database.addOrganisation({
id: 1,
name: "Test LA",
description: "Test LA based in Westminster",
createdBy: "",
});

// Create an VCFS Organisation for our E2E tests
await Database.addOrganisation({
id: 2,
name: "Test Organisation",
description: "Test VCFS Organisation based in Westminster",
createdBy: "",
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,22 @@ import * as Database from "../../core/service-directory-db-context.js";
*/

export async function seed() {
// Create an Organisation for our E2E tests
// Create an LA Organisation for our E2E tests
await Database.addOrganisation({
id: 1,
organisationType: "LA",
name: "Test LA",
description: "Test LA based in Westminster",
adminAreaCode: "E09000033",
});

// Create an VCFS Organisation for our Service
await Database.addOrganisation({
id: 2,
associatedOrganisationId: 1,
organisationType: "VCFS",
name: "Test Organisation",
description: "Test Organisation based in Westminster",
adminAreaCode: "E09000030",
});
}
2 changes: 1 addition & 1 deletion test/find-e2e-tests/.env
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# .env
BASE_URL=https://test2.find-support-for-your-family.education.gov.uk/
BASE_URL=https://test.find-support-for-your-family.education.gov.uk/
Loading

0 comments on commit b0a5082

Please # to comment.