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.