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