diff --git a/playwright-tests/.npmrc b/playwright-tests/.npmrc index dd6db73f..b13d775a 100644 --- a/playwright-tests/.npmrc +++ b/playwright-tests/.npmrc @@ -1,3 +1,11 @@ registry=https://pkgs.dev.azure.com/Safelite/Digital/_packaging/DigitalQA/npm/registry/ - -always-auth=true \ No newline at end of file + + ; begin auth token +//pkgs.dev.azure.com/Safelite/Digital/_packaging/DigitalQA/npm/registry/:username=Safelite +//pkgs.dev.azure.com/Safelite/Digital/_packaging/DigitalQA/npm/registry/:_password=MlBWQzBWcHBCN3NyQnR3SWxxRFNiU1dRR0dsbDNEcUVXQmRsbDJtSkhxb0J4aUsyTlpzRUpRUUo5OUJLQUNBQUFBQTlKc0tDQUFBU0FaRE9NQ2Ru +//pkgs.dev.azure.com/Safelite/Digital/_packaging/DigitalQA/npm/registry/:email=npm requires email to be set but doesn't use the value +//pkgs.dev.azure.com/Safelite/Digital/_packaging/DigitalQA/npm/:username=Safelite +//pkgs.dev.azure.com/Safelite/Digital/_packaging/DigitalQA/npm/:_password=MlBWQzBWcHBCN3NyQnR3SWxxRFNiU1dRR0dsbDNEcUVXQmRsbDJtSkhxb0J4aUsyTlpzRUpRUUo5OUJLQUNBQUFBQTlKc0tDQUFBU0FaRE9NQ2Ru +//pkgs.dev.azure.com/Safelite/Digital/_packaging/DigitalQA/npm/:email=npm requires email to be set but doesn't use the value +; end auth token +always-auth=true diff --git a/playwright-tests/business-logic/data/ClientData.ts b/playwright-tests/business-logic/data/ClientData.ts index a6948d69..44d566e4 100644 --- a/playwright-tests/business-logic/data/ClientData.ts +++ b/playwright-tests/business-logic/data/ClientData.ts @@ -101,8 +101,19 @@ const essentialClients: IClient[] = [ { clientTag: '6D13AEF6-CE16-400F-9A29-A1AED5C47D48', accountName: 'Liberty Mutual', - clientFlags: { isTpaEnabled: true } + clientFlags: { isTpaEnabled: true }, + bgColor: "rgb(255, 209, 0)" }, + + { + clientTag: 'A5F7D473-29C4-4E2C-AD08-A3AB13FE0314', + accountName: 'Safeco Insurance', + accountNumber: '408810', + clientFlags: { isTpaEnabled: true }, + bgColor: "rgb(255, 209, 0)", + + }, + { clientTag: 'F680CCE4-6D88-4845-9FA4-746CF54B4AC', accountName: 'M Plate', @@ -197,15 +208,41 @@ const essentialClients: IClient[] = [ clientTag: '1065734B-2292-4392-8CAF-205F07752BBE', accountName: 'Wayne Insurance', clientFlags: {} + }, + + { + clientTag: '156CDB2D-D49C-49D6-BC63-12B5BEF6D922', + accountName: 'State Farm', + accountNumber: '711310', + clientFlags: {}, } + ] const advancedClients: IClient[] = [ { clientTag: '1216EA5F-64D1-462A-A03F-34C0A652430E', accountName: 'Liberty Mutual', + accountNumber: '550036', + clientFlags: {}, + bgColor: "rgb(255, 209, 0)" + + }, + { + clientTag: 'A5F7D473-29C4-4E2C-AD08-A3AB13FE0314', + accountName: 'Safeco Insurance', + accountNumber: '408810', + clientFlags: { isTpaEnabled: true }, + bgColor: "rgb(255, 209, 0)" + + }, + { + clientTag: '156CDB2D-D49C-49D6-BC63-12B5BEF6D922', + accountName: 'State Farm', + accountNumber: '711310', clientFlags: {} } + ] const defaultCreditCardDetails: IPaymentDetails = { diff --git a/playwright-tests/business-logic/data/MockPolicyData.ts b/playwright-tests/business-logic/data/MockPolicyData.ts index 4748cfc9..15ae5dd0 100644 --- a/playwright-tests/business-logic/data/MockPolicyData.ts +++ b/playwright-tests/business-logic/data/MockPolicyData.ts @@ -39,7 +39,8 @@ const claimRegistrationValue = "{\"claimNumber\":\"058913992\",\"reportedDate\": export default class MockPolicyData { - static interpolatePolicyDetails(policySoap: string, customerDetails: ICustomerDetails, policyNumber: string) { + static interpolatePolicyDetails(policySoap: string, customerDetails: ICustomerDetails, policyNumber: string) + { return policySoap.replaceAll('${firstName}', customerDetails.firstName) .replaceAll('${lastName}', customerDetails.lastName) .replaceAll('${streetAddress}', customerDetails.address.street) @@ -49,6 +50,18 @@ export default class MockPolicyData { .replaceAll('${policyNumber}', policyNumber) .replaceAll('${phoneNumber}', customerDetails.phoneNumber); } + + static applyClientToPolicySoap(policySoap: string, accountNumber: string) { + let orgName = 'Liberty Mutual'; + let companyProductCd = 'liberty'; + if (accountNumber === '408810') { //this is safeco account number + orgName = 'Safeco'; + companyProductCd = 'safeco'; + } + return policySoap + .replaceAll('<_xml:Org>Liberty Mutual', `<_xml:Org>${orgName}`) + .replaceAll('<_xml:CompanyProductCd>liberty', `<_xml:CompanyProductCd>${companyProductCd}`); + } static generateCreateMockPolicyRequest(policyNumber: string, soapValue: string) { const request: IPostSaveFakeResponseRequestBody = { diff --git a/playwright-tests/business-logic/types/Client.ts b/playwright-tests/business-logic/types/Client.ts index 37ffcd0a..a65ed2e0 100644 --- a/playwright-tests/business-logic/types/Client.ts +++ b/playwright-tests/business-logic/types/Client.ts @@ -1,7 +1,9 @@ export interface IClient { clientTag: string, - accountName: string - clientFlags: Partial + accountName: string, + accountNumber?: string, + clientFlags: Partial, + bgColor?: string } export interface IClientFlags { diff --git a/playwright-tests/business-logic/types/ITestData.ts b/playwright-tests/business-logic/types/ITestData.ts index a457644c..adaa1d6c 100644 --- a/playwright-tests/business-logic/types/ITestData.ts +++ b/playwright-tests/business-logic/types/ITestData.ts @@ -5,6 +5,7 @@ import IBailoutFlags from "./IBailoutFlags" export interface ITestData { isMockTesting: boolean, clientTag: string, + accountNumber: string, isDuplicateClaim: boolean, isPolicyFound: boolean, // Effective difference between advanced and essential isUnverifiedPolicyAfterVehicleLookup: boolean, // Changing license plate can cause flow to change to unverified from verified diff --git a/playwright-tests/business-logic/types/TestCase.ts b/playwright-tests/business-logic/types/TestCase.ts index 2cd1bb5a..ce54843a 100644 --- a/playwright-tests/business-logic/types/TestCase.ts +++ b/playwright-tests/business-logic/types/TestCase.ts @@ -162,9 +162,12 @@ export default class TestCase extends DisposableBase implements ITestCase { public async setup(): Promise { if (this.testData.policySoap && this.testData.claimDetails) { const apiUtil = new CcisApiUtil(); + const accountNumber = this.testData.accountNumber ?? '550036'; + const policySoap = MockPolicyData.applyClientToPolicySoap(this.testData.policySoap, accountNumber); + + // Create Policy + const req = MockPolicyData.generateCreateMockPolicyRequest(this.testData.claimDetails.policyNumber, policySoap); - // Create Policy - const req = MockPolicyData.generateCreateMockPolicyRequest(this.testData.claimDetails.policyNumber, this.testData.policySoap); console.log('Policy Number: ' + this.testData.claimDetails.policyNumber + ' Damage Date: ' + this.testData.claimDetails.damageDate + ' Postal code: ' + this.testData.customerDetails?.address.postalCode!); const res = await apiUtil.createFakeResponse(req); console.log("Fake Policy creation status" + res.status); // For debug use console.dir(res); diff --git a/playwright-tests/pages/ContactDetailsPage.ts b/playwright-tests/pages/ContactDetailsPage.ts index 991cdff7..b40152c1 100644 --- a/playwright-tests/pages/ContactDetailsPage.ts +++ b/playwright-tests/pages/ContactDetailsPage.ts @@ -1,6 +1,7 @@ import { expect, type Locator, type Page } from '@playwright/test'; import { BasePage } from './BasePage'; import { ICustomerDetails } from '@business-logic/types/CustomerDetails'; +import { IAddress } from '@business-logic/types/IAddress'; export class ContactDetailsPage extends BasePage { readonly page: Page; @@ -59,6 +60,12 @@ export class ContactDetailsPage extends BasePage { await this.cityTextBox.fill(alternateMobileCity); } + async fillMobileServiceAddress(serviceAddress: IAddress) { + await this.streetAddressTextBox.fill(serviceAddress.street); + await this.cityTextBox.fill(serviceAddress.city); + await expect.soft(this.zipCodeTextBox).toHaveValue(serviceAddress.postalCode); + } + async fillNotes(notes?: string) { if (notes) { await this.notesTextBox.fill(notes); diff --git a/playwright-tests/pages/WelcomePage.ts b/playwright-tests/pages/WelcomePage.ts index fe3e0e76..cba7d0e3 100644 --- a/playwright-tests/pages/WelcomePage.ts +++ b/playwright-tests/pages/WelcomePage.ts @@ -38,9 +38,18 @@ export class WelcomePage extends BasePage { async goto(clientTag: string) { await this.page.goto(process.env['BASE_URL']! + `/?issPage=entry-page&ClientTag=${clientTag}`); await this.waitForURL(this.url); - await this.cookieCloseButton.click(); + await this.dismissCookiePopupIfPresent(); } + async dismissCookiePopupIfPresent() { + try { + await this.cookieCloseButton.waitFor({ state: 'visible', timeout: 3000 }); + await this.cookieCloseButton.click(); + } catch { + } + } + + async gotoWithAuthentication(clientTag: string) { const clientAuth = await getClientAuthByClientTag(clientTag); const certificate = clientAuth.certificateInfo[0] as ICertificateInfo; diff --git a/playwright-tests/tests/0000__M.test.ts b/playwright-tests/tests/0000__M.test.ts index efb3ccaa..d1e36de6 100644 --- a/playwright-tests/tests/0000__M.test.ts +++ b/playwright-tests/tests/0000__M.test.ts @@ -858,9 +858,17 @@ async function runWorkflow(page: Page, testCase: TestCase) { await contactDetailsPage.validateURL(contactDetailsPage.issPageValue); - await contactDetailsPage.fillContactDetails(customerDetails!); - if (appointmentDetails?.alternateMobileCity) { - await contactDetailsPage.fillAlternateMobileStreetAndCity(appointmentDetails?.alternateMobileStreetAddress!, appointmentDetails?.alternateMobileCity!); + // await contactDetailsPage.fillContactDetails(customerDetails!); + // if (appointmentDetails?.alternateMobileCity) { + // await contactDetailsPage.fillAlternateMobileStreetAndCity(appointmentDetails?.alternateMobileStreetAddress!, appointmentDetails?.alternateMobileCity!); + //} + if (appointmentDetails?.serviceAddress) { + await contactDetailsPage.fillMobileServiceAddress(appointmentDetails.serviceAddress); + } else { + await contactDetailsPage.fillContactDetails(customerDetails!); + if (appointmentDetails?.alternateMobileCity) { + await contactDetailsPage.fillAlternateMobileStreetAndCity(appointmentDetails?.alternateMobileStreetAddress!, appointmentDetails?.alternateMobileCity!); + } } await contactDetailsPage.nextPage(); diff --git a/playwright-tests/tests/0001_EssentialReplaceStaticAdas.ts b/playwright-tests/tests/0001_EssentialReplaceStaticAdas.ts index 2000604a..2720f1a2 100644 --- a/playwright-tests/tests/0001_EssentialReplaceStaticAdas.ts +++ b/playwright-tests/tests/0001_EssentialReplaceStaticAdas.ts @@ -21,11 +21,10 @@ const essentialReplaceStaticAdasData: Partial = { phoneNumber: faker.helpers.fromRegExp(/[2-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]/), notes: 'Automated Test', address: { - street: "123 Test Road", - city: 'Columbus', + street: "123 Test St", + city: 'Galena', state: 'OHIO', - postalCode: '43085', - country: 'United States' + postalCode: '43021', } }, claimDetails: { diff --git a/playwright-tests/tests/0014_EssentialRepairMobile.ts b/playwright-tests/tests/0014_EssentialRepairMobile.ts index 820e1951..2488c51f 100644 --- a/playwright-tests/tests/0014_EssentialRepairMobile.ts +++ b/playwright-tests/tests/0014_EssentialRepairMobile.ts @@ -23,10 +23,10 @@ const essentialRepairMobileData: Partial = { phoneNumber: faker.helpers.fromRegExp(/[2-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]/), notes: 'Automated Test', address: { - street: '123 Test Road', + street: '7400 Safelite Way', city: 'Columbus', state: 'OHIO', - postalCode: '43016', + postalCode: '43235', country: 'United States' } }, diff --git a/playwright-tests/tests/0022_EssentialServiceableBigTruck.ts b/playwright-tests/tests/0022_EssentialServiceableBigTruck.ts index 3d4da669..0e3c1799 100644 --- a/playwright-tests/tests/0022_EssentialServiceableBigTruck.ts +++ b/playwright-tests/tests/0022_EssentialServiceableBigTruck.ts @@ -31,9 +31,9 @@ const essentialServiceableBigTruckData: Partial = { notes: 'Automated Test', address: { street: '9799 Heartland Court', - city: 'Dublin', + city: 'Columbus', state: 'OHIO', - postalCode: '43016', + postalCode: '43217', country: 'United States' } }, diff --git a/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts b/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts index baa6a433..3a954133 100644 --- a/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts +++ b/playwright-tests/tests/advanced/0001a_ReplaceInShopCredit.ts @@ -68,6 +68,7 @@ const advancedScenario0001TestCases: TestCase[] = []; for (const client of advancedClients) { const data = { ...advancedScenario0001Data }; data.clientTag = client.clientTag; + data.accountNumber = client.accountNumber; const tc = new TestCase({ name: `0001a_Advanced_Replace_Deductible_Client: "${client.accountName}"`, tags: [`@${client.clientTag}`, `@${client.accountName}`, '@Advanced', '@INSR-6847'], diff --git a/playwright-tests/tests/advanced/0003a_MobileAfterpay.ts b/playwright-tests/tests/advanced/0003a_MobileAfterpay.ts index 9ea2e07b..11ccc760 100644 --- a/playwright-tests/tests/advanced/0003a_MobileAfterpay.ts +++ b/playwright-tests/tests/advanced/0003a_MobileAfterpay.ts @@ -40,7 +40,7 @@ const advancedScenario0003Data: Partial = { { partQuestionType: PartQuestionType.WindshieldColor, isOnPage: true, - optionToSelect: 'Green Tint' + optionToSelect: '05-10 Chrysler 300c' }, { partQuestionType: PartQuestionType.PassengerRearColor,