describe("Complete App", () => { beforeEach(() => cy.visit("/")); it("displays the title", () => { cy.get("h1").should("have.text", "Todo List"); }); it("displays the create task form", () => { cy.get("form").should("have.attr", { "method": "POST", "action": "/task/create", }); cy.get("input[name=title]").should("be.visible"); cy.get("input[name=deadline]").should("be.visible"); cy.get("textarea[name=description]").should("be.visible"); cy.get("button[type=submit]").should("be.visible"); }); it("allows the user to create a new task", () => { const newTask = { title: "New task", deadline: "2024-01-01", description: "A new task" }; cy.get("input[name=title]").type(newTask.title); cy.get("input[name=deadline]").type(newTask.deadline); cy.get("textarea[name=description]").type(newTask.description); cy.get("button[type=submit]").click(); cy.get("h2").should("have.text", "Tasks"); cy.get("li").should("have.length", 1); cy.get("li:first").should("contain.text", newTask.title); cy.get("li:first").should("contain.text", newTask.deadline); cy.get("li:first").should("contain.text", newTask.description); }); it("allows the user to mark a task as complete", () => { cy.get("input[type=checkbox]").should("be.visible"); cy.get("input[type=checkbox]").click(); cy.get("input[type=checkbox]").should("be.checked"); }); it("allows the user to delete a task", () => { cy.get("li:first").should("contain.text", "New task"); cy.get("li:first").find("button.delete-task").click(); cy.get("li:first").find("button.delete-task").should("have.text", "Delete"); cy.get("li:first").should("contain.text", "Task deleted"); cy.get("li").should("have.length", 0); }); });