...

/

Solution Review: Write a Test and Custom Command

Solution Review: Write a Test and Custom Command

This review provides an explanation to solve the “Write a Test and Custom Command” challenge.

We'll cover the following...

Solution

Note: You can see the Cypress UI better by opening the link next to Your app can be found at:

Cypress.Commands.add("createPost", ({ title, text } = {}) => {
cy.intercept("POST", "**/api/articles").as("create-article-request");

cy.visit("/editor");
cy.findByPlaceholderText("Article Title").type(title)
cy.findByPlaceholderText("Write your article (in markdown)").type(text)
cy.findByText("Publish Article").click()

// ... and AJAX call waiting
cy.wait("@create-article-request").should((interception) => {

expect(interception.request.body).deep.equal({
article: {
title,
body: text,
description: "",
tagList: []
},
});

expect(interception.response.statusCode).to.equal(200);

cy.wrap(interception.response.body)
.should("have.property", "article")
.and(article => expect(article).to.have.property("slug").and.to.be.a("string").and.not.to.be.empty)
.and("deep.include", { title, body: text });
});
});

context("Login flow", () => {
it("When the user is not registered, the server should respond with a 422 status", () => {
cy.signupV3();
cy.createPost({title: "title", text: "text"});
});
});

Explanation

Let’s learn the code line by line to understand how the command and tests work.

createPost Command

...