diff --git a/playwright-tests/business-logic/data/MockPolicyData.ts b/playwright-tests/business-logic/data/MockPolicyData.ts index 213ca961..88063bca 100644 --- a/playwright-tests/business-logic/data/MockPolicyData.ts +++ b/playwright-tests/business-logic/data/MockPolicyData.ts @@ -25,7 +25,13 @@ const policySoapByScenario: { [x: string]: string } = { '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 ' + '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 ', + '0025a': ' <_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 ', + '0026a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-01-30T13:28:30Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-01-30T13:28:30Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>c9ebcb14-a7e3-4b74-b6c2-f6252e456088 <_xml:PolicyInqRs> <_xml:RqUID>c9ebcb14-a7e3-4b74-b6c2-f6252e456088 <_xml:TransactionResponseDt>2025-01-30T13:28:30Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2022-07-26 <_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:OtherGivenName>M <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications /> <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>primary <_xml:PersonInfo> <_xml:GenderCd>F <_xml:InsuredOrPrincipal> <_xml:GeneralPartyInfo> <_xml:NameInfo> <_xml:PersonName> <_xml:Surname>${lastName} <_xml:GivenName>${firstName} <_xml:OtherGivenName>G <_xml:Addr> <_xml:Addr1>${streetAddress} <_xml:City>${city} <_xml:StateProvCd>${state} <_xml:PostalCode>${postalCode} <_xml:Country>US <_xml:Communications /> <_xml:InsuredOrPrincipalInfo> <_xml:InsuredOrPrincipalRoleCd>secondary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>GRS <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>FL <_xml:ContractTerm> <_xml:EffectiveDt>2023-11-01 <_xml:ExpirationDt>2099-11-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3822587884076 <_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>DODG <_xml:Model>GRAND CARA <_xml:ModelYear>2012 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>FL <_xml:VehIdentificationNumber>2C4RDGBG8CR254922 <_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>2000.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>2 <_xml:Manufacturer>SBRU <_xml:Model>OUTBACK <_xml:ModelYear>2021 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>FL <_xml:VehIdentificationNumber>4S4BTAFC7M3163249 <_xml:VehRateGroupInfo> <_xml:RateGroup>005 <_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>2000.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 ', + '0028a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2024-11-21T18:14:10Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2024-11-21T18:14:10Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>346e69fa-cc7e-4da3-be05-75191f5187c7 <_xml:PolicyInqRs> <_xml:RqUID>346e69fa-cc7e-4da3-be05-75191f5187c7 <_xml:TransactionResponseDt>2024-11-21T18:14:10Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2023-09-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: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>secondary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>GRS <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>AL <_xml:ContractTerm> <_xml:EffectiveDt>2023-03-01 <_xml:ExpirationDt>2099-03-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3542759911464 <_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>FORD <_xml:Model>ECONOLINE <_xml:ModelYear>2013 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>AL <_xml:VehIdentificationNumber>1FBNE3BL0DDA59035 <_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>5000.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>6 <_xml:Manufacturer>HOND <_xml:Model>ELEMENT <_xml:ModelYear>2006 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>AL <_xml:VehIdentificationNumber>5J6YH27746L026807 <_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\">001 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ', + '0029a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2024-11-21T18:14:10Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2024-11-21T18:14:10Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>346e69fa-cc7e-4da3-be05-75191f5187c7 <_xml:PolicyInqRs> <_xml:RqUID>346e69fa-cc7e-4da3-be05-75191f5187c7 <_xml:TransactionResponseDt>2024-11-21T18:14:10Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2023-09-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: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>secondary <_xml:PersonInfo> <_xml:GenderCd>M <_xml:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>GRS <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>AL <_xml:ContractTerm> <_xml:EffectiveDt>2023-03-01 <_xml:ExpirationDt>2099-03-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3542759911464 <_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>FORD <_xml:Model>ECONOLINE <_xml:ModelYear>2013 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>AL <_xml:VehIdentificationNumber>1FBNE3BL0DDA59035 <_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>5000.00 <_xml:Option> <_xml:OptionCd>V <_xml:OptionValue>1 <_xml:OptionValueDesc>COVERAGE_LIMIT_IND <_xml:PersVeh> <_xml:ItemIdInfo> <_xml:InsurerId>6 <_xml:Manufacturer>HOND <_xml:Model>ELEMENT <_xml:ModelYear>2006 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>AL <_xml:VehIdentificationNumber>5J6YH27746L026807 <_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\">001 <_xml:PolicySummaryInfo> <_xml:PolicyStatusCd>ACTIVE ', + '0030a': ' <_xml:ACORD> <_xml:SignonRs> <_xml:CustId> <_xml:SPName>Safelite <_xml:CustPermId>00005 <_xml:ClientDt>2025-03-05T19:17:16Z <_xml:CustLangPref>EN <_xml:ClientApp> <_xml:Org>Liberty Mutual <_xml:Name>PM CNG <_xml:Version>1.0 <_xml:ServerDt>2025-03-05T19:17:16Z <_xml:Language>EN <_xml:InsuranceSvcRs> <_xml:RqUID>1b99d815-bced-46ac-9eaf-4694f54a270b <_xml:PolicyInqRs> <_xml:RqUID>1b99d815-bced-46ac-9eaf-4694f54a270b <_xml:TransactionResponseDt>2025-03-05T19:17:16Z <_xml:MsgStatus> <_xml:MsgStatusCd>Success <_xml:AsOfDt>2022-06-10 <_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:PersPolicy> <_xml:PolicyNumber>${policyNumber} <_xml:PolicyVersion>STD <_xml:CompanyProductCd>liberty <_xml:LOBCd>AUTOP <_xml:ControllingStateProvCd>CA <_xml:ContractTerm> <_xml:EffectiveDt>2023-03-01 <_xml:ExpirationDt>2099-03-01 <_xml:GroupId>000 <_xml:MiscParty> <_xml:ItemIdInfo> <_xml:InsurerId>3012599166287 <_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>DODG <_xml:Model>CHARGER <_xml:ModelYear>2012 <_xml:Registration> <_xml:RegistrationId>UNKNOWN <_xml:StateProvCd>CA <_xml:VehIdentificationNumber>2C3CDXBG6CH260654 <_xml:VehRateGroupInfo> <_xml:RateGroup>037 <_xml:CoverageCd>service_level_ind <_xml:VehRateGroupInfo> <_xml:RateGroup>500 <_xml:CoverageCd>parking_guard <_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/CustomerDetails.ts b/playwright-tests/business-logic/types/CustomerDetails.ts index e3bed95c..1152f7a4 100644 --- a/playwright-tests/business-logic/types/CustomerDetails.ts +++ b/playwright-tests/business-logic/types/CustomerDetails.ts @@ -30,9 +30,10 @@ export interface IVehicleDetails { make: string, model: string, style?: string, - vin?: string|string[], - licensePlateNumber?: string|string[], - licensePlateState?: string|string[], + vin?: string | string[], + address?: string | IAddress[], + licensePlateNumber?: string | string[], + licensePlateState?: string | string[], vehicleLookupType?: VehicleLookupType, } diff --git a/playwright-tests/business-logic/types/IAddress.ts b/playwright-tests/business-logic/types/IAddress.ts index 2e0b0fd8..d8e37671 100644 --- a/playwright-tests/business-logic/types/IAddress.ts +++ b/playwright-tests/business-logic/types/IAddress.ts @@ -3,5 +3,6 @@ export interface IAddress { city: string, state: string, postalCode: string, - country: string + country?: string, + lastName?: string } \ No newline at end of file diff --git a/playwright-tests/business-logic/types/ITestData.ts b/playwright-tests/business-logic/types/ITestData.ts index d4ed42e2..be4c1e25 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? + isAddressLookupValidations: boolean, // Should we validate address lookup errors? isVehicleSelectBailout: boolean, // Should we bailout on vehicle lookup? isNoComp: boolean, // Is this a NoComp policy? isItac: boolean, // Is this an ITAC scenario? diff --git a/playwright-tests/business-logic/types/ITestPages.ts b/playwright-tests/business-logic/types/ITestPages.ts index 46da9d0a..77ed4e54 100644 --- a/playwright-tests/business-logic/types/ITestPages.ts +++ b/playwright-tests/business-logic/types/ITestPages.ts @@ -1,3 +1,4 @@ +import { AddressLookupPage } from "../../pages/AddressLookupPage"; import { BailoutPage } from "../../pages/BailoutPage"; import CapabilityQuestionsPage from "../../pages/CapabilityQuestionsPage"; import { ContactConfirmationPage } from "../../pages/ContactConfirmationPage"; @@ -59,5 +60,6 @@ export default interface ITestPages { vehicleLookupAddressPage: VehicleLookupAddressPage, vehicleLookupLicensePage: VehicleLookupLicensePage, welcomePage: WelcomePage, - moldingQuestionsPage: MoldingQuestionsPage + moldingQuestionsPage: MoldingQuestionsPage, + addressLookupPage: AddressLookupPage, } \ 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 3378b4af..ffc332d5 100644 --- a/playwright-tests/business-logic/types/TestCase.ts +++ b/playwright-tests/business-logic/types/TestCase.ts @@ -44,6 +44,7 @@ import MockPolicyData from "@business-logic/data/MockPolicyData"; import VehiclePartQuestionsPage from "../../pages/VehiclePartsPage"; import CapabilityQuestionsPage from "../../pages/CapabilityQuestionsPage"; import { MoldingQuestionsPage } from "../../pages/MoldingQuestionsPage"; +import { AddressLookupPage } from "../../pages/AddressLookupPage"; export default class TestCase extends DisposableBase implements ITestCase { public static FrameworkConfig: FrameworkConfig = { @@ -205,7 +206,8 @@ export default class TestCase extends DisposableBase implements ITestCase { vehicleLookupAddressPage: new VehicleLookupAddressPage(page), vehicleLookupLicensePage: new VehicleLookupLicensePage(page), welcomePage: new WelcomePage(page), - moldingQuestionsPage: new MoldingQuestionsPage(page) + moldingQuestionsPage: new MoldingQuestionsPage(page), + addressLookupPage: new AddressLookupPage(page) }; } diff --git a/playwright-tests/pages/AddressLookupPage.ts b/playwright-tests/pages/AddressLookupPage.ts new file mode 100644 index 00000000..70f4f514 --- /dev/null +++ b/playwright-tests/pages/AddressLookupPage.ts @@ -0,0 +1,59 @@ +import { expect, type Locator, type Page } from '@playwright/test'; +import { BasePage } from './BasePage'; +import { AddressForm } from './forms/AddressForm'; +import { IAddress } from '@business-logic/types/IAddress'; +import { ICustomerDetails } from '@business-logic/types/CustomerDetails'; + +export class AddressLookupPage extends BasePage { + readonly page: Page; + readonly addressForm: AddressForm; + readonly addressNoMatchTextBox: Locator; + readonly stateRestrictionsTextBox: Locator; + issPageValue = 'address-lookup'; + + constructor(page: Page) { + super(page); + this.page = page; + this.addressForm = new AddressForm(page); + this.addressNoMatchTextBox = page.getByText('Your address didn’t return a VIN matchPlease re-enter the information below or'); + this.stateRestrictionsTextBox = page.getByText('State restrictionsLooks like'); + } + + async forceAddressFormToAppear() { + await expect(async () => { + await this.addressForm.streetAddressTextBox.click(); + await this.addressForm.streetAddressTextBox.pressSequentially('7400 Safelite Way'); + await this.addressForm.streetAddressTextBox.press('Tab'); + await expect(this.addressForm.zipCodeTextBox).toBeVisible({ timeout: 100 }); + }).toPass(); + } + + async populateAddress(fullAddress: IAddress) { + if (fullAddress.street) { + // Transform IAddress to CustomerDetails address format + const customerAddress: Partial = { + address: { + street: fullAddress.street, + city: fullAddress.city, + state: fullAddress.state, + postalCode: fullAddress.postalCode + }, + lastName: fullAddress.lastName || '', + }; + // Fill address using AddressForm methods + await this.addressForm.populateAddress(customerAddress); + } + } + + async validateAddressLookupAlerts(addressSet: IAddress[]) { + await this.populateAddress(addressSet[0]); + await this.continueButton.click(); + await expect(this.addressNoMatchTextBox).toBeVisible(); + + await this.populateAddress(addressSet[1]); + await this.continueButton.click(); + await expect(this.stateRestrictionsTextBox).toBeVisible(); + + await this.populateAddress(addressSet[2]); + } +} \ No newline at end of file diff --git a/playwright-tests/pages/CoverageStatementPage.ts b/playwright-tests/pages/CoverageStatementPage.ts index 63246b42..9832cf9c 100644 --- a/playwright-tests/pages/CoverageStatementPage.ts +++ b/playwright-tests/pages/CoverageStatementPage.ts @@ -5,6 +5,7 @@ export class CoverageStatementPage extends BasePage { readonly page: Page; readonly scheduleOnlineButton: Locator; readonly cancelMyClaimButton: Locator; + readonly cancelMyClaimConfirm: Locator; readonly deductibleAmount: Locator; readonly verfiyingCoverageText: Locator; readonly continueToScheduleButton: Locator; // For ITAC/NoComp @@ -15,10 +16,11 @@ export class CoverageStatementPage extends BasePage { this.page = page; this.scheduleOnlineButton = this.page.getByText('Continue to schedule online'); this.cancelMyClaimButton = this.page.getByText('Cancel my claim'); + this.cancelMyClaimConfirm = this.page.getByText('No, I want to cancel'); + this.deductibleAmount = this.page.getByText('$'); this.verfiyingCoverageText = this.page.getByRole('heading', { name: 'We’re verifying your coverage' }); this.continueToScheduleButton = page.locator('div[class*="button-content"]', {hasText:'Continue to schedule online'}); - // this.validateURL(this.url); } async scheduleOnline(){ @@ -27,6 +29,7 @@ export class CoverageStatementPage extends BasePage { async cancelMyClaim(){ await this.cancelMyClaimButton.click(); + await this.cancelMyClaimConfirm.click(); } async validateDeductibleAmount(customer){ diff --git a/playwright-tests/pages/OrderConfirmationPage.ts b/playwright-tests/pages/OrderConfirmationPage.ts index 736a1b83..8f30ad8c 100644 --- a/playwright-tests/pages/OrderConfirmationPage.ts +++ b/playwright-tests/pages/OrderConfirmationPage.ts @@ -29,7 +29,6 @@ export class OrderConfirmationPage extends BasePage { this.subtotalText = this.page.locator("#subtotal-value"); this.finalAmountDue = this.page.locator('#bottom-amount-due-value'); this.cartServicePackageText = this.page.locator('#cart-service-package'); - // this.validateURL(this.url); } async validateOrderConfirmationPage(testData: Partial) { diff --git a/playwright-tests/pages/WelcomePage.ts b/playwright-tests/pages/WelcomePage.ts index 62dceee6..e7c8c4ae 100644 --- a/playwright-tests/pages/WelcomePage.ts +++ b/playwright-tests/pages/WelcomePage.ts @@ -31,7 +31,6 @@ export class WelcomePage extends BasePage { this.city = page.getByRole('textbox', { name: 'In which city did the damage' }); this.state = page.locator('select[name="\\38 fdf9dc2e13e430eb57529499dceb3eb"]'); this.cookieCloseButton = page.getByRole('button', { name: 'Close' }); - } async goto(clientTag: string) { diff --git a/playwright-tests/tests/0000__M.test.ts b/playwright-tests/tests/0000__M.test.ts index c1f76764..b5d2831d 100644 --- a/playwright-tests/tests/0000__M.test.ts +++ b/playwright-tests/tests/0000__M.test.ts @@ -52,6 +52,11 @@ import advancedScenario0022TestCases from "./advanced/0022a_VehicleByVIN"; import advancedScenario0023TestCases from "./advanced/0023a_VehicleByVINPartsQns"; import { createAccessibilityHtmlReport } from "@impl/utils/ReportUtils"; import advancedScenario0024TestCases from "./advanced/0024a_VehicleByVINUnverifiedBailout"; +import advancedScenario0025TestCases from "./advanced/0025a_VehicleByVINUnverifiedBailout"; +import advancedScenario0026aTestCases from "./advanced/0026a_NoDeductibleAdasBailout5"; +import advancedScenario0028aTestCases from "./advanced/0028a_ItacCancelMyClaim"; +import advancedScenario0029aTestCases from "./advanced/0029a_HeavyVehicleBailout"; +import advancedScenario0030aTestCases from "./advanced/0030a_PartsServiceBailout"; @@ -283,6 +288,31 @@ test.describe.parallel('ISS QA Automation Regression', () => { for (const testCase of advancedScenario0024TestCases) { test(...prepareTest(testCase, run, options, ruleEngine)); } + + // Scenario 0025a + for (const testCase of advancedScenario0025TestCases) { + test(...prepareTest(testCase, run, options, ruleEngine)); + } + + // Scenario 0026a + for (const testCase of advancedScenario0026aTestCases) { + test(...prepareTest(testCase, run, options, ruleEngine)); + } + + // Scenario 0028a + for (const testCase of advancedScenario0028aTestCases) { + test(...prepareTest(testCase, run, options, ruleEngine)); + } + + // Scenario 0029a + for (const testCase of advancedScenario0029aTestCases) { + test(...prepareTest(testCase, run, options, ruleEngine)); + } + + // Scenario 0030a + for (const testCase of advancedScenario0030aTestCases) { + test(...prepareTest(testCase, run, options, ruleEngine)); + } }); @@ -327,7 +357,7 @@ async function runWorkflow(page: Page, testCase: TestCase) { appointmentDetails, isSafelite, endorsements, partQuestions, paymentDetails, isNoComp, isItac, isRecalNotification, isRecalWarning, servicePackage, hasStateLawPopup, otherVehiclesOnPolicy, - isSeparateApptsWarning, vehiclePartQuestions, editVehicleDetails, + isSeparateApptsWarning, vehiclePartQuestions, editVehicleDetails, isAddressLookupValidations, hasMilitaryWarning, capabilityQuestions, isUseVehicleOnPolicy, isVehicleLookupValidations, isMoldingQuestion } = testCase.testData; let { isPolicyFound } = testCase.testData; // Allow isPolicyFound to be re-assigned @@ -340,12 +370,12 @@ async function runWorkflow(page: Page, testCase: TestCase) { endorsementsPage, vehicleLookupPage, partQuestionsPage, paymentMethodPage, vehicleLookupAddressPage, vehicleLookupLicensePage, vinLookupPage, bailoutPage, tpaSearchPage, tpaSubmitPage, tpaConfirmationPage, - vehiclePartQuestionsPage, capabilityQuestionsPage, moldingQuestionsPage } = testCase.pages; + vehiclePartQuestionsPage, capabilityQuestionsPage, moldingQuestionsPage, addressLookupPage } = testCase.pages; // Destructure bailout flags const { isVehicleSelectBailout, isDoNotSeeMyShopBailout, isTpaNotEnabledBailout, isHeavyTruckVehicleBailout, isPartsServiceErrorBailout, - isVehicleLookupBailout, isPriceServiceErrorBailout } = testCase.testData.bailoutFlags || {}; + isVehicleLookupBailout, isPriceServiceErrorBailout, isRequestCallbackBailout } = testCase.testData.bailoutFlags || {}; const repairTypes: VehicleDamage[] = [ VehicleDamage.WindshieldOneChip, @@ -522,11 +552,21 @@ async function runWorkflow(page: Page, testCase: TestCase) { } switch (vehicleDetails!.vehicleLookupType!) { case VehicleLookupType.Address: - await test.step('VehicleLookupAddressPage >> Lookup by address: ' + customerDetails!.address.street, async () => { - await vehicleLookupAddressPage.validateURL(vehicleLookupAddressPage.issPageValue); - await vehicleLookupAddressPage.lookupVehicleByAddress(customerDetails!, vehicleDetails!); - await vehicleLookupAddressPage.nextPage(); - }); + if (isAddressLookupValidations) { + await test.step('Address Lookup validations >> Vehicle Lookup by address: ' + customerDetails!.address.street, async () => { + if (Array.isArray(vehicleDetails?.address)) { + await addressLookupPage.validateURL(addressLookupPage.issPageValue); + await addressLookupPage.validateAddressLookupAlerts(vehicleDetails?.address); + await addressLookupPage.nextPage(); + } + }); + } else { + await test.step('VehicleLookupAddressPage >> Lookup by address: ' + customerDetails!.address.street, async () => { + await vehicleLookupAddressPage.validateURL(vehicleLookupAddressPage.issPageValue); + await vehicleLookupAddressPage.lookupVehicleByAddress(customerDetails!, vehicleDetails!); + await vehicleLookupAddressPage.nextPage(); + }); + } break; case VehicleLookupType.LicensePlateNumber: await vehicleLookupLicensePage.validateURL(vehicleLookupLicensePage.issPageValue); @@ -582,7 +622,18 @@ async function runWorkflow(page: Page, testCase: TestCase) { await vehiclePartQuestionsPage.selectPartQuestionResponses(vehiclePartQuestions); await vehiclePartQuestionsPage.nextPage(); } + if (isRequestCallbackBailout) { + await test.step('CoverageStatementPage >> Cancel My claim', async () => { + await coverageStatementPage.validateURL(coverageStatementPage.issPageValue); + await coverageStatementPage.cancelMyClaim(); + }); + await test.step('BailoutPage >> Request Callback Bailout', async () => { + await bailoutPage.validateURL(bailoutPage.issPageValue); + await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.RequestCallback); + }); + return; + } await test.step('CoverageStatementPage >> Next page', async () => { await coverageStatementPage.validateURL(coverageStatementPage.issPageValue); // Confirm no coverage diff --git a/playwright-tests/tests/advanced/0021a_VehicleByPlate.ts b/playwright-tests/tests/advanced/0021a_VehicleByPlate.ts index 059d8598..810e74bf 100644 --- a/playwright-tests/tests/advanced/0021a_VehicleByPlate.ts +++ b/playwright-tests/tests/advanced/0021a_VehicleByPlate.ts @@ -78,7 +78,7 @@ for (const client of advancedClients) { data.clientTag = client.clientTag; const tc = new TestCase({ name: `0021a Advanced client Vehicle By License Plate: "${client.accountName}"`, - tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced'], + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], testData: data }, undefined, '0021a'); advancedScenario0021TestCases.push(tc); diff --git a/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts b/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts index 192fbd8d..7866c3eb 100644 --- a/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts +++ b/playwright-tests/tests/advanced/0022a_VehicleByVIN.ts @@ -77,7 +77,7 @@ for (const client of advancedClients) { data.clientTag = client.clientTag; const tc = new TestCase({ name: `0022a Advanced Client Vehicle By Vin: "${client.accountName}"`, - tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced'], + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], testData: data }, undefined, '0022a'); advancedScenario0022TestCases.push(tc); diff --git a/playwright-tests/tests/advanced/0023a_VehicleByVINPartsQns.ts b/playwright-tests/tests/advanced/0023a_VehicleByVINPartsQns.ts index 9321fe38..f6d650bb 100644 --- a/playwright-tests/tests/advanced/0023a_VehicleByVINPartsQns.ts +++ b/playwright-tests/tests/advanced/0023a_VehicleByVINPartsQns.ts @@ -75,7 +75,7 @@ for (const client of advancedClients) { data.clientTag = client.clientTag; const tc = new TestCase({ name: `0023a Advanced client Unlisted Vehicle: "${client.accountName}"`, - tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced'], + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], testData: data }, undefined, '0023a'); advancedScenario0023TestCases.push(tc); diff --git a/playwright-tests/tests/advanced/0024a_VehicleByVINUnverifiedBailout.ts b/playwright-tests/tests/advanced/0024a_VehicleByVINUnverifiedBailout.ts index 0307088b..7df0a5a4 100644 --- a/playwright-tests/tests/advanced/0024a_VehicleByVINUnverifiedBailout.ts +++ b/playwright-tests/tests/advanced/0024a_VehicleByVINUnverifiedBailout.ts @@ -35,8 +35,9 @@ const advancedScenario0024Data: Partial = { endorsements: undefined, isUseVehicleOnPolicy: false, isVehicleLookupValidations: false, - isVehicleSelectBailout: true, - isMoldingQuestion: true, + isVehicleSelectBailout: false, + isAddressLookupValidations: true, + isMoldingQuestion: false, isSafelite: true, servicePackage: faker.helpers.enumValue(ServicePackage), customerDetails: customerDetails, @@ -49,11 +50,15 @@ const advancedScenario0024Data: Partial = { policySoap: policySoap, vehicleDetails: { year: '2015', - make: 'Honda', - model: 'Accord', - style: '4 door sedan', - vehicleLookupType: VehicleLookupType.Vin, - vin: '0HGCR2E30FA099831', + make: 'Ford', + model: 'F Series F150', + style: '2 door super cab', + vehicleLookupType: VehicleLookupType.Address, + address: [ + { street: '9 Test Street', city: 'Columbus', state: 'OH', postalCode: '43220', lastName: 'Test' }, + { street: '8621 GREENLEAF AVE', city: 'Whittier', state: 'California', postalCode: '90602', lastName: 'Johnson' }, + { street: '10212 JEWEL CT', city: 'Conroe', state: 'Texas', postalCode: '77385', lastName: 'Reed' } + ], }, vehicleDamage: [ VehicleDamage.WindshieldCrack, @@ -74,7 +79,7 @@ for (const client of advancedClients) { data.clientTag = client.clientTag; const tc = new TestCase({ name: `0024a Advanced client Unlisted Vehicle Bailout: "${client.accountName}"`, - tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced'], + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], testData: data }, undefined, '0024a'); advancedScenario0024TestCases.push(tc); diff --git a/playwright-tests/tests/advanced/0025a_VehicleByVINUnverifiedBailout.ts b/playwright-tests/tests/advanced/0025a_VehicleByVINUnverifiedBailout.ts new file mode 100644 index 00000000..f3e6c7a8 --- /dev/null +++ b/playwright-tests/tests/advanced/0025a_VehicleByVINUnverifiedBailout.ts @@ -0,0 +1,85 @@ +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 = `~AutomatedScenario0025a${faker.string.uuid().substring(0, 6)}`; +const policySoap = MockPolicyData.getPolicySoapByScenario('0025a', customerDetails, policyNumber); + +const advancedScenario0025Data: Partial = { + clientTag: '', + isDuplicateClaim: false, + isPolicyFound: false, + isNoComp: false, + hasStateLawPopup: false, + endorsements: undefined, + isUseVehicleOnPolicy: false, + isVehicleLookupValidations: false, + bailoutFlags: { + 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 advancedScenario0025TestCases: TestCase[] = []; +for (const client of advancedClients) { + const data = { ...advancedScenario0025Data }; + data.clientTag = client.clientTag; + const tc = new TestCase({ + name: `0025a Advanced client Unlisted Vehicle Bailout: "${client.accountName}"`, + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], + testData: data + }, undefined, '00255a'); + advancedScenario0025TestCases.push(tc); +} + +export default advancedScenario0025TestCases; \ No newline at end of file diff --git a/playwright-tests/tests/advanced/0026a_NoDeductibleAdasBailout5.ts b/playwright-tests/tests/advanced/0026a_NoDeductibleAdasBailout5.ts new file mode 100644 index 00000000..ebfe3c79 --- /dev/null +++ b/playwright-tests/tests/advanced/0026a_NoDeductibleAdasBailout5.ts @@ -0,0 +1,87 @@ +import ClientData from "@business-logic/data/ClientData"; +import TestCase from "@business-logic/types/TestCase"; +import { DamageType, PartQuestionType, PaymentType, ServiceLocation, ServicePackage, VehicleDamage } 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: 'PALM COAST', + state: 'FL', + postalCode: '32137-8523', + country: 'United States' + } +} + +const policyNumber = `~AutomatedScenario0026a${faker.string.uuid().substring(0, 6)}`; +const policySoap = MockPolicyData.getPolicySoapByScenario('0026a', customerDetails, policyNumber); + +const advancedScenario0026aData: Partial = { + clientTag: '', + isDuplicateClaim: false, + isPolicyFound: true, + isNoComp: false, + hasStateLawPopup: false, + isRecalNotification: true, + endorsements: undefined, + bailoutFlags: { + isDoNotSeeMyShopBailout: true + }, + vehiclePartQuestions: [ + ], + isSafelite: false, + servicePackage: faker.helpers.enumValue(ServicePackage), + customerDetails: customerDetails, + claimDetails: { + policyNumber: policyNumber, + policyDeductible: 0, + damageDate: '2022-07-26', + damageCause: faker.helpers.enumValue(DamageType), + }, + policySoap: policySoap, + vehicleDetails: { + year: '2021', + make: 'Subaru', + model: 'Outback', + style: '' + }, + 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 advancedScenario0026aTestCases: TestCase[] = []; +for (const client of advancedClients) { + const data = { ...advancedScenario0026aData }; + data.clientTag = client.clientTag; + const tc = new TestCase({ + name: `0026a Advanced Replace Deductible Client: "${client.accountName}"`, + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], + testData: data + }, undefined, '0026a'); + advancedScenario0026aTestCases.push(tc); +} + +export default advancedScenario0026aTestCases; \ No newline at end of file diff --git a/playwright-tests/tests/advanced/0028a_ItacCancelMyClaim.ts b/playwright-tests/tests/advanced/0028a_ItacCancelMyClaim.ts new file mode 100644 index 00000000..8479feb4 --- /dev/null +++ b/playwright-tests/tests/advanced/0028a_ItacCancelMyClaim.ts @@ -0,0 +1,94 @@ +import ClientData from "@business-logic/data/ClientData"; +import TestCase from "@business-logic/types/TestCase"; +import { DamageType, EndorsementType, ServiceLocation, ServicePackage, VehicleDamage } 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"; +import { IAddress } from "@business-logic/types/IAddress"; + +const nextWeekday = getNextWeekday(); +const customerAddress: IAddress = { + street: faker.location.streetAddress(), + city: 'Birmingham', + state: 'AL', + postalCode: '35118', + country: 'United States' +} +const customerDetails: ICustomerDetails = { + firstName: faker.person.firstName(), + lastName: faker.person.lastName(), + email: 'itqatest@safelite.com', + phoneNumber: '614-531-0031', + notes: 'Automated Test', + address: customerAddress +} + +const policyNumber = `~AutomatedScenario0028a${faker.string.uuid().substring(0, 6)}`; +const policySoap = MockPolicyData.getPolicySoapByScenario('0028a', customerDetails, policyNumber); + +const advancedScenario0028aData: Partial = { + clientTag: '', + isDuplicateClaim: false, + isPolicyFound: true, + isNoComp: false, + isItac: true, + hasStateLawPopup: false, + bailoutFlags: { + isRequestCallbackBailout: true, + }, + isVehicleSelectBailout: false, + endorsements: [ + { + endorsementType: EndorsementType.Educator, + isOnPolicy: true, + isClickYes: false + } + ], + vehiclePartQuestions: [ + ], + isSafelite: true, + servicePackage: faker.helpers.enumValue(ServicePackage), + customerDetails: customerDetails, + claimDetails: { + policyNumber: policyNumber, + policyDeductible: 9999, + damageDate: '2023-08-01', + damageCause: faker.helpers.enumValue(DamageType) + }, + policySoap: policySoap, + vehicleDetails: { + year: '2013', + make: 'Ford', + model: 'Econoline', + style: '' + }, + vehicleDamage: [ + VehicleDamage.WindshieldCrack + ], + appointmentDetails: { + serviceLocation: ServiceLocation.Mobile, + serviceAddress: customerAddress, + appointmentDate: nextWeekday + }, + paymentDetails: ClientData.getDefaultCreditCardDetails() + +} + +// TODO: Add validation for deductible/covered amount + +const advancedClients = ClientData.getAdvancedClients(); +const advancedScenario0028aTestCases: TestCase[] = []; +for (const client of advancedClients) { + const data = { ...advancedScenario0028aData }; + data.clientTag = client.clientTag; + const tc = new TestCase({ + name: `0028a Advanced ITAC Cancel My Claim: "${client.accountName}"`, + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], + testData: data + }, undefined, '0028a'); + advancedScenario0028aTestCases.push(tc); +} + +export default advancedScenario0028aTestCases; \ No newline at end of file diff --git a/playwright-tests/tests/advanced/0029a_HeavyVehicleBailout.ts b/playwright-tests/tests/advanced/0029a_HeavyVehicleBailout.ts new file mode 100644 index 00000000..6ecd2381 --- /dev/null +++ b/playwright-tests/tests/advanced/0029a_HeavyVehicleBailout.ts @@ -0,0 +1,82 @@ +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 = `~AutomatedScenario0029a${faker.string.uuid().substring(0, 6)}`; +const policySoap = MockPolicyData.getPolicySoapByScenario('0029a', customerDetails, policyNumber); + +const advancedScenario0029Data: Partial = { + clientTag: '', + isDuplicateClaim: false, + isPolicyFound: true, + isNoComp: false, + endorsements: undefined, + isUseVehicleOnPolicy: false, + servicePackage: faker.helpers.enumValue(ServicePackage), + customerDetails: customerDetails, + bailoutFlags: { + isHeavyTruckVehicleBailout: true, + }, + claimDetails: { + policyNumber: policyNumber, + policyDeductible: 500, + damageDate: '2017-06-02', + damageCause: DamageType.Vandalism + }, + policySoap: policySoap, + vehicleDetails: { + year: '2017', + make: 'Freightliner', + model: '114sd', + vehicleLookupType: VehicleLookupType.Vin, + vin: '1FUJG3DV5HHJH2985', + }, + 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 advancedScenario0029TestCases: TestCase[] = []; +for (const client of advancedClients) { + const data = { ...advancedScenario0029Data }; + data.clientTag = client.clientTag; + const tc = new TestCase({ + name: `0029a Advanced client Unlisted Vehicle: "${client.accountName}"`, + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], + testData: data + }, undefined, '0029a'); + advancedScenario0029TestCases.push(tc); +} + +export default advancedScenario0029TestCases; \ No newline at end of file diff --git a/playwright-tests/tests/advanced/0030a_PartsServiceBailout.ts b/playwright-tests/tests/advanced/0030a_PartsServiceBailout.ts new file mode 100644 index 00000000..07752f51 --- /dev/null +++ b/playwright-tests/tests/advanced/0030a_PartsServiceBailout.ts @@ -0,0 +1,89 @@ +import ClientData from "@business-logic/data/ClientData"; +import TestCase from "@business-logic/types/TestCase"; +import { DamageType, EndorsementType, 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"; +import { IAddress } from "@business-logic/types/IAddress"; + +const nextWeekday = getNextWeekday(); +const customerAddress: IAddress = { + street: faker.location.streetAddress(), + city: 'Birmingham', + state: 'AL', + postalCode: '35118', + country: 'United States' +} +const customerDetails: ICustomerDetails = { + firstName: faker.person.firstName(), + lastName: faker.person.lastName(), + email: 'itqatest@safelite.com', + phoneNumber: '614-531-0031', + notes: 'Automated Test', + address: customerAddress +} + +const policyNumber = `~AutomatedScenario0030a${faker.string.uuid().substring(0, 6)}`; +const policySoap = MockPolicyData.getPolicySoapByScenario('0030a', customerDetails, policyNumber); + +const advancedScenario0030aData: Partial = { + clientTag: '', + isDuplicateClaim: false, + isPolicyFound: false, + isNoComp: true, + isItac: false, + hasStateLawPopup: false, + bailoutFlags: { + isPartsServiceErrorBailout: true, + }, + + vehiclePartQuestions: [ + ], + isSafelite: true, + servicePackage: faker.helpers.enumValue(ServicePackage), + customerDetails: customerDetails, + claimDetails: { + policyNumber: policyNumber, + policyDeductible: 9999, + damageDate: '2023-08-01', + damageCause: faker.helpers.enumValue(DamageType) + }, + policySoap: policySoap, + vehicleDetails: { + year: '2012', + make: 'Dodge', + model: 'Charger', + style: '', + vin: '2C3CDXBG6CH260654', + vehicleLookupType: VehicleLookupType.Vin + }, + vehicleDamage: [ + VehicleDamage.WindshieldCrack + ], + appointmentDetails: { + serviceLocation: ServiceLocation.Mobile, + serviceAddress: customerAddress, + appointmentDate: nextWeekday + }, + paymentDetails: ClientData.getDefaultCreditCardDetails() + +} + +// TODO: Add validation for deductible/covered amount + +const advancedClients = ClientData.getAdvancedClients(); +const advancedScenario0030aTestCases: TestCase[] = []; +for (const client of advancedClients) { + const data = { ...advancedScenario0030aData }; + data.clientTag = client.clientTag; + const tc = new TestCase({ + name: `0030a Advanced ITAC Cancel My Claim: "${client.accountName}"`, + tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-2057'], + testData: data + }, undefined, '0030a'); + advancedScenario0030aTestCases.push(tc); +} + +export default advancedScenario0030aTestCases; \ No newline at end of file diff --git a/playwright-tests/tests/mockResponses/0002a_Advanced_Replace_Deductible_Client/schedule/api/v1/schedule/shop-time-slots.json b/playwright-tests/tests/mockResponses/0002a_Advanced_Replace_Deductible_Client/schedule/api/v1/schedule/shop-time-slots.json index ba6e6c41..abd59844 100644 --- a/playwright-tests/tests/mockResponses/0002a_Advanced_Replace_Deductible_Client/schedule/api/v1/schedule/shop-time-slots.json +++ b/playwright-tests/tests/mockResponses/0002a_Advanced_Replace_Deductible_Client/schedule/api/v1/schedule/shop-time-slots.json @@ -3,7 +3,7 @@ "estimatedServiceMinutesMaximum": 120, "days": [ { - "date": "2025-02-22", + "date": "2025-03-01", "timeSlots": [ { "id": "01813-01813-S-B*20873*ALL DAY DROP OFF", @@ -14,7 +14,40 @@ ] }, { - "date": "2025-02-24", + "date": "2025-03-02", + "timeSlots": [ + { + "id": "01813-01813-S-B*20873*ALL DAY DROP OFF", + "startTime": "07:30", + "endTime": "17:00", + "offerPremium": false + } + ] + }, + { + "date": "2025-03-03", + "timeSlots": [ + { + "id": "01813-01813-S-B*20873*ALL DAY DROP OFF", + "startTime": "07:30", + "endTime": "17:00", + "offerPremium": false + } + ] + }, + { + "date": "2025-03-04", + "timeSlots": [ + { + "id": "01813-01813-S-B*20873*ALL DAY DROP OFF", + "startTime": "07:30", + "endTime": "17:00", + "offerPremium": false + } + ] + }, + { + "date": "2025-03-24", "timeSlots": [ { "id": "01813-01813-S-B*20875*ALL DAY DROP OFF", @@ -25,7 +58,7 @@ ] }, { - "date": "2025-02-25", + "date": "2025-03-25", "timeSlots": [ { "id": "01813-01813-S-B*20876*ALL DAY DROP OFF", @@ -36,7 +69,7 @@ ] }, { - "date": "2025-02-26", + "date": "2025-03-26", "timeSlots": [ { "id": "01813-01813-S-B*20877*ALL DAY DROP OFF", @@ -47,7 +80,7 @@ ] }, { - "date": "2025-02-27", + "date": "2025-04-27", "timeSlots": [ { "id": "01813-01813-S-B*20878*ALL DAY DROP OFF", @@ -58,7 +91,7 @@ ] }, { - "date": "2025-02-28", + "date": "2025-05-28", "timeSlots": [ { "id": "01813-01813-S-B*20879*ALL DAY DROP OFF", @@ -69,7 +102,7 @@ ] }, { - "date": "2025-03-01", + "date": "2025-06-01", "timeSlots": [ { "id": "01813-01813-S-B*20880*ALL DAY DROP OFF",