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.