21d14759b3
In this PR, we consolidate TypeScript config files (using the 'include' setting) and JS test directory naming. The goal is to reduce the number of processed files during different build steps. |
||
---|---|---|
.. | ||
changelog | ||
src | ||
.eslintrc.js | ||
.npmrc | ||
CHANGELOG.md | ||
PREVIOUS_CHANGELOG.md | ||
README.md | ||
babel.config.js | ||
composer.json | ||
composer.lock | ||
jest.config.json | ||
package.json | ||
tsconfig-cjs.json | ||
tsconfig.json |
README.md
ExPlat
This packages includes a component and utility functions that can be used to run A/B Tests in WooCommerce dashboard, report pages, and frontend pages.
Installation
Install the module
pnpm install @woocommerce/explat --save
This package assumes that your code will run in an ES2015+ environment. If you're using an environment that has limited or no support for ES2015+ such as lower versions of IE then using core-js or @babel/polyfill will add support for these methods. Learn more about it in Babel docs.
Usage with Experiment Component
import { Experiment } from '@woocommerce/explat';
const DefaultExperience = <div>Hello World</div>;
const TreatmentExperience = <div>Hello WooCommerce!</div>;
const LoadingExperience = <div>⏰</div>;
<Experiment
name="woocommerce_example_experiment"
defaultExperience={ DefaultExperience }
treatmentExperience={ TreatmentExperience }
loadingExperience={ LoadingExperience }
/>;
// Get the experiment assignment with authentication as a WPCOM user.
import { ExperimentWithAuth } from '@woocommerce/explat';
<ExperimentWithAuth
name="woocommerce_example_experiment"
defaultExperience={ DefaultExperience }
treatmentExperience={ TreatmentExperience }
loadingExperience={ LoadingExperience }
/>;
Usage with useExperiment
import { useExperiment } from '@woocommerce/explat';
const DefaultExperience = <div>Hello World</div>;
const TreatmentExperience = <div>Hello WooCommerce!</div>;
const [ isLoadingExperiment, experimentAssignment ] = useExperiment('experiment-name');
if ( ! isLoadingExperiment && experimentAssignment?.variationName === 'treatment' ) {
return <TreatmentExperience />
}
return <DefaultExperience />