From 8095abcfddd6bc423a4e059a4e48420a56b67128 Mon Sep 17 00:00:00 2001 From: Gabriel Caires Date: Thu, 24 Oct 2024 11:00:40 +0100 Subject: [PATCH] Site Migration: Add migration survey (#95408) * Add generic survey component * Move folder * Implement migration survey * Add survey manager * Update survey layout * Add missing asset * Track events * Limit to display the survey only for english locales --- .../migrations/survey/wordpress-half-logo.png | Bin 0 -> 55020 bytes .../components/survery-manager/index.tsx | 43 +++++ .../components/migration-survey/async.tsx | 5 + .../components/migration-survey/index.tsx | 50 ++++++ .../components/migration-survey/style.scss | 35 ++++ .../components/survey/index.tsx | 170 ++++++++++++++++++ .../components/survey/style.scss | 56 ++++++ .../components/survey/test/index.tsx | 160 +++++++++++++++++ .../components/survey/types.ts | 25 +++ client/landing/stepper/index.tsx | 3 + 10 files changed, 547 insertions(+) create mode 100644 client/assets/images/onboarding/migrations/survey/wordpress-half-logo.png create mode 100644 client/landing/stepper/declarative-flow/internals/components/survery-manager/index.tsx create mode 100644 client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/async.tsx create mode 100644 client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/index.tsx create mode 100644 client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/style.scss create mode 100644 client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/index.tsx create mode 100644 client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/style.scss create mode 100644 client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/test/index.tsx create mode 100644 client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/types.ts diff --git a/client/assets/images/onboarding/migrations/survey/wordpress-half-logo.png b/client/assets/images/onboarding/migrations/survey/wordpress-half-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7644a796543d0596ba7b6c8512e368f4a55809e5 GIT binary patch literal 55020 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 di@C { + const { params } = useFlowNavigation(); + const isEnLocale = useIsEnglishLocale(); + + // Skip survey for non-English locales + if ( ! isEnLocale ) { + return null; + } + + if ( ! params.flow ) { + return null; + } + + if ( ! MIGRATION_SURVEY_FLOWS.includes( params.flow ) ) { + return null; + } + + return ( + + + + ); +}; + +export default SurveyManager; diff --git a/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/async.tsx b/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/async.tsx new file mode 100644 index 0000000000000..87cf9882c0e96 --- /dev/null +++ b/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/async.tsx @@ -0,0 +1,5 @@ +import { lazy } from 'react'; + +const AsyncMigrationSurvey = lazy( () => import( './index' ) ); + +export default AsyncMigrationSurvey; diff --git a/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/index.tsx b/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/index.tsx new file mode 100644 index 0000000000000..6881abef1203b --- /dev/null +++ b/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/index.tsx @@ -0,0 +1,50 @@ +import { Button } from '@wordpress/components'; +import { translate } from 'i18n-calypso'; +import surveyImage from 'calypso/assets/images/onboarding/migrations/survey/wordpress-half-logo.png'; +import { Survey, SurveyProps, SurveyTriggerAccept, SurveyTriggerSkip } from '../survey'; +import './style.scss'; + +type MigrationSurveyProps = Pick< SurveyProps, 'isOpen' >; + +const MigrationSurvey = ( { isOpen }: MigrationSurveyProps ) => { + return ( + +
+ { +
+
+

+ { translate( 'Shape the Future of WordPress.com' ) } +

+
+ { translate( + 'Got a minute? Tell us about your WordPress.com journey in our brief survey and help us serve you better.' + ) } +
+
+ + + + + + +
+
+
+ ); +}; + +export default MigrationSurvey; diff --git a/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/style.scss b/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/style.scss new file mode 100644 index 0000000000000..a2021645d34e3 --- /dev/null +++ b/client/landing/stepper/declarative-flow/internals/steps-repository/components/migration-survey/style.scss @@ -0,0 +1,35 @@ +.migration-survey { + .migration-survey__popup-head { + background: #3858e9; + } + + .migration-survey__popup-content { + padding: 18px 24px 30px; + background: var(--studio-white); + + .migration-survey__popup-content-title { + font-weight: 500; + padding-bottom: 8px; + } + + .migration-survey__popup-content-description { + font-size: rem(14px); + line-height: 20px; + padding-bottom: 18px; + } + + .migration-survey__popup-content-buttons { + display: flex; + justify-content: flex-end; + } + .migration-survey__popup-img { + background: #0675c4; + padding-bottom: 57.9%; + + img { + width: 100%; + display: block; + } + } + } +} diff --git a/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/index.tsx b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/index.tsx new file mode 100644 index 0000000000000..c4ce0991806a4 --- /dev/null +++ b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/index.tsx @@ -0,0 +1,170 @@ +import { Gridicon } from '@automattic/components'; +import { Button } from '@wordpress/components'; +import clsx from 'clsx'; +import cookie from 'cookie'; +import React, { cloneElement, useCallback, useContext, useMemo, useState } from 'react'; +import { recordTracksEvent } from 'calypso/lib/analytics/tracks'; +import { + type SurveyContextType, + type SurveyActionsContextType, + type TriggerProps, + type SurveyProps, +} from './types'; +export * from './types'; +import './style.scss'; + +const SurveyContext = React.createContext< SurveyContextType | undefined >( undefined ); + +export const SurveyActionsContext = React.createContext< SurveyActionsContextType >( { + accept: () => {}, + skip: () => {}, +} ); + +const Trigger = ( { asChild, children, onClick, as }: TriggerProps ) => { + if ( asChild ) { + return cloneElement( children, { onClick } ); + } + const Tag = as ?? 'button'; + return { children }; +}; + +export const SurveyTriggerAccept = ( { + children, + as = 'button', + asChild, +}: Omit< TriggerProps, 'onClick' > ) => { + const { accept } = useContext( SurveyActionsContext ); + return ( + + { children } + + ); +}; + +export const SurveyTriggerSkip = ( { + children, + as = 'span', + asChild, +}: Omit< TriggerProps, 'onClick' > ) => { + const { skip } = useContext( SurveyActionsContext ); + return ( + + { children } + + ); +}; + +const bemElement = + ( customClassName?: string ) => + ( element: string ): string | undefined => { + if ( customClassName ) { + return `${ customClassName }__${ element }`; + } + + return undefined; + }; + +const ONE_YEAR_IN_SECONDS = 1000 * 60 * 60 * 24 * 365; +const ONE_DAY_IN_SECONDS = 1000 * 60 * 60 * 24; +/** + * Generic Survey component + * @example + * ```tsx + * + *
+ *

Survey

+ * WordPress + * + * + * + * + * + * + *
+ *
+ * ``` + */ +export const Survey = ( { + children, + name, + onAccept, + onSkip, + isOpen = true, + title, + className, +}: SurveyProps ) => { + const cookieValue = cookie.parse( document.cookie ); + const shouldShow = ! cookieValue[ name ]; + const [ shouldShowSurvey, setShouldShowSurvey ] = useState( isOpen && shouldShow ); + const element = bemElement( className ); + + const handleClose = useCallback( + ( reason: 'skip' | 'accept' | 'skip_backdrop' ) => { + const PERIOD = reason === 'skip_backdrop' ? ONE_DAY_IN_SECONDS : ONE_YEAR_IN_SECONDS; + + document.cookie = cookie.serialize( name, reason, { + expires: new Date( Date.now() + PERIOD ), + } ); + + if ( reason === 'accept' ) { + recordTracksEvent( 'calypso_survey_accepted', { survey: name, action: reason } ); + onAccept?.(); + } + + if ( reason === 'skip' ) { + recordTracksEvent( 'calypso_survey_skipped', { survey: name, action: reason } ); + onSkip?.(); + } + + setShouldShowSurvey( false ); + }, + [ name, onAccept, onSkip ] + ); + + const actions = useMemo( + () => ( { + accept: () => handleClose( 'accept' ), + skip: () => handleClose( 'skip' ), + } ), + [ handleClose ] + ); + + if ( ! shouldShowSurvey ) { + return null; + } + + return ( + + +
+ + + +
+ { children } + + +
+
+ ); +}; diff --git a/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/style.scss b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/style.scss new file mode 100644 index 0000000000000..38e8db01a156c --- /dev/null +++ b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/style.scss @@ -0,0 +1,56 @@ +.survey-notice { + position: fixed; + left: 0; + top: 0; + height: 100%; + width: 100%; + z-index: 1000; + + .survey-notice__backdrop { + background: var(--studio-black); + opacity: 0.2; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + cursor: default; + } + + .survey-notice__popup { + position: absolute; + right: 25px; + bottom: 25px; + width: 416px; + max-width: calc(100% - 50px); + z-index: 999; + border-radius: 2px; + box-shadow: + 0 3px 1px 0 rgba(0, 0, 0, 0.04), + 0 3px 8px 0 rgba(0, 0, 0, 0.12); + overflow: hidden; + background-color: var(--studio-white); + } + + .survey-notice__popup-head { + background: #0675c4; + border-bottom: 1px solid #f6f7f7; + height: 56px; + padding: 0 14px 0 16px; + display: flex; + align-items: center; + justify-content: space-between; + + .survey-notice__popup-head-title { + color: var(--studio-white); + font-size: rem(14px); + font-weight: 500; + line-height: 20px; + letter-spacing: -0.15px; + } + + .survey-notice__popup-head-close svg { + fill: var(--studio-white); + } + } +} diff --git a/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/test/index.tsx b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/test/index.tsx new file mode 100644 index 0000000000000..8d288c6d533f9 --- /dev/null +++ b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/test/index.tsx @@ -0,0 +1,160 @@ +/** + * @jest-environment jsdom + */ +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { Button } from '@wordpress/components'; +import cookie from 'cookie'; +import React from 'react'; +import { Survey, SurveyTriggerAccept, SurveyTriggerSkip } from '../'; + +const SURVEY_NAME = 'survey-test'; + +const removeSurveyCookie = () => { + document.cookie = cookie.serialize( SURVEY_NAME, 'skip', { + expires: new Date( 0 ), + } ); +}; + +describe( 'Survey', () => { + beforeEach( () => { + removeSurveyCookie(); + } ); + + it( 'renders the survey content', () => { + render( + +

Survey

+
+ ); + expect( screen.getByText( 'Survey' ) ).toBeInTheDocument(); + } ); + + it( 'closes the survey when ok button is clicked', async () => { + render( + +

Survey

+ + + + +
+ ); + await userEvent.click( screen.getByText( 'Take the survey' ) ); + + expect( screen.queryByText( 'Survey' ) ).not.toBeInTheDocument(); + } ); + + it( 'skips the survey when the skip trigger is clicked', async () => { + render( + +

Survey

+ + + + +
+ ); + await userEvent.click( screen.getByText( /Thanks/ ) ); + + expect( screen.queryByText( 'Survey' ) ).not.toBeInTheDocument(); + } ); + + it( 'triggers onAccept callback when user accepts', async () => { + const onAccept = jest.fn(); + render( + +

Survey

+ + + + +
+ ); + + await userEvent.click( screen.getByText( 'Take the survey' ) ); + + expect( onAccept ).toHaveBeenCalled(); + } ); + + it( 'triggers onSkip callback when user skips', async () => { + const onSkip = jest.fn(); + render( + +

Survey

+ + + + +
+ ); + + await userEvent.click( screen.getByText( 'Thanks' ) ); + + expect( onSkip ).toHaveBeenCalled(); + } ); + + it( "doesn't render the survey when it was already skipped", async () => { + document.cookie = cookie.serialize( 'survey-test', 'skip' ); + + render( + +

Survey

+ + + + +
+ ); + + expect( screen.queryByText( 'Survey' ) ).not.toBeInTheDocument(); + } ); + + it( 'does not render the survey when isOpen is false', () => { + render( + +

Survey

+
+ ); + + expect( screen.queryByText( 'Survey' ) ).not.toBeInTheDocument(); + } ); + + it( 'use trigger as child for accept', async () => { + const onAccept = jest.fn(); + + render( + +

Survey

+ + + Take the survey + +
+ ); + + await userEvent.click( screen.getByRole( 'link', { name: 'Take the survey' } ) ); + + expect( onAccept ).toHaveBeenCalled(); + expect( screen.queryByText( 'Survey' ) ).not.toBeInTheDocument(); + } ); + + it( 'use trigger as child for skip', async () => { + const onSkip = jest.fn(); + + render( + +

Survey

+ + + Thanks + +
+ ); + + await userEvent.click( screen.getByRole( 'link', { name: 'Thanks' } ) ); + + expect( onSkip ).toHaveBeenCalled(); + expect( screen.queryByText( 'Survey' ) ).not.toBeInTheDocument(); + } ); +} ); diff --git a/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/types.ts b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/types.ts new file mode 100644 index 0000000000000..52814af7ef895 --- /dev/null +++ b/client/landing/stepper/declarative-flow/internals/steps-repository/components/survey/types.ts @@ -0,0 +1,25 @@ +import React, { PropsWithChildren } from 'react'; + +export interface SurveyContextType { + isOpen: boolean; +} +export interface SurveyActionsContextType { + accept: () => void; + skip: () => void; +} + +export interface SurveyProps extends PropsWithChildren { + name: string; + onAccept?: () => void; + onSkip?: () => void; + isOpen?: boolean; + className?: string; + title?: string; +} + +export interface TriggerProps { + asChild?: boolean; + onClick: () => void; + children: React.ReactElement; + as?: React.ElementType; +} diff --git a/client/landing/stepper/index.tsx b/client/landing/stepper/index.tsx index 55ce11a73ba2c..5d0dbeddd34a3 100644 --- a/client/landing/stepper/index.tsx +++ b/client/landing/stepper/index.tsx @@ -38,6 +38,7 @@ import { FlowRenderer } from './declarative-flow/internals'; import { AsyncHelpCenter } from './declarative-flow/internals/components'; import 'calypso/components/environment-badge/style.scss'; import 'calypso/assets/stylesheets/style.scss'; +import SurveyManager from './declarative-flow/internals/components/survery-manager'; import availableFlows from './declarative-flow/registered-flows'; import { USER_STORE } from './stores'; import { setupWpDataDebug } from './utils/devtools'; @@ -172,8 +173,10 @@ window.AppBoot = async () => { placeholder={ null } id="notices" /> + + { 'development' === process.env.NODE_ENV && ( ) }