diff --git a/.gitignore b/.gitignore
index 57ddef5d..c859f2d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,7 +24,6 @@ pnpm-debug.log*
# Playwright
/test-results/
-/ortoni-report/
/playwright-report/
/blob-report/
/playwright/.cache/
diff --git a/Dockerfile.playwright b/Dockerfile.playwright
index 46a2114a..6271a937 100644
--- a/Dockerfile.playwright
+++ b/Dockerfile.playwright
@@ -1,4 +1,4 @@
-FROM node:20
+FROM node:16
FROM mcr.microsoft.com/playwright:v1.48.0-noble
@@ -12,10 +12,10 @@ COPY package*.json ./
RUN npm install
# Install Playwright browsers
-RUN npx playwright install chromium --with-deps
-
-# Install jq
-RUN apt-get install -y jq
+RUN npx playwright install --with-deps
# Copy the rest of the application code
COPY . .
+
+# Run Playwright tests
+CMD ["npx", "playwright", "test"]
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 7b210278..40542015 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -90,6 +90,7 @@ stages:
"npx wait-on http://localhost:8080 && npm run test:playwright -- --shard=$(shardNumber)/$(totalShards) --reporter=list,blob --grep \"@smoke | @Advanced\"")
# Start container and stream logs
+
echo "Starting tests for shard $(shardNumber)..."
docker start -a $container_id
@@ -126,6 +127,8 @@ stages:
condition: always()
- job: download_and_merge_reports
+ container:
+ image: mcr.microsoft.com/playwright:v1.48.0-noble
dependsOn: playwright_tests
timeoutInMinutes: 8
cancelTimeoutInMinutes: 10
@@ -192,23 +195,19 @@ stages:
# inputs:
# searchFolder: 'test-results'
# testResultsFormat: 'JUnit'
- # testResultsFiles: 'junit_results.xml'
+ # testResultsFiles: 'results.xml'
# mergeTestResults: true
# failTaskOnFailedTests: false
# testRunTitle: 'Playwright Tests'
# condition: succeededOrFailed()
- - task: PublishPipelineArtifact@1
- displayName: 'Publish Merged Report'
- condition: always()
- inputs:
- targetPath: '$(System.DefaultWorkingDirectory)/ortoni-report'
- artifact: 'playwright-merged-report'
- publishLocation: 'pipeline'
- - script: |
- docker rmi $(dockerImageName):$(imageTag) -f
- displayName: 'Cleanup Docker Image'
- condition: always()
+ - task: PublishPipelineArtifact@1
+ displayName: 'Publish Merged Report'
+ condition: always()
+ inputs:
+ targetPath: '$(System.DefaultWorkingDirectory)/ortoni-report'
+ artifact: 'playwright-merged-report'
+ publishLocation: 'pipeline'
- ${{ else }}:
# Dev Build/Deploy
diff --git a/devops/scripts/jira_writeback.sh b/devops/scripts/jira_writeback.sh
deleted file mode 100755
index 1d605072..00000000
--- a/devops/scripts/jira_writeback.sh
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/bin/bash
-create_issue() {
- local title="$1"
- local project_key="$2"
- local issue_type="$3"
- local parent_issue_key="$4"
-
- AUTH=$(echo -ne "$JIRA_USERNAME:$JIRA_API_KEY" | base64 --wrap 0)
-
- local parent_issue=$(curl -s -H "Authorization: Basic $AUTH" \
- "$JIRA_SERVER/rest/api/3/issue/$parent_issue_key")
-
- local parent_fix_versions=$(echo $parent_issue | jq -r '.fields.fixVersions')
-
- local created_issue=$(curl -X POST -H "Content-Type: application/json" \
- -H "Authorization: Basic $AUTH" \
- -d '{
- "fields": {
- "summary": "'"$title"'",
- "project": {
- "key": "'"$project_key"'"
- },
- "issuetype": {
- "name": "'"$issue_type"'"
- },
- "parent": {
- "key": "'"$parent_issue_key"'"
- },
- "fixVersions": '"$parent_fix_versions"'
- }
- }' \
- "$JIRA_SERVER/rest/api/3/issue")
-
- local created_issue_id=$(echo $created_issue | jq -r '.id')
-
- curl -X PUT -H "Content-Type: application/json" \
- -H "Authorization: Basic $AUTH" \
- -d '{
- "fields": {
- "fixVersions": '"$parent_fix_versions"'
- }
- }' \
- "$JIRA_SERVER/rest/api/3/issue/$created_issue_id"
-}
-
-extract_uuid() {
- local url="$1"
- local uuid_regex='[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'
- if [[ "$url" =~ $uuid_regex ]]; then
- echo "${BASH_REMATCH}"
- else
- echo "No UUID found in the URL."
- fi
-}
-
-update_issue_status() {
- local issue_key="$1"
- local status_name="$2"
-
- AUTH=$(echo -ne "$JIRA_USERNAME:$JIRA_API_KEY" | base64 --wrap 0)
-
- local transitions=$(curl -s -H "Authorization: Basic $AUTH" \
- "$JIRA_SERVER/rest/api/3/issue/$issue_key/transitions")
-
- local transition_id=$(echo "$transitions" | jq -r --arg status_name "$status_name" '
- .transitions[] | select(.isAvailable == true and .to.name == $status_name) | .id
- ')
-
- if [ -z "$transition_id" ]; then
- echo "BadRequestError"
- exit 1
- else
- curl -X POST -H "Content-Type: application/json" \
- -H "Authorization: Basic $AUTH" \
- -d '{
- "transition": {
- "id": "'"$transition_id"'"
- }
- }' \
- "$JIRA_SERVER/rest/api/3/issue/$issue_key/transitions"
- fi
-}
-
-add_attachments() {
- AUTH=$(echo -ne "$JIRA_USERNAME:$JIRA_API_KEY" | base64 --wrap 0)
-
- local issue_key="$1"
- shift
- local attachments=("$@")
-
- echo $issue_key
- echo $attachments
-
- local form_data=""
- for attachment in "${attachments[@]}"; do
- form_data+="--form file=@$attachment "
- done
-
- echo $form_data
-
- echo $(curl -X POST $form_data \
- -H "X-Atlassian-Token: no-check" \
- -H "Authorization: Basic $AUTH" \
- "$JIRA_SERVER/rest/api/3/issue/$issue_key/attachments")
-}
-
-add_comment() {
- AUTH=$(echo -ne "$JIRA_USERNAME:$JIRA_API_KEY" | base64 --wrap 0)
- local issue_key="$1"
- shift
- local comment_items_input=("$@")
- local comment_json="[]"
-
- for item in "${comment_items_input[@]}"; do
- if [ -e "$item" ]; then
- # If it's a file path
- local attachment=$(add_attachments "$issue_key" "$item")
- local id=$(echo $attachment | grep -oP '"id":\s*"\K[^"]+')
-
- local attachment_content=$(curl -s -I -L -H "Authorization: Basic $AUTH" "$JIRA_SERVER/rest/api/3/attachment/content/$id" \
- | grep -i "Location:" | tail -1 | awk '{print $2}' | tr -d '\r')
- echo "$JIRA_SERVER/rest/api/3/attachment/content/$id"
- echo "$attachment_content"
-
- local uuid=$(extract_uuid "$attachment_content")
- echo "$uuid"
-
- json_object=$(jq -n --arg uuid "$uuid" '{ type: "mediaSingle", attrs: { layout: "align-start" }, content: [{ type: "media", attrs: { type: "file", id: $uuid, width: 200, height: 200, collection: "", alt: "" } }]}')
-
- comment_json=$(echo "$comment_json" | jq --argjson obj "$json_object" '. += [$obj]')
- else
- # If it's a string
- json_object=$(jq -n --arg text "$item" '{ type: "paragraph", content: [{ type: "text", text: $text }]}')
-
- comment_json=$(echo "$comment_json" | jq --argjson obj "$json_object" '. += [$obj]')
- fi
- done
-
- request=$(jq -n --argjson content "$comment_json" '{body: { type: "doc", version: 1, content: $content }}')
-
- curl -X POST -H "Content-Type: application/json" \
- -H "Authorization: Basic $AUTH" \
- -d "$request" \
- "$JIRA_SERVER/rest/api/3/issue/$issue_key/comment"
-}
-
-if [[ $# -gt 0 ]]; then # IF function call passed in
- "$@" # Call function
-fi
\ No newline at end of file
diff --git a/playwright-tests/business-logic/data/MockPolicyData.ts b/playwright-tests/business-logic/data/MockPolicyData.ts
index 06f2386e..213ca961 100644
--- a/playwright-tests/business-logic/data/MockPolicyData.ts
+++ b/playwright-tests/business-logic/data/MockPolicyData.ts
@@ -22,7 +22,10 @@ const policySoapByScenario: { [x: string]: string } = {
'0018a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2023-12-11T21:27:05Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2023-12-11T21:27:05Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>df38d1a8-f583-4ee6-a23d-950c1930c150 <_xml:PolicyInqRs> <_xml:RqUID>df38d1a8-f583-4ee6-a23d-950c1930c150 <_xml:TransactionResponseDt>2023-12-11T21:27:05Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2023-01-01 <_xml:Requestor id= \"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id= \"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id= \"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>F <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>GRS <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>CT <_xml:ContractTerm> <_xml:EffectiveDt>2022-12-21 <_xml:ExpirationDt>2099-12-21 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>998281163922817 <_xml:Location> <_xml:ItemIdInfo id= \"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>SBRU <_xml:Model>Outback <_xml:ModelYear>2021 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>CT <_xml:VehIdentificationNumber>4S4BTAFC7M3163249 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:RemarkText id= \"endorsementId_1\" IdRef= \"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ',
'0019a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-13T18:01:11Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-13T18:01:11Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>5da3e764-374a-41e0-9baf-9fe76bbc4a6e <_xml:PolicyInqRs> <_xml:RqUID>5da3e764-374a-41e0-9baf-9fe76bbc4a6e <_xml:TransactionResponseDt>2025-01-13T18:01:11Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2023-01-01 <_xml:Requestor id=\"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id=\"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id=\"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>GRS <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>NH <_xml:ContractTerm> <_xml:EffectiveDt>2022-12-21 <_xml:ExpirationDt>2099-12-21 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>998411168732470 <_xml:Location> <_xml:ItemIdInfo id=\"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>SBRU <_xml:Model>WRX <_xml:ModelYear>2021 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>NH <_xml:VehIdentificationNumber>JF1VA1A63M9801802 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:RemarkText id=\"endorsementId_1\" IdRef=\"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ',
'0020a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-13T18:01:11Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-13T18:01:11Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>5da3e764-374a-41e0-9baf-9fe76bbc4a6e <_xml:PolicyInqRs> <_xml:RqUID>5da3e764-374a-41e0-9baf-9fe76bbc4a6e <_xml:TransactionResponseDt>2025-01-13T18:01:11Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2023-01-01 <_xml:Requestor id=\"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id=\"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id=\"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>GRS <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>NH <_xml:ContractTerm> <_xml:EffectiveDt>2022-12-21 <_xml:ExpirationDt>2099-12-21 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>998411168732470 <_xml:Location> <_xml:ItemIdInfo id=\"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>SBRU <_xml:Model>WRX <_xml:ModelYear>2021 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>NH <_xml:VehIdentificationNumber>JF1VA1A63M9801802 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:RemarkText id=\"endorsementId_1\" IdRef=\"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ',
- '0021a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-03T14:13:58Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-03T14:13:58Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:PolicyInqRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:TransactionResponseDt>2025-01-03T14:13:58Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2017-02-06 <_xml:Requestor id=\"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id=\"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id=\"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>STD <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>CA <_xml:ContractTerm> <_xml:EffectiveDt>2023-11-01 <_xml:ExpirationDt>2099-11-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3861415357665 <_xml:Location> <_xml:ItemIdInfo id=\"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>HOND <_xml:Model>ACCORD <_xml:ModelYear>2016 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>CA <_xml:VehIdentificationNumber>1HGCR2F31GA195371 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:Coverage> <_xml:CoverageCd>GLSS <_xml:CoverageDesc>ACV <_xml:Deductible> <_xml:FormatCurrencyAmt> <_xml:Amt>500.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:RemarkText id=\"endorsementId_1\" IdRef=\"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE '
+ '0021a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-03T14:13:58Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-03T14:13:58Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:PolicyInqRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:TransactionResponseDt>2025-01-03T14:13:58Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2017-02-06 <_xml:Requestor id=\"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id=\"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id=\"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>STD <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>CA <_xml:ContractTerm> <_xml:EffectiveDt>2023-11-01 <_xml:ExpirationDt>2099-11-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3861415357665 <_xml:Location> <_xml:ItemIdInfo id=\"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>HOND <_xml:Model>ACCORD <_xml:ModelYear>2016 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>CA <_xml:VehIdentificationNumber>1HGCR2F31GA195371 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:Coverage> <_xml:CoverageCd>GLSS <_xml:CoverageDesc>ACV <_xml:Deductible> <_xml:FormatCurrencyAmt> <_xml:Amt>500.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:RemarkText id=\"endorsementId_1\" IdRef=\"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ',
+ '0022a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-03T14:13:58Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-03T14:13:58Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:PolicyInqRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:TransactionResponseDt>2025-01-03T14:13:58Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2017-02-06 <_xml:Requestor id=\"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id=\"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id=\"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>STD <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>CA <_xml:ContractTerm> <_xml:EffectiveDt>2023-11-01 <_xml:ExpirationDt>2099-11-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3861415357665 <_xml:Location> <_xml:ItemIdInfo id=\"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>HOND <_xml:Model>ACCORD <_xml:ModelYear>2016 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>CA <_xml:VehIdentificationNumber>1HGCR2F31GA195371 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:Coverage> <_xml:CoverageCd>GLSS <_xml:CoverageDesc>ACV <_xml:Deductible> <_xml:FormatCurrencyAmt> <_xml:Amt>500.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:RemarkText id=\"endorsementId_1\" IdRef=\"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ',
+ '0023a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-03T14:13:58Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-03T14:13:58Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:PolicyInqRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:TransactionResponseDt>2025-01-03T14:13:58Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2017-02-06 <_xml:Requestor id=\"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id=\"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id=\"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>STD <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>CA <_xml:ContractTerm> <_xml:EffectiveDt>2023-11-01 <_xml:ExpirationDt>2099-11-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3861415357665 <_xml:Location> <_xml:ItemIdInfo id=\"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>HOND <_xml:Model>ACCORD <_xml:ModelYear>2016 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>CA <_xml:VehIdentificationNumber>1HGCR2F31GA195371 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:Coverage> <_xml:CoverageCd>GLSS <_xml:CoverageDesc>ACV <_xml:Deductible> <_xml:FormatCurrencyAmt> <_xml:Amt>500.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:RemarkText id=\"endorsementId_1\" IdRef=\"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ',
+ '0024a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-03T14:13:58Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-03T14:13:58Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:PolicyInqRs> <_xml:RqUID>cda7f1a9-6a7c-4851-8c75-9eba3f721e26 <_xml:TransactionResponseDt>2025-01-03T14:13:58Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2017-02-06 <_xml:Requestor id=\"RequestorId_1\" /> <_xml:PartyInqInfo> <_xml:InsuredOrPrincipal id=\"InsuredOrPrincipalId_1\" /> <_xml:PolInfo> <_xml:PersAutoPolicy id=\"PersAutoPolicyID_1\"> <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications> <_xml:PhoneInfo> <_xml:PhoneTypeCd>Home <_xml:PhoneNumber>${phoneNumber} <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>STD <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>CA <_xml:ContractTerm> <_xml:EffectiveDt>2023-11-01 <_xml:ExpirationDt>2099-11-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3861415357665 <_xml:Location> <_xml:ItemIdInfo id=\"ItemIdInfoId_1\" /> <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:PersAutoLineBusiness> <_xml:LOBCd>AUTOP <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>1 <_xml:Manufacturer>HOND <_xml:Model>ACCORD <_xml:ModelYear>2016 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>CA <_xml:VehIdentificationNumber>1HGCR2F31GA195371 <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>000 <_xml:CoverageCd>parking_guard <_xml:Coverage> <_xml:CoverageCd>GLSS <_xml:CoverageDesc>ACV <_xml:Deductible> <_xml:FormatCurrencyAmt> <_xml:Amt>500.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:RemarkText id=\"endorsementId_1\" IdRef=\"PersAutoPolicyID_1\">000 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE '
}
const claimRegistrationValue = "{\"claimNumber\":\"058913992\",\"reportedDate\":\"2023-11-01T18:56:08.264Z\",\"howReported\":\"digital\",\"status\":\"registered\",\"lossCategory\":\"glassOnly\",\"lossCause\":\"glassOnly\",\"lossCauseDetail\":null,\"lossDate\":\"2023-11-01\",\"lossTime\":\"00:00\",\"lossDescription\":\"ROCK FROM ROAD - NO ONE AT FAULT\",\"lossLocation\":{\"primary\":true,\"line1\":null,\"line2\":null,\"city\":\"Columbus\",\"county\":null,\"state\":\"OR\",\"postalCode\":\"\",\"country\":\"US\",\"type\":null,\"locationName\":null,\"subType\":null},\"_links\":{\"reporter\":{\"id\":\"65429f485e8cd37072a5bb5d\",\"href\":\"claims/058913992/contacts/65429f485e8cd37072a5bb5d\",\"title\":\"BRANDON JOHNSON\"},\"primaryContact\":null,\"insureds\":[{\"id\":\"65429f485e8cd37072a5bb5d\",\"href\":\"claims/058913992/contacts/65429f485e8cd37072a5bb5d\",\"title\":\"BRANDON JOHNSON\"}],\"pedestrianCyclists\":[],\"contacts\":{\"id\":null,\"href\":\"claims/058913992/contacts\"},\"claimDamage\":{\"id\":null,\"href\":\"claims/058913992/claim-damage\"},\"vehicleIncidents\":[{\"id\":\"65429f4b31209b23b788c38e\",\"href\":\"claims/058913992/vehicle-incidents/65429f4b31209b23b788c38e\",\"vehicle\":\"BMW740\"}],\"propertyIncidents\":{\"dwelling\":null,\"otherStructure\":null,\"personalProperty\":null,\"livingExpense\":null},\"injuryIncidents\":[]}}";
diff --git a/playwright-tests/business-logic/types/ITestData.ts b/playwright-tests/business-logic/types/ITestData.ts
index dd6cb02d..d4ed42e2 100644
--- a/playwright-tests/business-logic/types/ITestData.ts
+++ b/playwright-tests/business-logic/types/ITestData.ts
@@ -10,6 +10,7 @@ export interface ITestData {
isPolicyFound: boolean, // Effective difference between advanced and essential
isUseVehicleOnPolicy: boolean, // Should we use the vehicle on the policy?
isVehicleLookupValidations: boolean, // Should we validate vehicle lookup?
+ isVehicleSelectBailout: boolean, // Should we bailout on vehicle lookup?
isNoComp: boolean, // Is this a NoComp policy?
isItac: boolean, // Is this an ITAC scenario?
hasStateLawPopup: boolean, // Are we expecting a state law pop-up on ProviderSelectionPage?
@@ -36,4 +37,5 @@ export interface ITestData {
isRecalWarning: boolean,
isSeparateApptsWarning: boolean, // IF true, check for the separate appts warning on VehicleDamagePage
isAuthenticationRequired: boolean
+ isMoldingQuestion: boolean,
}
\ No newline at end of file
diff --git a/playwright-tests/business-logic/types/ITestPages.ts b/playwright-tests/business-logic/types/ITestPages.ts
index 58729752..46da9d0a 100644
--- a/playwright-tests/business-logic/types/ITestPages.ts
+++ b/playwright-tests/business-logic/types/ITestPages.ts
@@ -5,6 +5,7 @@ import { ContactDetailsPage } from "../../pages/ContactDetailsPage";
import { CoverageStatementPage } from "../../pages/CoverageStatementPage";
import { DuplicateCheckPage } from "../../pages/DuplicateCheckPage";
import { EndorsementsPage } from "../../pages/EndorsementsPage";
+import { MoldingQuestionsPage } from "../../pages/MoldingQuestionsPage";
import { OrderConfirmationPage } from "../../pages/OrderConfirmationPage";
import { PartQuestionsPage } from "../../pages/PartQuestionsPage";
import { PaymentMethodPage } from "../../pages/PaymentMethodPage";
@@ -57,5 +58,6 @@ export default interface ITestPages {
vinLookupPage: VinLookupPage,
vehicleLookupAddressPage: VehicleLookupAddressPage,
vehicleLookupLicensePage: VehicleLookupLicensePage,
- welcomePage: WelcomePage
+ welcomePage: WelcomePage,
+ moldingQuestionsPage: MoldingQuestionsPage
}
\ No newline at end of file
diff --git a/playwright-tests/business-logic/types/TestCase.ts b/playwright-tests/business-logic/types/TestCase.ts
index 2561de4d..3378b4af 100644
--- a/playwright-tests/business-logic/types/TestCase.ts
+++ b/playwright-tests/business-logic/types/TestCase.ts
@@ -43,6 +43,7 @@ import CcisApiUtil from "@impl/api/CcisApiUtil";
import MockPolicyData from "@business-logic/data/MockPolicyData";
import VehiclePartQuestionsPage from "../../pages/VehiclePartsPage";
import CapabilityQuestionsPage from "../../pages/CapabilityQuestionsPage";
+import { MoldingQuestionsPage } from "../../pages/MoldingQuestionsPage";
export default class TestCase extends DisposableBase implements ITestCase {
public static FrameworkConfig: FrameworkConfig = {
@@ -136,7 +137,9 @@ export default class TestCase extends DisposableBase implements ITestCase {
if (testInfo.testCase)
if (!(testInfo.testCase.testData!.isMockTesting ?? false)) {
- await testInfo.testCase.disposeAll();
+ if (testInfo.testCase.testData?.isPolicyFound) {
+ await testInfo.testCase.disposeAll();
+ }
}
const seconds: string = String(testInfo.duration / 1000);
@@ -201,7 +204,8 @@ export default class TestCase extends DisposableBase implements ITestCase {
vinLookupPage: new VinLookupPage(page),
vehicleLookupAddressPage: new VehicleLookupAddressPage(page),
vehicleLookupLicensePage: new VehicleLookupLicensePage(page),
- welcomePage: new WelcomePage(page)
+ welcomePage: new WelcomePage(page),
+ moldingQuestionsPage: new MoldingQuestionsPage(page)
};
}
@@ -226,4 +230,4 @@ export default class TestCase extends DisposableBase implements ITestCase {
console.log("Delete 'Fake Claim Registration policy' status: " + crDeleteRes.status); //For debug use console.dir(crDeleteRes);
}
}
-}
\ No newline at end of file
+}
diff --git a/playwright-tests/impl/utils/ReportUtils.ts b/playwright-tests/impl/utils/ReportUtils.ts
index 078ebcaf..895c5643 100644
--- a/playwright-tests/impl/utils/ReportUtils.ts
+++ b/playwright-tests/impl/utils/ReportUtils.ts
@@ -61,6 +61,21 @@ export function consolidateJsonReport() {
}
function generateSummaryTable(existingIssues: { [key: string]: any[] }): string {
+ let totalCritical = 0;
+ let totalSerious = 0;
+ let totalModerate = 0;
+ let totalMinor = 0;
+ let totalTotal = 0;
+
+ Object.keys(existingIssues).forEach(pageName => {
+ const issues = existingIssues[pageName];
+ totalCritical += issues.filter(issue => issue.impact === 'critical').length;
+ totalSerious += issues.filter(issue => issue.impact === 'serious').length;
+ totalModerate += issues.filter(issue => issue.impact === 'moderate').length;
+ totalMinor += issues.filter(issue => issue.impact === 'minor').length;
+ totalTotal += issues.length;
+ });
+
return `
@@ -94,6 +109,16 @@ function generateSummaryTable(existingIssues: { [key: string]: any[] }): string
`;
}).join('')}
+
+
+ | Total |
+ ${totalCritical} |
+ ${totalSerious} |
+ ${totalModerate} |
+ ${totalMinor} |
+ ${totalTotal} |
+
+
`;
}
@@ -285,6 +310,9 @@ export function createAccessibilityHtmlReport() {
border: 1px solid #ddd;
text-align: left;
}
+ tfoot {
+ font-weight: bold;
+ }
`;
let reportContent = `
@@ -334,4 +362,4 @@ function isDuplicateIssue(existingIssues: any[], newIssue: any): boolean {
return existingIssues.some(issue => {
return issue.id === newIssue.id && issue.pageName === newIssue.pageName;
});
-}
\ No newline at end of file
+}
diff --git a/playwright-tests/pages/BasePage.ts b/playwright-tests/pages/BasePage.ts
index 21d8874a..711a80e6 100644
--- a/playwright-tests/pages/BasePage.ts
+++ b/playwright-tests/pages/BasePage.ts
@@ -34,7 +34,7 @@ export class BasePage {
//this causes the schedule page to fail
//await expect(this.buttonLoadSpin).toHaveCount(0, {timeout: 180000});
expect(currentUrl).not.toEqual(startingUrl);
- }).toPass({ timeout: 240_000 });
+ }).toPass({ timeout: 180_000 });
}
async validateURL(url: string) {
diff --git a/playwright-tests/pages/MoldingQuestionsPage.ts b/playwright-tests/pages/MoldingQuestionsPage.ts
new file mode 100644
index 00000000..ecb7fe7d
--- /dev/null
+++ b/playwright-tests/pages/MoldingQuestionsPage.ts
@@ -0,0 +1,18 @@
+import { expect, type Locator, type Page } from '@playwright/test';
+import { BasePage } from './BasePage';
+
+export class MoldingQuestionsPage extends BasePage {
+ readonly page: Page;
+ url = process.env['BASE_URL']! + '/?issPage=part-questions';
+ readonly yesButton: Locator;
+
+ constructor(page: Page) {
+ super(page);
+ this.page = page;
+ this.yesButton = page.locator('label').filter({ hasText: 'Yes' }).locator('div');
+ }
+
+ async answerYes() {
+ await this.yesButton.click();
+ }
+}
\ No newline at end of file
diff --git a/playwright-tests/pages/OrderConfirmationPage.ts b/playwright-tests/pages/OrderConfirmationPage.ts
index 0426a94e..6f0ed1dc 100644
--- a/playwright-tests/pages/OrderConfirmationPage.ts
+++ b/playwright-tests/pages/OrderConfirmationPage.ts
@@ -35,7 +35,7 @@ export class OrderConfirmationPage extends BasePage {
async validateOrderConfirmationPage(testData: Partial) {
// Destructure data we use
const { vehicleDetails, customerDetails, servicePackage, isItac,
- isNoComp, isPolicyFound, claimDetails, paymentDetails, isUseVehicleOnPolicy } = testData;
+ isNoComp, isPolicyFound, claimDetails, paymentDetails, isUseVehicleOnPolicy } = testData;
await this.serviceText.waitFor({ state: "visible" });
await this.logOrderNumber();
@@ -45,7 +45,7 @@ export class OrderConfirmationPage extends BasePage {
const emailTextValue = await this.emailText.textContent();
const servicePackageValue = await this.cartServicePackageText.textContent();
const amountDueValue = await this.amountDueText.textContent();
- const deductibleTextValue = (isItac || isNoComp)? null: await this.deductibleText.textContent();
+ const deductibleTextValue = (isItac || isNoComp) ? null : await this.deductibleText.textContent();
const subtotalTextValue = await this.subtotalText.textContent();
const finalAmountDueValue = await this.finalAmountDue.textContent();
@@ -59,7 +59,7 @@ export class OrderConfirmationPage extends BasePage {
// Service package validations
await expect.soft(this.cartServicePackageText).toContainText(`${servicePackage}`)
- if (servicePackage === ServicePackage.Premium || servicePackage === ServicePackage.Standard) {
+ if ((servicePackage === ServicePackage.Premium && testData.isReplace === true) || servicePackage === ServicePackage.Standard) {
expect.soft(servicePackageValue).toContain('New wiper blades');
}
if (servicePackage === ServicePackage.Premium) {
@@ -76,7 +76,7 @@ export class OrderConfirmationPage extends BasePage {
if (isPolicyFound && (isUseVehicleOnPolicy ?? true)) {
// Extract numbers
const amountDueAmt = Number.parseFloat(amountDueValue!.split('$')[1].replaceAll(',', ''));
- const deductibleAmt = deductibleTextValue? Number.parseFloat(deductibleTextValue.split('$')[1].replaceAll(',', '')): 0;
+ const deductibleAmt = deductibleTextValue ? Number.parseFloat(deductibleTextValue.split('$')[1].replaceAll(',', '')) : 0;
const subtotalAmt = Number.parseFloat(subtotalTextValue!.split('$')[1].replaceAll(',', ''));
subtotalTextValue?.replaceAll(',', '')
const finalAmountDueAmt = Number.parseFloat(finalAmountDueValue!.split('$')[1].replaceAll(',', ''));
diff --git a/playwright-tests/pages/ServiceLocationPage.ts b/playwright-tests/pages/ServiceLocationPage.ts
index 0d777587..4b855602 100644
--- a/playwright-tests/pages/ServiceLocationPage.ts
+++ b/playwright-tests/pages/ServiceLocationPage.ts
@@ -54,7 +54,8 @@ export class ServiceLocationPage extends BasePage {
// For in-shop and drop off
this.selectAShopOptions = this.page.locator('[class="shop-question"]');
- this.firstAppointmentButton = this.page.locator('div').filter({ hasText: /Appts/}).first();
+ // this.firstAppointmentButton = this.page.locator('div').filter({ hasText: /Appts/}).first();
+ this.firstAppointmentButton = this.page.locator('#availabilityIndicator').first();
this.changeZipButton = this.page.locator('[id="serviceZipLinkPromptId"]');
this.updateZipTextBox = this.page.getByRole('textbox', { name: 'Update your service ZIP code'});
this.saveZipButton = this.page.getByRole('button', { name: 'Save ZIP code' });
diff --git a/playwright-tests/pages/WelcomePage.ts b/playwright-tests/pages/WelcomePage.ts
index 80dcbadb..1a38f9b4 100644
--- a/playwright-tests/pages/WelcomePage.ts
+++ b/playwright-tests/pages/WelcomePage.ts
@@ -79,27 +79,5 @@ export class WelcomePage extends BasePage {
await this.city.fill(customerDetails.address.city);
await this.state.selectOption(customerDetails.address.state);
}
- await this.logReferralNumber();
- }
-
- async logReferralNumber() {
- let mainLocalStorage = JSON.parse(await this.page.evaluate('localStorage.getItem(\'main\')'));
- let referralNumber = mainLocalStorage.order.referralNumber as number;
- let referralSequenceNumber = mainLocalStorage.order.referralSequenceNumber as number;
- if (referralNumber == null) {
- for (let i = 1; i <= 20; i++) {
- if (!referralNumber == null) break;
- await this.page.waitForTimeout(500);
- mainLocalStorage = JSON.parse(await this.page.evaluate('localStorage.getItem(\'main\')'));
- referralNumber = mainLocalStorage.order.referralNumber as number;
- referralSequenceNumber = mainLocalStorage.order.referralSequenceNumber as number;
- }
- }
-
- await test.step(`Referral Number:${referralNumber} Referral Sequence Number:${referralSequenceNumber}`, async () => {
- console.log(`Referral Number:${referralNumber}`);
- console.log(`Referral Sequence Number:${referralSequenceNumber}`);
- });
-
}
}
\ No newline at end of file
diff --git a/playwright-tests/playwright.config.ts b/playwright-tests/playwright.config.ts
index bb5e6134..20bf301e 100644
--- a/playwright-tests/playwright.config.ts
+++ b/playwright-tests/playwright.config.ts
@@ -28,7 +28,7 @@ if (!process.env.CI) {
const reportConfig: OrtoniReportConfig = {
port: 1994,
open: "never",
- folderPath: "ortoni-report",
+ folderPath: "test-results",
filename: "index.html",
logo: "../business-logic/data/logo.png",
title: "Test Report",
@@ -39,8 +39,8 @@ const reportConfig: OrtoniReportConfig = {
base64Image: true,
};
-export const reportFilePath = path.resolve(__dirname, './test-results/accessibility-report.html');
-export const jsonReportFilePath = path.resolve(__dirname, './test-results/accessibility-report.json');
+export const reportFilePath = path.resolve(__dirname, './../test-results/accessibility-report.html');
+export const jsonReportFilePath = path.resolve(__dirname, './../test-results/accessibility-report.json');
export default defineConfig({
testDir: './tests',
@@ -55,10 +55,10 @@ export default defineConfig({
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: [
['ortoni-report', reportConfig],
- ['junit', {outputFile: '../test-results/junit_results.xml'}],
+ ['junit'],
['list']
],
- timeout: 240_000,
+ timeout: 120_000,
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
diff --git a/playwright-tests/tests/0000__M.test.ts b/playwright-tests/tests/0000__M.test.ts
index 70d6ee3d..11f110fe 100644
--- a/playwright-tests/tests/0000__M.test.ts
+++ b/playwright-tests/tests/0000__M.test.ts
@@ -49,7 +49,9 @@ import advancedScenario0009TestCases from "./advanced/0009a_NoDeductibleFlorida"
import advancedScenario0010TestCases from "./advanced/0010a_RearGlass";
import advancedScenario0021TestCases from "./advanced/0021a_VehicleByPlate";
import advancedScenario0022TestCases from "./advanced/0022a_VehicleByVIN";
+import advancedScenario0023TestCases from "./advanced/0023a_VehicleByVINPartsQns";
import { createAccessibilityHtmlReport } from "@impl/utils/ReportUtils";
+import advancedScenario0024TestCases from "./advanced/0024a_VehicleByVINUnverifiedBailout";
@@ -271,6 +273,16 @@ test.describe.parallel('ISS QA Automation Regression', () => {
for (const testCase of advancedScenario0022TestCases) {
test(...prepareTest(testCase, run, options, ruleEngine));
}
+
+ // Scenario 0023a
+ for (const testCase of advancedScenario0023TestCases) {
+ test(...prepareTest(testCase, run, options, ruleEngine));
+ }
+
+ // Scenario 0024a
+ for (const testCase of advancedScenario0024TestCases) {
+ test(...prepareTest(testCase, run, options, ruleEngine));
+ }
});
@@ -284,7 +296,9 @@ test.afterAll(() => {
async function run(page: Page, testInfo: TestInfo): Promise {
if (!(testInfo.testCase.testData?.isMockTesting ?? false)) {
- await testInfo.testCase.setup();
+ if (testInfo.testCase.testData?.isPolicyFound) {
+ await testInfo.testCase.setup();
+ }
}
testInfo.testCase.setupPages(page);
if (testInfo.testCase.testData.isAuthenticationRequired) {
@@ -314,7 +328,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
partQuestions, paymentDetails, isNoComp, isItac, isRecalNotification,
isRecalWarning, servicePackage, hasStateLawPopup, otherVehiclesOnPolicy,
isSeparateApptsWarning, vehiclePartQuestions, editVehicleDetails,
- hasMilitaryWarning, capabilityQuestions, isUseVehicleOnPolicy, isVehicleLookupValidations } = testCase.testData;
+ hasMilitaryWarning, capabilityQuestions, isUseVehicleOnPolicy, isVehicleLookupValidations, isMoldingQuestion } = testCase.testData;
let { isPolicyFound } = testCase.testData; // Allow isPolicyFound to be re-assigned
@@ -326,7 +340,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
endorsementsPage, vehicleLookupPage, partQuestionsPage, paymentMethodPage,
vehicleLookupAddressPage, vehicleLookupLicensePage, vinLookupPage,
bailoutPage, tpaSearchPage, tpaSubmitPage, tpaConfirmationPage,
- vehiclePartQuestionsPage, capabilityQuestionsPage } = testCase.pages;
+ vehiclePartQuestionsPage, capabilityQuestionsPage, moldingQuestionsPage } = testCase.pages;
// Destructure bailout flags
const { isVehicleSelectBailout, isDoNotSeeMyShopBailout, isTpaNotEnabledBailout,
@@ -475,12 +489,19 @@ async function runWorkflow(page: Page, testCase: TestCase) {
});
- if (isVehicleSelectBailout) {
- await test.step('BailoutPage >> Validate Bailout', async () => {
+ if (testCase.testData.isVehicleSelectBailout) {
+ await test.step('Lookup vehicle >> By VIN-' + vehicleDetails!.vin!, async () => {
await vinLookupPage.enterVin(vehicleDetails!.vin!);
+ });
+
+ await test.step('Click Invalid vin Link', async () => {
await vinLookupPage.triggerBailout();
+ });
+
+ await test.step('BailoutPage >> Validate Bailout-' + BailoutCode.VehicleNotFound, async () => {
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.VehicleNotFound);
});
+
return;
}
switch (vehicleDetails!.vehicleLookupType!) {
@@ -512,7 +533,15 @@ async function runWorkflow(page: Page, testCase: TestCase) {
break;
}
}
-
+ if (isMoldingQuestion) {
+ await test.step('Molding Questions Page >> Select Yes', async () => {
+ if (!moldingQuestionsPage) {
+ console.error("moldingQuestionsPage is not initialized");
+ }
+ await moldingQuestionsPage.answerYes();
+ await moldingQuestionsPage.nextPage();
+ });
+ }
if (capabilityQuestions && capabilityQuestions.length > 0) {
await capabilityQuestionsPage.validatePartQuestions(capabilityQuestions);
await capabilityQuestionsPage.selectPartQuestionResponses(capabilityQuestions);
@@ -666,4 +695,4 @@ async function runWorkflow(page: Page, testCase: TestCase) {
await test.step('OrderConfirmationPage >> Validate order', async () => {
await orderConfirmationPage.validateOrderConfirmationPage(testCase.testData);
});
-}
\ No newline at end of file
+}
diff --git a/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts b/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts
index 8f138abb..dc64aa11 100644
--- a/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts
+++ b/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts
@@ -70,7 +70,7 @@ for (const client of advancedClients) {
const data = { ...advancedScenario0001Data };
data.clientTag = client.clientTag;
const tc = new TestCase({
- name: `0001a Advanced Replace Deductible Client: "${client.accountName}"`,
+ name: `0001a_Advanced_Replace_Deductible_Client: "${client.accountName}"`,
tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced'],
testData: data
}, undefined, '0001a');
diff --git a/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts b/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts
index 16e587ac..192fbd8d 100644
--- a/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts
+++ b/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts
@@ -23,10 +23,10 @@ const customerDetails: ICustomerDetails = {
}
}
-const policyNumber = `~AutomatedScenario0021a${faker.string.uuid().substring(0, 6)}`;
-const policySoap = MockPolicyData.getPolicySoapByScenario('0021a', customerDetails, policyNumber);
+const policyNumber = `~AutomatedScenario0022a${faker.string.uuid().substring(0, 6)}`;
+const policySoap = MockPolicyData.getPolicySoapByScenario('0022a', customerDetails, policyNumber);
-const advancedScenario0021Data: Partial = {
+const advancedScenario0022Data: Partial = {
clientTag: '',
isDuplicateClaim: false,
isPolicyFound: true,
@@ -73,7 +73,7 @@ const advancedScenario0021Data: Partial = {
const advancedClients = ClientData.getAdvancedClients();
const advancedScenario0022TestCases: TestCase[] = [];
for (const client of advancedClients) {
- const data = { ...advancedScenario0021Data };
+ const data = { ...advancedScenario0022Data };
data.clientTag = client.clientTag;
const tc = new TestCase({
name: `0022a Advanced Client Vehicle By Vin: "${client.accountName}"`,
diff --git a/playwright-tests/tests/advanced/0023a_VehicleByVINPartsQns.ts b/playwright-tests/tests/advanced/0023a_VehicleByVINPartsQns.ts
new file mode 100644
index 00000000..9321fe38
--- /dev/null
+++ b/playwright-tests/tests/advanced/0023a_VehicleByVINPartsQns.ts
@@ -0,0 +1,84 @@
+import ClientData from "@business-logic/data/ClientData";
+import TestCase from "@business-logic/types/TestCase";
+import { DamageType, PartQuestionType, PaymentType, ServiceLocation, ServicePackage, VehicleDamage, VehicleLookupType } from "@business-logic/types/Enums";
+import { ITestData } from "@business-logic/types/ITestData"
+import { faker } from "@faker-js/faker";
+import { getNextWeekday } from "@impl/utils/DateUtils";
+import MockPolicyData from "@business-logic/data/MockPolicyData";
+import { ICustomerDetails } from "@business-logic/types/CustomerDetails";
+
+const nextWeekday = getNextWeekday();
+const customerDetails: ICustomerDetails = {
+ firstName: faker.person.firstName(),
+ lastName: faker.person.lastName(),
+ email: 'itqatest@safelite.com',
+ phoneNumber: '614-531-0031',
+ notes: 'Automated Test',
+ address: {
+ street: faker.location.streetAddress(),
+ city: 'San Jose',
+ state: 'CA',
+ postalCode: '97230-6373',
+ country: 'United States'
+ }
+}
+
+const policyNumber = `~AutomatedScenario0023a${faker.string.uuid().substring(0, 6)}`;
+const policySoap = MockPolicyData.getPolicySoapByScenario('0023a', customerDetails, policyNumber);
+
+const advancedScenario0023Data: Partial = {
+ clientTag: '',
+ isDuplicateClaim: false,
+ isPolicyFound: true,
+ isNoComp: false,
+ hasStateLawPopup: true,
+ endorsements: undefined,
+ isUseVehicleOnPolicy: false,
+ isVehicleLookupValidations: true,
+ isMoldingQuestion: true,
+ isSafelite: true,
+ servicePackage: faker.helpers.enumValue(ServicePackage),
+ customerDetails: customerDetails,
+ claimDetails: {
+ policyNumber: policyNumber,
+ policyDeductible: 500,
+ damageDate: '2017-06-02',
+ damageCause: DamageType.Vandalism
+ },
+ policySoap: policySoap,
+ vehicleDetails: {
+ year: '1999',
+ make: 'Buick',
+ model: 'LeSabre',
+ style: '4 door sedan',
+ vehicleLookupType: VehicleLookupType.Vin,
+ vin: '1G4HR52K2XH454648',
+ },
+ vehicleDamage: [
+ VehicleDamage.WindshieldCrack,
+ ],
+ appointmentDetails: {
+ serviceLocation: ServiceLocation.InShop,
+ shopAddress: undefined,
+ appointmentDate: nextWeekday
+ },
+ paymentDetails: {
+ paymentType: PaymentType.PayAtService
+ }
+}
+
+// TODO: Add validation for deductible/covered amount
+const advancedClients = ClientData.getAdvancedClients();
+const advancedScenario0023TestCases: TestCase[] = [];
+for (const client of advancedClients) {
+ const data = { ...advancedScenario0023Data };
+ data.clientTag = client.clientTag;
+ const tc = new TestCase({
+ name: `0023a Advanced client Unlisted Vehicle: "${client.accountName}"`,
+ tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced'],
+ testData: data
+ }, undefined, '0023a');
+ advancedScenario0023TestCases.push(tc);
+}
+
+export default advancedScenario0023TestCases;
\ No newline at end of file
diff --git a/playwright-tests/tests/advanced/0024a_VehicleByVINUnverifiedBailout.ts b/playwright-tests/tests/advanced/0024a_VehicleByVINUnverifiedBailout.ts
new file mode 100644
index 00000000..0307088b
--- /dev/null
+++ b/playwright-tests/tests/advanced/0024a_VehicleByVINUnverifiedBailout.ts
@@ -0,0 +1,83 @@
+import ClientData from "@business-logic/data/ClientData";
+import TestCase from "@business-logic/types/TestCase";
+import { DamageType, PartQuestionType, PaymentType, ServiceLocation, ServicePackage, VehicleDamage, VehicleLookupType } from "@business-logic/types/Enums";
+import { ITestData } from "@business-logic/types/ITestData"
+import { faker } from "@faker-js/faker";
+import { getNextWeekday } from "@impl/utils/DateUtils";
+import MockPolicyData from "@business-logic/data/MockPolicyData";
+import { ICustomerDetails } from "@business-logic/types/CustomerDetails";
+
+const nextWeekday = getNextWeekday();
+const customerDetails: ICustomerDetails = {
+ firstName: faker.person.firstName(),
+ lastName: faker.person.lastName(),
+ email: 'itqatest@safelite.com',
+ phoneNumber: '614-531-0031',
+ notes: 'Automated Test',
+ address: {
+ street: faker.location.streetAddress(),
+ city: 'Columbus',
+ state: 'OH',
+ postalCode: '43220',
+ country: 'United States'
+ }
+}
+
+const policyNumber = `~AutomatedScenario0024a${faker.string.uuid().substring(0, 6)}`;
+const policySoap = MockPolicyData.getPolicySoapByScenario('0024a', customerDetails, policyNumber);
+
+const advancedScenario0024Data: Partial = {
+ clientTag: '',
+ isDuplicateClaim: false,
+ isPolicyFound: false,
+ isNoComp: false,
+ hasStateLawPopup: false,
+ endorsements: undefined,
+ isUseVehicleOnPolicy: false,
+ isVehicleLookupValidations: false,
+ isVehicleSelectBailout: true,
+ isMoldingQuestion: true,
+ isSafelite: true,
+ servicePackage: faker.helpers.enumValue(ServicePackage),
+ customerDetails: customerDetails,
+ claimDetails: {
+ policyNumber: policyNumber,
+ policyDeductible: 0.00,
+ damageDate: '2017-06-02',
+ damageCause: DamageType.Vandalism
+ },
+ policySoap: policySoap,
+ vehicleDetails: {
+ year: '2015',
+ make: 'Honda',
+ model: 'Accord',
+ style: '4 door sedan',
+ vehicleLookupType: VehicleLookupType.Vin,
+ vin: '0HGCR2E30FA099831',
+ },
+ vehicleDamage: [
+ VehicleDamage.WindshieldCrack,
+ ],
+ appointmentDetails: {
+ serviceLocation: ServiceLocation.InShop,
+ shopAddress: undefined,
+ appointmentDate: nextWeekday
+ },
+
+}
+
+// TODO: Add validation for deductible/covered amount
+const advancedClients = ClientData.getAdvancedClients();
+const advancedScenario0024TestCases: TestCase[] = [];
+for (const client of advancedClients) {
+ const data = { ...advancedScenario0024Data };
+ data.clientTag = client.clientTag;
+ const tc = new TestCase({
+ name: `0024a Advanced client Unlisted Vehicle Bailout: "${client.accountName}"`,
+ tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced'],
+ testData: data
+ }, undefined, '0024a');
+ advancedScenario0024TestCases.push(tc);
+}
+
+export default advancedScenario0024TestCases;
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/analytics/api/v1/analytics/initialize.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/analytics/api/v1/analytics/initialize.json
new file mode 100644
index 00000000..2181b7de
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/analytics/api/v1/analytics/initialize.json
@@ -0,0 +1,10 @@
+{
+ "userKey": 2004417,
+ "sessionKey": 2419636,
+ "sessionId": "8967dbc4-5081-47c4-a896-03050353d9e2",
+ "userId": "2ea43842-440b-4362-a72f-105d987f4bc1",
+ "deviceId": "2ea43842-440b-4362-a72f-105d987f4bc1",
+ "version": 1,
+ "status": 1,
+ "error": null
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/final-deductible.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/final-deductible.json
new file mode 100644
index 00000000..fd5f376c
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/final-deductible.json
@@ -0,0 +1,18 @@
+{
+ "accountNumber": "550036",
+ "detailedErrorMessage": null,
+ "notes": null,
+ "hasPolicies": false,
+ "deductible": 250,
+ "status": null,
+ "noCoverage": false,
+ "isOEMEndorsed": false,
+ "policyData": "AMjHAgrjFS8H8IiDcI9sC8DUxbkV/fm1HmxAnMOiIuk1OKL4a5gpqx3O8DmtryfvwcsjA1vAsxalx4t73Fukx0axtCS1cX6NopWRnLnxTPvL3Mv3IcgESaBqcEeWtSol8CN2tly7xvRHPjdQUzXictkVxtlYssRRoPt5V/QtPyydEDbeoHY0F3gTd9/bhxuRCZ5zvO2/jXvVMB2zznBzYfa44+Ywhl9T9ip7VMlcHxox1Wce6kWOGSZTLtf8Zkg+5uft2JspYryrQkhn8/bC3amYRChdfzE8kGL3jh2x1cYgGg1Ooyh7UaWbc/zEFrlt",
+ "referralCorrelationId": "02601141-4f2a-4fc9-9b72-a01c49a2f3fd",
+ "referralNumber": null,
+ "isSuccess": true,
+ "isError": false,
+ "errorCode": null,
+ "errorMessage": null,
+ "successMessage": null
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/order/api/v1/order/save-session/iss.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/order/api/v1/order/save-session/iss.json
new file mode 100644
index 00000000..2287ef93
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/order/api/v1/order/save-session/iss.json
@@ -0,0 +1,18 @@
+{
+ "referralNumber": "120916",
+ "referralSequenceNumber": "10101599",
+ "referralDate": "2025-02-19T10:33:17.68",
+ "referralCorrelationId": "02601141-4f2a-4fc9-9b72-a01c49a2f3fd",
+ "parentAccountNumber": 550036,
+ "billToAccountNumber": "214616",
+ "crmCustomerId": 857222,
+ "savedSessionId": "9da64bae-c2a0-4ef6-8477-74f42965c369",
+ "eon": "S10097450",
+ "workOrderNumber": "",
+ "workOrderId": "",
+ "workOrderStatus": "",
+ "customerPortalLoginToken": "00000000-0000-0000-0000-000000000000",
+ "lockToken": null,
+ "settledTenderAmount": 0.0,
+ "isRecalAckOptIn": false
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/scenario1/coverage/api/v1/coverage/policy-information.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/policy-information.json
similarity index 50%
rename from playwright-tests/tests/mockResponses/scenario1/coverage/api/v1/coverage/policy-information.json
rename to playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/policy-information.json
index f9a85a92..f6a1cdbc 100644
--- a/playwright-tests/tests/mockResponses/scenario1/coverage/api/v1/coverage/policy-information.json
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/policy-information.json
@@ -5,18 +5,18 @@
"expirationDate": "0001-01-01T00:00:00",
"type": null,
"lineOfBusiness": null,
- "policyNumber": "AOA23102736040",
+ "policyNumber": "~AutomatedScenario0001a1db71b",
"status": null,
"source": null,
"insureds": [
{
- "firstName": "JOHN",
- "lastName": "SMITH",
+ "firstName": "Collin",
+ "lastName": "Collier",
"businessName": null,
- "address": "4372 SUNSHINE DR",
- "city": "MONTGOMERY",
- "state": "AL",
- "zipCode": "36116",
+ "address": "601 Grove Lane",
+ "city": "PORTLAND",
+ "state": "OR",
+ "zipCode": "97230",
"phones": null,
"email": null,
"driverLicenseState": null,
@@ -28,25 +28,33 @@
"vehicles": [
{
"id": 0,
- "vehicleYear": "2006",
- "vehicleMake": "SBRU",
- "vehicleModel": "FORESTER",
+ "vehicleYear": "2020",
+ "vehicleMake": "BMW",
+ "vehicleModel": "740",
"vehicleStyle": null,
"licensePlate": "UNKNOWN",
- "vin": "JF1SG63616B121212",
+ "vin": "WBA7T2C01LGL17632",
"driver": null,
"owner": null,
- "coverages": [],
+ "coverages": [
+ {
+ "code": "COMP",
+ "deductible": 250,
+ "individualLimit": 0,
+ "occurrenceLimit": 0,
+ "dayLimit": 0
+ }
+ ],
"fleetNumber": null,
"fleetUnitNumber": "1",
"endorsements": null
}
],
"taxExempt": "FALSE",
- "policyData": "G+r99boRzfUExiJdE0IYp5w1bhP8AZ31Qy+HnTxiQ8sf9paDgwprrcJJ8b8Sd3khpFBwgGwA0ZDgZmLNcmlOiSRchEvJfrZ47XoMTYq4cRsYjrMqvGVKl2ihGDY5brfMc11Hj6h/iJyDyUTAF4CgkDGhtRTHRcaDnjNQtC3G5Mge5LnZwF1HZs6AI4iFm43O6ZFC1fviI00LoQ1JAiXRcDBDng9OFTkeHoyAiVbxyaUqT07sEKl7jHKXJGYletP2r+yMKdMPoN2fo48quSvoQA=="
+ "policyData": "AMjHAgrjFS8H8IiDcI9sC8DUxbkV/fm1HmxAnMOiIuk1OKL4a5gpqx3O8DmtryfvwcsjA1vAsxalx4t73Fukx0axtCS1cX6NopWRnLnxTPvL3Mv3IcgESaBqcEeWtSol8CN2tly7xvRHPjdQUzXictkVxtlYssRRoPt5V/QtPyydEDbeoHY0F3gTd9/bhxuRCZ5zvO2/jXvVMB2zznBzYfa44+Ywhl9T9ip7VMlcHxox1Wce6kWOGSZTLtf8Zkg+5uft2JspYryrQkhn8/bC3amYRChdfzE8kGL3jh2x1cYgGg1Ooyh7UaWbc/zEFrlt"
}
],
- "referralCorrelationId": "6a4e2176-b877-481a-ab13-01653ee4f224",
+ "referralCorrelationId": "02601141-4f2a-4fc9-9b72-a01c49a2f3fd",
"referralNumber": null,
"accountNumber": "550036",
"isSuccess": true,
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/register-claim.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/register-claim.json
new file mode 100644
index 00000000..3381cdb6
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/coverage/api/v1/coverage/register-claim.json
@@ -0,0 +1,15 @@
+{
+ "claimantId": null,
+ "claimNumber": "0589139920001",
+ "notes": null,
+ "dispatchNumber": null,
+ "deductible": 0,
+ "referralCorrelationId": "02601141-4f2a-4fc9-9b72-a01c49a2f3fd",
+ "referralNumber": null,
+ "accountNumber": "550036",
+ "isSuccess": true,
+ "isError": false,
+ "errorCode": null,
+ "errorMessage": null,
+ "successMessage": "registered"
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/experiments/api/v1/experiments/run.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/experiments/api/v1/experiments/run.json
new file mode 100644
index 00000000..38a3b7f8
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/experiments/api/v1/experiments/run.json
@@ -0,0 +1,19 @@
+{
+ "experiments": [
+ {
+ "universeName": "PIAInsurance",
+ "universeId": 640,
+ "testName": "PIAInsurance_V1",
+ "testId": 504,
+ "variationName": "YesShowPIAInsurance_TEST",
+ "variationId": 1430,
+ "isActive": true,
+ "isExposed": true,
+ "userPartitionNumber": 12,
+ "assignmentId": 14863748,
+ "settings": {
+ "DisplayPIAInsurance": "true"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/alert-reasons/01824.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/alert-reasons/01824.json
new file mode 100644
index 00000000..0637a088
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/alert-reasons/01824.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/75023/Replace/100/550036/true/CR00056707/DW01571GTNNOEM.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/75023/Replace/100/550036/true/CR00056707/DW01571GTNNOEM.json
new file mode 100644
index 00000000..8100d93b
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/75023/Replace/100/550036/true/CR00056707/DW01571GTNNOEM.json
@@ -0,0 +1,149 @@
+{
+ "mobileProviderNumber": "001813",
+ "shopProviders": [
+ {
+ "address": {
+ "city": "PLANO",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "1601 E PLANO PKWY",
+ "streetAddress2": "STE 150",
+ "zipCode": "75074",
+ "zipCodeCtu": "01813"
+ },
+ "distanceInMiles": 4.187648412874978,
+ "providerNumber": "001813",
+ "companyName": "SAFELITE AUTOGLASS - DALLAS-FT.WO,TX SOR-CTU",
+ "phoneNumber": "9724237183",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "MCKINNEY",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "417 POWER HOUSE ST.",
+ "streetAddress2": "STE A",
+ "zipCode": "75071",
+ "zipCodeCtu": "01813"
+ },
+ "distanceInMiles": 13.220085913669747,
+ "providerNumber": "005318",
+ "companyName": "SAFELITE AUTOGLASS - MCKINNEY, TX",
+ "phoneNumber": "9725624492",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "LEWISVILLE",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "2129 S STEMMONS FWY",
+ "streetAddress2": "",
+ "zipCode": "75067",
+ "zipCodeCtu": "01813"
+ },
+ "distanceInMiles": 14.553951205638858,
+ "providerNumber": "004542",
+ "companyName": "SAFELITE AUTOGLASS - LEWISVILLE, TX",
+ "phoneNumber": "4694442057",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "MESQUITE",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "2131 N TOWN EAST BLVD",
+ "streetAddress2": "",
+ "zipCode": "75150",
+ "zipCodeCtu": "01813"
+ },
+ "distanceInMiles": 17.86005691117364,
+ "providerNumber": "004541",
+ "companyName": "SAFELITE AUTOGLASS - MESQUITE, TX",
+ "phoneNumber": "9722889891",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "N RICHLAND HILLS",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "5649 RUFE SNOW DR",
+ "streetAddress2": "",
+ "zipCode": "76180",
+ "zipCodeCtu": "04544"
+ },
+ "distanceInMiles": 32.558897054726366,
+ "providerNumber": "006504",
+ "companyName": "SAFELITE AUTOGLASS - FORT WORTH, TX RDU",
+ "phoneNumber": "8176569791",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "ARLINGTON",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "2411 S COOPER ST",
+ "streetAddress2": "",
+ "zipCode": "76015",
+ "zipCodeCtu": "04544"
+ },
+ "distanceInMiles": 33.065576901075474,
+ "providerNumber": "004540",
+ "companyName": "SAFELITE AUTOGLASS - ARLINGTON, TX",
+ "phoneNumber": "8175224300",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "GREENVILLE",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "7907 TRADERS CIR",
+ "streetAddress2": "",
+ "zipCode": "75402",
+ "zipCodeCtu": "01813"
+ },
+ "distanceInMiles": 36.369381330667089,
+ "providerNumber": "005317",
+ "companyName": "SAFELITE AUTOGLASS - GREENVILLE, TX",
+ "phoneNumber": "9034501771",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "FORT WORTH",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "2751 NORTHERN CROSS BLVD",
+ "streetAddress2": "",
+ "zipCode": "76137",
+ "zipCodeCtu": "04544"
+ },
+ "distanceInMiles": 36.676844951002508,
+ "providerNumber": "004544",
+ "companyName": "SAFELITE AUTOGLASS - FORT WORTH, TX",
+ "phoneNumber": "2143283111",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "TYLER",
+ "country": "US",
+ "state": "TX",
+ "streetAddress": "4043 S BROADWAY AVE",
+ "streetAddress2": "",
+ "zipCode": "75701",
+ "zipCodeCtu": "01813"
+ },
+ "distanceInMiles": 98.1186957553462,
+ "providerNumber": "000714",
+ "companyName": "SAFELITE AUTOGLASS - TYLER, TX",
+ "phoneNumber": "9035972059",
+ "isSafeliteShop": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/97230/Replace/100/550036/true/CR00069811/97230.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/97230/Replace/100/550036/true/CR00069811/97230.json
new file mode 100644
index 00000000..059f3391
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/97230/Replace/100/550036/true/CR00069811/97230.json
@@ -0,0 +1,14 @@
+[
+ {
+ "partNumber": "SBB19",
+ "description": "SAFELITE BEAM BLADE 19",
+ "partType": "FRONT WIPER",
+ "isInsurable": null
+ },
+ {
+ "partNumber": "SBB26",
+ "description": "SAFELITE BEAM BLADE 26",
+ "partType": "FRONT WIPER",
+ "isInsurable": null
+ }
+]
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/97230/Replace/100/550036/true/CR00069811/FW05419GTYN.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/97230/Replace/100/550036/true/CR00069811/FW05419GTYN.json
new file mode 100644
index 00000000..a87dd6de
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/providers/97230/Replace/100/550036/true/CR00069811/FW05419GTYN.json
@@ -0,0 +1,85 @@
+{
+ "mobileProviderNumber": "001824",
+ "shopProviders": [
+ {
+ "address": {
+ "city": "Portland",
+ "country": "US",
+ "state": "OR",
+ "streetAddress": "5119 NE 158th Ave",
+ "streetAddress2": "",
+ "zipCode": "97230",
+ "zipCodeCtu": "01824"
+ },
+ "distanceInMiles": 1.2090846804646957,
+ "providerNumber": "001824",
+ "companyName": "SAFELITE AUTOGLASS - PORTLAND, OR WSR-CTU",
+ "phoneNumber": "5032260323",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "Clackamas",
+ "country": "US",
+ "state": "OR",
+ "streetAddress": "11231 SE Highway 212",
+ "streetAddress2": "",
+ "zipCode": "97015",
+ "zipCodeCtu": "01824"
+ },
+ "distanceInMiles": 9.5642605222286665,
+ "providerNumber": "003875",
+ "companyName": "SAFELITE AUTOGLASS - CLACKAMAS, OR",
+ "phoneNumber": "5037626330",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "Beaverton",
+ "country": "US",
+ "state": "OR",
+ "streetAddress": "13227 SW Canyon Rd",
+ "streetAddress2": "STE F",
+ "zipCode": "97005",
+ "zipCodeCtu": "01824"
+ },
+ "distanceInMiles": 15.594098490720718,
+ "providerNumber": "004762",
+ "companyName": "SAFELITE AUTOGLASS - BEAVERTON, OR",
+ "phoneNumber": "5036436601",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "Tualatin",
+ "country": "US",
+ "state": "OR",
+ "streetAddress": "9606 SW Tualatin-Sherwood Rd",
+ "streetAddress2": "",
+ "zipCode": "97062",
+ "zipCodeCtu": "01824"
+ },
+ "distanceInMiles": 17.548518168792196,
+ "providerNumber": "005919",
+ "companyName": "SAFELITE AUTOGLASS - TUALATIN, OR",
+ "phoneNumber": "5032822420",
+ "isSafeliteShop": true
+ },
+ {
+ "address": {
+ "city": "Keizer",
+ "country": "US",
+ "state": "OR",
+ "streetAddress": "4229 River Rd N",
+ "streetAddress2": "STE 150",
+ "zipCode": "97303",
+ "zipCodeCtu": "01824"
+ },
+ "distanceInMiles": 46.16399084140199,
+ "providerNumber": "004277",
+ "companyName": "SAFELITE AUTOGLASS - SALEM - KEIZER, OR",
+ "phoneNumber": "5033903030",
+ "isSafeliteShop": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/zip/97230.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/zip/97230.json
new file mode 100644
index 00000000..d1deb629
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/location/api/v1/location/zip/97230.json
@@ -0,0 +1,8 @@
+{
+ "containsMilitaryBase": false,
+ "isServiceable": true,
+ "isValid": true,
+ "state": "OR",
+ "providerNumber": "01824",
+ "zipCodeCtu": "01824"
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/damage-options/CR00069811.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/damage-options/CR00069811.json
new file mode 100644
index 00000000..9580a7e9
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/damage-options/CR00069811.json
@@ -0,0 +1,27 @@
+{
+ "windshieldOptions": {
+ "availableReplacementOptions": [
+ "Single"
+ ],
+ "isRepairAvailable": true
+ },
+ "backGlassOptions": {
+ "availableReplacementOptions": [
+ "Stationary"
+ ]
+ },
+ "driverSideOptions": {
+ "availableReplacementOptions": [
+ "Vent",
+ "Back",
+ "Front"
+ ]
+ },
+ "passengerSideOptions": {
+ "availableReplacementOptions": [
+ "Vent",
+ "Back",
+ "Front"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/damage-options/parts-or-questions.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/damage-options/parts-or-questions.json
new file mode 100644
index 00000000..d51a4e84
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/damage-options/parts-or-questions.json
@@ -0,0 +1,33 @@
+{
+ "partsOrQuestions": [
+ {
+ "glassPiece": {
+ "name": "Single",
+ "location": "Windshield"
+ },
+ "parts": [
+ {
+ "childPartQuestions": [],
+ "basePartNumber": "FW05419",
+ "safelitePartNumber": "FW05419 GTY",
+ "color": "Green Tint",
+ "requiresRecalibration": true,
+ "recalibrationType": "DYNAMIC",
+ "canSafeliteRecalibrate": true,
+ "requiresCapabilityQuestions": false,
+ "childParts": [
+ {
+ "partNumber": "RS 101 PAD",
+ "safelitePartNumber": "RS 101 PAD"
+ }
+ ],
+ "partNumber": "FW05419GTYN",
+ "description": "rain sensor, solar, soundproofing, lane departure warning system, forward collision alert w",
+ "partType": "WINDSHIELD",
+ "isInsurable": null
+ }
+ ],
+ "partQuestions": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/parts-or-questions.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/parts-or-questions.json
new file mode 100644
index 00000000..85badbb7
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/parts-or-questions.json
@@ -0,0 +1,32 @@
+{
+ "partsOrQuestions": [
+ {
+ "glassPiece": {
+ "name": "Single",
+ "location": "Windshield"
+ },
+ "parts": [
+ {
+ "childPartQuestions": [],
+ "basePartNumber": "DW01571",
+ "safelitePartNumber": "DW01571 GTNOEM",
+ "color": "Green Tint",
+ "requiresRecalibration": false,
+ "recalibrationType": null,
+ "canSafeliteRecalibrate": false,
+ "requiresCapabilityQuestions": false,
+ "childParts": [
+ {
+ "partNumber": "GGG 1571",
+ "safelitePartNumber": "GGG 1571"
+ }
+ ],
+ "partNumber": "DW01571GTNNOEM",
+ "description": "",
+ "partType": "WINDSHIELD"
+ }
+ ],
+ "partQuestions": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/rain-defense.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/rain-defense.json
new file mode 100644
index 00000000..08a9ec4d
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/rain-defense.json
@@ -0,0 +1,6 @@
+{
+ "partNumber": "RAIN REPEL",
+ "description": null,
+ "partType": "RAIN DEFENSE",
+ "isInsurable": null
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/recal-parts/CR00069811/FW05419GTYN/DYNAMIC/550036/97230/ISS/10101599.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/recal-parts/CR00069811/FW05419GTYN/DYNAMIC/550036/97230/ISS/10101599.json
new file mode 100644
index 00000000..4e66189a
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/recal-parts/CR00069811/FW05419GTYN/DYNAMIC/550036/97230/ISS/10101599.json
@@ -0,0 +1,20 @@
+{
+ "requiredProviderServices": [
+ "ADAS Dynamic Calibration"
+ ],
+ "canProviderRecalibrate": true,
+ "allowMobileSchedule": true,
+ "recalibrationParts": [
+ {
+ "partNumber": "RECAL DYNAMIC",
+ "description": "Adas Dynamic Recal Serv",
+ "recalibrationType": "DYNAMIC",
+ "ribCode": "RL",
+ "safelitePartNumber": "RECAL DYNAMIC",
+ "status": "ACTIVE",
+ "partType": "ADAS RECALIBRATION",
+ "childParts": [],
+ "recalibrationFees": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/recal-parts/CR00069811/FW05419GTYN/DYNAMIC/550036/97230/ISS/1816993.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/recal-parts/CR00069811/FW05419GTYN/DYNAMIC/550036/97230/ISS/1816993.json
new file mode 100644
index 00000000..4e66189a
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/recal-parts/CR00069811/FW05419GTYN/DYNAMIC/550036/97230/ISS/1816993.json
@@ -0,0 +1,20 @@
+{
+ "requiredProviderServices": [
+ "ADAS Dynamic Calibration"
+ ],
+ "canProviderRecalibrate": true,
+ "allowMobileSchedule": true,
+ "recalibrationParts": [
+ {
+ "partNumber": "RECAL DYNAMIC",
+ "description": "Adas Dynamic Recal Serv",
+ "recalibrationType": "DYNAMIC",
+ "ribCode": "RL",
+ "safelitePartNumber": "RECAL DYNAMIC",
+ "status": "ACTIVE",
+ "partType": "ADAS RECALIBRATION",
+ "childParts": [],
+ "recalibrationFees": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/wipers/CR00069811/75023.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/wipers/CR00069811/75023.json
new file mode 100644
index 00000000..6563794b
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/parts/api/v1/parts/wipers/CR00069811/75023.json
@@ -0,0 +1,12 @@
+[
+ {
+ "partNumber": "SBB22",
+ "description": "SAFELITE BEAM BLADE 22",
+ "partType": "FRONT WIPER"
+ },
+ {
+ "partNumber": "SBB22",
+ "description": "SAFELITE BEAM BLADE 22",
+ "partType": "FRONT WIPER"
+ }
+]
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/combined-quote.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/combined-quote.json
new file mode 100644
index 00000000..91ddce12
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/combined-quote.json
@@ -0,0 +1,29 @@
+{
+ "lineItems": [
+ {
+ "partNumber": "RAIN REPEL",
+ "promoCode": null,
+ "laborAmount": 0.0,
+ "sellingPrice": 44.99,
+ "kitPrice": 0,
+ "salesTax": null
+ },
+ {
+ "partNumber": "SBB19",
+ "promoCode": null,
+ "laborAmount": 0.0,
+ "sellingPrice": 34.99,
+ "kitPrice": 0,
+ "salesTax": null
+ },
+ {
+ "partNumber": "SBB26",
+ "promoCode": null,
+ "laborAmount": 0.0,
+ "sellingPrice": 34.99,
+ "kitPrice": 0,
+ "salesTax": null
+ }
+ ],
+ "serverData": "ZtCNOF1tCLQBAx2NRKHE/n/fqD8zUxRfYtDuTu7uUiPpeg7i6TmwXwggssX5KsXVenWi0X3mFSjdoyYq79ysxeknuFO2bNoXU8e+wTG2Qmoi4Hoby6pVzuJPTnJzIg75TMZI1cF/FRSffgKLp/Z3HXVAzL1MgvCVZLQgK7x5ILVuBrK6wGFgjfBdEp8qUG/9YKSsJMGYtsuEcJmg8WsxSa1AicmAXj9cXPROcJSocxXp8CDVa3AAqC3mKsD+Hk3uF3EPZ4peVDjGOochxKiN/DnJq1EuJrq/9dqAVnZBc83+j6tKXuYCqtSPciqH+yjOs+p+Qymg51/21cwgK4hWtSNwalc2rSB7xhFqwlK365tO7XmU+KeSdfoKa6co+EjJopr2e/NMb2Edd8bOp88llYtkIHL/HKfxqW8SFHAwazh1PqFd5R9MCC2jCDqaoEVd9awrYlLuvtGSW8WRRAGtLiIiuEhq4/bpfRaYLU2noFk="
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/order-items-with-itac-pricing.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/order-items-with-itac-pricing.json
new file mode 100644
index 00000000..33c9200d
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/order-items-with-itac-pricing.json
@@ -0,0 +1,8 @@
+{
+ "isItac": false,
+ "isItacOptimized": null,
+ "primaryBillToNumber": null,
+ "partsWerePriced": true,
+ "lineItems": [],
+ "serverData": "KcYkmhhx3j2jfrKcPIai5c3vxIPezYw3algekZCIJ1nRzZHsoYWmD//QlA9cNAqo7E4vA4lcilhi/EbXZ5BfIlUjQng0T1GMzltEwIcGbNw="
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/taxed-order-items b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/taxed-order-items
new file mode 100644
index 00000000..6b04b08c
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/price/api/v1/price/taxed-order-items
@@ -0,0 +1,29 @@
+{
+ "taxedLineItems": [
+ {
+ "partNumber": "SBB22",
+ "promoCode": null,
+ "laborAmount": 0,
+ "sellingPrice": 34.99,
+ "kitPrice": 0,
+ "salesTax": 2.89
+ },
+ {
+ "partNumber": "SBB22",
+ "promoCode": null,
+ "laborAmount": 0,
+ "sellingPrice": 34.99,
+ "kitPrice": 0,
+ "salesTax": 2.89
+ },
+ {
+ "partNumber": "RAIN REPEL",
+ "promoCode": null,
+ "laborAmount": 0,
+ "sellingPrice": 44.99,
+ "kitPrice": 0,
+ "salesTax": 3.71
+ }
+ ],
+ "serverData": "KcYkmhhx3j2jfrKcPIai5c3vxIPezYw3algekZCIJ1nRzZHsoYWmD//QlA9cNAqo7E4vA4lcilhi/EbXZ5BfIvc9C7c7sl9TGGbrA2A3QUiVi9Q+eQQWUrGSlb5Te3PyfK8g5A+gvcXvn+YSjH0tie6XYRgOnhi6ArHjHJ3GTgCmWIhMUosEpnBrUg3/W5ci/3UF4sCnDpihiJPPiMCnOMjzvWp1/xTg5jaoE8N8otARbxQ73ObbvZCJndil/EaSbqYMvL+ymPvDJHPoAfbXUJc90Drlef4gvSV1d6HEZGR/zwoKYipecNPSXcXzRGKrfxgmViszg1d1PyncoyVQrokAIl1KPRmDPJso5CmGrdDjEYsTV0SXUd0NcphMKd8wVrx7QUCLiyW8Vee7cVjWFnqdhkeJ9PYb14WoNb4j1cLJv39ofMcTmaJMI/maAcA8XKPOuhdWTTqWBXOPq3ax1g=="
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/schedule/api/v1/schedule/shop-time-slots.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/schedule/api/v1/schedule/shop-time-slots.json
new file mode 100644
index 00000000..8aa48663
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/schedule/api/v1/schedule/shop-time-slots.json
@@ -0,0 +1,1304 @@
+{
+ "estimatedServiceMinutesMinimum": 120,
+ "estimatedServiceMinutesMaximum": 180,
+ "days": [
+ {
+ "date": "2025-02-25",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20876*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20876*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-02-26",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20877*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20877*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-02-27",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20878*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20878*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-02-28",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20879*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20879*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-01",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20880*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20880*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-03",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20882*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20882*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-04",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20883*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20883*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-05",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20884*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20884*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-06",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20885*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20885*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-07",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20886*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20886*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-08",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20887*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20887*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-10",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20889*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20889*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-11",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20890*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20890*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-12",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20891*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20891*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-13",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20892*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20892*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-14",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20893*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20893*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ },
+ {
+ "date": "2025-03-15",
+ "timeSlots": [
+ {
+ "id": "01824-01824-S-B*20894*8 AM",
+ "startTime": "08:00",
+ "endTime": "09:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*830 AM",
+ "startTime": "08:30",
+ "endTime": "10:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*9 AM",
+ "startTime": "09:00",
+ "endTime": "10:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*930 AM",
+ "startTime": "09:30",
+ "endTime": "11:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*10 AM",
+ "startTime": "10:00",
+ "endTime": "11:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*1030 AM",
+ "startTime": "10:30",
+ "endTime": "12:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*1 PM",
+ "startTime": "13:00",
+ "endTime": "14:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*130 PM",
+ "startTime": "13:30",
+ "endTime": "15:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*2 PM",
+ "startTime": "14:00",
+ "endTime": "15:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*230 PM",
+ "startTime": "14:30",
+ "endTime": "16:00",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*3 PM",
+ "startTime": "15:00",
+ "endTime": "16:30",
+ "offerPremium": false
+ },
+ {
+ "id": "01824-01824-S-B*20894*330 PM",
+ "startTime": "15:30",
+ "endTime": "17:00",
+ "offerPremium": false
+ }
+ ]
+ }
+ ],
+ "provisionalTriggers": []
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/vehicle/api/v1/vehicle/lookup.json b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/vehicle/api/v1/vehicle/lookup.json
new file mode 100644
index 00000000..3be2ff09
--- /dev/null
+++ b/playwright-tests/tests/mockResponses/0001a_Advanced_Replace_Deductible_Client/vehicle/api/v1/vehicle/lookup.json
@@ -0,0 +1,16 @@
+{
+ "carId": "CR00069811",
+ "category": "CAR",
+ "year": 2020,
+ "make": "BMW",
+ "model": "740",
+ "style": "4 door sedan",
+ "imageUrl": "https://dbhdyzvm8lm25.cloudfront.net/color_0320_032/MY2020/13736/13736_cc0320_032_300.jpg",
+ "imageVifNumber": "13736",
+ "imageVifColor": "white",
+ "canSafeliteService": true,
+ "recalibrationServices": [
+ "DYNAMIC"
+ ],
+ "isMobileStaticRecalibrationApplicable": false
+}
\ No newline at end of file
diff --git a/playwright-tests/tests/mockResponses/mockResponsesConfig.json b/playwright-tests/tests/mockResponses/mockResponsesConfig.json
index e37d452f..b0dc208d 100644
--- a/playwright-tests/tests/mockResponses/mockResponsesConfig.json
+++ b/playwright-tests/tests/mockResponses/mockResponsesConfig.json
@@ -2,7 +2,7 @@
"common": {
"experiments/api/v1/experiments/run": "common/experiments/api/v1/experiments/run.json"
},
- "scenario1": {
+ "0001a_Advanced_Replace_Deductible_Client": {
"coverage/api/v1/coverage/policy-information": "scenario1/coverage/api/v1/coverage/policy-information.json"
},
"0002a_Advanced_Replace_Deductible_Client": {
diff --git a/playwright-tests/tests/mockResponses/scenario2/coverage/api/vi/coverage/policy-information.json b/playwright-tests/tests/mockResponses/scenario2/coverage/api/vi/coverage/policy-information.json
deleted file mode 100644
index bd541df0..00000000
--- a/playwright-tests/tests/mockResponses/scenario2/coverage/api/vi/coverage/policy-information.json
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- "policies": [
- {
- "policyEffectiveDate": "0001-01-01T00:00:00",
- "expirationDate": "0001-01-01T00:00:00",
- "type": null,
- "lineOfBusiness": null,
- "policyNumber": "~550036ENDRSOEM",
- "status": null,
- "source": null,
- "insureds": [
- {
- "firstName": "LERNO",
- "lastName": "REEB",
- "businessName": null,
- "address": "2817 BENGAL LN",
- "city": "PLANO",
- "state": "TX",
- "zipCode": "75023",
- "phones": null,
- "email": null,
- "driverLicenseState": null,
- "relationToInsured": null,
- "companyCode": "LIBERTY",
- "customerId": null
- },
- {
- "firstName": "ISAAC",
- "lastName": "ASIMOV",
- "businessName": null,
- "address": "2817 BENGAL LN",
- "city": "PLANO",
- "state": "TX",
- "zipCode": "75023",
- "phones": null,
- "email": null,
- "driverLicenseState": null,
- "relationToInsured": null,
- "companyCode": "LIBERTY",
- "customerId": null
- }
- ],
- "vehicles": [
- {
- "id": 0,
- "vehicleYear": "2006",
- "vehicleMake": "CHRY",
- "vehicleModel": "300",
- "vehicleStyle": null,
- "licensePlate": "UNKNOWN",
- "vin": "2C3KA53G06H407823",
- "driver": null,
- "owner": null,
- "coverages": [
- {
- "code": "COMP",
- "deductible": 50,
- "individualLimit": 0,
- "occurrenceLimit": 0,
- "dayLimit": 0
- }
- ],
- "fleetNumber": null,
- "fleetUnitNumber": "1",
- "endorsements": [
- "OEM Approved"
- ]
- }
- ],
- "taxExempt": "FALSE",
- "policyData": "G+r99boRzfUExiJdE0IYp/EeRyybEAPInOh4NEX8UesSGLZvquPGXqn9HRn/4zge7aj+HhRN6CkN21JKCMqw4cPrSHhJzQpb83TQMsj71r2fmpx7/2mxZskTaSu0UG48ye+7qQki7a3xTkE9V3aw8+xFLhEm3P6gkExFSRefeCBPH3+n//ypF0ZsawSni4wPyzpZ5KOSyTX4kDPPJUS3Ry2drjHpT/oDKm6Iro0WBaqj8mf7758UlaW1OsxO3JHZc2fi2+vnYB+nVjbDN0DnWZOayLLmjUKyHf09kp2gDCEc39Mb1mweI9OOl8GtW91078A7wnCEWrTITvc1+VLCN9n7mwf6WJ8m47qw5oBxv5s="
- }
- ],
- "referralCorrelationId": "3fd7b485-569a-4b4b-8d90-7b7bb49dbb01",
- "referralNumber": null,
- "accountNumber": "550036",
- "isSuccess": true,
- "isError": false,
- "errorCode": null,
- "errorMessage": null,
- "successMessage": null
-}
\ No newline at end of file