Skip to main content

Testing and Quality

Integration Testing (Required)

  • Frontend: Cypress integration tests are required.
  • Backend: Jest integration tests are required.

Example (Cypress):

describe("Login", () => {
it("logs in with valid credentials", () => {
cy.visit("/login");
cy.get("input[name=email]").type("user@example.com");
cy.get("input[name=password]").type("password123");
cy.get("button[type=submit]").click();
cy.url().should("include", "/dashboard");
});
});

Unit Testing

  • Frontend unit tests are encouraged but not required.
  • Backend unit tests are expected for complex services or functions.

Example (Jest):

describe("calculateDiscount", () => {
it("returns the correct percentage", () => {
expect(calculateDiscount({ price: 100, percent: 10 })).toBe(10);
});
});

Code Quality Heuristics

  • Avoid nested conditionals when early returns can solve it.
  • Keep methods short; avoid very long classes or functions.
  • Keep log messages consistent across the codebase.
  • Avoid repeated code blocks; extract common logic.
  • Avoid unnecessary comments that get out of date.

Maintenance

Keep dependencies updated.