diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000000..94bff6311a8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +#Ignore the following directories +backend/build/ +backend/.gradle/ +frontend/build/ +frontend/node_modules/ +nginx/ +ops/ +docs/ +.github/ +.run/ +node_modules/ +wiremock/ +cypress/node_modules/ +cypress/screenshots/ +cypress/videos/ \ No newline at end of file diff --git a/.github/workflows/buildBackendImage.yml b/.github/workflows/buildBackendImage.yml index 02ebf4489bb..39e1bc41768 100644 --- a/.github/workflows/buildBackendImage.yml +++ b/.github/workflows/buildBackendImage.yml @@ -60,7 +60,8 @@ jobs: - name: Build and push Docker image uses: docker/build-push-action@v4 with: - context: backend + context: ./ + file: ./backend/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/buildFrontendImage.yml b/.github/workflows/buildFrontendImage.yml index 4742706d63d..e73751162d4 100644 --- a/.github/workflows/buildFrontendImage.yml +++ b/.github/workflows/buildFrontendImage.yml @@ -60,10 +60,19 @@ jobs: - name: Build and push Docker image uses: docker/build-push-action@v4 with: - context: frontend + context: ./ + file: ./frontend/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + build-args: | + "REACT_APP_OKTA_URL=http://wiremock:8088" + "REACT_APP_OKTA_CLIENT_ID=0oa1k0163nAwfVxNW1d7" + "REACT_APP_BASE_URL=https://localhost.simplereport.gov" + "REACT_APP_BACKEND_URL=https://localhost.simplereport.gov/api" + "PUBLIC_URL=/app/" + "REACT_APP_OKTA_ENABLED=true" + "REACT_APP_DISABLE_MAINTENANCE_BANNER=true" - name: Set version output shell: bash diff --git a/.github/workflows/buildFrontendLighthouseImage.yml b/.github/workflows/buildFrontendLighthouseImage.yml new file mode 100644 index 00000000000..c111b60b1fa --- /dev/null +++ b/.github/workflows/buildFrontendLighthouseImage.yml @@ -0,0 +1,78 @@ +name: Build frontend docker image with okta disabled + +on: + workflow_dispatch: + workflow_call: + inputs: + force_build: + description: Force build + required: false + default: false + type: boolean + outputs: + version: + description: docker image version + value: ${{ jobs.build_and_push_frontend_image.outputs.version }} + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/frontend-lighthouse + +jobs: + + frontend_changes: + with: + what_to_check: frontend + uses: ./.github/workflows/checkForChanges.yml + + build_and_push_frontend_image: + # We want to build the image if there are changes in the frontend folder, or if we are forcing a build, or if we are on the main branch + if: needs.frontend_changes.outputs.has_changes == 'true' || inputs.force_build == true || github.ref == 'refs/heads/main' + needs: [frontend_changes] + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + outputs: + version: ${{ steps.set.outputs.version }} + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }} + type=ref,event=branch + type=ref,event=pr + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: ./ + file: ./frontend/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + "REACT_APP_BASE_URL=https://localhost.simplereport.gov" + "REACT_APP_BACKEND_URL=https://localhost.simplereport.gov/api" + "PUBLIC_URL=/app/" + "REACT_APP_OKTA_ENABLED=false" + "REACT_APP_DISABLE_MAINTENANCE_BANNER=true" + + - name: Set version output + shell: bash + id: set + run: echo "version=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/buildWiremockImage.yml b/.github/workflows/buildWiremockImage.yml new file mode 100644 index 00000000000..b718b7d6d04 --- /dev/null +++ b/.github/workflows/buildWiremockImage.yml @@ -0,0 +1,71 @@ +name: Build wiremock docker image + +on: + workflow_dispatch: + workflow_call: + inputs: + force_build: + description: Force build + required: false + default: false + type: boolean + outputs: + version: + description: docker image version + value: ${{ jobs.build_and_push_wiremock_image.outputs.version }} + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/wiremock + +jobs: + + wiremock_changes: + with: + what_to_check: wiremock + uses: ./.github/workflows/checkForChanges.yml + + build_and_push_wiremock_image: + # We want to build the image if there are changes in the wiremock folder, or if we are forcing a build, or if we are on the main branch + if: needs.wiremock_changes.outputs.has_changes == 'true' || inputs.force_build == true || github.ref == 'refs/heads/main' + needs: [wiremock_changes] + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + outputs: + version: ${{ steps.set.outputs.version }} + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }} + type=ref,event=branch + type=ref,event=pr + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: wiremock + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Set version output + shell: bash + id: set + run: echo "version=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/checkForChanges.yml b/.github/workflows/checkForChanges.yml index 54a493a2029..f56cdff91da 100644 --- a/.github/workflows/checkForChanges.yml +++ b/.github/workflows/checkForChanges.yml @@ -13,7 +13,7 @@ on: value: ${{ jobs.check_for_changes.outputs.has_changes }} jobs: check_for_changes: - runs-on: 'ubuntu-20.04' + runs-on: ubuntu-latest outputs: has_changes: ${{ steps.check_for_changes.outputs.has_changes }} steps: diff --git a/.github/workflows/e2eLocal.yml b/.github/workflows/e2eLocal.yml index 53da666f9da..5ab306c4e1f 100644 --- a/.github/workflows/e2eLocal.yml +++ b/.github/workflows/e2eLocal.yml @@ -31,6 +31,9 @@ on: DOCKER_NGINX_IMAGE_VERSION: required: false type: string + DOCKER_WIREMOCK_IMAGE_VERSION: + required: false + type: string concurrency: group: ${{ github.workflow }}-${{ github.ref }}-e2e-local @@ -50,22 +53,6 @@ jobs: with: swap-size-gb: 10 - - name: Generate certs - run: | - echo "::group::Generate ssl certs" - sudo apt update - sudo apt install libnss3-tools - eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" - brew install mkcert - mkcert -install - mkdir -p certs - cd certs - mkcert localhost.simplereport.gov - mv localhost.simplereport.gov.pem localhost.simplereport.gov.crt - mv localhost.simplereport.gov-key.pem localhost.simplereport.gov.key - cd .. - echo "::endgroup::" - - name: Update files permissions # Even though we don't use it, we need the .env file created here due to an issue similar to this one: https://github.com/mutagen-io/mutagen/issues/265 run: | @@ -94,6 +81,7 @@ jobs: DOCKER_DATABASE_IMAGE_VERSION: ${{ inputs.DOCKER_DATABASE_IMAGE_VERSION }} DOCKER_FRONTEND_IMAGE_VERSION: ${{ inputs.DOCKER_FRONTEND_IMAGE_VERSION }} DOCKER_NGINX_IMAGE_VERSION: ${{ inputs.DOCKER_NGINX_IMAGE_VERSION }} + DOCKER_WIREMOCK_IMAGE_VERSION: ${{ inputs.DOCKER_WIREMOCK_IMAGE_VERSION }} COMPOSE_HTTP_TIMEOUT: 180 # backend settings SPRING_PROFILES_ACTIVE: e2e,db-dockerized @@ -104,16 +92,17 @@ jobs: SMARTY_AUTH_TOKEN: ${{ secrets.SMARTY_AUTH_TOKEN }} SPRING_LIQUIBASE_ENABLED: "true" GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 + WIREMOCK_URL: "http://wiremock:8088" # cypress settings + CYPRESS_OKTA_REDIRECT_URI: "https%3A%2F%2Flocalhost.simplereport.gov%2Fapp" CYPRESS_OKTA_USERNAME: ${{ secrets.CYPRESS_OKTA_USERNAME }} CYPRESS_OKTA_PASSWORD: ${{ secrets.CYPRESS_OKTA_PASSWORD }} CYPRESS_OKTA_SECRET: ${{ secrets.CYPRESS_OKTA_SECRET }} CYPRESS_BACKEND_URL: "https://localhost.simplereport.gov/api" - WIREMOCK_URL: "http://cypress:8088" SPEC_PATH: "cypress/e2e/**" TEST_ENV: "https://localhost.simplereport.gov" # frontend settings - REACT_APP_OKTA_URL: "http://cypress:8088" + REACT_APP_OKTA_URL: "http://wiremock:8088" REACT_APP_OKTA_CLIENT_ID: 0oa1k0163nAwfVxNW1d7 REACT_APP_BASE_URL: https://localhost.simplereport.gov REACT_APP_BACKEND_URL: https://localhost.simplereport.gov/api @@ -128,6 +117,7 @@ jobs: echo "Database branch tag (or latest): ${{ inputs.DOCKER_DATABASE_IMAGE_VERSION }}" echo "Frontend branch tag (or latest): ${{ inputs.DOCKER_FRONTEND_IMAGE_VERSION }}" echo "Nginx branch tag (or latest): ${{ inputs.DOCKER_NGINX_IMAGE_VERSION }}" + echo "Wiremock branch tag (or latest): ${{ inputs.DOCKER_WIREMOCK_IMAGE_VERSION }}" docker compose -f docker-compose.yml -f docker-compose.cypress.yml up --abort-on-container-exit --attach cypress --exit-code-from cypress --quiet-pull echo "::endgroup::" @@ -135,12 +125,8 @@ jobs: if: always() shell: bash run: | - CONTAINERS=$(docker ps -a --format '{{.Names}}') - for container in $CONTAINERS - do - echo "Saving $container logs" - docker logs $container >& cypress/${container}.log - done + echo "Saving $container logs" + docker compose -f docker-compose.yml -f docker-compose.cypress.yml logs --timestamps >& cypress-run.log - name: Stop containers if: always() @@ -151,7 +137,7 @@ jobs: echo "::endgroup::" - name: Archive cypress failures - if: failure() + if: always() uses: actions/upload-artifact@v3 with: name: cypress-results @@ -164,4 +150,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: logs - path: cypress/*.log + path: cypress-run.log diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index 11d6c8ce944..4f62759d19d 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -1,9 +1,22 @@ -name: "Run Lighthouse Audit" +name: Run Lighthouse Audit on: - workflow_dispatch: - pull_request: - branches: - - "**" + workflow_call: + inputs: + DOCKER_BACKEND_IMAGE_VERSION: + required: false + type: string + DOCKER_DATABASE_IMAGE_VERSION: + required: false + type: string + DOCKER_NGINX_IMAGE_VERSION: + required: false + type: string + DOCKER_WIREMOCK_IMAGE_VERSION: + required: false + type: string + DOCKER_FRONTEND_LIGHTHOUSE_IMAGE_VERSION: + required: false + type: string concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -23,22 +36,6 @@ jobs: with: swap-size-gb: 10 - - name: Generate certs - run: | - echo "::group::Generate ssl certs" - sudo apt update - sudo apt install libnss3-tools - eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" - brew install mkcert - mkcert -install - mkdir -p certs - cd certs - mkcert localhost.simplereport.gov - mv localhost.simplereport.gov.pem localhost.simplereport.gov.crt - mv localhost.simplereport.gov-key.pem localhost.simplereport.gov.key - cd .. - echo "::endgroup::" - - name: Add hosts to /etc/hosts run: | sudo echo "127.0.0.1 localhost.simplereport.gov" | sudo tee -a /etc/hosts @@ -66,11 +63,23 @@ jobs: # docker settings DOCKER_CLIENT_TIMEOUT: 180 COMPOSE_HTTP_TIMEOUT: 180 + DOCKER_BACKEND_IMAGE_VERSION: ${{ inputs.DOCKER_BACKEND_IMAGE_VERSION }} + DOCKER_DATABASE_IMAGE_VERSION: ${{ inputs.DOCKER_DATABASE_IMAGE_VERSION }} + DOCKER_NGINX_IMAGE_VERSION: ${{ inputs.DOCKER_NGINX_IMAGE_VERSION }} + DOCKER_WIREMOCK_IMAGE_VERSION: ${{ inputs.DOCKER_WIREMOCK_IMAGE_VERSION }} + DOCKER_FRONTEND_LIGHTHOUSE_IMAGE_VERSION: ${{ inputs.DOCKER_FRONTEND_LIGHTHOUSE_IMAGE_VERSION }} shell: bash run: | + echo "::group::Running containers" + echo "Backend branch tag (or latest): ${{ inputs.DOCKER_BACKEND_IMAGE_VERSION }}" + echo "Database branch tag (or latest): ${{ inputs.DOCKER_DATABASE_IMAGE_VERSION }}" + echo "Nginx branch tag (or latest): ${{ inputs.DOCKER_NGINX_IMAGE_VERSION }}" + echo "Wiremock branch tag (or latest): ${{ inputs.DOCKER_WIREMOCK_IMAGE_VERSION }}" + echo "Frontend branch tag (or latest): ${{ inputs.DOCKER_FRONTEND_LIGHTHOUSE_IMAGE_VERSION }}" + echo "::endgroup::" + echo "::group::Run Lighthouse locally" - npm install -g @lhci/cli@0.9.x - lhci autorun + bash lighthouse.sh echo "::endgroup::" - name: Archive Lighthouse results diff --git a/.github/workflows/testingWorkflow.yml b/.github/workflows/testingWorkflow.yml index 4c757f079db..9f0d1242c34 100644 --- a/.github/workflows/testingWorkflow.yml +++ b/.github/workflows/testingWorkflow.yml @@ -23,9 +23,15 @@ jobs: build_frontend_image: uses: ./.github/workflows/buildFrontendImage.yml + build_frontend_lighthouse_image: + uses: ./.github/workflows/buildFrontendLighthouseImage.yml + build_nginx_image: uses: ./.github/workflows/buildNginxImage.yml + build_wiremock_image: + uses: ./.github/workflows/buildWiremockImage.yml + e2e_local: needs: - build_backend_image @@ -33,6 +39,7 @@ jobs: - build_database_image - build_frontend_image - build_nginx_image + - build_wiremock_image uses: ./.github/workflows/e2eLocal.yml secrets: CYPRESS_OKTA_USERNAME: ${{ secrets.CYPRESS_OKTA_USERNAME }} @@ -47,6 +54,22 @@ jobs: DOCKER_DATABASE_IMAGE_VERSION: ${{ needs.build_database_image.outputs.version }} DOCKER_FRONTEND_IMAGE_VERSION: ${{ needs.build_frontend_image.outputs.version }} DOCKER_NGINX_IMAGE_VERSION: ${{ needs.build_nginx_image.outputs.version }} + DOCKER_WIREMOCK_IMAGE_VERSION: ${{ needs.build_wiremock_image.outputs.version }} + + lighthouse: + needs: + - build_backend_image + - build_database_image + - build_nginx_image + - build_wiremock_image + - build_frontend_lighthouse_image + uses: ./.github/workflows/lighthouse.yml + with: + DOCKER_BACKEND_IMAGE_VERSION: ${{ needs.build_backend_image.outputs.version }} + DOCKER_FRONTEND_LIGHTHOUSE_IMAGE_VERSION: ${{ needs.build_frontend_lighthouse_image.outputs.version }} + DOCKER_DATABASE_IMAGE_VERSION: ${{ needs.build_database_image.outputs.version }} + DOCKER_NGINX_IMAGE_VERSION: ${{ needs.build_nginx_image.outputs.version }} + DOCKER_WIREMOCK_IMAGE_VERSION: ${{ needs.build_wiremock_image.outputs.version }} tests: needs: diff --git a/.gitignore b/.gitignore index 84ae3f2a94d..79df8604754 100644 --- a/.gitignore +++ b/.gitignore @@ -9,10 +9,10 @@ node_modules *.orig *.rej /.env +/.env.local certs/ yarn-error.log backend/locust/__pycache__/ -wiremock*.jar cypress/cypress.env.json frontend/src/.env.local .run/Backend.run.xml diff --git a/backend/Dockerfile b/backend/Dockerfile index 911f9de7f3f..7adecce8dc2 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,18 +1,21 @@ -FROM gradle:7.6.1-jdk17 +FROM eclipse-temurin:17-jdk-alpine as build LABEL org.opencontainers.image.source https://github.com/CDCgov/prime-simplereport -WORKDIR /app/backend +WORKDIR /app/ # Only copy dependency-related files -COPY build.gradle gradle.properties settings.gradle /app/backend/ +ADD ./backend /app/backend +ADD ./.git /app/.git -RUN chown -R gradle:gradle /app -USER gradle +# compile backend into a jar +RUN cd backend && ./gradlew clean build -x test -x checkstyleMain -x spotlessCheck -# Only download dependencies -# Eat the expected build failure since no source code has been copied yet -RUN gradle clean build --no-daemon > /dev/null 2>&1 || true -CMD ["./run.sh"] +FROM eclipse-temurin:17-jdk-alpine +LABEL org.opencontainers.image.source https://github.com/CDCgov/prime-simplereport + +COPY --from=build /app/backend/build/libs/*.jar app.jar + +ENTRYPOINT ["java","-jar","/app.jar"] EXPOSE 8080 \ No newline at end of file diff --git a/backend/run.sh b/backend/run.sh index 39a62fa6a09..425673137fd 100755 --- a/backend/run.sh +++ b/backend/run.sh @@ -12,4 +12,4 @@ gradle -Dorg.gradle.java.home=$JAVA_HOME --no-daemon -t build -x test -x checkst echo "Continuous build started." # Start bootRun without build. It will live reload when the previous process rebuilds echo "Starting bootRun..." -gradle -Dorg.gradle.java.home=$JAVA_HOME --no-daemon -x build -x test -x checkstyleMain -x checkstyleTest -x spotlessCheck bootRun +gradle -Dorg.gradle.java.home=$JAVA_HOME --no-daemon -x build -x test -x checkstyleMain -x checkstyleTest bootRun diff --git a/backend/src/main/resources/application-e2e.yaml b/backend/src/main/resources/application-e2e.yaml index 3f4675df66b..ab98430f366 100644 --- a/backend/src/main/resources/application-e2e.yaml +++ b/backend/src/main/resources/application-e2e.yaml @@ -8,14 +8,29 @@ logging: spring: profiles: include: server-debug, create-sample-devices + datasource: + simplereport: + hikari: + jdbc-url: jdbc:postgresql://db:${SR_DB_PORT:5432}/simple_report + metabase: + hikari: + jdbc-url: jdbc:postgresql://db:${SR_DB_PORT:5432}/metabase liquibase: simplereport: user: simple_report_migrations password: migrations456 + hikari: + jdbc-url: jdbc:postgresql://db:5432/simple_report + maximum-pool-size: 50 # Maximum size that the pool is allowed to reach, including both idle and active connections. Effectively reflects number of concurrent database request threads. (Ex: A size of 50 represents a maximum capacity of 50 concurrent DB requests.) + max-lifetime: 600000 # Maximum lifetime for a connection to be retained in the pool, in milliseconds, once it is closed. + minimum-idle: 30 metabase: user: simple_report_migrations password: migrations456 default-schema: public + hikari: + maximum-pool-size: 2 + jdbc-url: jdbc:postgresql://db:5432/metabase jpa: properties: hibernate: diff --git a/cypress/Dockerfile b/cypress/Dockerfile index 606ea021474..1e65026f348 100644 --- a/cypress/Dockerfile +++ b/cypress/Dockerfile @@ -1,15 +1,6 @@ FROM cypress/browsers:node18.12.0-chrome107 LABEL org.opencontainers.image.source https://github.com/CDCgov/prime-simplereport -RUN apt-get install -y wget apt-transport-https; \ - mkdir -p /etc/apt/keyrings; \ - wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc; \ - echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list; \ - apt-get update; \ - apt-get upgrade; \ - apt-get install -y temurin-17-jdk; \ - apt-get install -y ant; \ - apt-get clean; ADD ./cypress /app/cypress RUN mkdir -p /app/cypress/screenshots diff --git a/cypress/cypress.config.js b/cypress/cypress.config.js index 8060f9c6230..6239268b20d 100644 --- a/cypress/cypress.config.js +++ b/cypress/cypress.config.js @@ -14,8 +14,9 @@ module.exports = { defaultCommandTimeout: 10000, video: true, videoUploadOnPasses: false, + videoCompression: false, retries: { - runMode: 2, + runMode: 1, openMode: 1, }, e2e: { @@ -30,6 +31,14 @@ module.exports = { getAuth() { return global.auth || {}; }, + table(message) { + console.table(message); + return null; + }, + print(message) { + console.log(message); + return null; + }, setPatientName: (name) => { global.patientName = name; return null; diff --git a/cypress/e2e.sh b/cypress/e2e.sh index d8563c41e3a..f8244b4c89d 100755 --- a/cypress/e2e.sh +++ b/cypress/e2e.sh @@ -1,24 +1,5 @@ #!/bin/bash -usage() { - cat </dev/null 2>&1 -./cypress/support/wiremock/start-wiremock.sh orgSignUp >/dev/null 2>&1 & -echo "Wiremock started!" -echo -echo "Waiting for backend to start at ${TEST_ENV}${BACKEND_URL_PATH}" http_response=0 polls=0 while [[ $http_response != "200" && $polls -lt 360 ]]; do ((polls++)) - sleep 1 + sleep 5 + echo "Waiting for backend to start at ${TEST_ENV}${BACKEND_URL_PATH}" http_response=$(curl -skL -w "%{http_code}" "${TEST_ENV}${BACKEND_URL_PATH}") done if [[ $http_response -ne 200 ]]; then @@ -97,12 +36,12 @@ fi echo 'Backend started!' echo -echo "Waiting for frontend to start at ${TEST_ENV}${PUBLIC_URL}${FRONTEND_URL_PATH}" result=0 polls=0 while [[ $result -ne 1 && $polls -lt 240 ]]; do ((polls++)) - sleep 1 + sleep 5 + echo "Waiting for frontend to start at ${TEST_ENV}${PUBLIC_URL}${FRONTEND_URL_PATH}" result=$(curl -skL "${TEST_ENV}${PUBLIC_URL}${FRONTEND_URL_PATH}" | grep -c 'SimpleReport') done if [[ $result -ne 1 ]]; then diff --git a/cypress/e2e/01-organization_sign_up.cy.js b/cypress/e2e/01-organization_sign_up.cy.js index 00556422538..c342659246f 100644 --- a/cypress/e2e/01-organization_sign_up.cy.js +++ b/cypress/e2e/01-organization_sign_up.cy.js @@ -11,19 +11,10 @@ const user = generateUser(); describe("Organization sign up",() => { loginHooks(); - before(() => { - // Since these tests interact with Okta, we need to use - // Wiremock to stub out the Okta API calls. - cy.task("downloadWiremock"); - cy.restartWiremock("orgSignUp"); - }); - after(() => { - cy.task("stopWiremock"); - }); it("navigates to the sign up form", () => { cy.visit("/sign-up"); cy.injectSRAxe(); - cy.checkA11y(); // Sign up page + cy.checkAccessibility(); // Sign up page cy.contains("Sign up for SimpleReport"); cy.contains("My organization is new to SimpleReport").click(); @@ -31,7 +22,7 @@ describe("Organization sign up",() => { }); it("fills out the org info form", () => { cy.contains("Sign up for SimpleReport in three steps"); - cy.checkA11y(); // Sign up form + cy.checkAccessibility(); // Sign up form cy.get('input[name="name"]').type(organization.name); cy.get('select[name="state"]').select("CA"); @@ -44,7 +35,7 @@ describe("Organization sign up",() => { it("submits successfully", () => { cy.get("button.submit-button").click(); cy.contains("Identity verification consent"); - cy.checkA11y(); // Identity verification page + cy.checkAccessibility(); // Identity verification page }); it("navigates to the support pending org table and verifies the org", () => { cy.removeOrganizationAccess(); @@ -53,13 +44,13 @@ describe("Organization sign up",() => { cy.contains("Support admin"); cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.contains("Identify verification").click(); cy.get("[data-cy=pending-orgs-title]").should("be.visible"); cy.contains("td", `${organization.name}`); - cy.checkA11y(); + cy.checkAccessibility(); cy.contains("td", `${organization.name}`) .siblings() @@ -82,7 +73,7 @@ describe("Organization sign up",() => { cy.get('input[name="justification"]').type("I am a test user").blur(); cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.contains("Access data").click(); cy.contains("Support admin"); @@ -96,13 +87,13 @@ describe("Organization sign up",() => { // Test a11y on Manage Facilities tab cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.contains("+ New facility").click(); cy.contains("Testing facility information"); // Test a11y on New Facility page - cy.checkA11y(); + cy.checkAccessibility(); }); it("fills out the form for a new facility", () => { cy.get('input[name="facility.name"]').type(facility.name); @@ -120,7 +111,7 @@ describe("Organization sign up",() => { '.modal__container input[name="addressSelect-facility"][value="userAddress"]+label' ).click(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get(".modal__container #save-confirmed-address").click(); cy.contains("+ New facility"); @@ -132,6 +123,6 @@ describe("Organization sign up",() => { // Test a11y on the People page cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); }); }); diff --git a/cypress/e2e/02-add_patient.cy.js b/cypress/e2e/02-add_patient.cy.js index 9d2e02733f3..df8d79d3b96 100644 --- a/cypress/e2e/02-add_patient.cy.js +++ b/cypress/e2e/02-add_patient.cy.js @@ -18,7 +18,7 @@ describe("Adding a single patient", () => { cy.get("#individual_add-patient").click(); cy.get(".prime-edit-patient").contains("Add new patient"); cy.injectSRAxe(); - cy.checkA11y(); // Patient form + cy.checkAccessibility(); // Patient form }); it("fills out some of the form fields", () => { cy.get('input[name="firstName"]').type(patient.firstName); @@ -53,7 +53,7 @@ it("fills out the remaining fields, submits and checks for the patient", () => { '.modal__container input[name="addressSelect-person"][value="userAddress"]+label' ).click(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get(".modal__container #save-confirmed-address").click(); cy.get(".usa-card__header").contains("Patients"); @@ -61,6 +61,6 @@ it("fills out the remaining fields, submits and checks for the patient", () => { cy.get("#search-field-small").type(patient.lastName); cy.get(".prime-container").contains(patient.fullName); - cy.checkA11y(); + cy.checkAccessibility(); }); }); diff --git a/cypress/e2e/02b-bulk_upload_patient.cy.js b/cypress/e2e/02b-bulk_upload_patient.cy.js index 16addd371f8..ce0979a2681 100644 --- a/cypress/e2e/02b-bulk_upload_patient.cy.js +++ b/cypress/e2e/02b-bulk_upload_patient.cy.js @@ -17,7 +17,7 @@ describe("Bulk upload patients", () => { cy.get("#upload_add-patient").click(); cy.get(".prime-edit-patient").contains("Set up your spreadsheet"); cy.injectSRAxe(); - cy.checkA11y(); // Bulk upload patient form + cy.checkAccessibility(); // Bulk upload patient form }); it("uploads csv file of patients", () => { const csvFileContent = "last_name,first_name,middle_name,suffix,race,date_of_birth,biological_sex,ethnicity,street,street2,city,county,state,zip_code,country,phone_number,phone_number_type,employed_in_healthcare,resident_congregate_setting,role,email\n" diff --git a/cypress/e2e/03-add_devices.cy.js b/cypress/e2e/03-add_devices.cy.js index 02068da6a36..853cec336eb 100644 --- a/cypress/e2e/03-add_devices.cy.js +++ b/cypress/e2e/03-add_devices.cy.js @@ -28,7 +28,7 @@ describe("Adding covid only and multiplex devices", () => { cy.contains("Device type"); cy.contains("Save changes").should("be.not.enabled"); cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.addDevice(covidOnlyDevice); }); @@ -51,7 +51,7 @@ describe("Adding covid only and multiplex devices", () => { .click(); cy.get('input[name="name"]').should("have.value", multiplexDevice.name); cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get('input[name="model"]').should("have.value", multiplexDevice.model); cy.get('input[name="manufacturer"]').should("have.value", multiplexDevice.manufacturer); cy.get(".pill").should("have.length", 1); @@ -84,7 +84,7 @@ describe("Adding covid only and multiplex devices", () => { cy.wait("@GetFacilities"); cy.contains("Manage devices"); cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get('input[role="combobox"]').first().type(covidOnlyDevice.name); cy.get('li[id="multi-select-deviceTypes-list--option-0"]').click(); cy.get('input[role="combobox"]').first().type(multiplexDevice.name); diff --git a/cypress/e2e/04-conduct_test.cy.js b/cypress/e2e/04-conduct_test.cy.js index c19fb7c1dcf..207b940bc9e 100644 --- a/cypress/e2e/04-conduct_test.cy.js +++ b/cypress/e2e/04-conduct_test.cy.js @@ -33,7 +33,7 @@ describe("Conducting a COVID test", () => { cy.wait("@GetPatientsByFacilityForQueue") cy.injectSRAxe(); - cy.checkA11y(); // Conduct Tests page + cy.checkAccessibility(); // Conduct Tests page }); it("begins a test", () => { cy.get(".results-dropdown").within(() => { @@ -47,7 +47,7 @@ describe("Conducting a COVID test", () => { ); // Test a11y on the AoE modal - cy.checkA11y(); + cy.checkAccessibility(); }); it("fills out the aoe questions and submits", () => { cy.get(".ReactModal__Content").within(() => { @@ -63,7 +63,7 @@ describe("Conducting a COVID test", () => { cy.get(queueCard).contains("COVID-19 results"); - cy.checkA11y(); // Test Card page + cy.checkAccessibility(); // Test Card page }); it("completes the test", () => { cy.get(queueCard).within(() => { @@ -83,7 +83,7 @@ describe("Conducting a COVID test", () => { cy.wait("@EditQueueItem"); cy.get(queueCard).within(() => { - cy.get(".prime-test-result-submit button").last().click(); + cy.get(".prime-test-result-submit button").last().should("be.enabled").click(); }); cy.wait("@SubmitQueueItem"); @@ -96,7 +96,7 @@ describe("Conducting a COVID test", () => { cy.get(".usa-table").contains(patientName); // Test a11y on the Results page - cy.checkA11y(); + cy.checkAccessibility(); }); it("stores the patient link", () => { cy.get(".sr-test-result-row").then(($row) => { diff --git a/cypress/e2e/05-get_result_from_patient_link.cy.js b/cypress/e2e/05-get_result_from_patient_link.cy.js index 4535e466aed..4ebd46eb7f2 100644 --- a/cypress/e2e/05-get_result_from_patient_link.cy.js +++ b/cypress/e2e/05-get_result_from_patient_link.cy.js @@ -19,7 +19,7 @@ describe("Getting a test result from a patient link", () => { }); it("contains no accessibility issues", () => { cy.injectSRAxe(); - cy.checkA11y(); // PXP page + cy.checkAccessibility(); // PXP page }); it("accepts the terms of service", () => { cy.contains("Terms of service"); @@ -39,7 +39,7 @@ describe("Getting a test result from a patient link", () => { const birthDay = dob.date(); const birthYear = dob.year(); - cy.checkA11y(); // DoB entry page + cy.checkAccessibility(); // DoB entry page cy.get('input[name="month"]').type(birthMonth); cy.get('input[name="day"]').type(birthDay); @@ -52,6 +52,6 @@ describe("Getting a test result from a patient link", () => { cy.contains("Test date"); cy.contains("Test device"); - cy.checkA11y(); // Result page + cy.checkAccessibility(); // Result page }); }); diff --git a/cypress/e2e/06-self_registration.cy.js b/cypress/e2e/06-self_registration.cy.js index f474004df54..79782e69bef 100644 --- a/cypress/e2e/06-self_registration.cy.js +++ b/cypress/e2e/06-self_registration.cy.js @@ -12,7 +12,7 @@ describe("Patient self registration", () => { // Test a11y on the Patient self registration page cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get("#org-link").then(($link) => cy.visit($link.val())); }); @@ -20,13 +20,13 @@ describe("Patient self registration", () => { cy.contains("Terms of service"); cy.injectSRAxe(); - cy.checkA11y(); // Terms of Service + cy.checkAccessibility(); // Terms of Service }); it("accepts the terms of service", () => { cy.contains("I agree").click(); cy.get("#registration-container").contains("General information"); - cy.checkA11y(); // Info form + cy.checkAccessibility(); // Info form }); it("fills out some of the form fields", () => { cy.get('input[name="firstName"]').type(patient.firstName); @@ -59,13 +59,13 @@ describe("Patient self registration", () => { '.modal__container input[name="addressSelect-person"][value="userAddress"]+label' ).scrollIntoView().click(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get(".modal__container #save-confirmed-address").click(); cy.get("#self-reg-confirmation").contains( "thanks for completing your patient profile" ); - cy.checkA11y(); // Confirmation page + cy.checkAccessibility(); // Confirmation page }); }); diff --git a/cypress/e2e/07-organization_settings.cy.js b/cypress/e2e/07-organization_settings.cy.js index d9d8e96b5ce..2d39056fda4 100644 --- a/cypress/e2e/07-organization_settings.cy.js +++ b/cypress/e2e/07-organization_settings.cy.js @@ -17,7 +17,7 @@ describe("Updating organization settings", () => { // Test a11y on the Manage organization page cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); }); it("attempts an empty selection for organization type", () => { cy.get('select[name="type"]').select("- Select -"); diff --git a/cypress/e2e/08-account_creation.cy.js b/cypress/e2e/08-account_creation.cy.js index f72a273643e..eab62fa9a0a 100644 --- a/cypress/e2e/08-account_creation.cy.js +++ b/cypress/e2e/08-account_creation.cy.js @@ -16,7 +16,7 @@ Cypress.Commands.add("setPassword", () => { cy.get('input[name="confirm-password"]').type(pass); cy.get(submitButton).click(); cy.contains("Select your security question"); - cy.checkA11y(); + cy.checkAccessibility(); }); Cypress.Commands.add("setSecurityQuestion", () => { @@ -26,7 +26,7 @@ Cypress.Commands.add("setSecurityQuestion", () => { cy.get('input[name="answer"]').type("Jane Doe"); cy.get(submitButton).click(); cy.contains("Set up authentication"); - cy.checkA11y(); + cy.checkAccessibility(); }); Cypress.Commands.add("mfaSelect", (choice) => { @@ -39,7 +39,7 @@ Cypress.Commands.add("mfaSelect", (choice) => { Cypress.Commands.add("enterPhoneNumber", () => { cy.contains("Get your security code via"); - cy.checkA11y(); + cy.checkAccessibility(); cy.get('input[name="phone-number"]').type("530867530"); cy.contains("Get your security code via").click(); cy.contains("Enter a valid phone number"); @@ -50,41 +50,35 @@ Cypress.Commands.add("enterPhoneNumber", () => { Cypress.Commands.add("scanQrCode", () => { cy.contains("Get your security code via"); - cy.checkA11y(); + cy.checkAccessibility(); cy.get(submitButton).click(); }); Cypress.Commands.add("verifySecurityCode", (code) => { cy.contains("Verify your security code."); cy.contains('One-time security code'); - cy.checkA11y(); + cy.checkAccessibility(); cy.get('input[name="security-code"]').type(code); cy.get(submitButton).first().click(); }); describe("Okta account creation", () => { - // Since these tests interact with Okta, we need to use - // Wiremock to stub out the Okta API calls. - before(() => { - cy.clearCookies(); - cy.task("downloadWiremock"); - cy.restartWiremock("accountCreation"); - }); beforeEach(() => { // Cypress clears cookies by default, but for these tests // we want to preserve the Spring session cookie Cypress.Cookies.preserveOnce("SESSION"); }); - after(() => { - cy.clearCookies(); - cy.task("stopWiremock"); - }); describe("Account creation w/ SMS MFA", () => { + before(() => { + // cy.restartWiremock("accountCreation"); + cy.clearCookies(); + cy.resetWiremock(); + }); it("navigates to the activation link", () => { cy.visit("/uac/?activationToken=h971awbXda7y7jGaxN8f"); cy.contains("Create your password"); cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); }); it("sets a password", () => { cy.setPassword(); @@ -103,13 +97,14 @@ describe("Okta account creation", () => { }); it("displays a success message", () => { cy.contains("Account set up complete"); - cy.checkA11y(); + cy.checkAccessibility(); }); }); describe("Account creation w/ Okta Verify MFA", () => { before(() => { - cy.restartWiremock("accountCreation"); + cy.clearCookies(); + cy.resetWiremock(); }); it("navigates to the activation link", () => { cy.visit("/uac/?activationToken=NOr20VqF5M6m8AnwcSUJ"); @@ -133,13 +128,15 @@ describe("Okta account creation", () => { }); it("displays a success message", () => { cy.contains("Account set up complete"); - cy.checkA11y(); + cy.checkAccessibility(); }); }); describe("Account creation w/ Google Authenticator MFA", () => { before(() => { - cy.restartWiremock("accountCreation"); + cy.clearCookies(); + cy.resetWiremock(); + }); it("navigates to the activation link", () => { cy.visit("/uac/?activationToken=gqYPzH1FlPzVr0U3tQ7H"); @@ -163,13 +160,14 @@ describe("Okta account creation", () => { }); it("displays a success message", () => { cy.contains("Account set up complete"); - cy.checkA11y(); + cy.checkAccessibility(); }); }); describe("Account creation w/ Voice Call MFA", () => { before(() => { - cy.restartWiremock("accountCreation"); + cy.clearCookies(); + cy.resetWiremock(); }); it("navigates to the activation link", () => { cy.visit("/uac/?activationToken=wN5mR-8SXao1TP2PLaFe"); @@ -193,13 +191,14 @@ describe("Okta account creation", () => { }); it("displays a success message", () => { cy.contains("Account set up complete"); - cy.checkA11y(); + cy.checkAccessibility(); }); }); describe("Account creation w/ Email MFA", () => { before(() => { - cy.restartWiremock("accountCreation"); + cy.clearCookies(); + cy.resetWiremock(); }); it("navigates to the activation link", () => { cy.visit("/uac/?activationToken=4OVwdVhc6M1I-UwvLrNX"); @@ -220,7 +219,7 @@ describe("Okta account creation", () => { }); it("displays a success message", () => { cy.contains("Account set up complete"); - cy.checkA11y(); + cy.checkAccessibility(); }); }); }); diff --git a/cypress/e2e/09-multiplex_testing.cy.js b/cypress/e2e/09-multiplex_testing.cy.js index 74e07204ca8..77a464efcd1 100644 --- a/cypress/e2e/09-multiplex_testing.cy.js +++ b/cypress/e2e/09-multiplex_testing.cy.js @@ -62,7 +62,7 @@ describe("Testing with multiplex devices", () => { cy.contains(`${patient.lastName}, ${patient.firstName}`); cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); const queueCard = `div[data-testid="test-card-${patient.internalId}"]`; cy.get(queueCard).within(() => { @@ -95,7 +95,6 @@ describe("Testing with multiplex devices", () => { cy.get(queueCard).within(() => { cy.get("@submitBtn").should("be.enabled").click(); }); - cy.contains("Submit anyway").click(); cy.wait("@SubmitQueueItem"); cy.wait("@GetFacilityQueue", {timeout: 20000}); diff --git a/cypress/e2e/10-save_and_start_covid_test.cy.js b/cypress/e2e/10-save_and_start_covid_test.cy.js index 99a1c84c135..23cd3bbb5c3 100644 --- a/cypress/e2e/10-save_and_start_covid_test.cy.js +++ b/cypress/e2e/10-save_and_start_covid_test.cy.js @@ -42,7 +42,7 @@ describe('Save and start covid test',()=>{ cy.contains("General information").should('exist'); // a11y scan of edit patient page cy.injectSRAxe(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get('input[name="middleName"]').clear().type(testNumber().toString(10)); cy.get(".prime-save-patient-changes-start-test").click(); }); @@ -67,7 +67,7 @@ describe('Save and start covid test',()=>{ cy.contains("New loss of taste").should('exist').click(); // Test a11y on the AoE form - cy.checkA11y(); + cy.checkAccessibility(); cy.contains("button", "Continue").click(); cy.get(".prime-home").contains(patientName); @@ -76,7 +76,7 @@ describe('Save and start covid test',()=>{ cy.wait("@GetFacilityQueue", {timeout: 20000}); // Test a11y on the Test Queue page - cy.checkA11y(); + cy.checkAccessibility(); }); }); @@ -93,7 +93,7 @@ describe('Save and start covid test',()=>{ cy.get(".prime-edit-patient").contains("Add new patient"); cy.injectSRAxe(); - cy.checkA11y(); // New Patient page + cy.checkAccessibility(); // New Patient page }); it("fills out form fields and clicks save and start test and verifies AoE form is correctly filled in", () => { @@ -116,7 +116,7 @@ describe('Save and start covid test',()=>{ '.modal__container input[name="addressSelect-person"][value="userAddress"]+label' ).click(); - cy.checkA11y(); + cy.checkAccessibility(); cy.get(".modal__container #save-confirmed-address").click(); cy.url().should("include", "queue"); diff --git a/cypress/support/commands.js b/cypress/support/commands.js index d523fd5a2b5..b41c0a27cd4 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -93,12 +93,6 @@ Cypress.Commands.add("login", () => { }); }); -Cypress.Commands.add("restartWiremock", (stubDir) => { - cy.clearCookies(); - cy.task("stopWiremock"); - cy.task("startWiremock", { stubDir }); -}); - Cypress.Commands.add("selectFacility", () => { cy.get("body").then(($body) => { if ( @@ -145,6 +139,10 @@ Cypress.Commands.add("removeOrganizationAccess", () => { }); +Cypress.Commands.add("resetWiremock", () => { + cy.request("POST", "http://wiremock:8088/__admin/reset"); +}); + Cypress.Commands.add("makePOSTRequest", (requestBody) => { return cy.getLocalStorage('access_token').then(token => (cy.request( { @@ -162,3 +160,28 @@ Cypress.Commands.add("makePOSTRequest", (requestBody) => { Cypress.Commands.add("injectSRAxe", () => { return isLocalRun ? cy.injectAxe({ axeCorePath: './cypress/node_modules/axe-core/axe.min.js'}) : cy.injectAxe(); }); + +// Print cypress-axe violations to the terminal +function printAccessibilityViolations(violations) { + cy.task( + 'table', + violations.map(({id, impact, description, nodes}) => ({ + id, + impact, + description, + "node count": nodes.length, + })), + ); + + cy.task('print', "Nodes:") + violations.forEach(({nodes})=> { + nodes.forEach(node => { + cy.task('print', node.html) + cy.task('print', "=============\n") + }) + }) +} + +Cypress.Commands.add('checkAccessibility', () => { + cy.checkA11y(null, null, printAccessibilityViolations); +}); \ No newline at end of file diff --git a/cypress/support/wiremock/download-wiremock.sh b/cypress/support/wiremock/download-wiremock.sh deleted file mode 100755 index dd7498c9e8c..00000000000 --- a/cypress/support/wiremock/download-wiremock.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -if [[ ! -f "wiremock-jre8-standalone-2.29.1.jar" ]]; then - curl -s -O https://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-jre8-standalone/2.29.1/wiremock-jre8-standalone-2.29.1.jar -fi \ No newline at end of file diff --git a/cypress/support/wiremock/ping-wiremock.sh b/cypress/support/wiremock/ping-wiremock.sh deleted file mode 100755 index 4e5e8689875..00000000000 --- a/cypress/support/wiremock/ping-wiremock.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -printf 'Waiting for wiremock to start...' -curl -k http://localhost:8088 > /dev/null 2>&1 -result=$? - -polls=0 -while [[ $result -ne 0 && $polls -lt 180 ]]; do - ((polls++)) - printf . - sleep 1 - curl -k http://localhost:8088 > /dev/null 2>&1 - result=$? -done -echo - -echo 'Wiremock is online! Starting Cypress tests...' \ No newline at end of file diff --git a/cypress/support/wiremock/start-wiremock.sh b/cypress/support/wiremock/start-wiremock.sh deleted file mode 100755 index 42a5b0e2c76..00000000000 --- a/cypress/support/wiremock/start-wiremock.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -java -jar ./wiremock-jre8-standalone-2.29.1.jar --local-response-templating --port 8088 --root-dir ./cypress/stubs/$1 \ No newline at end of file diff --git a/cypress/support/wiremock/stop-wiremock.sh b/cypress/support/wiremock/stop-wiremock.sh deleted file mode 100755 index 285ec78a59f..00000000000 --- a/cypress/support/wiremock/stop-wiremock.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -curl -s -f -X POST http://localhost:8088/__admin/shutdown - -echo 'Stopped Wiremock.' \ No newline at end of file diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index c46ca327f63..bcc13b6c843 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -5,16 +5,7 @@ services: SPRING_LIQUIBASE_ENABLED: "true" GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 frontend: - environment: - REACT_APP_BASE_URL: https://localhost.simplereport.gov - REACT_APP_BACKEND_URL: https://localhost.simplereport.gov/api - PUBLIC_URL: /app/ - REACT_APP_OKTA_ENABLED: "false" - REACT_APP_DISABLE_MAINTENANCE_BANNER: "true" - GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 - command: ["./ci-git-fix.sh"] - nginx: - hostname: localhost.simplereport.gov + image: ghcr.io/cdcgov/prime-simplereport/frontend-lighthouse:${DOCKER_FRONTEND_LIGHTHOUSE_IMAGE_VERSION:-latest} mailhog: profiles: - donotstart \ No newline at end of file diff --git a/docker-compose.cypress.yml b/docker-compose.cypress.yml index e6977e58ffd..e546acecbd7 100644 --- a/docker-compose.cypress.yml +++ b/docker-compose.cypress.yml @@ -5,7 +5,7 @@ services: dockerfile: cypress/Dockerfile image: ghcr.io/cdcgov/prime-simplereport/cypress:${DOCKER_CYPRESS_IMAGE_VERSION:-latest} container_name: cypress - shm_size: "512M" + shm_size: "256M" restart: "no" environment: CYPRESS_OKTA_USERNAME: $CYPRESS_OKTA_USERNAME @@ -17,19 +17,14 @@ services: CYPRESS_BACKEND_URL: $CYPRESS_BACKEND_URL SPEC_PATH: $SPEC_PATH TEST_ENV: $TEST_ENV + depends_on: + - backend + - frontend + - wiremock + - nginx volumes: - - ./cypress/fixtures/:/app/cypress/fixtures/ - - ./cypress/e2e/:/app/cypress/e2e/ - - ./cypress/node_modules/:/app/cypress/node_modules/ - - ./cypress/plugins/:/app/cypress/plugins/ - ./cypress/screenshots/:/app/cypress/screenshots/ - - ./cypress/stubs/:/app/cypress/stubs/ - - ./cypress/support/:/app/cypress/support/ - ./cypress/videos/:/app/cypress/videos/ - - ./cypress/cypress.config.js:/app/cypress/cypress.config.js - - ./cypress/package.json:/app/package.json - - ./cypress/yarn.lock:/app/yarn.lock - - ./cypress/e2e.sh:/app/e2e.sh - ./.git/:/app/.git/ expose: - "8088" @@ -46,20 +41,8 @@ services: WIREMOCK_URL: $WIREMOCK_URL SPRING_LIQUIBASE_ENABLED: "true" GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 - frontend: - environment: - REACT_APP_OKTA_URL: $WIREMOCK_URL - REACT_APP_BASE_URL: https://localhost.simplereport.gov - REACT_APP_BACKEND_URL: https://localhost.simplereport.gov/api - PUBLIC_URL: /app/ - REACT_APP_OKTA_ENABLED: "true" - REACT_APP_DISABLE_MAINTENANCE_BANNER: "true" - GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 - command: ["./ci-git-fix.sh"] - nginx: - hostname: localhost.simplereport.gov - environment: - NGINX_ENTRYPOINT_QUIET_LOGS: 1 + depends_on: + - wiremock mailhog: profiles: - donotstart diff --git a/docker-compose.yml b/docker-compose.yml index 9c0afd654e1..57a453145c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,7 +33,8 @@ services: # Spring Boot backend backend: build: - context: backend + context: ./ + dockerfile: backend/Dockerfile image: ghcr.io/cdcgov/prime-simplereport/backend:${DOCKER_BACKEND_IMAGE_VERSION:-latest} container_name: backend env_file: @@ -42,31 +43,28 @@ services: SPRING_PROFILES_ACTIVE: okta-local,db-dockerized,create-sample-data SPRING_LIQUIBASE_ENABLED: "true" GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 - volumes: - - ./.git:/app/.git - - ./backend:/app/backend/ depends_on: - db + - wiremock expose: - "8080" # React frontend frontend: build: - context: frontend + context: ./ + dockerfile: frontend/Dockerfile + args: + REACT_APP_OKTA_URL: $REACT_APP_OKTA_URL + REACT_APP_BASE_URL: $REACT_APP_BASE_URL + REACT_APP_BACKEND_URL: $REACT_APP_BACKEND_URL + REACT_APP_OKTA_CLIENT_ID: $REACT_APP_OKTA_CLIENT_ID + REACT_APP_SMARTY_STREETS_KEY: $REACT_APP_SMARTY_STREETS_KEY + PUBLIC_URL: $PUBLIC_URL + REACT_APP_OKTA_ENABLED: $REACT_APP_OKTA_ENABLED + REACT_APP_DISABLE_MAINTENANCE_BANNER: "true" + GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 image: ghcr.io/cdcgov/prime-simplereport/frontend:${DOCKER_FRONTEND_IMAGE_VERSION:-latest} container_name: frontend - environment: - REACT_APP_BASE_URL: https://localhost.simplereport.gov - REACT_APP_BACKEND_URL: https://localhost.simplereport.gov/api - PUBLIC_URL: /app/ - REACT_APP_OKTA_ENABLED: "true" - REACT_APP_DISABLE_MAINTENANCE_BANNER: "true" - GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 - volumes: - - ./.git:/app/.git - - ./frontend:/app/frontend/ - - node_modules:/app/frontend/node_modules - - ./backend/src/main/resources/graphql:/app/backend/src/main/resources/graphql expose: - "3000" # This is an nginx server that serves both the frontend and the backend @@ -76,12 +74,14 @@ services: context: nginx image: ghcr.io/cdcgov/prime-simplereport/nginx:${DOCKER_NGINX_IMAGE_VERSION:-latest} container_name: nginx + hostname: localhost.simplereport.gov + restart: "unless-stopped" + environment: + NGINX_ENTRYPOINT_QUIET_LOGS: 1 depends_on: - backend - frontend - volumes: - - ./certs:/etc/nginx/certs - - ./frontend/public/index.html:/etc/nginx/html/index.html + - wiremock ports: - "80:80" - "443:443" @@ -90,7 +90,12 @@ services: - '1025:1025' - '8025:8025' image: mailhog/mailhog - + wiremock: + build: + context: wiremock + image: ghcr.io/cdcgov/prime-simplereport/wiremock:${DOCKER_WIREMOCK_IMAGE_VERSION:-latest} + container_name: wiremock + restart: "unless-stopped" volumes: db-data: node_modules: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 973c7da6358..54e338ef324 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,21 +1,64 @@ -FROM node:18-alpine +FROM node:18-alpine as build LABEL org.opencontainers.image.source https://github.com/CDCgov/prime-simplereport # Add bash and git RUN apk add --no-cache bash git + +ARG REACT_APP_BASE_URL +ARG REACT_APP_BACKEND_URL +ARG PUBLIC_URL +ARG REACT_APP_OKTA_URL +ARG REACT_APP_OKTA_ENABLED +ARG REACT_APP_DISABLE_MAINTENANCE_BANNER +ARG GIT_DISCOVERY_ACROSS_FILESYSTEM +ARG REACT_APP_OKTA_CLIENT_ID +ARG REACT_APP_SMARTY_STREETS_KEY + + +ENV REACT_APP_BASE_URL $REACT_APP_BASE_URL +ENV REACT_APP_BACKEND_URL $REACT_APP_BACKEND_URL +ENV PUBLIC_URL $PUBLIC_URL +ENV REACT_APP_OKTA_URL $REACT_APP_OKTA_URL +ENV REACT_APP_OKTA_ENABLED $REACT_APP_OKTA_ENABLED +ENV REACT_APP_DISABLE_MAINTENANCE_BANNER $REACT_APP_DISABLE_MAINTENANCE_BANNER +ENV GIT_DISCOVERY_ACROSS_FILESYSTEM $GIT_DISCOVERY_ACROSS_FILESYSTEM +ENV REACT_APP_OKTA_CLIENT_ID $REACT_APP_OKTA_CLIENT_ID +ENV REACT_APP_SMARTY_STREETS_KEY $REACT_APP_SMARTY_STREETS_KEY + + # Create directory for app, grant ownership to node user RUN mkdir -p /app/frontend/node_modules -RUN chown -R node:node /app -WORKDIR /app/frontend + +WORKDIR /app/frontend # Run app as non-privileged user -USER node + +# Copy over yarn dependency files before src +# so it caches via docker for subsequent builds +COPY ./frontend/package.json /app/frontend/ +COPY ./frontend/yarn.lock /app/frontend/ # Install dependencies -COPY package.json yarn.lock /app/frontend/ RUN yarn install --non-interactive -CMD ["yarn", "start"] +# copy over the backend graphql schema files +ADD ./backend/ /app/backend +ADD ./frontend /app/frontend +ADD ./.git /app/.git + + +#e2e specific, disable content security +RUN echo "REACT_APP_CONTENT_SECURITY_POLICY_DEFAULT_SRC=''" >> .env.production.local +RUN echo "REACT_APP_CONTENT_SECURITY_POLICY_SCRIPT_SRC=''" >> .env.production.local -EXPOSE 3000 \ No newline at end of file +RUN yarn run build + + +# production environment +FROM node:18-alpine +RUN npm install -g serve +WORKDIR /app/frontend +COPY --from=build /app/frontend/build /app/frontend/build +EXPOSE 3000 +CMD ["serve", "-s", "build"] diff --git a/frontend/ci-git-fix.sh b/frontend/ci-git-fix.sh deleted file mode 100755 index 0aa0b8b64ce..00000000000 --- a/frontend/ci-git-fix.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -echo "git config --global --add safe.directory /app" -git config --global --add safe.directory /app - -yarn start diff --git a/frontend/package.json b/frontend/package.json index 62afd736792..fb92b4ededb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,6 @@ { "name": "simple-report-client", "version": "0.1.0", - "private": true, "engines": { "node": "18" }, @@ -99,15 +98,6 @@ "jest-dom" ], "rules": { - "graphql/template-strings": [ - "error", - { - "env": "apollo" - } - ], - "graphql/named-operations": [ - "error" - ], "import/no-unresolved": 0, "import/first": 1, "import/order": [ diff --git a/lighthouse.sh b/lighthouse.sh index f8f911cec0a..1f9fd0ec729 100755 --- a/lighthouse.sh +++ b/lighthouse.sh @@ -1,15 +1,15 @@ #!/bin/bash -docker compose pull -docker-compose -f docker-compose.yml -f docker-compose.ci.yml build -docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d +echo "start docker containers" +docker compose -f docker-compose.yml -f docker-compose.ci.yml up -d --quiet-pull echo "Waiting for backend to start at https://localhost.simplereport.gov/api/health" http_response=0 polls=0 while [[ $http_response != "200" && $polls -lt 360 ]]; do ((polls++)) - sleep 1 + sleep 2 + echo "Waiting for backend to start at https://localhost.simplereport.gov/api/health" http_response=$(curl -skL -w "%{http_code}" "https://localhost.simplereport.gov/api/health") done if [[ $http_response -ne 200 ]]; then @@ -22,4 +22,6 @@ echo FACILITY_ID=$(docker exec db psql -qtA -v ON_ERROR_STOP=1 -p 5432 -U simple_report_migrations simple_report -c "select internal_id from simple_report.facility limit 1;") echo "Our facility id is: $FACILITY_ID." -docker-compose -f docker-compose.yml -f docker-compose.ci.yml up +npm install -g @lhci/cli@0.9.x +lhci autorun + diff --git a/lighthouserc.yml b/lighthouserc.yml index 00c2d1ec4ea..08fa04e02fe 100644 --- a/lighthouserc.yml +++ b/lighthouserc.yml @@ -1,9 +1,6 @@ ci: collect: numberOfRuns: 1 - startServerCommand: sh ./lighthouse.sh - startServerReadyPattern: 'BUILD SUCCESSFUL' - startServerReadyTimeout: 600000 url: - https://localhost.simplereport.gov/app - https://localhost.simplereport.gov/app?facility=$FACILITY_ID diff --git a/nginx/Dockerfile b/nginx/Dockerfile index 123f8717a0b..afe1c6d9d85 100644 --- a/nginx/Dockerfile +++ b/nginx/Dockerfile @@ -1,4 +1,17 @@ +FROM nginx:1.25-alpine as build +LABEL org.opencontainers.image.source https://github.com/CDCgov/prime-simplereport + +WORKDIR certs + +RUN apk add mkcert --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ +RUN mkcert -install +RUN mkcert localhost.simplereport.gov +RUN mv localhost.simplereport.gov.pem localhost.simplereport.gov.crt +RUN mv localhost.simplereport.gov-key.pem localhost.simplereport.gov.key + + FROM nginx:1.25-alpine LABEL org.opencontainers.image.source https://github.com/CDCgov/prime-simplereport -COPY ./default.conf /etc/nginx/conf.d/default.conf +COPY ./default.conf /etc/nginx/conf.d/default.conf +COPY --from=build /certs /etc/nginx/certs diff --git a/nginx/default.conf b/nginx/default.conf index ec533d0ef45..52809974d3e 100644 --- a/nginx/default.conf +++ b/nginx/default.conf @@ -11,8 +11,8 @@ server { ssl_certificate certs/localhost.simplereport.gov.crt; ssl_certificate_key certs/localhost.simplereport.gov.key; - location /app { - proxy_pass http://frontend:3000; + location /app/ { + proxy_pass http://frontend:3000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -38,4 +38,13 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } + + location /wiremock/ { + rewrite ^/wiremock/(.*) /$1 break; + proxy_pass http://wiremock:8088; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } } diff --git a/wiremock/Dockerfile b/wiremock/Dockerfile new file mode 100644 index 00000000000..5bd48795cdf --- /dev/null +++ b/wiremock/Dockerfile @@ -0,0 +1,9 @@ +FROM eclipse-temurin:17-jdk-alpine +LABEL org.opencontainers.image.source https://github.com/CDCgov/prime-simplereport + +WORKDIR app +COPY . . + +ENTRYPOINT ["java", "-jar", "./wiremock-jre8-standalone-2.29.1.jar", "--local-response-templating", "--port", "8088", "--root-dir", "./stubs"] + +EXPOSE 8088 \ No newline at end of file diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_authn-37f80080-892e-4522-9938-82e97d9894f0.json b/wiremock/stubs/mappings/email/api_v1_authn-37f80080-892e-4522-9938-82e97d9894f0.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_authn-37f80080-892e-4522-9938-82e97d9894f0.json rename to wiremock/stubs/mappings/email/api_v1_authn-37f80080-892e-4522-9938-82e97d9894f0.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-102cf920-1120-4ad7-b455-ce28f5ef12bf.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-102cf920-1120-4ad7-b455-ce28f5ef12bf.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-102cf920-1120-4ad7-b455-ce28f5ef12bf.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-102cf920-1120-4ad7-b455-ce28f5ef12bf.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-6b0e5aa9-3571-4cd6-a559-4514a99e705a.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-6b0e5aa9-3571-4cd6-a559-4514a99e705a.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-6b0e5aa9-3571-4cd6-a559-4514a99e705a.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-6b0e5aa9-3571-4cd6-a559-4514a99e705a.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-7e80ba76-5ff9-4a1f-8300-fcfc2cf43758.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-7e80ba76-5ff9-4a1f-8300-fcfc2cf43758.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-7e80ba76-5ff9-4a1f-8300-fcfc2cf43758.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-7e80ba76-5ff9-4a1f-8300-fcfc2cf43758.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-883e6c07-098f-4a65-b85e-d58fc4a6f4bc.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-883e6c07-098f-4a65-b85e-d58fc4a6f4bc.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-883e6c07-098f-4a65-b85e-d58fc4a6f4bc.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-883e6c07-098f-4a65-b85e-d58fc4a6f4bc.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-8b629004-c488-4720-affc-e5dc9b767be9.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-8b629004-c488-4720-affc-e5dc9b767be9.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-8b629004-c488-4720-affc-e5dc9b767be9.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-8b629004-c488-4720-affc-e5dc9b767be9.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-d83fdaac-1ccc-4118-99af-876acce99053.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-d83fdaac-1ccc-4118-99af-876acce99053.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-d83fdaac-1ccc-4118-99af-876acce99053.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-d83fdaac-1ccc-4118-99af-876acce99053.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-faf1baa3-b44f-4db0-8be5-563127f70297.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-faf1baa3-b44f-4db0-8be5-563127f70297.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-faf1baa3-b44f-4db0-8be5-563127f70297.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6-faf1baa3-b44f-4db0-8be5-563127f70297.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors-a7d9b6f1-ea9a-4af0-8b2e-f5b76253a2ac.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors-a7d9b6f1-ea9a-4af0-8b2e-f5b76253a2ac.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors-a7d9b6f1-ea9a-4af0-8b2e-f5b76253a2ac.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors-a7d9b6f1-ea9a-4af0-8b2e-f5b76253a2ac.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6-aabe3742-778b-41a4-b965-0fd362cb0975.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6-aabe3742-778b-41a4-b965-0fd362cb0975.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6-aabe3742-778b-41a4-b965-0fd362cb0975.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6-aabe3742-778b-41a4-b965-0fd362cb0975.json diff --git a/cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6_lifecycle_activate-b3b3e41c-7db4-4243-a886-bd31eed3c64f.json b/wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6_lifecycle_activate-b3b3e41c-7db4-4243-a886-bd31eed3c64f.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6_lifecycle_activate-b3b3e41c-7db4-4243-a886-bd31eed3c64f.json rename to wiremock/stubs/mappings/email/api_v1_users_00ugnomzln2q84acp4h6_factors_emfgnoi1js8jhq79k4h6_lifecycle_activate-b3b3e41c-7db4-4243-a886-bd31eed3c64f.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_authn-3e325aa5-161e-4cb6-b90e-9622e7a72368.json b/wiremock/stubs/mappings/googleAuth/api_v1_authn-3e325aa5-161e-4cb6-b90e-9622e7a72368.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_authn-3e325aa5-161e-4cb6-b90e-9622e7a72368.json rename to wiremock/stubs/mappings/googleAuth/api_v1_authn-3e325aa5-161e-4cb6-b90e-9622e7a72368.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-13639c60-75f8-4cd4-a6cd-b7b7f58a3e68.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-13639c60-75f8-4cd4-a6cd-b7b7f58a3e68.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-13639c60-75f8-4cd4-a6cd-b7b7f58a3e68.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-13639c60-75f8-4cd4-a6cd-b7b7f58a3e68.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-23650f1d-0db0-4068-be42-f7a85db4f155.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-23650f1d-0db0-4068-be42-f7a85db4f155.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-23650f1d-0db0-4068-be42-f7a85db4f155.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-23650f1d-0db0-4068-be42-f7a85db4f155.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4337b755-f677-4a0c-b7be-542d8016d9cf.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4337b755-f677-4a0c-b7be-542d8016d9cf.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4337b755-f677-4a0c-b7be-542d8016d9cf.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4337b755-f677-4a0c-b7be-542d8016d9cf.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4487dea9-f55a-4896-93bd-7ab488000d86.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4487dea9-f55a-4896-93bd-7ab488000d86.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4487dea9-f55a-4896-93bd-7ab488000d86.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-4487dea9-f55a-4896-93bd-7ab488000d86.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-6d8e60cb-50e4-46dc-8324-9d4025271599.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-6d8e60cb-50e4-46dc-8324-9d4025271599.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-6d8e60cb-50e4-46dc-8324-9d4025271599.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-6d8e60cb-50e4-46dc-8324-9d4025271599.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-97fd6cb8-d409-416e-bc34-4422687d9407.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-97fd6cb8-d409-416e-bc34-4422687d9407.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-97fd6cb8-d409-416e-bc34-4422687d9407.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-97fd6cb8-d409-416e-bc34-4422687d9407.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-f279127b-a0c3-4bee-be6c-418aab0c312a.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-f279127b-a0c3-4bee-be6c-418aab0c312a.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-f279127b-a0c3-4bee-be6c-418aab0c312a.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6-f279127b-a0c3-4bee-be6c-418aab0c312a.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors-fa27b1b3-40a3-4ac8-8204-a54c93e2f4cf.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors-fa27b1b3-40a3-4ac8-8204-a54c93e2f4cf.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors-fa27b1b3-40a3-4ac8-8204-a54c93e2f4cf.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors-fa27b1b3-40a3-4ac8-8204-a54c93e2f4cf.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6-9c655bc5-e1a8-4e97-a47d-33e0362c0dc0.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6-9c655bc5-e1a8-4e97-a47d-33e0362c0dc0.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6-9c655bc5-e1a8-4e97-a47d-33e0362c0dc0.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6-9c655bc5-e1a8-4e97-a47d-33e0362c0dc0.json diff --git a/cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6_lifecycle_activate-12438cb2-b152-4403-b398-0eae6d7abc59.json b/wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6_lifecycle_activate-12438cb2-b152-4403-b398-0eae6d7abc59.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6_lifecycle_activate-12438cb2-b152-4403-b398-0eae6d7abc59.json rename to wiremock/stubs/mappings/googleAuth/api_v1_users_00ugnjag7ekhoymoa4h6_factors_uftgnld798amf0yk34h6_lifecycle_activate-12438cb2-b152-4403-b398-0eae6d7abc59.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_authn-408cdc4f-6fa5-4963-bdab-1d41396bad19.json b/wiremock/stubs/mappings/oktaVerify/api_v1_authn-408cdc4f-6fa5-4963-bdab-1d41396bad19.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_authn-408cdc4f-6fa5-4963-bdab-1d41396bad19.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_authn-408cdc4f-6fa5-4963-bdab-1d41396bad19.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-09a48b86-d42a-4808-9325-2270dac9746e.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-09a48b86-d42a-4808-9325-2270dac9746e.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-09a48b86-d42a-4808-9325-2270dac9746e.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-09a48b86-d42a-4808-9325-2270dac9746e.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-1b28f921-dfcc-47d3-9930-860aee8fd588.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-1b28f921-dfcc-47d3-9930-860aee8fd588.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-1b28f921-dfcc-47d3-9930-860aee8fd588.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-1b28f921-dfcc-47d3-9930-860aee8fd588.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-67a92e43-1f14-462f-8fb5-ade1fb3765ce.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-67a92e43-1f14-462f-8fb5-ade1fb3765ce.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-67a92e43-1f14-462f-8fb5-ade1fb3765ce.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-67a92e43-1f14-462f-8fb5-ade1fb3765ce.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-801d2f77-5cd5-44fa-9e02-09e0c496e46a.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-801d2f77-5cd5-44fa-9e02-09e0c496e46a.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-801d2f77-5cd5-44fa-9e02-09e0c496e46a.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-801d2f77-5cd5-44fa-9e02-09e0c496e46a.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-9195ab5e-d856-469c-8427-ae1b3767cf6e.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-9195ab5e-d856-469c-8427-ae1b3767cf6e.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-9195ab5e-d856-469c-8427-ae1b3767cf6e.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-9195ab5e-d856-469c-8427-ae1b3767cf6e.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-93c612d9-150c-4244-a316-4997b8f1112f.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-93c612d9-150c-4244-a316-4997b8f1112f.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-93c612d9-150c-4244-a316-4997b8f1112f.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-93c612d9-150c-4244-a316-4997b8f1112f.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-b00b2408-9cc0-4e2a-83bb-56ab13b7a25c.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-b00b2408-9cc0-4e2a-83bb-56ab13b7a25c.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-b00b2408-9cc0-4e2a-83bb-56ab13b7a25c.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6-b00b2408-9cc0-4e2a-83bb-56ab13b7a25c.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors-28ca51bb-4c11-4f1f-a8ee-b74d559e584a.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors-28ca51bb-4c11-4f1f-a8ee-b74d559e584a.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors-28ca51bb-4c11-4f1f-a8ee-b74d559e584a.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors-28ca51bb-4c11-4f1f-a8ee-b74d559e584a.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6-8a0ef72a-bf1b-4cbc-9872-504b075ee96e.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6-8a0ef72a-bf1b-4cbc-9872-504b075ee96e.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6-8a0ef72a-bf1b-4cbc-9872-504b075ee96e.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6-8a0ef72a-bf1b-4cbc-9872-504b075ee96e.json diff --git a/cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6_lifecycle_activate-45985b92-cfbf-4520-870b-9e8a83589782.json b/wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6_lifecycle_activate-45985b92-cfbf-4520-870b-9e8a83589782.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6_lifecycle_activate-45985b92-cfbf-4520-870b-9e8a83589782.json rename to wiremock/stubs/mappings/oktaVerify/api_v1_users_00ugnh0inq8mibnyg4h6_factors_ostgni1eeuqcubsqj4h6_lifecycle_activate-45985b92-cfbf-4520-870b-9e8a83589782.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7-0e0f1036-97ee-4a9a-abb8-714f30236818.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7-0e0f1036-97ee-4a9a-abb8-714f30236818.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7-0e0f1036-97ee-4a9a-abb8-714f30236818.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7-0e0f1036-97ee-4a9a-abb8-714f30236818.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7-c31487c5-4a90-4cba-aaa9-68594fd67fbe.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7-c31487c5-4a90-4cba-aaa9-68594fd67fbe.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7-c31487c5-4a90-4cba-aaa9-68594fd67fbe.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7-c31487c5-4a90-4cba-aaa9-68594fd67fbe.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7-f53d763d-21d7-4bd0-a14f-9965a6f3521c.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7-f53d763d-21d7-4bd0-a14f-9965a6f3521c.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7-f53d763d-21d7-4bd0-a14f-9965a6f3521c.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7-f53d763d-21d7-4bd0-a14f-9965a6f3521c.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nrj9qdj10y61d7-b82e4e55-9c33-4d17-98cb-6ffce901143d.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nrj9qdj10y61d7-b82e4e55-9c33-4d17-98cb-6ffce901143d.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nrj9qdj10y61d7-b82e4e55-9c33-4d17-98cb-6ffce901143d.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nrj9qdj10y61d7-b82e4e55-9c33-4d17-98cb-6ffce901143d.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nuk4y75yit11d7-0610ce14-a0ac-4d94-8d98-263a4af7a34f.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nuk4y75yit11d7-0610ce14-a0ac-4d94-8d98-263a4af7a34f.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nuk4y75yit11d7-0610ce14-a0ac-4d94-8d98-263a4af7a34f.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nuk4y75yit11d7-0610ce14-a0ac-4d94-8d98-263a4af7a34f.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nyd7uugag1l1d7-233e5353-4ebf-4748-bf83-760bf1cf1376.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nyd7uugag1l1d7-233e5353-4ebf-4748-bf83-760bf1cf1376.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nyd7uugag1l1d7-233e5353-4ebf-4748-bf83-760bf1cf1376.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228nyd7uugag1l1d7-233e5353-4ebf-4748-bf83-760bf1cf1376.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228od2fuscasdm1d7-139b14a9-4fe9-430d-88a5-36bd2136dc53.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228od2fuscasdm1d7-139b14a9-4fe9-430d-88a5-36bd2136dc53.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228od2fuscasdm1d7-139b14a9-4fe9-430d-88a5-36bd2136dc53.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228od2fuscasdm1d7-139b14a9-4fe9-430d-88a5-36bd2136dc53.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228ofzf89lvr8s1d7-ddde229c-13fc-4245-aa68-0ae096224667.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228ofzf89lvr8s1d7-ddde229c-13fc-4245-aa68-0ae096224667.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228ofzf89lvr8s1d7-ddde229c-13fc-4245-aa68-0ae096224667.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228ofzf89lvr8s1d7-ddde229c-13fc-4245-aa68-0ae096224667.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228orh0j8unens1d7-5a69690f-16d0-48b9-9bbb-f2c85171a681.json b/wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228orh0j8unens1d7-5a69690f-16d0-48b9-9bbb-f2c85171a681.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228orh0j8unens1d7-5a69690f-16d0-48b9-9bbb-f2c85171a681.json rename to wiremock/stubs/mappings/org/api_v1_apps_0oa1k0163nawfvxnw1d7_groups_00g228orh0j8unens1d7-5a69690f-16d0-48b9-9bbb-f2c85171a681.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-01efa298-c85c-44d5-96a3-a5026f9a5118.json b/wiremock/stubs/mappings/org/api_v1_groups-01efa298-c85c-44d5-96a3-a5026f9a5118.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-01efa298-c85c-44d5-96a3-a5026f9a5118.json rename to wiremock/stubs/mappings/org/api_v1_groups-01efa298-c85c-44d5-96a3-a5026f9a5118.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-4c7aeded-3820-4374-8543-715ba6d28bf6.json b/wiremock/stubs/mappings/org/api_v1_groups-4c7aeded-3820-4374-8543-715ba6d28bf6.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-4c7aeded-3820-4374-8543-715ba6d28bf6.json rename to wiremock/stubs/mappings/org/api_v1_groups-4c7aeded-3820-4374-8543-715ba6d28bf6.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-50832ad6-bcf8-4ba9-8a19-90264b5312ff.json b/wiremock/stubs/mappings/org/api_v1_groups-50832ad6-bcf8-4ba9-8a19-90264b5312ff.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-50832ad6-bcf8-4ba9-8a19-90264b5312ff.json rename to wiremock/stubs/mappings/org/api_v1_groups-50832ad6-bcf8-4ba9-8a19-90264b5312ff.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-5da4736f-8ed3-456f-a88b-17689cf122f0.json b/wiremock/stubs/mappings/org/api_v1_groups-5da4736f-8ed3-456f-a88b-17689cf122f0.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-5da4736f-8ed3-456f-a88b-17689cf122f0.json rename to wiremock/stubs/mappings/org/api_v1_groups-5da4736f-8ed3-456f-a88b-17689cf122f0.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-620031b5-0665-4d54-8427-7bf02e0f9827.json b/wiremock/stubs/mappings/org/api_v1_groups-620031b5-0665-4d54-8427-7bf02e0f9827.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-620031b5-0665-4d54-8427-7bf02e0f9827.json rename to wiremock/stubs/mappings/org/api_v1_groups-620031b5-0665-4d54-8427-7bf02e0f9827.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-8707c9e1-6afb-4fa9-aed3-9c5a17382742.json b/wiremock/stubs/mappings/org/api_v1_groups-8707c9e1-6afb-4fa9-aed3-9c5a17382742.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-8707c9e1-6afb-4fa9-aed3-9c5a17382742.json rename to wiremock/stubs/mappings/org/api_v1_groups-8707c9e1-6afb-4fa9-aed3-9c5a17382742.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-87a1bd7b-0205-4fc4-b971-3472692d6c5c.json b/wiremock/stubs/mappings/org/api_v1_groups-87a1bd7b-0205-4fc4-b971-3472692d6c5c.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-87a1bd7b-0205-4fc4-b971-3472692d6c5c.json rename to wiremock/stubs/mappings/org/api_v1_groups-87a1bd7b-0205-4fc4-b971-3472692d6c5c.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-8a0b1094-c4eb-4950-9b84-56a2e5f65110.json b/wiremock/stubs/mappings/org/api_v1_groups-8a0b1094-c4eb-4950-9b84-56a2e5f65110.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-8a0b1094-c4eb-4950-9b84-56a2e5f65110.json rename to wiremock/stubs/mappings/org/api_v1_groups-8a0b1094-c4eb-4950-9b84-56a2e5f65110.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-8dbb3d58-a55f-49c9-a239-d192a2f64b09.json b/wiremock/stubs/mappings/org/api_v1_groups-8dbb3d58-a55f-49c9-a239-d192a2f64b09.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-8dbb3d58-a55f-49c9-a239-d192a2f64b09.json rename to wiremock/stubs/mappings/org/api_v1_groups-8dbb3d58-a55f-49c9-a239-d192a2f64b09.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-a3bca034-6789-4282-9613-05f6c759cd5c.json b/wiremock/stubs/mappings/org/api_v1_groups-a3bca034-6789-4282-9613-05f6c759cd5c.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-a3bca034-6789-4282-9613-05f6c759cd5c.json rename to wiremock/stubs/mappings/org/api_v1_groups-a3bca034-6789-4282-9613-05f6c759cd5c.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-cd272a21-f226-471d-9ff1-1fe3196f17ef.json b/wiremock/stubs/mappings/org/api_v1_groups-cd272a21-f226-471d-9ff1-1fe3196f17ef.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-cd272a21-f226-471d-9ff1-1fe3196f17ef.json rename to wiremock/stubs/mappings/org/api_v1_groups-cd272a21-f226-471d-9ff1-1fe3196f17ef.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups-cf1868a4-2120-4590-8b84-280b7e387fee.json b/wiremock/stubs/mappings/org/api_v1_groups-cf1868a4-2120-4590-8b84-280b7e387fee.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups-cf1868a4-2120-4590-8b84-280b7e387fee.json rename to wiremock/stubs/mappings/org/api_v1_groups-cf1868a4-2120-4590-8b84-280b7e387fee.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_groups_00g228nyd7uugag1l1d7_users-ea9a4fcb-fb44-4334-ad2e-fcac747393c7.json b/wiremock/stubs/mappings/org/api_v1_groups_00g228nyd7uugag1l1d7_users-ea9a4fcb-fb44-4334-ad2e-fcac747393c7.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_groups_00g228nyd7uugag1l1d7_users-ea9a4fcb-fb44-4334-ad2e-fcac747393c7.json rename to wiremock/stubs/mappings/org/api_v1_groups_00g228nyd7uugag1l1d7_users-ea9a4fcb-fb44-4334-ad2e-fcac747393c7.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_users-d2c41957-0331-4c20-a597-7002630980ab.json b/wiremock/stubs/mappings/org/api_v1_users-d2c41957-0331-4c20-a597-7002630980ab.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_users-d2c41957-0331-4c20-a597-7002630980ab.json rename to wiremock/stubs/mappings/org/api_v1_users-d2c41957-0331-4c20-a597-7002630980ab.json diff --git a/cypress/stubs/orgSignUp/mappings/api_v1_users_00u228n97qlexjkqt1d7_lifecycle_activate-bf01254d-c260-40ea-8132-2d4bd6cd66f6.json b/wiremock/stubs/mappings/org/api_v1_users_00u228n97qlexjkqt1d7_lifecycle_activate-bf01254d-c260-40ea-8132-2d4bd6cd66f6.json similarity index 100% rename from cypress/stubs/orgSignUp/mappings/api_v1_users_00u228n97qlexjkqt1d7_lifecycle_activate-bf01254d-c260-40ea-8132-2d4bd6cd66f6.json rename to wiremock/stubs/mappings/org/api_v1_users_00u228n97qlexjkqt1d7_lifecycle_activate-bf01254d-c260-40ea-8132-2d4bd6cd66f6.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_authn-03b45bc2-9445-4fdc-aefc-4812b748cda3.json b/wiremock/stubs/mappings/sms/api_v1_authn-03b45bc2-9445-4fdc-aefc-4812b748cda3.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_authn-03b45bc2-9445-4fdc-aefc-4812b748cda3.json rename to wiremock/stubs/mappings/sms/api_v1_authn-03b45bc2-9445-4fdc-aefc-4812b748cda3.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-217728e0-c41d-4eb7-acd5-c4d30968fefa.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-217728e0-c41d-4eb7-acd5-c4d30968fefa.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-217728e0-c41d-4eb7-acd5-c4d30968fefa.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-217728e0-c41d-4eb7-acd5-c4d30968fefa.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-226f7c02-859b-47f7-996b-de50475f665c.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-226f7c02-859b-47f7-996b-de50475f665c.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-226f7c02-859b-47f7-996b-de50475f665c.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-226f7c02-859b-47f7-996b-de50475f665c.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-288c9ccb-a6f6-413d-9479-38e594a7824b.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-288c9ccb-a6f6-413d-9479-38e594a7824b.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-288c9ccb-a6f6-413d-9479-38e594a7824b.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-288c9ccb-a6f6-413d-9479-38e594a7824b.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-2a9e8dc8-c651-4529-b3be-8628b172adc0.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-2a9e8dc8-c651-4529-b3be-8628b172adc0.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-2a9e8dc8-c651-4529-b3be-8628b172adc0.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-2a9e8dc8-c651-4529-b3be-8628b172adc0.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-33d3504f-7a70-408d-920f-0da17578af4d.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-33d3504f-7a70-408d-920f-0da17578af4d.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-33d3504f-7a70-408d-920f-0da17578af4d.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-33d3504f-7a70-408d-920f-0da17578af4d.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-5d6dba4b-07b5-41fe-a518-4048c0134193.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-5d6dba4b-07b5-41fe-a518-4048c0134193.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-5d6dba4b-07b5-41fe-a518-4048c0134193.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-5d6dba4b-07b5-41fe-a518-4048c0134193.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-7826bb04-9ed0-4b4b-b7b5-fb101d82e3aa.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-7826bb04-9ed0-4b4b-b7b5-fb101d82e3aa.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-7826bb04-9ed0-4b4b-b7b5-fb101d82e3aa.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6-7826bb04-9ed0-4b4b-b7b5-fb101d82e3aa.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors-fa71d449-b897-4ff8-8795-46e042dac20a.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors-fa71d449-b897-4ff8-8795-46e042dac20a.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors-fa71d449-b897-4ff8-8795-46e042dac20a.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors-fa71d449-b897-4ff8-8795-46e042dac20a.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6-f4215eb7-e3c0-4832-9980-c36c3c9114f7.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6-f4215eb7-e3c0-4832-9980-c36c3c9114f7.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6-f4215eb7-e3c0-4832-9980-c36c3c9114f7.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6-f4215eb7-e3c0-4832-9980-c36c3c9114f7.json diff --git a/cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6_lifecycle_activate-70478dad-37b6-4f8f-b0a4-8d943c44cf5f.json b/wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6_lifecycle_activate-70478dad-37b6-4f8f-b0a4-8d943c44cf5f.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6_lifecycle_activate-70478dad-37b6-4f8f-b0a4-8d943c44cf5f.json rename to wiremock/stubs/mappings/sms/api_v1_users_00ugne0jmx3ztgzyg4h6_factors_mblgnf1ftdustzcsa4h6_lifecycle_activate-70478dad-37b6-4f8f-b0a4-8d943c44cf5f.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_authn-3732968e-73a4-4491-966d-83e7bbbffc4c.json b/wiremock/stubs/mappings/voiceCall/api_v1_authn-3732968e-73a4-4491-966d-83e7bbbffc4c.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_authn-3732968e-73a4-4491-966d-83e7bbbffc4c.json rename to wiremock/stubs/mappings/voiceCall/api_v1_authn-3732968e-73a4-4491-966d-83e7bbbffc4c.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-2f871446-37cb-4feb-af3f-51852baa68a1.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-2f871446-37cb-4feb-af3f-51852baa68a1.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-2f871446-37cb-4feb-af3f-51852baa68a1.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-2f871446-37cb-4feb-af3f-51852baa68a1.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-34fcc1be-314a-4206-ab7e-77ffd7316ffd.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-34fcc1be-314a-4206-ab7e-77ffd7316ffd.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-34fcc1be-314a-4206-ab7e-77ffd7316ffd.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-34fcc1be-314a-4206-ab7e-77ffd7316ffd.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-41a89199-530d-4d9b-97c1-6d57bd732661.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-41a89199-530d-4d9b-97c1-6d57bd732661.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-41a89199-530d-4d9b-97c1-6d57bd732661.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-41a89199-530d-4d9b-97c1-6d57bd732661.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-663101c1-27b3-4d65-9b3c-a85714b23fcf.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-663101c1-27b3-4d65-9b3c-a85714b23fcf.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-663101c1-27b3-4d65-9b3c-a85714b23fcf.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-663101c1-27b3-4d65-9b3c-a85714b23fcf.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-8eb6461b-7e34-48ec-af5d-85dce5d03572.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-8eb6461b-7e34-48ec-af5d-85dce5d03572.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-8eb6461b-7e34-48ec-af5d-85dce5d03572.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-8eb6461b-7e34-48ec-af5d-85dce5d03572.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-d14dce7c-8cd8-480a-b1a0-454840c22752.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-d14dce7c-8cd8-480a-b1a0-454840c22752.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-d14dce7c-8cd8-480a-b1a0-454840c22752.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-d14dce7c-8cd8-480a-b1a0-454840c22752.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-f10909bf-4507-455e-940a-29e37d149507.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-f10909bf-4507-455e-940a-29e37d149507.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-f10909bf-4507-455e-940a-29e37d149507.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6-f10909bf-4507-455e-940a-29e37d149507.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors-72b442a2-1ad6-453d-b8fd-5143358999d6.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors-72b442a2-1ad6-453d-b8fd-5143358999d6.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors-72b442a2-1ad6-453d-b8fd-5143358999d6.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors-72b442a2-1ad6-453d-b8fd-5143358999d6.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6-90c10278-af01-47c5-9bb6-6d0f2157c282.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6-90c10278-af01-47c5-9bb6-6d0f2157c282.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6-90c10278-af01-47c5-9bb6-6d0f2157c282.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6-90c10278-af01-47c5-9bb6-6d0f2157c282.json diff --git a/cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6_lifecycle_activate-6e4a4d8a-5f6c-4ee4-ad42-de68bb343cfd.json b/wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6_lifecycle_activate-6e4a4d8a-5f6c-4ee4-ad42-de68bb343cfd.json similarity index 100% rename from cypress/stubs/accountCreation/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6_lifecycle_activate-6e4a4d8a-5f6c-4ee4-ad42-de68bb343cfd.json rename to wiremock/stubs/mappings/voiceCall/api_v1_users_00ugnmrroypjbijub4h6_factors_clfgnmq9zbjkjxuqu4h6_lifecycle_activate-6e4a4d8a-5f6c-4ee4-ad42-de68bb343cfd.json diff --git a/wiremock/wiremock-jre8-standalone-2.29.1.jar b/wiremock/wiremock-jre8-standalone-2.29.1.jar new file mode 100644 index 00000000000..dd460d25c6a Binary files /dev/null and b/wiremock/wiremock-jre8-standalone-2.29.1.jar differ