Skip to content

Commit

Permalink
DTSCCI-1278 Create Page Objects and Content for Acknowledge Claim (#5176
Browse files Browse the repository at this point in the history
)

* DTSCCI-1100 Create Page Objects and Content for Acknowledge Claim

* Unspec 1v2 SS fast

* Unspec 2v1 fast and small track

* Unspec 1v2 fast and small track

* update page objects to make them match others

* fix lint issue

---------

Co-authored-by: kdaHMCTS <[email protected]>
Co-authored-by: kdaHMCTS <[email protected]>
  • Loading branch information
3 people authored Jan 30, 2025
1 parent 45dc41e commit cb45683
Show file tree
Hide file tree
Showing 29 changed files with 512 additions and 183 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import BasePageFactory from '../../../../base/base-page-factory';
import partys from '../../../../constants/partys';
import DateFragment from '../../fragments/date/date-fragment';
import SolicitorReferenceFragment from '../../fragments/solicitor-reference/solicitor-reference-fragment';
import ConfirmAcknowledgeClaimPage from './unspec/confirm-acknowledge-claim/confirm-acknowledge-claim-page';
import ConfirmNameAndAddressPage from './unspec/confirm-name-and-address/confirm-name-and-address-page';
import ResponseIntention1v2SSPage from './unspec/response-intention/response-intention-1v2SS-page';
import ResponseIntention2v1Page from './unspec/response-intention/response-intention-2v1-page';
import ResponseIntentionPage from './unspec/response-intention/response-intention-page';
import SolicitorReferencesAcknowledgeClaimPage from './unspec/solicitor-references-acknowledge-claim/solicitor-references-acknowledge-claim-page';
import SubmitAcknowledgeClaimPage from './unspec/submit-acknowledge-claim/submit-acknowledge-claim-page';

export default class AcknowledgeClaimPageFactory extends BasePageFactory {
get confirmNameAndAddressPage() {
const dateFragment = new DateFragment(this.page);
return new ConfirmNameAndAddressPage(this.page, dateFragment);
}

get responseIntensionDefendant1Page() {
return new ResponseIntentionPage(this.page, partys.DEFENDANT_1);
}

get responseIntensionDefendant2Page() {
return new ResponseIntentionPage(this.page, partys.DEFENDANT_2);
}

get responseIntention2v1Page() {
return new ResponseIntention2v1Page(this.page);
}

get responseIntention1v2SSPage() {
return new ResponseIntention1v2SSPage(this.page);
}

get solicitorReferencesAcknowledgeClaimDefendant1Page() {
const solicitorReferenceFragment = new SolicitorReferenceFragment(
this.page,
partys.DEFENDANT_1,
partys.DEFENDANT_SOLICITOR_1,
);
return new SolicitorReferencesAcknowledgeClaimPage(
this.page,
solicitorReferenceFragment,
partys.DEFENDANT_1,
);
}

get solicitorReferencesAcknowledgeClaimDefendant2Page() {
const solicitorReferenceFragment = new SolicitorReferenceFragment(
this.page,
partys.DEFENDANT_2,
partys.DEFENDANT_SOLICITOR_2,
);
return new SolicitorReferencesAcknowledgeClaimPage(
this.page,
solicitorReferenceFragment,
partys.DEFENDANT_2,
);
}

get submitAcknowledgeClaimPage() {
return new SubmitAcknowledgeClaimPage(this.page);
}

get confirmAcknowledgeClaimPage() {
return new ConfirmAcknowledgeClaimPage(this.page);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const confirmationHeading = 'You have acknowledged the claim';
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import BasePage from '../../../../../../base/base-page.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';
import CCDCaseData from '../../../../../../models/ccd/ccd-case-data.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import { confirmationHeading } from './confirm-acknowledge-claim-content.ts';
import DateHelper from '../../../../../../helpers/date-helper.ts';

@AllMethodsStep()
export default class ConfirmAcknowledgeClaimPage extends ExuiPage(BasePage) {
async verifyContent(ccdCaseData: CCDCaseData) {
const responseDeadline = DateHelper.addToDate(ccdCaseData.respondent1ResponseDeadline, {
days: 14,
addDayAfter4pm: true,
workingDay: true,
});
await super.runVerifications([
super.verifyHeadings(ccdCaseData),
super.expectHeading(confirmationHeading),
super.expectSubheading(ccdCaseData.legacyCaseReference),
super.expectText(DateHelper.formatDateToString(responseDeadline)),
]);
}

async submit() {
await super.retryClickSubmit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import BasePage from '../../../../../../base/base-page.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';
import CCDCaseData from '../../../../../../models/ccd/ccd-case-data.ts';
import DateFragment from '../../../../fragments/date/date-fragment.ts';
import { Page } from 'playwright-core';
import { ClaimantDefendantPartyType } from '../../../../../../models/claimant-defendant-party-types.ts';
import partys from '../../../../../../constants/partys.ts';
import { inputs, heading } from './confirm-name-and-address-content.ts';

@AllMethodsStep()
export default class ConfirmNameAndAddress1v2Page extends ExuiPage(BasePage) {
private dateFragment: DateFragment;

constructor(page: Page, dateFragment: DateFragment) {
super(page);
this.dateFragment = dateFragment;
}

async verifyContent(ccdCaseData: CCDCaseData) {
super.runVerifications([
super.expectHeading(heading),
super.expectHeading(ccdCaseData.id),
super.expectHeading(ccdCaseData.caseNamePublic),
this.dateFragment.verifyContent(),
super.expectText(inputs.dateOfBirth.label, { count: 2 }),
]);
}

async enterDefendant1DateOfBirth(partyType: ClaimantDefendantPartyType) {
await this.dateFragment.enterDateOfBirth(partys.DEFENDANT_1, partyType, 0);
}

async enterDefendant2DateOfBirth(partyType: ClaimantDefendantPartyType) {
await this.dateFragment.enterDateOfBirth(partys.DEFENDANT_2, partyType, 1);
}

async submit() {
await super.retryClickSubmit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export const heading = 'Confirm defendant details';

export const inputs = {
dateOfBirth: {
label: 'Date of birth (Optional)',
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import BasePage from '../../../../../../base/base-page.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';
import CCDCaseData from '../../../../../../models/ccd/ccd-case-data.ts';
import DateFragment from '../../../../fragments/date/date-fragment.ts';
import { Page } from 'playwright-core';
import { ClaimantDefendantPartyType } from '../../../../../../models/claimant-defendant-party-types.ts';
import partys from '../../../../../../constants/partys.ts';
import { inputs, heading } from './confirm-name-and-address-content.ts';

@AllMethodsStep()
export default class ConfirmNameAndAddressPage extends ExuiPage(BasePage) {
private dateFragment: DateFragment;

constructor(page: Page, dateFragment: DateFragment) {
super(page);
this.dateFragment = dateFragment;
}

async verifyContent(ccdCaseData: CCDCaseData) {
super.runVerifications([
super.expectHeading(heading),
super.expectHeading(ccdCaseData.id),
super.expectHeading(ccdCaseData.caseNamePublic),
super.expectText(inputs.dateOfBirth.label, { index: 0 }),
]);
}

//Need to decide how I am going to pass partyType Data, could be pass by ccdCaseData or store a reference in test data.
async enterDefendantDateOfBirth(partyType: ClaimantDefendantPartyType) {
await this.dateFragment.enterDateOfBirth(partys.DEFENDANT_1, partyType);
}

async submit() {
await super.retryClickSubmit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import BasePage from '../../../../../../base/base-page.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';
import { radioButtons } from './response-intention-content.ts';
import CCDCaseData from '../../../../../../models/ccd/ccd-case-data.ts';
import partys from '../../../../../../constants/partys.ts';

@AllMethodsStep()
export default class ResponseIntention1v2SSPage extends ExuiPage(BasePage) {
async verifyContent(ccdCaseData: CCDCaseData) {
super.runVerifications([
super.verifyHeadings(ccdCaseData),
super.expectLabel(radioButtons.fullDefence.label, { count: 2 }),
super.expectLabel(radioButtons.partAdmit.label, { count: 2 }),
super.expectLabel(radioButtons.contestJurisdiction.label, { count: 2 }),
]);
}

async selectRejectAll() {
await super.clickBySelector(
radioButtons.fullDefence.selector(partys.DEFENDANT_1, partys.CLAIMANT_1),
);
await super.clickBySelector(
radioButtons.fullDefence.selector(partys.DEFENDANT_2, partys.CLAIMANT_1),
);
}

async submit() {
await super.retryClickSubmit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import BasePage from '../../../../../../base/base-page.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';
import { radioButtons } from './response-intention-content.ts';
import CCDCaseData from '../../../../../../models/ccd/ccd-case-data.ts';
import partys from '../../../../../../constants/partys.ts';

@AllMethodsStep()
export default class ResponseIntention2v1Page extends ExuiPage(BasePage) {
async verifyContent(ccdCaseData: CCDCaseData) {
super.runVerifications([
super.verifyHeadings(ccdCaseData),
super.expectLabel(radioButtons.fullDefence.label, { count: 2 }),
super.expectLabel(radioButtons.partAdmit.label, { count: 2 }),
super.expectLabel(radioButtons.contestJurisdiction.label, { count: 2 }),
]);
}

async selectRejectAll() {
await super.clickBySelector(
radioButtons.fullDefence.selector(partys.DEFENDANT_1, partys.CLAIMANT_1),
);
await super.clickBySelector(
radioButtons.fullDefence.selector(partys.DEFENDANT_1, partys.CLAIMANT_2),
);
}

async submit() {
await super.retryClickSubmit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Party } from '../../../../../../models/partys';

export const radioButtons = {
fullDefence: {
label: 'Defend all of the claim',
selector: (defendantParty: Party, claimantParty: Party) =>
`#${defendantParty.oldKey}ClaimResponseIntentionType${claimantParty.number === 2 ? 'ToApplicant2' : ''}-FULL_DEFENCE`,
},
partAdmit: {
label: 'Defend part of the claim',
selector: (defendantParty: Party, claimantParty: Party) =>
`#${defendantParty.oldKey}ClaimResponseIntentionType${claimantParty.number === 2 ? 'ToApplicant2' : ''}-PART_DEFENCE`,
},
contestJurisdiction: {
label: 'Contest jurisdiction',
selector: (defendantParty: Party, claimantParty: Party) =>
`#${defendantParty.oldKey}ClaimResponseIntentionType${claimantParty.number === 2 ? 'ToApplicant2' : ''}-CONTEST_JURISDICTION`,
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import BasePage from '../../../../../../base/base-page.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';
import { radioButtons } from './response-intention-content.ts';
import CCDCaseData from '../../../../../../models/ccd/ccd-case-data.ts';
import { Party } from '../../../../../../models/partys.ts';
import { Page } from 'playwright-core';
import partys from '../../../../../../constants/partys.ts';
import StringHelper from '../../../../../../helpers/string-helper.ts';

@AllMethodsStep()
export default class ResponseIntentionPage extends ExuiPage(BasePage) {
private defendantParty: Party;

constructor(page: Page, defendantParty: Party) {
super(page);
this.defendantParty = defendantParty;
}

async verifyContent(ccdCaseData: CCDCaseData) {
super.runVerifications(
[
super.verifyHeadings(ccdCaseData),
super.expectLabel(radioButtons.fullDefence.label),
super.expectLabel(radioButtons.partAdmit.label),
super.expectLabel(radioButtons.contestJurisdiction.label),
],
{ axePageInsertName: StringHelper.capitalise(this.defendantParty.key) },
);
}

async selectRejectAll() {
await super.clickBySelector(
radioButtons.fullDefence.selector(this.defendantParty, partys.CLAIMANT_1),
);
}

async submit() {
await super.retryClickSubmit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const subheadings = {
yourFileReference: 'Your File Reference',
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import BasePage from '../../../../../../base/base-page.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import { subheadings } from './solicitor-references-acknowledge-claim-content.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';
import SolicitorReferenceFragment from '../../../../fragments/solicitor-reference/solicitor-reference-fragment.ts';
import { Page } from 'playwright-core';
import { Party } from '../../../../../../models/partys.ts';
import StringHelper from '../../../../../../helpers/string-helper.ts';

@AllMethodsStep()
export default class SolicitorReferencesAcknowledgeClaimPage extends ExuiPage(BasePage) {
private defendantParty: Party;
private defendantSolicitorReferenceFragment: SolicitorReferenceFragment;

constructor(
page: Page,
defendantSolicitorReferenceFragment: SolicitorReferenceFragment,
defendantParty: Party,
) {
super(page);
this.defendantParty = defendantParty;
this.defendantSolicitorReferenceFragment = defendantSolicitorReferenceFragment;
}

async verifyContent() {
await super.runVerifications(
[
super.verifyHeadings(),
super.expectSubheading(subheadings.yourFileReference),
this.defendantSolicitorReferenceFragment.verifyContent(),
],
{ axePageInsertName: StringHelper.capitalise(this.defendantParty.key) },
);
}

async enterReference() {
await this.defendantSolicitorReferenceFragment.enterReference();
}

async submit() {
await super.clickSubmit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import BasePage from '../../../../../../base/base-page.ts';
import { AllMethodsStep } from '../../../../../../decorators/test-steps.ts';
import CCDCaseData from '../../../../../../models/ccd/ccd-case-data.ts';
import ExuiPage from '../../../../exui-page/exui-page.ts';

@AllMethodsStep()
export default class SubmitAcknowledgeClaimPage extends ExuiPage(BasePage) {
async verifyContent(ccdCaseData: CCDCaseData) {
await super.runVerifications([super.verifyHeadings(ccdCaseData)]);
}

async submit() {
await super.retryClickSubmit();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export default class ConfirmInformAgreedExtensionDateSpecPage extends ExuiPage(B
const date = DateHelper.addToDate(ccdCaseData.respondent1ResponseDeadline, {
days: 28,
workingDay: true,
addDayAfter4pm: true,
});
await super.runVerifications([
super.verifyHeadings(ccdCaseData),
Expand Down
Loading

0 comments on commit cb45683

Please sign in to comment.