diff --git a/client/cypress/e2e/intake/intake-checklist.cy.js b/client/cypress/e2e/intake/intake-checklist.cy.js
new file mode 100644
index 000000000..426d44d29
--- /dev/null
+++ b/client/cypress/e2e/intake/intake-checklist.cy.js
@@ -0,0 +1,161 @@
+describe(
+ "Adding job to checklist",
+ {
+ defaultCommandTimeout: 5000,
+ },
+ () => {
+ beforeEach(() => {
+ cy.visit("/manage");
+
+ cy.get("body").then(($body) => {
+ if ($body.text().includes("Login")) {
+ // Log in
+ cy.get('[data-cy="username"]').type("john@imex.dev");
+ cy.get('[data-cy="password"]').type("john123");
+ cy.get('[data-cy="sign-in-button"]').click();
+ }
+
+ cy.get(".ant-table-tbody")
+ .should("be.visible")
+ .find("tr")
+ .should("not.have.class", "ant-table-placeholder");
+ });
+ });
+
+ it("adds checklists to the job and set the job to production", () => {
+ // Go to a scheduled job
+ cy.get(".ant-table-row")
+ .contains("Scheduled")
+ .first()
+ .siblings()
+ .find("a")
+ .first()
+ .click();
+ // Click actions button
+ cy.get('[data-cy="job-actions-button"]').click();
+ // Go to intake
+ cy.get('[data-cy="job-intake-button"]').should("not.be.disabled").click();
+ cy.url().should("include", "/intake");
+ // Fill out the form
+ cy.get('[data-cy="checklist-form"]').should("be.visible");
+ // Check if form items are not disabled
+ cy.get(".ant-form-item").should("not.be.disabled");
+ // Checks all the required checklist item
+ cy.get('[data-cy="checklist-item-checkbox"]').each((el) => {
+ cy.wrap(el).check().as("checkbox");
+ cy.get("@checkbox").should("be.checked");
+ });
+ // Check if `Add Job to Production` is switched to on
+ cy.get('[data-cy="add-to-production-switch"]').should(
+ "have.attr",
+ "aria-checked",
+ "true"
+ );
+ // Select dates for completion and delivery
+ cy.get("#scheduled_completion").find(".ant-picker-input").first().click();
+ cy.get('[title="2023-06-20"]').should("be.visible").click();
+ // Add time selection
+ cy.get("#scheduled_delivery").find(".ant-picker-input").first().click();
+ cy.get('[title="2023-06-20"]')
+ .should("be.visible")
+ .click({ multiple: true, force: true });
+ // Add time selection
+ // Add note
+ cy.get('[data-cy="checklist-production-note"]').type("automated testing");
+ // Submit the form
+ cy.get('[data-cy="checklist-submit-button"]').click();
+
+ // Job checklist completed.
+ cy.url().should("include", "/manage/jobs");
+ cy.contains("In Production");
+ });
+
+ it("renders and check the checklist correctly", () => {
+ // Go to a job in production
+ cy.get(".ant-table-row")
+ .contains("Arrived")
+ .first()
+ .siblings()
+ .find("a")
+ .first()
+ .click();
+ // Click the actions button
+ cy.get('[data-cy="job-actions-button"]').click();
+ // Go to checklists
+ cy.get('[data-cy="job-checklist"]').should("not.be.disabled").click();
+ // Check if the checklist renders in the page
+ cy.get('[data-cy="intake-checklist"]')
+ .should("be.visible")
+ .find("input")
+ .should("be.disabled");
+ });
+
+ it("completes delivery and updates the status", () => {
+ // Go to a job in production
+ cy.get(".ant-table-row")
+ .contains("Arrived")
+ .first()
+ .siblings()
+ .find("a")
+ .first()
+ .click();
+ // Click the actions button
+ cy.get('[data-cy="job-actions-button"]').click();
+ // Go to checklists
+ cy.get('[data-cy="job-deliver"]').should("not.be.disabled").click();
+ // Check if the checklist renders in the page
+ cy.get('[data-cy="checklist-form"]')
+ .should("be.visible")
+ .find("input")
+ .should("not.be.disabled");
+
+ cy.get('[data-cy="checklist-item-checkbox"]').each((el) => {
+ cy.wrap(el).check().as("checkbox");
+ cy.get("@checkbox").should("be.checked");
+ });
+
+ // Select dates for completion and delivery
+ cy.get("#actual_completion").find(".ant-picker-input").first().click();
+ cy.get('[title="2023-06-20"]').should("be.visible").click();
+ // Add time selection
+ cy.get("#actual_delivery").find(".ant-picker-input").first().click();
+ cy.get('[title="2023-06-20"]')
+ .should("be.visible")
+ .click({ multiple: true, force: true });
+ // Add time selection
+
+ cy.get('[data-cy="remove-from-production"]').should(
+ "have.attr",
+ "aria-checked",
+ "true"
+ );
+ // Submit the form
+ cy.get('[data-cy="checklist-submit-button"]').click();
+ // Job checklist completed.
+ cy.url().should("include", "/manage/jobs");
+ cy.contains("Delivered");
+
+ cy.get('[data-cy="job-actions-button"]').click();
+ // Go to checklists
+ cy.get('[data-cy="job-checklist"]').should("not.be.disabled").click();
+
+ cy.get('[data-cy="intake-checklist"]')
+ .should("be.visible")
+ .find("input")
+ .should("be.disabled");
+
+ cy.get('[data-cy="deliver-checklist"]')
+ .should("be.visible")
+ .find("input")
+ .should("be.disabled");
+ });
+
+ // it("speedprint the checklists", () => {
+ // // FIXME print button is not working
+ // // Go to a job in production
+ // // Click the actions button
+ // // Go to checklists
+ // // Print all the necessary documents for the job
+ // });
+ }
+);
diff --git a/client/src/components/config-form-components/checkbox/checkbox.component.jsx b/client/src/components/config-form-components/checkbox/checkbox.component.jsx
index cfc8896c3..11be2741a 100644
--- a/client/src/components/config-form-components/checkbox/checkbox.component.jsx
+++ b/client/src/components/config-form-components/checkbox/checkbox.component.jsx
@@ -16,7 +16,7 @@ export default function JobIntakeFormCheckboxComponent({ formItem, readOnly }) {
},
]}
>
-
+
);
}
diff --git a/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx b/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx
index 956cb4761..3f40c2acf 100644
--- a/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx
+++ b/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx
@@ -199,6 +199,7 @@ export function JobChecklistForm({
extra={
!readOnly && (