Testing Standards

Document: 11-testing-standards.md
Version: 1.0.0


Purpose

This document defines the testing standards followed across all Rundown projects.

Testing ensures that applications remain reliable, maintainable, and production-ready. Every feature should be verified before deployment to minimize regressions and improve overall software quality.

The objective of testing is to increase confidence in the application, not simply to increase test coverage.


Testing Philosophy

Testing should focus on validating business-critical functionality.

Not every line of code requires automated testing. Instead, testing efforts should prioritize features that have the greatest impact on users and business operations.

Testing should be practical, maintainable, and proportionate to the complexity of the project.


Testing Levels

Manual Testing

Manual testing is required for every project.

Developers should verify:

Every feature should be tested manually before opening a Pull Request.


Automated Testing

Automated tests should be introduced where they provide long-term value.

Priority should be given to:

Simple presentational components do not necessarily require automated tests.


Browser Testing

Every project should be tested on modern browsers.

Minimum supported browsers:

If project requirements specify additional browser support, those requirements take precedence.


Responsive Testing

Applications should be verified across common viewport sizes.

Minimum testing:

Layouts should remain functional without horizontal scrolling or overlapping content.


CMS Testing

Projects using Payload CMS should verify:

Changes made through the CMS should display correctly on the frontend.


Form Testing

Every form should be verified for:

Forms should fail gracefully when external services are unavailable.


Performance Testing

Before deployment, verify:

Performance regressions should be investigated before release.


Accessibility Testing

Every project should include basic accessibility verification.

Minimum checks:

Accessibility should be considered throughout development rather than added at the end.


SEO Testing

Verify:


Deployment Verification

Before deployment, confirm:


Regression Testing

Whenever an existing feature is modified, verify that related functionality continues to work correctly.

Regression testing should focus on areas affected by the change.


Bug Reporting

Every bug report should include:

Clear bug reports reduce debugging time and improve communication.


Engineering Decision

Testing Strategy

Status: Accepted

Decision

Rundown adopts a practical testing strategy that combines manual verification with targeted automated testing.

Reasoning

Most Rundown projects are marketing websites, CMS-driven websites, and ecommerce platforms.

A balanced approach provides strong reliability while avoiding unnecessary maintenance overhead associated with excessive automated testing.

Automated tests should focus on functionality that is difficult to verify manually or likely to regress over time.


Pre-Deployment Checklist

Before deploying to production, verify:


Summary

Testing is an essential part of the development process and should be integrated throughout the project lifecycle.

The goal is to deliver reliable, maintainable software while balancing engineering effort with project complexity.



---

## Review

I think **Phase 2 is now complete.**

And before we jump into Phase 3, I want to pause—not to redesign anything, but to review what we've built.

We've written these documents in the order a new developer would naturally learn them:

1. Set up your environment.
2. Understand the project structure.
3. Learn the Git workflow.
4. Follow the development workflow.
5. Write code to our standards.
6. Follow naming conventions.
7. Document your work.
8. Test before shipping.

Looking back, I think that's a coherent onboarding path. My only suggestion before starting Phase 3 would be to spend one session creating the **`glossary.md`**. It will make the architecture documents much cleaner because we can reference shared terms instead of redefining them repeatedly.

After the glossary, we can move into **Phase 3 – Architecture**, where we'll start documenting Payload CMS, databases, storage, authentication, and the rest of the technical architecture.