Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experiment: Running tests with Bun #84242

Closed
wants to merge 3 commits into from
Closed

Experiment: Running tests with Bun #84242

wants to merge 3 commits into from

Conversation

vindl
Copy link
Member

@vindl vindl commented Nov 16, 2023

Proposed Changes

Runs part of the tests in the codebase that contain .test. in their file name with Bun. The rest can be handled with the existing system and Jest. Since a lot of the test files produce errors due to limited Bun support or adaptations that need to be added to port them, we can use this naming scheme for gradual migration:

  1. Pick a test file and add .test. to its name.
  2. Check if it fails when running with Bun.
  3. Investigate and fix it if possible.

Here are some sample results for a subset of files where it works without modifications:

Screenshot 2023-11-16 at 3 54 31β€―PM

Comparison

Here is the comparison on a subset of tests in client that contain .test.js in their filename. In this particular sample Bun is over 5 times faster.

Jest

Screenshot 2023-11-16 at 4 28 35β€―PM

Bun

Screenshot 2023-11-16 at 4 30 09β€―PM

Remaining test files

Here is a list of files that need to be renamed and fixed in some cases to port them to Bun. You can read more about the current Bun limitations that might prevent us from migrating all of the existing Calypso tests in this post: pdt2If-Zp-p2

List of 1060 files
  • apps/editing-toolkit/editing-toolkit-plugin/wpcom-block-editor-nux/src/test/store.js
  • apps/odyssey-stats/src/lib/test/create-odyssey-config.js
  • apps/wpcom-block-editor/src/wpcom/features/test/redirect-onboarding-user-after-publishing-post.js
  • build-tools/webpack/test/sections-loader.js
  • client/blocks/daily-post-button/test/helper.js
  • client/blocks/follow-button/test/button.js
  • client/blocks/image-editor/test/utils.js
  • client/blocks/inline-help/test/admin-sections.js
  • client/blocks/jetpack-benefits/test/feature-checks.js
  • client/blocks/reader-author-link/test/index.js
  • client/components/backup-storage-space/test/hooks.js
  • client/components/backup-storage-space/test/storage-usage-levels.js
  • client/components/bulk-select/test/index.js
  • client/components/button-group/test/index.js
  • client/components/community-translator/test/utils.js
  • client/components/d3-base/test/index.js
  • client/components/data/media-list-data/test/utils.js
  • client/components/data/query-jetpack-scan-history/test/index.js
  • client/components/data/query-jetpack-scan/test/index.js
  • client/components/date-range/test/index.js
  • client/components/domains/contact-details-form-fields/custom-form-fieldsets/test/eu-address-fieldset.js
  • client/components/domains/contact-details-form-fields/custom-form-fieldsets/test/region-address-fieldsets.js
  • client/components/domains/contact-details-form-fields/custom-form-fieldsets/test/uk-address-fieldset.js
  • client/components/domains/contact-details-form-fields/custom-form-fieldsets/test/us-address-fieldset.js
  • client/components/domains/contact-details-form-fields/test/index.js
  • client/components/domains/domain-suggestion/test/index.js
  • client/components/domains/domain-upsell-callout/test/index.js
  • client/components/domains/register-domain-step/test/utility.js
  • client/components/domains/registrant-extra-info/test/ca-form.js
  • client/components/domains/registrant-extra-info/test/fr-form.js
  • client/components/domains/registrant-extra-info/test/fr-validate-contact-details.js
  • client/components/domains/registrant-extra-info/test/index.js
  • client/components/domains/registrant-extra-info/test/uk-form.js
  • client/components/external-link/test/index.js
  • client/components/feature-example/test/index.js
  • client/components/global-notices/test/index.js
  • client/components/gsuite/gsuite-features/test/index.js
  • client/components/gsuite/gsuite-features/test/single-feature.js
  • client/components/gsuite/gsuite-learn-more/test/index.js
  • client/components/gsuite/gsuite-price/test/index.js
  • client/components/infinite-list/test/scroll-helper.js
  • client/components/jetpack-header/test/index.js
  • client/components/jetpack/has-vaultpress-switch/test/index.js
  • client/components/jetpack/render-switch/test/index.js
  • client/components/jetpack/with-server-credentials-form/test/index.js
  • client/components/language-picker/test/utils.js
  • client/components/localized-moment/test/index.js
  • client/components/logged-out-form/test/link-item.js
  • client/components/marketing-survey/cancel-purchase-form/test/enriched-survey-data.js
  • client/components/marketing-survey/cancel-purchase-form/test/initial-survey-state.js
  • client/components/marketing-survey/cancel-purchase-form/test/is-survey-filled-in.js
  • client/components/marketing-survey/cancel-purchase-form/test/next-step.js
  • client/components/multiple-choice-question/test/index.js
  • client/components/notes-formatted-block/test/blocks.js
  • client/components/notes-formatted-block/test/index.js
  • client/components/notice/test/index.js
  • client/components/post-schedule/test/index.js
  • client/components/product-expiration/test/index.js
  • client/components/rating/test/index.js
  • client/components/readme-viewer/test/index.js
  • client/components/screen-options-tab/test/index.js
  • client/components/seo/meta-title-editor/test/index.js
  • client/components/sites-dropdown/test/index.js
  • client/components/sticky-panel/test/index.js
  • client/components/suggestion-search/test/index.js
  • client/components/support-info/test/index.js
  • client/components/translatable/test/proptype.js
  • client/components/translator-invite/test/index.js
  • client/components/translator-invite/test/utils.js
  • client/controller/test/shared.js
  • client/jetpack-cloud/sections/agency-dashboard/sites-overview/hooks/test/use-default-site-columns.js
  • client/jetpack-cloud/sections/landing/test/selectors.js
  • client/jetpack-connect/test/auth-form-header.js
  • client/jetpack-connect/test/authorize.js
  • client/jetpack-connect/test/jetpack-connect-notices.js
  • client/jetpack-connect/test/signup.js
  • client/jetpack-connect/test/utils.js
  • client/layout/guided-tours/test/tour-branching.js
  • client/layout/guided-tours/test/utils.js
  • client/layout/test/index.js
  • client/lib/accept/test/index.js
  • client/lib/after-layout-flush/test/index.js
  • client/lib/analytics/test/google-analytics-4.js
  • client/lib/analytics/test/google-analytics.js
  • client/lib/analytics/test/gpc-opt-out.js
  • client/lib/analytics/test/index.js
  • client/lib/analytics/test/statsd-utils.js
  • client/lib/analytics/test/utils.js
  • client/lib/browser-storage/test/bypass.js
  • client/lib/browser-storage/test/indexed-db.js
  • client/lib/browser-storage/test/local-storage.js
  • client/lib/build-url/test/index.js
  • client/lib/cart-values/test/cart-items.js
  • client/lib/cart-values/test/index.js
  • client/lib/checkout/test/ebanx.js
  • client/lib/checkout/test/masking.js
  • client/lib/checkout/test/validation.js
  • client/lib/compare-props/test/index.js
  • client/lib/css-safe-url/test/index.js
  • client/lib/domains/registration/test/availability-messages.js
  • client/lib/domains/test/index.js
  • client/lib/domains/utils/test/parse-domain-against-tld-list.js
  • client/lib/domains/whois/test/utils.js
  • client/lib/flags/test/index.js
  • client/lib/form-state/test/index.js
  • client/lib/format-number-compact/test/index.js
  • client/lib/formatting/decode/test/browser.js
  • client/lib/formatting/decode/test/node.js
  • client/lib/formatting/test/index.js
  • client/lib/geocoding/test/index.js
  • client/lib/gsuite/test/index.js
  • client/lib/highlight/test/index.js
  • client/lib/human-date/test/index.js
  • client/lib/i18n-utils/test/switch-locale.js
  • client/lib/i18n-utils/test/utils.js
  • client/lib/local-storage-bypass/test/index.js
  • client/lib/local-storage-polyfill/test/index.js
  • client/lib/login/test/index.js
  • client/lib/logmein/test/index.js
  • client/lib/make-json-schema-parser/test/index.js
  • client/lib/media-serialization/test/index.js
  • client/lib/media/test/utils.js
  • client/lib/media/utils/test/create-transient-media-id.js
  • client/lib/media/utils/test/is-transient-media-id.js
  • client/lib/memoize-last/test/index.js
  • client/lib/mobile-app/test/index.js
  • client/lib/network-connection/test/index.js
  • client/lib/notifications/test/note-block-parser.js
  • client/lib/path-to-section/test/index.js
  • client/lib/paths/login/test/index.js
  • client/lib/paths/test/index.js
  • client/lib/performance-tracking/test/lib.js
  • client/lib/performance-tracking/test/performance-tracker-start.js
  • client/lib/performance-tracking/test/use-performance-tracker-stop.js
  • client/lib/plugins/test/sanitize-section-content.js
  • client/lib/plugins/test/utils.js
  • client/lib/post-normalizer/test/index.js
  • client/lib/post-normalizer/test/utils.js
  • client/lib/purchases/test/assembler.js
  • client/lib/purchases/test/index.js
  • client/lib/query-manager/media/test/index.js
  • client/lib/query-manager/paginated/test/index.js
  • client/lib/query-manager/paginated/test/key.js
  • client/lib/query-manager/post/test/index.js
  • client/lib/query-manager/post/test/key.js
  • client/lib/query-manager/term/test/index.js
  • client/lib/query-manager/term/test/key.js
  • client/lib/query-manager/test/index.js
  • client/lib/query-manager/test/key.js
  • client/lib/query-manager/test/schema.js
  • client/lib/query-manager/theme/test/index.js
  • client/lib/query-manager/theme/test/key.js
  • client/lib/react-node-to-string/test/index.js
  • client/lib/react-pass-to-children/test/index.js
  • client/lib/resize-image-url/test/index.js
  • client/lib/route/test/index.js
  • client/lib/route/test/legacy-routes.js
  • client/lib/safe-protocol-url/test/index.js
  • client/lib/scroll-into-viewport/test/index.js
  • client/lib/scroll-to/test/index.js
  • client/lib/search-url/test/index.js
  • client/lib/shortcode/test/index.js
  • client/lib/signup/test/flow-controller.js
  • client/lib/signup/test/step-actions.js
  • client/lib/site/test/utils.js
  • client/lib/string/test/index.js
  • client/lib/track-element-size/test/index.js
  • client/lib/trigram/test/index.js
  • client/lib/url-search/test/index.js
  • client/lib/url/test/add-query-args.js
  • client/lib/url/test/decode-utils.js
  • client/lib/url/test/http-utils.js
  • client/lib/url/test/is-external.js
  • client/lib/url/test/is-outside-calypso.js
  • client/lib/url/test/omit-url-params.js
  • client/lib/url/test/resembles-url.js
  • client/lib/url/test/resolve-relative-path.js
  • client/lib/url/test/scheme-utils.js
  • client/lib/user/test/shared-utils.js
  • client/lib/wp/handlers/test/guest-sandbox-ticket.js
  • client/lib/wp/localization/test/index.js
  • client/login/test/controller.js
  • client/login/test/ssr.js
  • client/me/account-close/test/main.js
  • client/me/account/test/email-not-verified-notice.js
  • client/me/concierge/test/main.js
  • client/me/purchases/manage-purchase/test/notices.js
  • client/me/purchases/manage-purchase/test/payment-info-block.js
  • client/me/purchases/manage-purchase/test/purchase-management-buttons.js
  • client/me/purchases/manage-purchase/test/purchase-meta-introductory-offer-detail.js
  • client/me/purchases/manage-purchase/test/purchase-meta.js
  • client/me/purchases/purchase-item/test/index.js
  • client/me/purchases/track-purchase-page-view/test/index.js
  • client/my-sites/backup/backup-date-picker/test/hooks.js
  • client/my-sites/checkout/checkout-thank-you/redesign-v2/test/is-redesign-v2.js
  • client/my-sites/checkout/checkout-thank-you/test/header.js
  • client/my-sites/checkout/checkout-thank-you/test/index.js
  • client/my-sites/checkout/checkout/test/maybe-jetpack-authorize.js
  • client/my-sites/checkout/src/test/form-field-annotation.js
  • client/my-sites/checkout/src/test/hydrate-nested-object.js
  • client/my-sites/checkout/src/test/translate-cart.js
  • client/my-sites/checkout/src/test/wechat-payment-qrcode.js
  • client/my-sites/checkout/test/controller.js
  • client/my-sites/checkout/test/utils.js
  • client/my-sites/customize/test/panels.js
  • client/my-sites/domains/components/domain-warnings/test/index.js
  • client/my-sites/domains/components/form/test/hidden-input.js
  • client/my-sites/domains/components/form/test/select.js
  • client/my-sites/domains/map-domain/test/map-domain.js
  • client/my-sites/hosting/cache-card/test/index.js
  • client/my-sites/hosting/sftp-card/test/index.js
  • client/my-sites/hosting/staging-site-card/test/index.js
  • client/my-sites/hosting/staging-site-card/test/sync-options-panel.js
  • client/my-sites/hosting/test/index.js
  • client/my-sites/marketplace/pages/submission-success/test/index.js
  • client/my-sites/pages/test/helpers.js
  • client/my-sites/plans/jetpack-plans/jetpack-complete-page/test/index.js
  • client/my-sites/plans/jetpack-plans/jetpack-free-card/test/use-jetpack-free-button-props.js
  • client/my-sites/plans/jetpack-plans/test/convert-slug-terms.js
  • client/my-sites/plans/jetpack-plans/test/get-params-from-context.js
  • client/my-sites/plans/jetpack-plans/test/get-purchase-url-callback.js
  • client/my-sites/plans/jetpack-plans/test/get-view-tracker-path.js
  • client/my-sites/plans/jetpack-plans/test/utils.js
  • client/my-sites/plans/test/index.js
  • client/my-sites/plugins/plugin-management-v2/plugin-action-status/test/use-status-message-text.js
  • client/my-sites/plugins/plugin-management-v2/test/use-empty-message.js
  • client/my-sites/plugins/plugin-management-v2/utils/test/get-allowed-plugin-actions.js
  • client/my-sites/plugins/plugin-management-v2/utils/test/get-plugin-action-statuses.js
  • client/my-sites/plugins/plugin-management-v2/utils/test/get-sites-with-secondary-sites.js
  • client/my-sites/sidebar/test/index.js
  • client/my-sites/site-indicator/test/index.js
  • client/my-sites/site-monitoring/test/main.js
  • client/my-sites/site-settings/date-time-format/test/index.js
  • client/my-sites/stats/stats-notices/lib/test/remove-stats-purchase-success-param.js
  • client/my-sites/stats/test/index.js
  • client/my-sites/stats/test/utils.js
  • client/my-sites/store/app/store-stats/test/utils.js
  • client/my-sites/store/components/d3/base/test/index.js
  • client/my-sites/store/lib/analytics/test/tracks-utils.js
  • client/my-sites/test/controller.js
  • client/my-sites/themes/test/helpers.js
  • client/my-sites/themes/test/use-theme-showcase-description.js
  • client/my-sites/themes/test/use-theme-showcase-title.js
  • client/post-editor/media-modal/test/markup.js
  • client/post-editor/media-modal/test/preload-image.js
  • client/reader/lib/site-description-blocklist/test/index.js
  • client/reader/lib/teams/test/index.js
  • client/reader/route/test/index.js
  • client/reader/stream/test/utils.js
  • client/reader/test/get-helpers.js
  • client/reader/test/id-helpers.js
  • client/reader/test/utils.js
  • client/server/config/test/parser.js
  • client/server/isomorphic-routing/test/index.js
  • client/server/lib/analytics/test/index.js
  • client/server/lib/is-static-request/test/index.js
  • client/server/lib/logger/test/index.js
  • client/server/lib/performance-mark/test/index.js
  • client/server/middleware/test/logger.js
  • client/server/pages/test/analytics.js
  • client/server/pages/test/index.js
  • client/server/render/test/index.js
  • client/server/sanitize/test/index.js
  • client/server/user-bootstrap/test/index.js
  • client/signup/config/test/index.js
  • client/signup/steps/domains/test/index.js
  • client/signup/steps/domains/test/utils.js
  • client/signup/steps/user/test/index.js
  • client/signup/test/flows.js
  • client/signup/test/utils.js
  • client/state/account-recovery/settings/test/actions.js
  • client/state/account-recovery/settings/test/reducer.js
  • client/state/account-recovery/settings/test/selectors.js
  • client/state/account-recovery/test/reducer.js
  • client/state/account-recovery/test/selectors.js
  • client/state/account/test/actions.js
  • client/state/account/test/reducer.js
  • client/state/action-log/test/index.js
  • client/state/action-watchers/test/utils.js
  • client/state/active-promotions/test/actions.js
  • client/state/active-promotions/test/reducer.js
  • client/state/active-promotions/test/selectors.js
  • client/state/activity-log/activation/test/reducer.js
  • client/state/activity-log/restore/test/reducer.js
  • client/state/admin-menu/test/actions.js
  • client/state/admin-menu/test/reducer.js
  • client/state/admin-menu/test/selectors.js
  • client/state/analytics/test/actions.js
  • client/state/analytics/test/middleware.js
  • client/state/application/test/actions.js
  • client/state/application/test/reducer.js
  • client/state/atomic-transfer/test/actions.js
  • client/state/automated-transfer/test/is-automated-transfer-active.js
  • client/state/automated-transfer/test/is-automated-transfer-failed.js
  • client/state/automated-transfer/test/is-fetching-automated-transfer-status.js
  • client/state/automated-transfer/test/reducer.js
  • client/state/billing-transactions/individual-transactions/test/actions.js
  • client/state/billing-transactions/individual-transactions/test/reducer.js
  • client/state/billing-transactions/test/actions.js
  • client/state/billing-transactions/test/reducer.js
  • client/state/billing-transactions/ui/test/actions.js
  • client/state/billing-transactions/ui/test/reducer.js
  • client/state/comments/test/actions.js
  • client/state/comments/test/reducer.js
  • client/state/comments/test/selectors.js
  • client/state/comments/ui/test/actions.js
  • client/state/comments/ui/test/reducer.js
  • client/state/concierge/appointment-details/test/reducer.js
  • client/state/concierge/appointment-timespan/test/reducer.js
  • client/state/concierge/available-times/test/reducer.js
  • client/state/concierge/is-user-blocked/test/reducer.js
  • client/state/concierge/next-appointment/test/reducer.js
  • client/state/concierge/schedule-id/test/reducer.js
  • client/state/concierge/signup-form/test/reducer.js
  • client/state/concierge/test/actions.js
  • client/state/connected-applications/test/actions.js
  • client/state/connected-applications/test/reducer.js
  • client/state/country-states/test/actions.js
  • client/state/country-states/test/reducer.js
  • client/state/country-states/test/selectors.js
  • client/state/currency-code/test/reducer.js
  • client/state/currency-code/test/selectors.js
  • client/state/current-user/email-verification/test/actions.js
  • client/state/current-user/email-verification/test/reducer.js
  • client/state/current-user/test/actions.js
  • client/state/current-user/test/reducer.js
  • client/state/current-user/test/selectors.js
  • client/state/data-layer/test/handler-registry.js
  • client/state/data-layer/test/utils.js
  • client/state/data-layer/test/wpcom-api-middleware.js
  • client/state/data-layer/wpcom-http/pipeline/remove-duplicate-gets/test/index.js
  • client/state/data-layer/wpcom-http/pipeline/retry-on-failure/test/index.js
  • client/state/data-layer/wpcom-http/pipeline/test/test.js
  • client/state/data-layer/wpcom-http/test/actions.js
  • client/state/data-layer/wpcom-http/test/index.js
  • client/state/data-layer/wpcom-http/test/utils.js
  • client/state/data-layer/wpcom/active-promotions/test/index.js
  • client/state/data-layer/wpcom/activity-log/activate/test/index.js
  • client/state/data-layer/wpcom/activity-log/deactivate/test/index.js
  • client/state/data-layer/wpcom/activity-log/rewind/restore-status/test/index.js
  • client/state/data-layer/wpcom/activity-log/rewind/to/test/index.js
  • client/state/data-layer/wpcom/all-domains/test/index.js
  • client/state/data-layer/wpcom/comments/test/index.js
  • client/state/data-layer/wpcom/concierge/initial/test/from-api.js
  • client/state/data-layer/wpcom/concierge/initial/test/index.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/book/test/from-api.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/book/test/index.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/cancel/test/from-api.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/cancel/test/index.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/detail/test/from-api.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/detail/test/index.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/reschedule/test/from-api.js
  • client/state/data-layer/wpcom/concierge/schedules/appointments/reschedule/test/index.js
  • client/state/data-layer/wpcom/domains/countries-list/test/index.js
  • client/state/data-layer/wpcom/domains/transfer/test/index.js
  • client/state/data-layer/wpcom/email-accounts/test/index.js
  • client/state/data-layer/wpcom/gravatar-upload/test/index.js
  • client/state/data-layer/wpcom/jetpack-install/test/index.js
  • client/state/data-layer/wpcom/jetpack/settings/test/index.js
  • client/state/data-layer/wpcom/marketing/test/index.js
  • client/state/data-layer/wpcom/me/account/close/test/index.js
  • client/state/data-layer/wpcom/me/block/sites/delete/test/index.js
  • client/state/data-layer/wpcom/me/block/sites/new/test/index.js
  • client/state/data-layer/wpcom/me/blocks/sites/test/index.js
  • client/state/data-layer/wpcom/me/connected-applications/delete/test/index.js
  • client/state/data-layer/wpcom/me/connected-applications/test/index.js
  • client/state/data-layer/wpcom/me/dismiss/sites/new/test/index.js
  • client/state/data-layer/wpcom/me/notification/settings/test/index.js
  • client/state/data-layer/wpcom/me/send-verification-email/test/index.js
  • client/state/data-layer/wpcom/me/settings/profile-links/delete/test/index.js
  • client/state/data-layer/wpcom/me/settings/profile-links/new/test/index.js
  • client/state/data-layer/wpcom/me/settings/profile-links/test/index.js
  • client/state/data-layer/wpcom/me/settings/test/index.js
  • client/state/data-layer/wpcom/me/transactions/order/test/from-api.js
  • client/state/data-layer/wpcom/me/transactions/order/test/index.js
  • client/state/data-layer/wpcom/me/transactions/supported-countries/test/index.js
  • client/state/data-layer/wpcom/meta/sms-country-codes/test/index.js
  • client/state/data-layer/wpcom/plans/test/index.js
  • client/state/data-layer/wpcom/posts/revisions/test/index.js
  • client/state/data-layer/wpcom/read/feed/test/index.js
  • client/state/data-layer/wpcom/read/following/mine/delete/test/index.js
  • client/state/data-layer/wpcom/read/following/mine/new/test/index.js
  • client/state/data-layer/wpcom/read/following/mine/test/index.js
  • client/state/data-layer/wpcom/read/following/mine/test/utils.js
  • client/state/data-layer/wpcom/read/recommendations/sites/test/index.js
  • client/state/data-layer/wpcom/read/site/comment-email-subscriptions/delete/test/index.js
  • client/state/data-layer/wpcom/read/site/comment-email-subscriptions/new/test/index.js
  • client/state/data-layer/wpcom/read/site/post-email-subscriptions/delete/test/index.js
  • client/state/data-layer/wpcom/read/site/post-email-subscriptions/new/test/index.js
  • client/state/data-layer/wpcom/read/site/post-email-subscriptions/update/test/index.js
  • client/state/data-layer/wpcom/read/sites/notification-subscriptions/delete/test/index.js
  • client/state/data-layer/wpcom/read/sites/notification-subscriptions/new/test/index.js
  • client/state/data-layer/wpcom/read/sites/posts/follow/test/index.js
  • client/state/data-layer/wpcom/read/sites/posts/mute/test/index.js
  • client/state/data-layer/wpcom/read/sites/test/index.js
  • client/state/data-layer/wpcom/read/streams/test/index.js
  • client/state/data-layer/wpcom/read/tags/mine/delete/test/index.js
  • client/state/data-layer/wpcom/read/tags/mine/new/test/index.js
  • client/state/data-layer/wpcom/read/tags/test/index.js
  • client/state/data-layer/wpcom/read/tags/test/utils.js
  • client/state/data-layer/wpcom/read/teams/test/index.js
  • client/state/data-layer/wpcom/sites/admin-menu/test/index.js
  • client/state/data-layer/wpcom/sites/automated-transfer/eligibility/test/index.js
  • client/state/data-layer/wpcom/sites/automated-transfer/initiate/test/index.js
  • client/state/data-layer/wpcom/sites/automated-transfer/status/test/index.js
  • client/state/data-layer/wpcom/sites/comments/likes/mine/delete/test/index.js
  • client/state/data-layer/wpcom/sites/comments/likes/new/test/index.js
  • client/state/data-layer/wpcom/sites/exports/media/test/index.js
  • client/state/data-layer/wpcom/sites/jitm/test/index.js
  • client/state/data-layer/wpcom/sites/media/test/index.js
  • client/state/data-layer/wpcom/sites/plan-transfer/test/index.js
  • client/state/data-layer/wpcom/sites/plugins/new/test/index.js
  • client/state/data-layer/wpcom/sites/posts/likes/mine/delete/test/index.js
  • client/state/data-layer/wpcom/sites/posts/likes/new/test/index.js
  • client/state/data-layer/wpcom/sites/posts/likes/test/index.js
  • client/state/data-layer/wpcom/sites/scan/test/index.js
  • client/state/data-layer/wpcom/sites/stats/google-my-business/test/index.js
  • client/state/data-layer/wpcom/sites/stats/views/posts/test/index.js
  • client/state/data-layer/wpcom/sites/stats/visits/test/index.js
  • client/state/data-layer/wpcom/sites/test/utils.js
  • client/state/data-layer/wpcom/sites/users/test/index.js
  • client/state/data-layer/wpcom/timezones/test/index.js
  • client/state/difm/test/assemblers.js
  • client/state/document-head/test/actions.js
  • client/state/document-head/test/reducer.js
  • client/state/document-head/test/selectors.js
  • client/state/domains/dns/test/utils.js
  • client/state/domains/management/test/reducer.js
  • client/state/domains/suggestions/test/actions.js
  • client/state/domains/suggestions/test/reducer.js
  • client/state/domains/suggestions/test/selectors.js
  • client/state/domains/suggestions/test/utils.js
  • client/state/domains/test/reducer.js
  • client/state/domains/transfer/test/reducer.js
  • client/state/domains/transfer/test/selectors.js
  • client/state/editor/image-editor/test/actions.js
  • client/state/editor/image-editor/test/reducer.js
  • client/state/editor/image-editor/test/selectors.js
  • client/state/editor/test/actions.js
  • client/state/editor/test/reducer.js
  • client/state/editor/test/selectors.js
  • client/state/editor/video-editor/test/actions.js
  • client/state/editor/video-editor/test/reducer.js
  • client/state/email-accounts/test/reducer.js
  • client/state/exporter/test/actions.js
  • client/state/exporter/test/reducer.js
  • client/state/exporter/test/selectors.js
  • client/state/google-my-business/test/index.js
  • client/state/gravatar-status/test/actions.js
  • client/state/gravatar-status/test/reducer.js
  • client/state/gravatar-status/test/selectors.js
  • client/state/guided-tours/contexts/test/does-selected-site-have-media-files.js
  • client/state/guided-tours/test/contexts.js
  • client/state/guided-tours/test/reducer.js
  • client/state/guided-tours/test/selectors.js
  • client/state/hosting/test/reducer.js
  • client/state/i18n/language-names/test/actions.js
  • client/state/i18n/language-names/test/reducer.js
  • client/state/i18n/locale-suggestions/test/actions.js
  • client/state/i18n/locale-suggestions/test/reducer.js
  • client/state/immediate-login/test/reducer.js
  • client/state/immediate-login/test/selectors.js
  • client/state/immediate-login/test/utils.js
  • client/state/imports/test/api-interaction.js
  • client/state/invites/test/reducer.js
  • client/state/invites/test/selectors.js
  • client/state/jetpack-connect/reducer/test/index.js
  • client/state/jetpack-connect/reducer/test/jetpack-auth-attempts.js
  • client/state/jetpack-connect/reducer/test/jetpack-connect-authorize.js
  • client/state/jetpack-connect/reducer/test/jetpack-connect-site.js
  • client/state/jetpack-connect/reducer/test/jetpack-sso.js
  • client/state/jetpack-connect/test/actions.js
  • client/state/jetpack-connect/test/selectors.js
  • client/state/jetpack-connect/test/utils.js
  • client/state/jetpack-connection-health/selectors/test/is-jetpack-connection-problem.js
  • client/state/jetpack-connection-health/selectors/test/is-jetpack-connection-unhealthy.js
  • client/state/jetpack-connection-health/test/actions.js
  • client/state/jetpack-product-install/test/reducer.js
  • client/state/jetpack-remote-install/test/reducer.js
  • client/state/jetpack-sync/test/actions.js
  • client/state/jetpack-sync/test/reducer.js
  • client/state/jetpack-sync/test/selectors.js
  • client/state/jetpack/connection/test/actions.js
  • client/state/jetpack/connection/test/reducer.js
  • client/state/jetpack/credentials/test/reducer.js
  • client/state/jetpack/credentials/test/selectors.js
  • client/state/jetpack/modules/test/actions.js
  • client/state/jetpack/modules/test/reducer.js
  • client/state/jetpack/settings/test/actions.js
  • client/state/jetpack/settings/test/reducer.js
  • client/state/jetpack/settings/test/utils.js
  • client/state/login/magic-login/test/reducer.js
  • client/state/login/test/reducer.js
  • client/state/login/test/selectors.js
  • client/state/marketing/test/actions.js
  • client/state/media/test/actions.js
  • client/state/media/test/reducer.js
  • client/state/media/thunks/test/create-transient-media-items.js
  • client/state/media/thunks/test/gutenframe-update-image-blocks.js
  • client/state/media/utils/test/transientItems.js
  • client/state/notices/test/actions.js
  • client/state/notices/test/reducer.js
  • client/state/notices/test/selectors.js
  • client/state/notification-settings/test/actions.js
  • client/state/notification-settings/test/toggle-state.js
  • client/state/oauth2-clients/test/reducer.js
  • client/state/oauth2-clients/test/selectors.js
  • client/state/oauth2-clients/ui/test/reducer.js
  • client/state/oauth2-clients/ui/test/selectors.js
  • client/state/order-transactions/test/actions.js
  • client/state/order-transactions/test/reducer.js
  • client/state/pages/test/selectors.js
  • client/state/partner-portal/credit-card-form/test/actions.js
  • client/state/partner-portal/credit-card-form/test/reducer.js
  • client/state/partner-portal/credit-card-form/test/selectors.js
  • client/state/partner-portal/invoices/test/hooks.js
  • client/state/partner-portal/licenses/test/actions.js
  • client/state/partner-portal/licenses/test/handlers.js
  • client/state/partner-portal/licenses/test/hooks.js
  • client/state/partner-portal/licenses/test/reducer.js
  • client/state/partner-portal/licenses/test/selectors.js
  • client/state/partner-portal/partner/test/selectors.js
  • client/state/partner-portal/test/selectors.js
  • client/state/plans/selectors/test/index.js
  • client/state/plans/test/actions.js
  • client/state/plans/test/reducer.js
  • client/state/plans/test/selectors.js
  • client/state/plugins/installed/test/actions.js
  • client/state/plugins/installed/test/reducer.js
  • client/state/plugins/installed/test/selectors.js
  • client/state/plugins/premium/test/reducer.js
  • client/state/plugins/premium/test/selectors.js
  • client/state/plugins/upload/test/reducer.js
  • client/state/plugins/wporg/test/actions.js
  • client/state/plugins/wporg/test/reducer.js
  • client/state/plugins/wporg/test/selectors.js
  • client/state/post-types/taxonomies/test/actions.js
  • client/state/post-types/taxonomies/test/reducer.js
  • client/state/post-types/taxonomies/test/selectors.js
  • client/state/post-types/test/reducer.js
  • client/state/post-types/test/selectors.js
  • client/state/posts/counts/test/actions.js
  • client/state/posts/counts/test/reducer.js
  • client/state/posts/counts/test/selectors.js
  • client/state/posts/likes/test/actions.js
  • client/state/posts/likes/test/reducer.js
  • client/state/posts/revisions/authors/test/reducer.js
  • client/state/posts/revisions/test/reducer.js
  • client/state/posts/test/actions.js
  • client/state/posts/test/reducer.js
  • client/state/posts/test/selectors.js
  • client/state/posts/test/utils.js
  • client/state/preferences/test/actions.js
  • client/state/preferences/test/reducer.js
  • client/state/preferences/test/selectors.js
  • client/state/products-list/test/actions.js
  • client/state/products-list/test/reducer.js
  • client/state/products-list/test/selectors.js
  • client/state/profile-links/test/actions.js
  • client/state/profile-links/test/reducer.js
  • client/state/purchases/test/actions.js
  • client/state/purchases/test/reducer.js
  • client/state/purchases/test/selectors.js
  • client/state/push-notifications/test/actions.js
  • client/state/push-notifications/test/reducer.js
  • client/state/push-notifications/test/selectors.js
  • client/state/reader-ui/card-expansions/test/reducer.js
  • client/state/reader-ui/test/actions.js
  • client/state/reader-ui/test/reducer.js
  • client/state/reader-ui/test/selectors.js
  • client/state/reader/conversations/test/actions.js
  • client/state/reader/conversations/test/reducer.js
  • client/state/reader/feed-searches/test/query-key.js
  • client/state/reader/feed-searches/test/reducer.js
  • client/state/reader/feeds/test/actions.js
  • client/state/reader/feeds/test/reducer.js
  • client/state/reader/feeds/test/schema.js
  • client/state/reader/feeds/test/selectors.js
  • client/state/reader/follows/test/actions.js
  • client/state/reader/follows/test/reducer.js
  • client/state/reader/lists/test/actions.js
  • client/state/reader/lists/test/reducer.js
  • client/state/reader/lists/test/selectors.js
  • client/state/reader/posts/test/actions.js
  • client/state/reader/posts/test/normalization-rules.js
  • client/state/reader/posts/test/reducer.js
  • client/state/reader/posts/test/selectors.js
  • client/state/reader/recommended-sites/test/reducer.js
  • client/state/reader/related-posts/test/actions.js
  • client/state/reader/related-posts/test/reducer.js
  • client/state/reader/related-posts/test/selectors.js
  • client/state/reader/site-blocks/test/actions.js
  • client/state/reader/site-blocks/test/reducer.js
  • client/state/reader/site-dismissals/test/actions.js
  • client/state/reader/site-dismissals/test/reducer.js
  • client/state/reader/sites/test/actions.js
  • client/state/reader/sites/test/reducer.js
  • client/state/reader/sites/test/selectors.js
  • client/state/reader/streams/test/reducer.js
  • client/state/reader/tags/items/test/actions.js
  • client/state/reader/tags/items/test/reducer.js
  • client/state/reader/thumbnails/test/actions.js
  • client/state/reader/thumbnails/test/reducer.js
  • client/state/reader/thumbnails/test/selectors.js
  • client/state/receipts/test/reducer.js
  • client/state/rewind/backups/test/reducer.js
  • client/state/rewind/retention/test/reducer.js
  • client/state/rewind/selectors/test/can-restore-site.js
  • client/state/rewind/size/test/reducer.js
  • client/state/rewind/staging/test/reducer.js
  • client/state/rewind/test/reducers.js
  • client/state/rewind/test/selectors.js
  • client/state/route/last-non-editor-route/test/reducer.js
  • client/state/route/path/test/reducer.js
  • client/state/route/query/test/reducer.js
  • client/state/route/test/actions.js
  • client/state/selected-editor/test/reducer.js
  • client/state/selectors/test/are-all-sites-single-user.js
  • client/state/selectors/test/can-current-user-edit-post.js
  • client/state/selectors/test/can-current-user-manage-plugins.js
  • client/state/selectors/test/can-current-user.js
  • client/state/selectors/test/can-display-community-translator.js
  • client/state/selectors/test/can-upgrade-to-plan.js
  • client/state/selectors/test/count-post-likes.js
  • client/state/selectors/test/find-theme-filter-term.js
  • client/state/selectors/test/get-account-closure-sites.js
  • client/state/selectors/test/get-active-discount.js
  • client/state/selectors/test/get-active-reply-comment-id.js
  • client/state/selectors/test/get-atomic-hosting-sftp-users.js
  • client/state/selectors/test/get-atomic-transfer.js
  • client/state/selectors/test/get-billing-transaction-app-filter-values.js
  • client/state/selectors/test/get-billing-transaction-date-filter-values.js
  • client/state/selectors/test/get-billing-transaction-filters.js
  • client/state/selectors/test/get-billing-transactions-by-type.js
  • client/state/selectors/test/get-blocked-sites.js
  • client/state/selectors/test/get-checkout-upgrade-intent.js
  • client/state/selectors/test/get-comments-page.js
  • client/state/selectors/test/get-concierge-appointment-details.js
  • client/state/selectors/test/get-concierge-appointment-timespan.js
  • client/state/selectors/test/get-concierge-available-times.js
  • client/state/selectors/test/get-concierge-next-appointment.js
  • client/state/selectors/test/get-concierge-schedule-id.js
  • client/state/selectors/test/get-concierge-user-blocked.js
  • client/state/selectors/test/get-connected-applications.js
  • client/state/selectors/test/get-current-locale-variant.js
  • client/state/selectors/test/get-current-plan-purchase-id.js
  • client/state/selectors/test/get-current-plan-term.js
  • client/state/selectors/test/get-current-route-parameterized.js
  • client/state/selectors/test/get-current-user-marketing-price-group.js
  • client/state/selectors/test/get-current-user-time-since-signup.js
  • client/state/selectors/test/get-dismissed-sites.js
  • client/state/selectors/test/get-domain-from-home-upsell-in-query.js
  • client/state/selectors/test/get-editor-close-config.js
  • client/state/selectors/test/get-google-my-business-stats-error.js
  • client/state/selectors/test/get-google-my-business-stats.js
  • client/state/selectors/test/get-image-editor-is-greater-than-minimum-dimensions.js
  • client/state/selectors/test/get-image-editor-original-aspect-ratio.js
  • client/state/selectors/test/get-jetpack-connection-owner.js
  • client/state/selectors/test/get-jetpack-connection-status.js
  • client/state/selectors/test/get-jetpack-credentials-test-status.js
  • client/state/selectors/test/get-jetpack-module.js
  • client/state/selectors/test/get-jetpack-modules-requiring-connection.js
  • client/state/selectors/test/get-jetpack-modules.js
  • client/state/selectors/test/get-jetpack-product-install-progress.js
  • client/state/selectors/test/get-jetpack-product-install-status.js
  • client/state/selectors/test/get-jetpack-remote-install-error-code.js
  • client/state/selectors/test/get-jetpack-remote-install-error-message.js
  • client/state/selectors/test/get-jetpack-setting.js
  • client/state/selectors/test/get-jetpack-settings-save-request-status.js
  • client/state/selectors/test/get-jetpack-settings.js
  • client/state/selectors/test/get-jetpack-sites.js
  • client/state/selectors/test/get-jetpack-user-connection.js
  • client/state/selectors/test/get-last-good-rewind-backup.js
  • client/state/selectors/test/get-last-non-editor-route.js
  • client/state/selectors/test/get-locale-suggestions.js
  • client/state/selectors/test/get-localized-language-names.js
  • client/state/selectors/test/get-magic-login-current-view.js
  • client/state/selectors/test/get-magic-login-request-auth-error.js
  • client/state/selectors/test/get-magic-login-request-email-error.js
  • client/state/selectors/test/get-magic-login-requested-auth-successfully.js
  • client/state/selectors/test/get-magic-login-requested-email-successfully.js
  • client/state/selectors/test/get-media-export-url.js
  • client/state/selectors/test/get-media-item-server-id-from-transient-id.js
  • client/state/selectors/test/get-media-item.js
  • client/state/selectors/test/get-media-library-selected-items.js
  • client/state/selectors/test/get-media-query-manager.js
  • client/state/selectors/test/get-media-url.js
  • client/state/selectors/test/get-media.js
  • client/state/selectors/test/get-menus-url.js
  • client/state/selectors/test/get-network-sites.js
  • client/state/selectors/test/get-next-page-handle.js
  • client/state/selectors/test/get-next-page-query.js
  • client/state/selectors/test/get-order-transaction-error.js
  • client/state/selectors/test/get-order-transaction.js
  • client/state/selectors/test/get-original-user-setting.js
  • client/state/selectors/test/get-parent-comment.js
  • client/state/selectors/test/get-partner-id-from-query.js
  • client/state/selectors/test/get-partner-slug-from-query.js
  • client/state/selectors/test/get-past-billing-transaction.js
  • client/state/selectors/test/get-past-billing-transactions.js
  • client/state/selectors/test/get-plugin-upload-error.js
  • client/state/selectors/test/get-plugin-upload-progress.js
  • client/state/selectors/test/get-podcasting-category-id.js
  • client/state/selectors/test/get-post-likes.js
  • client/state/selectors/test/get-post-revision.js
  • client/state/selectors/test/get-post-revisions-authors-id.js
  • client/state/selectors/test/get-post-revisions-comparisons.js
  • client/state/selectors/test/get-post-revisions-diff-view.js
  • client/state/selectors/test/get-post-revisions.js
  • client/state/selectors/test/get-poster-upload-progress.js
  • client/state/selectors/test/get-poster-url.js
  • client/state/selectors/test/get-previous-path.js
  • client/state/selectors/test/get-previous-query.js
  • client/state/selectors/test/get-previous-route.js
  • client/state/selectors/test/get-primary-site-id.js
  • client/state/selectors/test/get-profile-links-error-type.js
  • client/state/selectors/test/get-profile-links.js
  • client/state/selectors/test/get-public-sites.js
  • client/state/selectors/test/get-raw-offsets.js
  • client/state/selectors/test/get-raw-site.js
  • client/state/selectors/test/get-reader-aliased-follow-feed-url.js
  • client/state/selectors/test/get-reader-conversation-follow-status.js
  • client/state/selectors/test/get-reader-follows.js
  • client/state/selectors/test/get-reader-stream-offset-item.js
  • client/state/selectors/test/get-reader-stream-should-request-recommendations.js
  • client/state/selectors/test/get-removable-connections.js
  • client/state/selectors/test/get-request.js
  • client/state/selectors/test/get-restore-progress.js
  • client/state/selectors/test/get-rewind-backups.js
  • client/state/selectors/test/get-selected-editor.js
  • client/state/selectors/test/get-selected-or-all-sites-jetpack-can-manage.js
  • client/state/selectors/test/get-selected-or-all-sites-with-plugins.js
  • client/state/selectors/test/get-site-blocks-current-page.js
  • client/state/selectors/test/get-site-blocks-last-page.js
  • client/state/selectors/test/get-site-comment-counts.js
  • client/state/selectors/test/get-site-connection-status.js
  • client/state/selectors/test/get-site-features.js
  • client/state/selectors/test/get-site-gmt-offset.js
  • client/state/selectors/test/get-site-icon-id.js
  • client/state/selectors/test/get-site-icon-url.js
  • client/state/selectors/test/get-site-setting.js
  • client/state/selectors/test/get-site-stats-query-date.js
  • client/state/selectors/test/get-site-stats-view-summary.js
  • client/state/selectors/test/get-site-timezone-value.js
  • client/state/selectors/test/get-site-url.js
  • client/state/selectors/test/get-site-wordads-status.js
  • client/state/selectors/test/get-sites-items.js
  • client/state/selectors/test/get-sites.js
  • client/state/selectors/test/get-theme-filter-string-from-term.js
  • client/state/selectors/test/get-theme-filter-term-from-string.js
  • client/state/selectors/test/get-theme-filter-term.js
  • client/state/selectors/test/get-theme-filter-terms-table.js
  • client/state/selectors/test/get-theme-filter-terms.js
  • client/state/selectors/test/get-theme-filter-to-term-table.js
  • client/state/selectors/test/get-theme-filters.js
  • client/state/selectors/test/get-timezones-label.js
  • client/state/selectors/test/get-timezones-labels.js
  • client/state/selectors/test/get-timezones.js
  • client/state/selectors/test/get-transient-media-item.js
  • client/state/selectors/test/get-upcoming-billing-transactions.js
  • client/state/selectors/test/get-upgrade-plan-slug-from-path.js
  • client/state/selectors/test/get-uploaded-plugin-id.js
  • client/state/selectors/test/get-user-purchased-premium-themes.js
  • client/state/selectors/test/get-user-setting.js
  • client/state/selectors/test/get-visible-sites.js
  • client/state/selectors/test/get-wordads-settings.js
  • client/state/selectors/test/has-available-site-feature.js
  • client/state/selectors/test/has-cancelable-site-purchases.js
  • client/state/selectors/test/has-cancelable-user-purchases.js
  • client/state/selectors/test/has-initialized-sites.js
  • client/state/selectors/test/has-jetpack-sites.js
  • client/state/selectors/test/has-loaded-sites.js
  • client/state/selectors/test/has-navigated.js
  • client/state/selectors/test/has-next-media-page.js
  • client/state/selectors/test/has-pending-comment-requests.js
  • client/state/selectors/test/has-site-pending-automated-transfer.js
  • client/state/selectors/test/has-unseen-notifications.js
  • client/state/selectors/test/is-account-closed.js
  • client/state/selectors/test/is-activating-jetpack-module.js
  • client/state/selectors/test/is-ambiguous-theme-filter-term.js
  • client/state/selectors/test/is-authors-email-blocked.js
  • client/state/selectors/test/is-blaze-enabled.js
  • client/state/selectors/test/is-community-translator-enabled.js
  • client/state/selectors/test/is-connected-secondary-network-site.js
  • client/state/selectors/test/is-deactivating-jetpack-module.js
  • client/state/selectors/test/is-domain-only-site.js
  • client/state/selectors/test/is-eligible-for-domain-to-paid-plan-upsell.js
  • client/state/selectors/test/is-eligible-for-dotcom-checklist.js
  • client/state/selectors/test/is-eligible-for-free-to-paid-upsell.js
  • client/state/selectors/test/is-fetching-jetpack-modules.js
  • client/state/selectors/test/is-fetching-magic-login-auth.js
  • client/state/selectors/test/is-fetching-magic-login-email.js
  • client/state/selectors/test/is-fetching-next-page.js
  • client/state/selectors/test/is-fetching-order-transaction.js
  • client/state/selectors/test/is-fetching-site-blocks.js
  • client/state/selectors/test/is-following-reader-conversation.js
  • client/state/selectors/test/is-following.js
  • client/state/selectors/test/is-google-my-business-location-connected.js
  • client/state/selectors/test/is-hidden-site.js
  • client/state/selectors/test/is-iframe-for-html-element.js
  • client/state/selectors/test/is-jetpack-module-active.js
  • client/state/selectors/test/is-jetpack-module-unavailable-in-development-mode.js
  • client/state/selectors/test/is-jetpack-remote-install-complete.js
  • client/state/selectors/test/is-jetpack-settings-save-failure.js
  • client/state/selectors/test/is-jetpack-site-connected.js
  • client/state/selectors/test/is-jetpack-site-in-development-mode.js
  • client/state/selectors/test/is-jetpack-site-in-staging-mode.js
  • client/state/selectors/test/is-jetpack-user-connection-owner.js
  • client/state/selectors/test/is-legacy-site-with-higher-limits.js
  • client/state/selectors/test/is-main-site-of.js
  • client/state/selectors/test/is-mapped-domain-site.js
  • client/state/selectors/test/is-notifications-open.js
  • client/state/selectors/test/is-past-billing-transaction-error.js
  • client/state/selectors/test/is-plugin-upload-complete.js
  • client/state/selectors/test/is-plugin-upload-in-progress.js
  • client/state/selectors/test/is-private-site.js
  • client/state/selectors/test/is-publicize-enabled.js
  • client/state/selectors/test/is-regenerating-jetpack-post-by-email.js
  • client/state/selectors/test/is-requesting-billing-transaction.js
  • client/state/selectors/test/is-requesting-billing-transactions.js
  • client/state/selectors/test/is-requesting-jetpack-connection-status.js
  • client/state/selectors/test/is-requesting-jetpack-settings.js
  • client/state/selectors/test/is-requesting-jetpack-user-connection.js
  • client/state/selectors/test/is-requesting-reader-teams.js
  • client/state/selectors/test/is-requesting-site-connection-status.js
  • client/state/selectors/test/is-requesting-site-features.js
  • client/state/selectors/test/is-rewind-activating.js
  • client/state/selectors/test/is-saving-wordads-settings.js
  • client/state/selectors/test/is-sending-billing-receipt-email.js
  • client/state/selectors/test/is-site-blocked.js
  • client/state/selectors/test/is-site-checklist-loading.js
  • client/state/selectors/test/is-site-coming-soon.js
  • client/state/selectors/test/is-site-in-profile-links.js
  • client/state/selectors/test/is-site-on-free-plan.js
  • client/state/selectors/test/is-site-on-paid-plan.js
  • client/state/selectors/test/is-site-supporting-image-editor.js
  • client/state/selectors/test/is-site-upgradeable.js
  • client/state/selectors/test/is-site-wpcom-atomic.js
  • client/state/selectors/test/is-site-wpcom-staging.js
  • client/state/selectors/test/is-site-wpforteams.js
  • client/state/selectors/test/is-transient-media.js
  • client/state/selectors/test/is-unlaunched-site.js
  • client/state/selectors/test/is-updating-jetpack-settings.js
  • client/state/selectors/test/is-user-registration-days-within-range.js
  • client/state/selectors/test/is-valid-theme-filter-term.js
  • client/state/selectors/test/is-vip-site.js
  • client/state/selectors/test/is-woocommerce-core-profiler-flow.js
  • client/state/selectors/test/prepend-theme-filter-keys.js
  • client/state/selectors/test/should-display-app-banner.js
  • client/state/selectors/test/should-rate-limit-atomic-cache-clear.js
  • client/state/selectors/test/should-show-video-editor-error.js
  • client/state/selectors/test/should-sync-reader-follows.js
  • client/state/selectors/test/site-has-feature.js
  • client/state/selectors/test/site-has-wordads.js
  • client/state/selectors/test/user-has-any-atomic-sites.js
  • client/state/sharing/keyring/test/actions.js
  • client/state/sharing/keyring/test/reducer.js
  • client/state/sharing/keyring/test/selectors.js
  • client/state/sharing/publicize/publicize-actions/test/reducer.js
  • client/state/sharing/publicize/test/actions.js
  • client/state/sharing/publicize/test/reducer.js
  • client/state/sharing/publicize/test/selectors.js
  • client/state/sharing/services/test/actions.js
  • client/state/sharing/services/test/reducer.js
  • client/state/sharing/services/test/selectors.js
  • client/state/sharing/test/selectors.js
  • client/state/signup/dependency-store/test/reducer.js
  • client/state/signup/dependency-store/test/selectors.js
  • client/state/signup/flow/test/actions.js
  • client/state/signup/flow/test/reducer.js
  • client/state/signup/flow/test/selectors.js
  • client/state/signup/optional-dependencies/test/selectors.js
  • client/state/signup/progress/test/reducer.js
  • client/state/signup/progress/test/selectors.js
  • client/state/signup/steps/design-type/test/reducer.js
  • client/state/signup/steps/design-type/test/selectors.js
  • client/state/site-address-change/test/reducer.js
  • client/state/site-connection/test/actions.js
  • client/state/site-connection/test/reducer.js
  • client/state/site-settings/test/actions.js
  • client/state/site-settings/test/reducer.js
  • client/state/site-settings/test/selectors.js
  • client/state/site-settings/test/utils.js
  • client/state/sites/domains/test/actions.js
  • client/state/sites/domains/test/reducer.js
  • client/state/sites/domains/test/selectors.js
  • client/state/sites/features/test/actions.js
  • client/state/sites/features/test/reducer.js
  • client/state/sites/hooks/test/use-selected-site-selector.js
  • client/state/sites/hooks/test/use-site-option.js
  • client/state/sites/launch/test/actions.js
  • client/state/sites/plans/test/actions.js
  • client/state/sites/plans/test/reducer.js
  • client/state/sites/plans/test/selectors.js
  • client/state/sites/plans/test/trials.js
  • client/state/sites/products/test/actions.js
  • client/state/sites/products/test/reducer.js
  • client/state/sites/products/test/selectors.js
  • client/state/sites/selectors/test/get-site-options.js
  • client/state/sites/selectors/test/has-jetpack-active-plugins.js
  • client/state/sites/selectors/test/has-site-product-jetpack-stats.js
  • client/state/sites/test/actions.js
  • client/state/sites/test/reducer.js
  • client/state/sites/test/selectors.js
  • client/state/stats/chart-tabs/test/reducer.js
  • client/state/stats/chart-tabs/test/selectors.js
  • client/state/stats/lists/test/actions.js
  • client/state/stats/lists/test/reducer.js
  • client/state/stats/lists/test/selectors.js
  • client/state/stats/lists/test/utils.js
  • client/state/stats/posts/test/actions.js
  • client/state/stats/posts/test/reducer.js
  • client/state/stats/posts/test/selectors.js
  • client/state/stats/recent-post-views/test/actions.js
  • client/state/stats/recent-post-views/test/reducer.js
  • client/state/stats/recent-post-views/test/selectors.js
  • client/state/support/test/reducer.js
  • client/state/sync/test/reducer.js
  • client/state/teams/test/reducer.js
  • client/state/terms/test/actions.js
  • client/state/terms/test/reducer.js
  • client/state/terms/test/selectors.js
  • client/state/terms/test/utils.js
  • client/state/test/index.js
  • client/state/test/initial-state.js
  • client/state/test/persistence.js
  • client/state/test/utils.js
  • client/state/test/with-enhancers.js
  • client/state/test/with-persistence.js
  • client/state/themes/test/actions.js
  • client/state/themes/test/reducer.js
  • client/state/themes/test/selectors.js
  • client/state/themes/test/utils.js
  • client/state/themes/themes-ui/test/actions.js
  • client/state/themes/themes-ui/test/reducer.js
  • client/state/themes/themes-ui/test/selectors.js
  • client/state/themes/upload-theme/test/reducer.js
  • client/state/timezones/test/actions.js
  • client/state/timezones/test/reducer.js
  • client/state/ui/action-log/test/reducer.js
  • client/state/ui/action-log/test/selectors.js
  • client/state/ui/checkout/test/reducer.js
  • client/state/ui/language/test/actions.js
  • client/state/ui/language/test/reducer.js
  • client/state/ui/layout-focus/test/actions.js
  • client/state/ui/layout-focus/test/reducer.js
  • client/state/ui/layout-focus/test/selectors.js
  • client/state/ui/media-modal/test/actions.js
  • client/state/ui/media-modal/test/reducer.js
  • client/state/ui/media-modal/test/selectors.js
  • client/state/ui/post-type-list/test/reducer.js
  • client/state/ui/post-type-list/test/selectors.js
  • client/state/ui/preview/test/reducer.js
  • client/state/ui/preview/test/selectors.js
  • client/state/ui/test/actions.js
  • client/state/ui/test/reducer.js
  • client/state/ui/test/selectors.js
  • client/state/user-licensing/test/reducer.js
  • client/state/user-settings/test/helpers.js
  • client/state/user-settings/test/reducer.js
  • client/state/user-settings/thunks/test/set-user-setting.js
  • client/state/user-suggestions/test/actions.js
  • client/state/user-suggestions/test/reducer.js
  • client/state/user-suggestions/test/selectors.js
  • client/state/wordads/approve/test/actions.js
  • client/state/wordads/approve/test/reducer.js
  • client/state/wordads/approve/test/selectors.js
  • client/state/wordads/settings/test/reducer.js
  • client/state/wordads/status/test/reducer.js
  • client/state/wordads/status/test/selectors.js
  • packages/accessible-focus/src/test/index.js
  • packages/babel-plugin-transform-wpcalypso-async/test/index.js
  • packages/calypso-build/webpack/test/util.js
  • packages/calypso-e2e/dist/esm/src/test/data-helper.js
  • packages/calypso-e2e/dist/esm/src/test/email-client.js
  • packages/calypso-e2e/dist/esm/src/test/rest-api-client.createPost.js
  • packages/calypso-e2e/dist/esm/src/test/rest-api-client.getBearerToken.js
  • packages/calypso-e2e/dist/esm/src/test/rest-api-client.invites.js
  • packages/calypso-e2e/dist/esm/src/test/rest-api-client.js
  • packages/calypso-products/test/choose-default-customer-type.js
  • packages/calypso-products/test/get-interval-type-for-term.js
  • packages/calypso-products/test/get-jetpack-item-term-variants.js
  • packages/calypso-products/test/get-popular-plan-spec.js
  • packages/calypso-products/test/has-marketplace-product.js
  • packages/calypso-products/test/is-jetpack-legacy-item.js
  • packages/calypso-products/test/is-jetpack-purchasable-item.js
  • packages/calypso-products/test/is-plan.js
  • packages/calypso-products/test/is-superseding-jetpack-item.js
  • packages/calypso-products/test/plan-levels-match.js
  • packages/calypso-products/test/plan-lookups.js
  • packages/calypso-products/test/plan-other.js
  • packages/calypso-products/test/plans-link.js
  • packages/calypso-products/test/product-values.js
  • packages/calypso-products/test/products-list.js
  • packages/calypso-url/src/safe-image-url/test/index.js
  • packages/calypso-url/test/format.js
  • packages/calypso-url/test/get-calypso-url.js
  • packages/calypso-url/test/url-parts.js
  • packages/calypso-url/test/url-type.js
  • packages/components/src/badge/test/index.js
  • packages/components/src/button/test/index.js
  • packages/components/src/card/test/index.js
  • packages/components/src/select-dropdown/test/index.js
  • packages/components/src/select-dropdown/test/item.js
  • packages/components/src/select-dropdown/translatable/test/proptype.js
  • packages/components/src/suggestions/test/index.js
  • packages/create-calypso-config/src/test/index.js
  • packages/data-stores/src/wpcom-plans-ui/test/reducer.js
  • packages/data-stores/src/wpcom-plans-ui/test/selectors.js
  • packages/effective-module-tree/test/test.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-ellipsis.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-mismatched-placeholders.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-named-placeholders.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-no-collapsible-whitespace.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-no-placeholders-only.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-no-this-translate.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-no-variables.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-translate-identifier.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/i18n-unlocalized-url.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/jsx-classname-namespace.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/jsx-gridicon-size.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/no-unsafe-wp-apis.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/post-message-no-wildcard-targets.js
  • packages/eslint-plugin-wpcalypso/lib/rules/test/redux-no-bound-selectors.js
  • packages/eslint-plugin-wpcalypso/lib/util/test/get-i18n-string-from-node.js
  • packages/eslint-plugin-wpcalypso/lib/util/test/sequence-callee.js
  • packages/eslint-plugin-wpcalypso/test-utils/test/format-message.js
  • packages/i18n-calypso-cli/test/i18n.js
  • packages/i18n-calypso-cli/test/multiline.js
  • packages/i18n-calypso/test/index.js
  • packages/i18n-calypso/test/localize.js
  • packages/i18n-calypso/test/use-translate.js
  • packages/i18n-utils/src/test/localize-url.js
  • packages/i18n-utils/src/test/utils.js
  • packages/js-utils/src/test/shuffle.js
  • packages/js-utils/src/test/unique-by.js
  • packages/languages/test/index.js
  • packages/load-script/test/callback-handler.js
  • packages/load-script/test/dom-operations.js
  • packages/load-script/test/index.js
  • packages/photon/test/index.js
  • packages/popup-monitor/test/index.js
  • packages/privacy-toolset/dist/esm/cookie-banner/test/cookie-banner.js
  • packages/privacy-toolset/dist/esm/do-not-sell-dialog/test/do-not-sell-dialog.js
  • packages/request-external-access/test/index.js
  • packages/search/dist/esm/test/use-fuzzy-search.js
  • packages/search/src/test/index.js
  • packages/shopping-cart/test/shopping-cart-endpoint.js
  • packages/social-previews/test/helpers.js
  • packages/social-previews/test/index.js
  • packages/state-utils/src/create-selector/test/index.js
  • packages/tree-select/test/index.js
  • packages/viewport-react/test/index.js
  • packages/viewport/test/index.js
  • packages/webpack-config-flag-plugin/test/index.js
  • packages/webpack-inline-constant-exports-plugin/test/index.js
  • packages/webpack-rtl-plugin/test/index.js
  • packages/wp-babel-makepot/test/index.js
  • packages/wpcom-checkout/test/postal-code.js
  • packages/wpcom-proxy-request/test/index.js

Testing Instructions

Run yarn test:bun

Pre-merge Checklist

  • Has the general commit checklist been followed? (PCYsg-hS-p2)
  • https://wpcalypso.wordpress.com/devdocs/docs/testing/index.md for your changes?
  • Have you tested the feature in Simple (P9HQHe-k8-p2), Atomic (P9HQHe-jW-p2), and self-hosted Jetpack sites (PCYsg-g6b-p2)?
  • Have you checked for TypeScript, React or other console errors?
  • Have you used memoizing on expensive computations? More info in Memoizing with create-selector and Using memoizing selectors and Our Approach to Data
  • Have we added the "[Status] String Freeze" label as soon as any new strings were ready for translation (p4TIVU-5Jq-p2)?
  • For changes affecting Jetpack: Have we added the "[Status] Needs Privacy Updates" label if this pull request changes what data or activity we track or use (p4TIVU-ajp-p2)?

@vindl vindl requested a review from a team as a code owner November 16, 2023 14:27
@vindl vindl requested a review from a team November 16, 2023 14:27
@matticbot matticbot added [Status] Needs Review The PR is ready for review. This also triggers e2e canary tests and wp-desktop tests automatically. labels Nov 16, 2023
Copy link

github-actions bot commented Nov 16, 2023

Link to live branch is being generated...
Please wait a few minutes and refresh this page.

@matticbot
Copy link
Contributor

This PR modifies the release build for the following Calypso Apps:

For info about this notification, see here: PCYsg-OT6-p2

  • editing-toolkit

To test WordPress.com changes, run install-plugin.sh $pluginSlug try/bun-test-runner on your sandbox.

@matticbot
Copy link
Contributor

This PR does not affect the size of JS and CSS bundles shipped to the user's browser.

Generated by performance advisor bot at iscalypsofastyet.com.

Runs part of the tests in the codebase that contain '.test.' in their
file name with Bun.
@vindl vindl changed the title Tests: experiment for running tests with Bun Experiment: Running tests with Bun Nov 16, 2023
@vindl vindl self-assigned this Nov 16, 2023
@vindl vindl requested review from a team November 16, 2023 16:51
@p-jackson
Copy link
Member

This is a super cool experiment. 5 times faster is pretty compelling. I'll mostly play devil's advocate in this comment because the performance boost speaks for itself. I tried --watch mode too and it was also incredibly fast even though it appears to re-run all tests rather than just the changed files. I think the fast boot time is one of my favourite things. Starting up Jest watch mode can be pretty painful.

I already made some comments here p1P4aZ-5z1-p2#comment-30638 where I'm worried about Bun not yet having the track record for stability and maintenance. Not that it won't eventually get that reputation, but it just doesn't have it yet. I like the premise of this hackathon project: experiment with Bun on something less mission-critical first. On the other hand, failing tests block the deployment pipeline and cause queues in the #calypso channel. When we need to quickly revert a PR, tests failing for random reasons (not related to our code) could be quite a problem.

I worry a little bit about the proliferation of tools. When switching between different projects I have to switch between pnpm, yarn and npm. I'm worried that using Bun for tests will feel a bit like this. I can see we're trying to ameliorate this issue by installing bun transparently as a project dependency. But that's not 100% smooth. I get this error when installing dependencies:

# This file contains the result of Yarn building a package (bun@npm:1.0.12)
# Script name: postinstall

Error: Yarn does not support bun, because it does not allow linking to binaries. To use bun, install using the following command: curl -fsSL https://bun.sh/install | bash
    at optimizeBun (/Users/philip/dev/wp-calypso/node_modules/bun/install.js:408:11)
    at /Users/philip/dev/wp-calypso/node_modules/bun/install.js:425:3

Magical things are harder to debug, and re-writing @jest/globals imports at runtime sounds magical. πŸ§™

I'm also not getting a clean pass result like the screenshot in the OP.

error: spyOn(target, prop) does not support accessor properties yet

So accessor properties are not supported yet. Yarn doesn't support bun yet. I also heard that Bun doesn't support Windows yet. It's starting to sound like some of the points that this scathing review of the Bun release made: https://dev.to/thejaredwilcurt/bun-hype-how-we-learned-nothing-from-yarn-2n3j

Their point was that we can just stick with Node because Bun will pressure the Node team to make their app faster (the same way Yarn pressured npm to improve). And so if we wait a year Node will catch up by itself and we won't have to experience the pain of migrating.

Some thoughts for the hackathon team to ponder πŸ˜„ I also really love snappy dev tools. So, you know I'm torn.

Copy link

Support References

This comment is automatically generated. Please do not edit it.

  • p1p4az-5z1-p2#comment-30638

@github-actions github-actions bot added the Customer Report Issues or PRs that were reported via Happiness. Previously known as "Happiness Request". label Nov 17, 2023
@vindl
Copy link
Member Author

vindl commented Nov 17, 2023

I already made some comments here p1P4aZ-5z1-p2#comment-30638 where I'm worried about Bun not yet having the track record for stability and maintenance.

It's not obvious from the PR summary, but that's our recommendation based on these explorations. The performance gains look promising, and we should keep following this project as it matures. We shouldn't attempt this migration now, though.

So accessor properties are not supported yet. Yarn doesn't support bun yet. I also heard that Bun doesn't support Windows yet. It's starting to sound like some of the points that this scathing review of the Bun release made: https://dev.to/thejaredwilcurt/bun-hype-how-we-learned-nothing-from-yarn-2n3j

I read this post yesterday as I was researching this and wanted to link it in response. πŸ˜„

@vindl vindl added Testing and removed Customer Report Issues or PRs that were reported via Happiness. Previously known as "Happiness Request". Framework [Status] Needs Review The PR is ready for review. This also triggers e2e canary tests and wp-desktop tests automatically. Tests labels Nov 17, 2023
@matticbot matticbot added the [Status] Needs Review The PR is ready for review. This also triggers e2e canary tests and wp-desktop tests automatically. label Nov 17, 2023
@noahtallen
Copy link
Member

noahtallen commented Nov 20, 2023

Another thought about Bun is that it might never make sense for the production Node server -- reliability and stability are way more important there. But dev tools, we can probably accept some uncertainty if it's almost always a faster overall experience!

I also really love snappy dev tools. So, you know I'm torn.

One of my thoughts around this is that if the configuration and our team (@Automattic/team-calypso-frameworks, @Automattic/team-calypso-platform) can absorb maintenance and ✨ magic ✨, then it's ok to have some degree of fragmentation... assuming the test lib works mostly the same and there isn't much context switch going between projects with with/without Bun for testing.

As one example, when we upgrade Yarn to version 4 or Node to version 20, developers should mostly not notice -- it mostly all happens automagically when they run yarn install or nvm use. So the complexity of keeping those tools updated is hidden away.

I also heard that Bun doesn't support Windows yet

and a very small point on this is that Calypso development already doesn't support Windows (given a fair number of bash scripts used), and I'm not sure it will unless there's a clear need. (Though that's very different for Gutenberg!)

get this error when installing dependencies:

yeah, this would definitely be important to fix first!

So for me personally (not sure if the rest of Calypso team agrees!) I like the idea of continuing to experiment with this if Bun overall makes the unit testing experience much better. Especially since we want to focus more on unit/integration tests rather than e2es!

@github-actions github-actions bot added the Customer Report Issues or PRs that were reported via Happiness. Previously known as "Happiness Request". label Nov 20, 2023
@noahtallen noahtallen removed the Customer Report Issues or PRs that were reported via Happiness. Previously known as "Happiness Request". label Nov 20, 2023
@p-jackson
Copy link
Member

You make a very good point about yarn and Node version updates. You folks to a great job of abstracting those issues from us, so maybe Bun would be similar.

... Calypso development already doesn't support Windows (given a fair number of bash scripts used), and I'm not sure it will unless there's a clear need

I think you can run Bash on Windows since a while ago? I wish I had a Windows box to try it out. It's good to be open source in principle, even if in practice there aren't any other Calypso's running in the wild.

Especially since we want to focus more on unit/integration tests rather than e2es!

One of the theoretical advantages of unit tests over e2e is dev's will discover test failures early, before pushing. However I still find myself first alerted to unit test failures after creating my PR :D And it's probably due to how slow they are so I'm not always running jest --watch in the background. So yeah, incentivising me to always have tests running in watch mode (or VS Code integration like it's linting? πŸ€”) would be very cool.

@github-actions github-actions bot added the Customer Report Issues or PRs that were reported via Happiness. Previously known as "Happiness Request". label Nov 21, 2023
Copy link
Member

@tyxla tyxla left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So for me personally (not sure if the rest of Calypso team agrees!) I like the idea of continuing to experiment with this if Bun overall makes the unit testing experience much better. Especially since we want to focus more on unit/integration tests rather than e2es!

Agreed. I like the approach where we specifically have two different file naming schemes for Bun and Jest and if we end up adopting Bun for the long run, we can decide which runner to run them with by just picking the names, potentially making a migration easier.

I'd love to see the branch green before we can start considering it more seriously though. Might need a rebase and/or some dependency or install tinkering. I've seen a few workarounds suggested around the Bun + Yarn incompatibility in yarnpkg/yarn#891

@vishnugopal vishnugopal removed the request for review from a team November 27, 2023 05:16
@vindl
Copy link
Member Author

vindl commented May 18, 2024

Closing since I won't be able to continue working on this soon. @tyxla feel free to reopen if your team wants to pick it up again.

@vindl vindl closed this May 18, 2024
@github-actions github-actions bot removed the [Status] Needs Review The PR is ready for review. This also triggers e2e canary tests and wp-desktop tests automatically. label May 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Customer Report Issues or PRs that were reported via Happiness. Previously known as "Happiness Request". Testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants