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.