This document aims to provide a list of things to check and test whenever you are working on a pull request — or when you are reviewing one — for Calypso.
- Run
npm test
from the calypso root to make sure all tests pass. - Test with multiple individual sites, and All My Sites. Does everything work as expected? Use the site switcher and directly via URL.
- Test scenarios where your feature intentionally doesn't work (e.g. not supported on Jetpack)
- Explicitly test with a Jetpack-powered site. Calypso features should all work with Jetpack sites unless they are strictly WordPress.com-only.
- Test different user privileges (admin, editor, author). How does your code behave?
- Your code should work well with an empty initial state. It's easy to overlook that data cached via state persistence may not be present when a user logs in for the first time, clears their browser history, or visits with a different browser. Errors can occur if you've introduced code which operates on this data without checking for its existence.
- Start a new session in private browsing mode, or run
localStorage.clear(); indexedDB.deleteDatabase( 'calypso' );
in your browser's developer tools console, then refresh the page - To disable state persistence, start Calypso with
DISABLE_FEATURES=persist-redux npm start
- Start a new session in private browsing mode, or run
- How are you communicating 'loading' and 'empty' states? See how we approach reactivity.
It's also important to keep the general WP.com commit checklist at hand (modified for Calypso):
- It must be responsive on phone, tablet, and desktop; interactions must be fluid on a touch device. Responsive goes both ways, be sure to test with the
is-fluid-width
feature flag enabled. An easy way to do that is to addis-fluid-width
as a CSS class to thehtml
tag using the web-inspector. - Test in IE11+, Chrome, Firefox, Mac/Win on the desktop.
- Collect relevant and useful stats/events. What questions do they answer? How do you expect them to change over time?
- All strings must be fully translatable (without concatenation, handling plurals), and you should be aware of how long strings affect layout.
- Any visual assets involved must be HiDPI optimized and/or scalable.
- Everything should be visually consistent both "internally", and across platforms.