@ministryofjustice/hmpps-probation-integration-e2e-tests 1.119.0 → 1.120.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ministryofjustice/hmpps-probation-integration-e2e-tests",
3
3
  "description": "Playwright end to end tests for hmpps-probation-integration-services.",
4
- "version": "1.119.0",
4
+ "version": "1.120.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ministryofjustice/hmpps-probation-integration-e2e-tests#readme",
7
7
  "bugs": {
@@ -122,6 +122,7 @@
122
122
  "./steps/delius/logout": "./steps/delius/logout.mjs",
123
123
  "./steps/delius/oasys-rsr-score/verify-rsr-score": "./steps/delius/oasys-rsr-score/verify-rsr-score.mjs",
124
124
  "./steps/delius/offender/create-offender": "./steps/delius/offender/create-offender.mjs",
125
+ "./steps/delius/offender/delete-offender": "./steps/delius/offender/delete-offender.mjs",
125
126
  "./steps/delius/offender/find-offender": "./steps/delius/offender/find-offender.mjs",
126
127
  "./steps/delius/offender/update-offender": "./steps/delius/offender/update-offender.mjs",
127
128
  "./steps/delius/registration/create-registration": "./steps/delius/registration/create-registration.mjs",
@@ -140,6 +141,7 @@
140
141
  "./steps/delius/utils/refresh": "./steps/delius/utils/refresh.mjs",
141
142
  "./steps/dps/caseload": "./steps/dps/caseload.mjs",
142
143
  "./steps/dps/login": "./steps/dps/login.mjs",
144
+ "./steps/esupervision/check-in": "./steps/esupervision/check-in.mjs",
143
145
  "./steps/hdc-licences/login": "./steps/hdc-licences/login.mjs",
144
146
  "./steps/hmpps-auth/login": "./steps/hmpps-auth/login.mjs",
145
147
  "./steps/k8s/k8s-utils": "./steps/k8s/k8s-utils.mjs",
@@ -0,0 +1,6 @@
1
+ import { Page } from "@playwright/test";
2
+
3
+ //#region steps/delius/offender/delete-offender.d.ts
4
+ declare function deleteOffender(page: Page, crn: string): Promise<void>;
5
+ //#endregion
6
+ export { deleteOffender };
@@ -0,0 +1,15 @@
1
+ import { findOffenderByCRN } from "./find-offender.mjs";
2
+
3
+ //#region steps/delius/offender/delete-offender.ts
4
+ async function deleteOffender(page, crn) {
5
+ await findOffenderByCRN(page, crn);
6
+ await page.getByRole("link", { name: "Event List" }).click();
7
+ await page.getByRole("link", { name: "delete" }).click();
8
+ await page.getByRole("button", { name: "Confirm" }).click();
9
+ await page.getByRole("link", { name: "Personal Details" }).click();
10
+ await page.getByRole("button", { name: "Delete" }).click();
11
+ await page.getByRole("button", { name: "Confirm" }).click();
12
+ }
13
+
14
+ //#endregion
15
+ export { deleteOffender };
@@ -0,0 +1,9 @@
1
+ import { Person } from "../delius/utils/person.mjs";
2
+ import { Page } from "@playwright/test";
3
+
4
+ //#region steps/esupervision/check-in.d.ts
5
+ declare function registerCase(page: Page, person: Person, crn: string): Promise<string>;
6
+ declare function createCheckin(page: Page, uuid: string, person: Person): Promise<void>;
7
+ declare function reviewCheckin(page: Page, person: Person): Promise<void>;
8
+ //#endregion
9
+ export { createCheckin, registerCase, reviewCheckin };
@@ -0,0 +1,70 @@
1
+ import { DeliusDateFormatter } from "../delius/utils/date-time.mjs";
2
+ import { login } from "../hmpps-auth/login.mjs";
3
+ import { expect } from "@playwright/test";
4
+ import { DateTime } from "luxon";
5
+
6
+ //#region steps/esupervision/check-in.ts
7
+ async function registerCase(page, person, crn) {
8
+ await login(page);
9
+ await page.goto(process.env.ESUPERVISION_URL);
10
+ await page.getByRole("button", { name: "Add person" }).click();
11
+ await enterPersonalDetails(page, person);
12
+ await page.getByRole("textbox", { name: /CRN/ }).fill(crn);
13
+ await page.getByRole("button", { name: "Continue" }).click();
14
+ await page.getByRole("link", { name: "Upload photo instead" }).click();
15
+ await page.locator("#photoUpload-input").setInputFiles("files/mock-person-photo.png");
16
+ await page.getByRole("button", { name: "Upload photo" }).click();
17
+ await page.getByRole("link", { name: "Yes, continue" }).click();
18
+ await page.getByRole("radio", { name: "Email" }).check();
19
+ await page.getByRole("button", { name: "Continue" }).click();
20
+ await page.locator("#email").fill(`simulate-delivered+${person.firstName}${person.lastName}@notifications.service.gov.uk`);
21
+ await page.getByRole("button", { name: "Continue" }).click();
22
+ await page.locator("#startDate").fill(DeliusDateFormatter(/* @__PURE__ */ new Date()));
23
+ await page.getByRole("radio", { name: "Every 8 weeks" }).check();
24
+ await page.getByRole("button", { name: "Continue" }).click();
25
+ await page.getByRole("button", { name: "Confirm and add person" }).click();
26
+ await page.getByRole("link", { name: "Awaiting check in" }).click();
27
+ const cell = page.getByRole("cell", {
28
+ name: person.firstName + " " + person.lastName,
29
+ exact: true
30
+ });
31
+ return await page.getByRole("row").filter({ has: cell }).getAttribute("data-checkin-uuid");
32
+ }
33
+ async function createCheckin(page, uuid, person) {
34
+ await page.goto(`${process.env.ESUPERVISION_URL}/submission/${uuid}`);
35
+ await page.getByRole("button", { name: "Start now" }).click();
36
+ await enterPersonalDetails(page, person);
37
+ await page.getByRole("button", { name: "Continue" }).click();
38
+ await page.getByRole("radio", { name: "Very well" }).check();
39
+ await page.getByRole("button", { name: "Continue" }).click();
40
+ await page.getByRole("checkbox", { name: "No, I do not need help" }).check();
41
+ await page.getByRole("button", { name: "Continue" }).click();
42
+ await page.getByRole("radio", { name: "No" }).check();
43
+ await page.getByRole("button", { name: "Continue" }).click();
44
+ await page.getByRole("button", { name: "Continue" }).click();
45
+ await page.getByRole("button", { name: "Start recording" }).click();
46
+ await page.getByRole("button", { name: "Submit video anyway" }).click();
47
+ await page.getByRole("checkbox", { name: /I confirm/ }).check();
48
+ await page.getByRole("button", { name: "Complete check in" }).click();
49
+ await expect(page.locator("h1")).toContainText("Check in completed");
50
+ }
51
+ async function enterPersonalDetails(page, person) {
52
+ await page.getByRole("textbox", { name: "First name" }).fill(person.firstName);
53
+ await page.getByRole("textbox", { name: "Last name" }).fill(person.lastName);
54
+ const dob = DateTime.fromJSDate(person.dob);
55
+ await page.getByRole("textbox", { name: "Day" }).fill(dob.day.toString());
56
+ await page.getByRole("textbox", { name: "Month" }).fill(dob.month.toString());
57
+ await page.getByRole("textbox", { name: "Year" }).fill(dob.year.toString());
58
+ }
59
+ async function reviewCheckin(page, person) {
60
+ await page.goto(process.env.ESUPERVISION_URL);
61
+ await page.getByRole("row").filter({ has: page.getByRole("cell", {
62
+ name: person.firstName + " " + person.lastName,
63
+ exact: true
64
+ }) }).getByRole("link", { name: /Review/ }).click();
65
+ await page.getByRole("radio", { name: "Yes" }).check();
66
+ await page.getByRole("button", { name: "Mark as reviewed" }).click();
67
+ }
68
+
69
+ //#endregion
70
+ export { createCheckin, registerCase, reviewCheckin };