From 37772a1349478fbf967ee6fce4315aaca871e7c6 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 11 May 2022 17:10:08 +0800 Subject: [PATCH 1/6] Add use-product-layout-experiment hook and logic to onboarding package --- packages/js/onboarding/package.json | 1 + .../WooOnboardingTask/WooOnboardingTask.js | 10 ++++- .../src/components/WooOnboardingTask/index.js | 1 + .../use-product-layout-experiment.ts | 44 +++++++++++++++++++ packages/js/onboarding/src/index.js | 6 ++- 5 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts diff --git a/packages/js/onboarding/package.json b/packages/js/onboarding/package.json index f38ad112585..0e8e1ebc083 100644 --- a/packages/js/onboarding/package.json +++ b/packages/js/onboarding/package.json @@ -29,6 +29,7 @@ "@woocommerce/components": "workspace:*", "@woocommerce/experimental": "workspace:*", "@woocommerce/tracks": "workspace:*", + "@woocommerce/explat": "workspace:*", "@wordpress/components": "^19.5.0", "@wordpress/element": "^4.1.1", "@wordpress/i18n": "^4.3.1", diff --git a/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js b/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js index dfe6851caa5..197bdb6f506 100644 --- a/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js +++ b/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js @@ -5,7 +5,12 @@ import { createElement, useEffect } from '@wordpress/element'; import { recordEvent } from '@woocommerce/tracks'; import { Slot, Fill } from '@wordpress/components'; -export const trackView = ( taskId ) => { +/** + * Internal dependencies + */ +import { isExperimentProductTask } from './use-product-layout-experiment'; + +export const trackView = async ( taskId ) => { const activePlugins = wp.data .select( 'wc/admin/plugins' ) .getActivePlugins(); @@ -21,7 +26,8 @@ export const trackView = ( taskId ) => { recordEvent( 'task_view', { task_name: taskId, experimental_products: - window.wcAdminFeatures[ 'experimental-products-task' ], + window.wcAdminFeatures[ 'experimental-products-task' ] && + ( await isExperimentProductTask() ), wcs_installed: installedPlugins.includes( 'woocommerce-services' ), wcs_active: activePlugins.includes( 'woocommerce-services' ), jetpack_installed: installedPlugins.includes( 'jetpack' ), diff --git a/packages/js/onboarding/src/components/WooOnboardingTask/index.js b/packages/js/onboarding/src/components/WooOnboardingTask/index.js index 06482c0ab9e..88c38d69e77 100644 --- a/packages/js/onboarding/src/components/WooOnboardingTask/index.js +++ b/packages/js/onboarding/src/components/WooOnboardingTask/index.js @@ -1 +1,2 @@ export * from './WooOnboardingTask'; +export * from './use-product-layout-experiment'; diff --git a/packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts b/packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts new file mode 100644 index 00000000000..31212677aa4 --- /dev/null +++ b/packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts @@ -0,0 +1,44 @@ +/** + * External dependencies + */ +import { useState, useEffect } from '@wordpress/element'; +import { loadExperimentAssignment } from '@woocommerce/explat'; + +type Layout = 'control' | 'card' | 'stacked'; + +export const getProductLayoutExperiment = async (): Promise< Layout > => { + const [ cardAssignment, stackedAssignment ] = await Promise.all( [ + loadExperimentAssignment( `woocommerce_products_task_layout_card` ), + loadExperimentAssignment( `woocommerce_products_task_layout_stacked` ), + ] ); + // This logic may look flawed as in both looks like they can be assigned treatment at the same time, + // but in backend we segment the experiments by store country, so it will never be. + if ( cardAssignment?.variationName === 'treatment' ) { + return 'card'; + } else if ( stackedAssignment?.variationName === 'treatment' ) { + return 'stacked'; + } + return 'control'; +}; + +export const isExperimentProductTask = async (): Promise< boolean > => { + return ( await getProductLayoutExperiment() ) !== 'control'; +}; + +export const useLayoutExperiment = () => { + const [ isLoading, setIsLoading ] = useState< boolean >( true ); + const [ experimentLayout, setExperimentLayout ] = useState< Layout >( + 'control' + ); + + useEffect( () => { + getProductLayoutExperiment().then( ( layout ) => { + setExperimentLayout( layout ); + setIsLoading( false ); + } ); + }, [ setExperimentLayout ] ); + + return [ isLoading, experimentLayout ]; +}; + +export default useLayoutExperiment; diff --git a/packages/js/onboarding/src/index.js b/packages/js/onboarding/src/index.js index c2e7dddf91d..53a0ea43da3 100644 --- a/packages/js/onboarding/src/index.js +++ b/packages/js/onboarding/src/index.js @@ -10,5 +10,9 @@ export { default as GooglePay } from './images/cards/googlepay'; export { default as WCPayLogo } from './images/wcpay-logo'; export { WooPaymentGatewaySetup } from './components/WooPaymentGatewaySetup'; export { WooPaymentGatewayConfigure } from './components/WooPaymentGatewayConfigure'; -export { WooOnboardingTask } from './components/WooOnboardingTask'; export { WooOnboardingTaskListItem } from './components/WooOnboardingTaskListItem'; +export { + WooOnboardingTask, + useLayoutExperiment, + isExperimentProductTask, +} from './components/WooOnboardingTask'; From d2dd8c5c01511073d52b1b686dfd7c3fb659d7a8 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 11 May 2022 17:10:44 +0800 Subject: [PATCH 2/6] Update pnpm lock --- pnpm-lock.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98c38cfb1b3..053d3888eef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1062,6 +1062,7 @@ importers: '@woocommerce/components': workspace:* '@woocommerce/eslint-plugin': workspace:* '@woocommerce/experimental': workspace:* + '@woocommerce/explat': workspace:* '@woocommerce/style-build': workspace:* '@woocommerce/tracks': workspace:* '@wordpress/browserslist-config': ^4.1.1 @@ -1085,6 +1086,7 @@ importers: '@automattic/interpolate-components': 1.2.1 '@woocommerce/components': link:../components '@woocommerce/experimental': link:../experimental + '@woocommerce/explat': link:../explat '@woocommerce/tracks': link:../tracks '@wordpress/components': 19.6.1_@babel+core@7.17.8 '@wordpress/element': 4.2.1 From 16c36e1f7d0763fc3ce964598d0f4900a5e87ac9 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 11 May 2022 17:12:24 +0800 Subject: [PATCH 3/6] Import hook from onboarding --- .../fills/experimental-products/index.tsx | 6 ++- .../experimental-products/test/index.tsx | 7 ++- .../client/tasks/fills/index.js | 6 ++- .../fills/use-product-layout-experiment.ts | 44 ------------------- 4 files changed, 12 insertions(+), 51 deletions(-) delete mode 100644 plugins/woocommerce-admin/client/tasks/fills/use-product-layout-experiment.ts diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index 1c5dadde5f8..e4a10cf588f 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -2,7 +2,10 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { WooOnboardingTask } from '@woocommerce/onboarding'; +import { + WooOnboardingTask, + useLayoutExperiment, +} from '@woocommerce/onboarding'; import { Text } from '@woocommerce/experimental'; import { registerPlugin } from '@wordpress/plugins'; import { useMemo, useState } from '@wordpress/element'; @@ -17,7 +20,6 @@ import './index.scss'; import { getAdminSetting } from '~/utils/admin-settings'; import { getSurfacedProductTypeKeys, getProductTypes } from './utils'; import useProductTypeListItems from './use-product-types-list-items'; -import useLayoutExperiment from '../use-product-layout-experiment'; import Stack from './stack'; import Footer from './footer'; import CardLayout from './card-layout'; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx index 933aa0abb2c..d537cf4ad8a 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx @@ -3,6 +3,7 @@ */ import { render, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; +import { useLayoutExperiment } from '@woocommerce/onboarding'; /** * Internal dependencies @@ -10,7 +11,6 @@ import userEvent from '@testing-library/user-event'; import { Products } from '../'; import { defaultSurfacedProductTypes, productTypes } from '../constants'; import { getAdminSetting } from '~/utils/admin-settings'; -import useLayoutExperiment from '../../use-product-layout-experiment'; jest.mock( '@wordpress/data', () => ( { ...jest.requireActual( '@wordpress/data' ), @@ -21,9 +21,8 @@ jest.mock( '~/utils/admin-settings', () => ( { getAdminSetting: jest.fn(), } ) ); -jest.mock( '../../use-product-layout-experiment', () => ( { - default: jest.fn().mockReturnValue( [ false, 'stacked' ] ), - __esModule: true, +jest.mock( '@woocommerce/onboarding', () => ( { + useLayoutExperiment: jest.fn().mockReturnValue( [ false, 'stacked' ] ), } ) ); global.fetch = jest.fn().mockImplementation( () => diff --git a/plugins/woocommerce-admin/client/tasks/fills/index.js b/plugins/woocommerce-admin/client/tasks/fills/index.js index 1d04f492a50..4fa0d0cc0a6 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/index.js +++ b/plugins/woocommerce-admin/client/tasks/fills/index.js @@ -1,8 +1,12 @@ +/** + * External dependencies + */ +import { isExperimentProductTask } from '@woocommerce/onboarding'; + /** * Internal dependencies */ import { getAdminSetting } from '~/utils/admin-settings'; -import { isExperimentProductTask } from './use-product-layout-experiment'; import './PaymentGatewaySuggestions'; import './shipping'; diff --git a/plugins/woocommerce-admin/client/tasks/fills/use-product-layout-experiment.ts b/plugins/woocommerce-admin/client/tasks/fills/use-product-layout-experiment.ts deleted file mode 100644 index 31212677aa4..00000000000 --- a/plugins/woocommerce-admin/client/tasks/fills/use-product-layout-experiment.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * External dependencies - */ -import { useState, useEffect } from '@wordpress/element'; -import { loadExperimentAssignment } from '@woocommerce/explat'; - -type Layout = 'control' | 'card' | 'stacked'; - -export const getProductLayoutExperiment = async (): Promise< Layout > => { - const [ cardAssignment, stackedAssignment ] = await Promise.all( [ - loadExperimentAssignment( `woocommerce_products_task_layout_card` ), - loadExperimentAssignment( `woocommerce_products_task_layout_stacked` ), - ] ); - // This logic may look flawed as in both looks like they can be assigned treatment at the same time, - // but in backend we segment the experiments by store country, so it will never be. - if ( cardAssignment?.variationName === 'treatment' ) { - return 'card'; - } else if ( stackedAssignment?.variationName === 'treatment' ) { - return 'stacked'; - } - return 'control'; -}; - -export const isExperimentProductTask = async (): Promise< boolean > => { - return ( await getProductLayoutExperiment() ) !== 'control'; -}; - -export const useLayoutExperiment = () => { - const [ isLoading, setIsLoading ] = useState< boolean >( true ); - const [ experimentLayout, setExperimentLayout ] = useState< Layout >( - 'control' - ); - - useEffect( () => { - getProductLayoutExperiment().then( ( layout ) => { - setExperimentLayout( layout ); - setIsLoading( false ); - } ); - }, [ setExperimentLayout ] ); - - return [ isLoading, experimentLayout ]; -}; - -export default useLayoutExperiment; From 481b1e85661443fb2a618845ac3dd90553658ae2 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 11 May 2022 18:46:38 +0800 Subject: [PATCH 4/6] Add backend experiment logic --- .../src/Admin/API/OnboardingTasks.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Admin/API/OnboardingTasks.php b/plugins/woocommerce/src/Admin/API/OnboardingTasks.php index 3f54f1d68a3..dff22c92ab1 100644 --- a/plugins/woocommerce/src/Admin/API/OnboardingTasks.php +++ b/plugins/woocommerce/src/Admin/API/OnboardingTasks.php @@ -340,7 +340,10 @@ class OnboardingTasks extends \WC_REST_Data_Controller { * @return WP_Error|WP_REST_Response */ public static function import_sample_products() { - if ( Features::is_enabled( 'experimental-products-task' ) || Features::is_enabled( 'experimental-import-products-task' ) ) { + if ( + ( Features::is_enabled( 'experimental-import-products-task' ) || Features::is_enabled( 'experimental-products-task' ) ) + && static::is_experiment_product_task() + ) { $sample_csv_file = WC_ABSPATH . 'sample-data/experimental_sample_9_products.csv'; } else { $sample_csv_file = WC_ABSPATH . 'sample-data/sample_products.csv'; @@ -350,6 +353,22 @@ class OnboardingTasks extends \WC_REST_Data_Controller { return rest_ensure_response( $import ); } + /** + * Check if product task experiment is treatment. + * + * @return bool + */ + public static function is_experiment_product_task() { + $anon_id = isset( $_COOKIE['tk_ai'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['tk_ai'] ) ) : ''; + $allow_tracking = 'yes' === get_option( 'woocommerce_allow_tracking' ); + $abtest = new \WooCommerce\Admin\Experimental_Abtest( + $anon_id, + 'woocommerce', + $allow_tracking + ); + return $abtest->get_variation( 'woocommerce_products_task_layout_stacked' ) === 'treatment' || + $abtest->get_variation( 'woocommerce_products_task_layout_card' ) === 'treatment'; + } /** * Creates a product from a template name passed in through the template_name param. From f7263c60ffdec53f5e88b424cd5cb7ccc0c90b88 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 11 May 2022 18:52:59 +0800 Subject: [PATCH 5/6] Changelogs --- .../changelog/dev-follow-up-product-task-experiment | 4 ++++ .../changelog/dev-follow-up-product-task-experiment | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 packages/js/onboarding/changelog/dev-follow-up-product-task-experiment create mode 100644 plugins/woocommerce/changelog/dev-follow-up-product-task-experiment diff --git a/packages/js/onboarding/changelog/dev-follow-up-product-task-experiment b/packages/js/onboarding/changelog/dev-follow-up-product-task-experiment new file mode 100644 index 00000000000..e55863c5a53 --- /dev/null +++ b/packages/js/onboarding/changelog/dev-follow-up-product-task-experiment @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add ExPlat dependency and product task experiment logic diff --git a/plugins/woocommerce/changelog/dev-follow-up-product-task-experiment b/plugins/woocommerce/changelog/dev-follow-up-product-task-experiment new file mode 100644 index 00000000000..271b4cbb1ee --- /dev/null +++ b/plugins/woocommerce/changelog/dev-follow-up-product-task-experiment @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Moved out product task experiment hook to onboarding package, added ExPlat logic to backend calls From 713198f5edd435c7bb27fcc7d6c4646b79b3f476 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Thu, 12 May 2022 10:40:06 +0800 Subject: [PATCH 6/6] Renames to increase clarity --- .../components/WooOnboardingTask/WooOnboardingTask.js | 4 ++-- .../WooOnboardingTask/use-product-layout-experiment.ts | 6 +++--- packages/js/onboarding/src/index.js | 4 ++-- .../client/tasks/fills/experimental-products/index.tsx | 7 +++++-- .../tasks/fills/experimental-products/test/index.tsx | 10 +++++----- plugins/woocommerce-admin/client/tasks/fills/index.js | 4 ++-- 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js b/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js index 197bdb6f506..4598319b4ee 100644 --- a/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js +++ b/packages/js/onboarding/src/components/WooOnboardingTask/WooOnboardingTask.js @@ -8,7 +8,7 @@ import { Slot, Fill } from '@wordpress/components'; /** * Internal dependencies */ -import { isExperimentProductTask } from './use-product-layout-experiment'; +import { isProductTaskExperimentTreatment } from './use-product-layout-experiment'; export const trackView = async ( taskId ) => { const activePlugins = wp.data @@ -27,7 +27,7 @@ export const trackView = async ( taskId ) => { task_name: taskId, experimental_products: window.wcAdminFeatures[ 'experimental-products-task' ] && - ( await isExperimentProductTask() ), + ( await isProductTaskExperimentTreatment() ), wcs_installed: installedPlugins.includes( 'woocommerce-services' ), wcs_active: activePlugins.includes( 'woocommerce-services' ), jetpack_installed: installedPlugins.includes( 'jetpack' ), diff --git a/packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts b/packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts index 31212677aa4..bf227588b29 100644 --- a/packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts +++ b/packages/js/onboarding/src/components/WooOnboardingTask/use-product-layout-experiment.ts @@ -21,11 +21,11 @@ export const getProductLayoutExperiment = async (): Promise< Layout > => { return 'control'; }; -export const isExperimentProductTask = async (): Promise< boolean > => { +export const isProductTaskExperimentTreatment = async (): Promise< boolean > => { return ( await getProductLayoutExperiment() ) !== 'control'; }; -export const useLayoutExperiment = () => { +export const useProductTaskExperiment = () => { const [ isLoading, setIsLoading ] = useState< boolean >( true ); const [ experimentLayout, setExperimentLayout ] = useState< Layout >( 'control' @@ -41,4 +41,4 @@ export const useLayoutExperiment = () => { return [ isLoading, experimentLayout ]; }; -export default useLayoutExperiment; +export default useProductTaskExperiment; diff --git a/packages/js/onboarding/src/index.js b/packages/js/onboarding/src/index.js index 53a0ea43da3..b3f44d4261f 100644 --- a/packages/js/onboarding/src/index.js +++ b/packages/js/onboarding/src/index.js @@ -13,6 +13,6 @@ export { WooPaymentGatewayConfigure } from './components/WooPaymentGatewayConfig export { WooOnboardingTaskListItem } from './components/WooOnboardingTaskListItem'; export { WooOnboardingTask, - useLayoutExperiment, - isExperimentProductTask, + useProductTaskExperiment, + isProductTaskExperimentTreatment, } from './components/WooOnboardingTask'; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index e4a10cf588f..73a62b1a06b 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -4,7 +4,7 @@ import { __ } from '@wordpress/i18n'; import { WooOnboardingTask, - useLayoutExperiment, + useProductTaskExperiment, } from '@woocommerce/onboarding'; import { Text } from '@woocommerce/experimental'; import { registerPlugin } from '@wordpress/plugins'; @@ -52,7 +52,10 @@ const ViewControlButton: React.FC< { export const Products = () => { const [ isExpanded, setIsExpanded ] = useState< boolean >( false ); - const [ isLoadingExperiment, experimentLayout ] = useLayoutExperiment(); + const [ + isLoadingExperiment, + experimentLayout, + ] = useProductTaskExperiment(); const productTypes = useProductTypeListItems( getProductTypes() ); const surfacedProductTypeKeys = getSurfacedProductTypeKeys( diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx index d537cf4ad8a..1fcec27fa68 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx @@ -3,7 +3,7 @@ */ import { render, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { useLayoutExperiment } from '@woocommerce/onboarding'; +import { useProductTaskExperiment } from '@woocommerce/onboarding'; /** * Internal dependencies @@ -22,7 +22,7 @@ jest.mock( '~/utils/admin-settings', () => ( { } ) ); jest.mock( '@woocommerce/onboarding', () => ( { - useLayoutExperiment: jest.fn().mockReturnValue( [ false, 'stacked' ] ), + useProductTaskExperiment: jest.fn().mockReturnValue( [ false, 'stacked' ] ), } ) ); global.fetch = jest.fn().mockImplementation( () => @@ -112,7 +112,7 @@ describe( 'Products', () => { } ); it( 'should show spinner when layout experiment is loading', async () => { - ( useLayoutExperiment as jest.Mock ).mockImplementation( () => [ + ( useProductTaskExperiment as jest.Mock ).mockImplementation( () => [ true, 'card', ] ); @@ -123,7 +123,7 @@ describe( 'Products', () => { } ); it( 'should render card layout when experiment is assigned', async () => { - ( useLayoutExperiment as jest.Mock ).mockImplementation( () => [ + ( useProductTaskExperiment as jest.Mock ).mockImplementation( () => [ false, 'card', ] ); @@ -136,7 +136,7 @@ describe( 'Products', () => { } ); it( 'should render stacked layout when experiment is assigned', async () => { - ( useLayoutExperiment as jest.Mock ).mockImplementation( () => [ + ( useProductTaskExperiment as jest.Mock ).mockImplementation( () => [ false, 'stacked', ] ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/index.js b/plugins/woocommerce-admin/client/tasks/fills/index.js index 4fa0d0cc0a6..70b6d4ff64d 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/index.js +++ b/plugins/woocommerce-admin/client/tasks/fills/index.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { isExperimentProductTask } from '@woocommerce/onboarding'; +import { isProductTaskExperimentTreatment } from '@woocommerce/onboarding'; /** * Internal dependencies @@ -20,7 +20,7 @@ import './purchase'; const onboardingData = getAdminSetting( 'onboarding' ); const possiblyImportProductTaskExperiment = async () => { - const isExperiment = await isExperimentProductTask(); + const isExperiment = await isProductTaskExperimentTreatment(); if ( isExperiment ) { import( './experimental-products' ); } else {