From 84fe733d4fa2f7739d3a4facfee62906c7cdf330 Mon Sep 17 00:00:00 2001 From: Lester Choi Date: Tue, 3 Oct 2023 14:21:07 -0400 Subject: [PATCH] OKTA-645490 theming api (#3385) OKTA-645490 feat: add support for theming using design tokens --- src/v3/src/components/Widget/index.tsx | 131 +- src/v3/src/components/Widget/style.css | 14 + src/v3/src/types/widget.ts | 15 +- src/v3/src/util/designTokens.ts | 249 + src/v3/src/util/mergeThemes.ts | 6 +- src/v3/src/util/theme.test.ts | 229 +- src/v3/src/util/theme.ts | 375 +- src/v3/test/e2e/tests/theming.spec.js | 3 +- .../admin-consent-without-logo.test.tsx.snap | 362 +- .../__snapshots__/admin-consent.test.tsx.snap | 394 +- ...nticator-apple-sso-extension.test.tsx.snap | 888 +- ...ator-email-verification-data.test.tsx.snap | 264 +- ...henticator-enroll-data-phone.test.tsx.snap | 9442 ++++++------ ...nroll-email-magic-link-false.test.tsx.snap | 358 +- .../authenticator-enroll-email.test.tsx.snap | 298 +- ...-enroll-google-authenticator.test.tsx.snap | 1462 +- ...assword-requirements-not-met.test.tsx.snap | 1066 +- ...thenticator-enroll-phone-sms.test.tsx.snap | 1422 +- ...enticator-enroll-phone-voice.test.tsx.snap | 390 +- ...roll-security-question-error.test.tsx.snap | 3274 ++-- ...tor-enroll-security-question.test.tsx.snap | 2828 ++-- ...lect-authenticator-with-skip.test.tsx.snap | 840 +- ...-enroll-select-authenticator.test.tsx.snap | 2758 ++-- ...enticator-enroll-yubikey-otp.test.tsx.snap | 456 +- ...pired-password-no-complexity.test.tsx.snap | 534 +- ...ith-enrollment-authenticator.test.tsx.snap | 1944 +-- ...thenticator-expired-password.test.tsx.snap | 1900 +-- ...ator-expiry-warning-password.test.tsx.snap | 2390 +-- ...ticator-piv-cac-verification.test.tsx.snap | 1722 +-- ...set-password-revoke-sessions.test.tsx.snap | 1090 +- ...authenticator-reset-password.test.tsx.snap | 1784 +-- ...ator-verification-custom-otp.test.tsx.snap | 326 +- ...ta-ov-only-with-device-known.test.tsx.snap | 772 +- ...ov-only-without-device-known.test.tsx.snap | 772 +- ...fication-data-phone-sms-only.test.tsx.snap | 334 +- ...verification-data-with-email.test.tsx.snap | 274 +- ...ation-email-magic-link-false.test.tsx.snap | 336 +- ...enticator-verification-email.test.tsx.snap | 2282 +-- ...ication-google-authenticator.test.tsx.snap | 378 +- ...cation-okta-verify-push-code.test.tsx.snap | 926 +- ...cation-okta-verify-push-poll.test.tsx.snap | 336 +- ...erification-okta-verify-push.test.tsx.snap | 330 +- ...ion-okta-verify-totp-only-ov.test.tsx.snap | 308 +- ...erification-okta-verify-totp.test.tsx.snap | 616 +- ...-ov-resend-push-notification.test.tsx.snap | 258 +- ...ion-ov-totp-biometrics-error.test.tsx.snap | 416 +- ...cator-verification-phone-sms.test.tsx.snap | 400 +- ...rification-security-question.test.tsx.snap | 340 +- ...ication-select-authenticator.test.tsx.snap | 3086 ++-- ...-verification-unlock-success.test.tsx.snap | 442 +- ...icator-verification-webauthn.test.tsx.snap | 1430 +- ...tor-verification-yubikey-otp.test.tsx.snap | 366 +- .../__snapshots__/byol.test.tsx.snap | 12464 ++++++++-------- .../device-code-activate.test.tsx.snap | 162 +- .../email-challenge-consent.test.tsx.snap | 456 +- ...enduser-consent-without-logo.test.tsx.snap | 174 +- .../enduser-consent.test.tsx.snap | 204 +- ...rofile-new-additional-fields.test.tsx.snap | 6930 ++++----- .../enroll-profile-new.test.tsx.snap | 356 +- ...ofile-registration-callbacks.test.tsx.snap | 2242 +-- ...ofile-update-optional-fields.test.tsx.snap | 410 +- ...rofile-update-required-field.test.tsx.snap | 828 +- .../enroll-profile-update.test.tsx.snap | 652 +- ...enroll-profile-with-password.test.tsx.snap | 2674 ++-- ...rror-400-unauthorized-client.test.tsx.snap | 108 +- .../error-account-creation.test.tsx.snap | 130 +- ...cator-enrollment-not-allowed.test.tsx.snap | 190 +- .../error-feature-not-enabled.test.tsx.snap | 108 +- ...error-recovery-token-invalid.test.tsx.snap | 108 +- .../error-session-expired.test.tsx.snap | 130 +- ...polling-to-mfa-authenticator.test.tsx.snap | 486 +- ...fy-with-piv-as-authenticator.test.tsx.snap | 292 +- ...ranular-consent-without-logo.test.tsx.snap | 756 +- .../granular-consent.test.tsx.snap | 198 +- .../identify-recovery.test.tsx.snap | 168 +- .../identify-with-password.test.tsx.snap | 2454 +-- ...a-enrollment-android-applink.test.tsx.snap | 1130 +- ...-enrollment-android-loopback.test.tsx.snap | 320 +- .../oda-enrollment-ios.test.tsx.snap | 396 +- ...ify-email-channel-enrollment.test.tsx.snap | 352 +- ...y-enrollment-version-upgrade.test.tsx.snap | 378 +- ...erify-sms-channel-enrollment.test.tsx.snap | 5838 ++++---- .../request-activation-email.test.tsx.snap | 214 +- .../terminal-return-email-error.test.tsx.snap | 196 +- .../terminal-return-email.test.tsx.snap | 234 +- ...nly-full-location-enrollment.test.tsx.snap | 544 +- ...-only-full-location-recovery.test.tsx.snap | 544 +- ...tp-only-full-location-unlock.test.tsx.snap | 544 +- ...eturn-otp-only-full-location.test.tsx.snap | 566 +- ...-return-otp-only-no-location.test.tsx.snap | 486 +- ...n-otp-only-partial-location..test.tsx.snap | 566 +- ...rigger-email-verify-callback.test.tsx.snap | 192 +- .../unlock-account-success.test.tsx.snap | 172 +- .../user-unlock-account.test.tsx.snap | 516 +- .../webauthn-enroll.test.tsx.snap | 1010 +- 95 files changed, 50792 insertions(+), 49702 deletions(-) create mode 100644 src/v3/src/util/designTokens.ts diff --git a/src/v3/src/components/Widget/index.tsx b/src/v3/src/components/Widget/index.tsx index 22c26c34d8..a76531fa16 100644 --- a/src/v3/src/components/Widget/index.tsx +++ b/src/v3/src/components/Widget/index.tsx @@ -14,6 +14,7 @@ // We need to emit a CSS file, even if it's empty, to prevent a 404 on the Okta-hosted login page. import './style.css'; +import { ScopedCssBaseline } from '@mui/material'; import { MuiThemeProvider } from '@okta/odyssey-react-mui'; import { AuthApiError, @@ -37,8 +38,10 @@ import Bundles from '../../../../util/Bundles'; import { IDX_STEP } from '../../constants'; import { WidgetContextProvider } from '../../contexts'; import { - useInteractionCodeFlow, useOnce, - usePolling, useStateHandle, + useInteractionCodeFlow, + useOnce, + usePolling, + useStateHandle, } from '../../hooks'; import { transformIdxTransaction } from '../../transformer'; import { @@ -71,7 +74,7 @@ import { triggerEmailVerifyCallback, } from '../../util'; import { getEventContext } from '../../util/getEventContext'; -import { mapMuiThemeFromBrand } from '../../util/theme'; +import { createTheme } from '../../util/theme'; import AuthContainer from '../AuthContainer/AuthContainer'; import AuthContent from '../AuthContent/AuthContent'; import AuthHeader from '../AuthHeader/AuthHeader'; @@ -92,7 +95,7 @@ export const Widget: FunctionComponent = (widgetProps) => { brandColors, brandName, cspNonce, - muiThemeOverrides, + theme: customTheme, logo, logoText, globalSuccessFn, @@ -133,81 +136,10 @@ export const Widget: FunctionComponent = (widgetProps) => { const { stateHandle, unsetStateHandle } = useStateHandle(widgetProps); // merge themes - const mergedTheme = useMemo(() => mergeThemes( - mapMuiThemeFromBrand(brandColors, languageDirection, muiThemeOverrides), - { - components: { - MuiAlert: { - styleOverrides: { - root: { - gap: 0, - }, - icon: ({ theme }) => ({ - paddingInlineEnd: theme.spacing(4), - flexShrink: 0, - }), - }, - }, - MuiInputBase: { - styleOverrides: { - input: { - '::-ms-reveal': { - display: 'none', - }, - }, - }, - }, - MuiInputLabel: { - styleOverrides: { - root: { - wordBreak: 'break-word', - whiteSpace: 'normal', - }, - }, - }, - // ruleset with :focus-visible pseudo-selector break entire ruleset in - // ie11 because its not supported. re-define the :hover rule separately - // again so the ruleset is applied in ie11 - MuiButton: { - styleOverrides: { - root: ({ ownerState, theme }) => ({ - ...(ownerState.variant === 'primary' && { - '&:hover': { - backgroundColor: theme.palette.primary.dark, - }, - }), - ...(ownerState.variant === 'secondary' && { - '&:hover': { - backgroundColor: theme.palette.primary.lighter, - borderColor: theme.palette.primary.light, - color: theme.palette.primary.main, - }, - }), - ...(ownerState.variant === 'floating' && { - '&:hover': { - backgroundColor: 'rgba(29, 29, 33, 0.1)', - borderColor: 'transparent', - }, - }), - }), - }, - }, - // ruleset with :focus-visible pseudo-selector break entire ruleset in - // ie11 because its not supported. re-define the :hover rule separately - // again so the ruleset is applied in ie11 - MuiIconButton: { - styleOverrides: { - root: () => ({ - '&:hover': { - backgroundColor: 'rgba(29, 29, 33, 0.1)', - borderColor: 'transparent', - }, - }), - }, - }, - }, - }, - ), [brandColors, languageDirection, muiThemeOverrides]); + const theme = useMemo(() => mergeThemes( + createTheme(brandColors, customTheme?.tokens ?? {}), + { direction: languageDirection }, + ), [brandColors, customTheme, languageDirection]); // on unmount, remove the language useEffect(() => () => { @@ -234,7 +166,7 @@ export const Widget: FunctionComponent = (widgetProps) => { return null; }; - const shouldRedirectToEnrollFlow = (transaction: IdxTransaction) : boolean => { + const shouldRedirectToEnrollFlow = (transaction: IdxTransaction): boolean => { const { nextStep, neededToProceed } = transaction; if (!isConfigRegisterFlow(flow) || nextStep?.name !== IDX_STEP.IDENTIFY) { return false; @@ -560,25 +492,28 @@ export const Widget: FunctionComponent = (widgetProps) => { }} > - + - - - - {isConsentStep(idxTransaction) && } - - { - uischema.elements.length > 0 - ?
- : - } - - + {/* the style is to allow the widget to inherit the parent's bg color */} + + + + + {isConsentStep(idxTransaction) && } + + { + uischema.elements.length > 0 + ? + : + } + + + diff --git a/src/v3/src/components/Widget/style.css b/src/v3/src/components/Widget/style.css index e1a131f31a..a2ea934b5b 100644 --- a/src/v3/src/components/Widget/style.css +++ b/src/v3/src/components/Widget/style.css @@ -165,3 +165,17 @@ filter: unset !important; } } + +/* + * NOTE: widget styles below, login page styles above. Take care when moving CSS + * from SIW to loginpage (okta-ui) in OKTA-602545 + * + * TODO: OKTA-654405 + */ +span.strong { + font-weight: 600; + word-break: break-all; +} +.no-translate { + white-space: nowrap; +} diff --git a/src/v3/src/types/widget.ts b/src/v3/src/types/widget.ts index 7b4cacccba..3fd5b3814d 100644 --- a/src/v3/src/types/widget.ts +++ b/src/v3/src/types/widget.ts @@ -10,7 +10,6 @@ * See the License for the specific language governing permissions and limitations under the License. */ -import type { ThemeOptions as MuiThemeOptions } from '@mui/material'; import { FlowIdentifier, IdxActionParams, @@ -35,6 +34,7 @@ import { UserOperation, } from '../../../types'; import { InterstitialRedirectView } from '../constants'; +import { DesignTokensType } from '../util/designTokens'; import { WidgetHooks } from '../util/widgetHooks'; import { OktaSignInAPI } from './api'; import { JsonObject } from './json'; @@ -115,15 +115,11 @@ export type WidgetProps = Partial & { }; export type WidgetOptions = { - // // ui customizations - // renderers?: JsonFormsRendererRegistryEntry[]; - // cells?: JsonFormsCellRendererRegistryEntry[]; - // components?: Record; + // brand colors + brandColors?: BrandColors; - // theming - theme?: ThemeOptions; - // Override MUI Theming - muiThemeOverrides?: MuiThemeOptions; + // theme + theme?: { tokens: DesignTokensType }; // & ThemeOptions; // hooks hooks?: HooksOptions; // object in options @@ -165,7 +161,6 @@ export type WidgetOptions = { otp?: string; baseUrl?: string; brandName?: string; - brandColors?: BrandColors; logo?: string; logoText?: string; stateToken?: string; diff --git a/src/v3/src/util/designTokens.ts b/src/v3/src/util/designTokens.ts new file mode 100644 index 0000000000..c7faff4900 --- /dev/null +++ b/src/v3/src/util/designTokens.ts @@ -0,0 +1,249 @@ +/* + * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved. + * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.") + * + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and limitations under the License. + */ + +export const DESIGN_TOKENS = { + // BorderColor + // BorderColorControl: '#8d8d8d', + // BorderColorDisplay: '#e1e1e1', + // BorderColorDisabled: '#e1e1e1', + // BorderColorDangerLight: '#fe8f7a', + // BorderColorDangerControl: '#e72500', + // BorderColorDangerDark: '#951800', + // BorderColorPrimaryControl: '#546be7', + // BorderColorPrimaryDark: '#2e40a5', + + // BorderRadius + // BorderRadiusTight: '4px', + BorderRadiusMain: '6px', // theme.mixins.borderRadius + // BorderRadiusOuter: '12px', + // BorderRadiusRound: '1.5em', + + // BorderStyle + BorderStyleMain: 'solid', // theme.mixins.borderStyle + + // BorderWidth + BorderWidthMain: '1px', // theme.mixins.borderWidth + // BorderWidthHeavy: '1.5px', + + // FocusOutlineColor + // FocusOutlineColorPrimary: '#546be7', + // FocusOutlineColorDanger: '#e72500', + + // FocusOutlineOffset + // FocusOutlineOffsetMain: '2px', + // FocusOutlineOffsetTight: '0', + + // FocusOutlineStyle + // FocusOutlineStyle: 'solid', + + // FocuOutlineWidth + // FocusOutlineWidthMain: '2px', + // FocusOutlineWidthTight: '1px', + + // HueNeutral + // HueNeutral50: '#f4f4f4', + // HueNeutral100: '#ededed', + // HueNeutral200: '#e1e1e1', + // HueNeutral300: '#cbcbcb', + // HueNeutral400: '#aeaeae', + // HueNeutral500: '#8d8d8d', + // HueNeutral600: '#6e6e6e', + // HueNeutral700: '#4b4b4b', + // HueNeutral800: '#383838', + // HueNeutral900: '#272727', + // HueNeutralWhite: '#ffffff', + + // HueBlue + // HueBlue50: '#f2f3fd', + // HueBlue100: '#dbe0fa', + // HueBlue200: '#c1c9f6', + // HueBlue300: '#9daaf1', + // HueBlue400: '#7286eb', + // HueBlue500: '#546be7', + // HueBlue600: '#4c64e1', + // HueBlue700: '#2e40a5', + // HueBlue800: '#22307c', + // HueBlue900: '#182257', + + // HueGreen + // HueGreen50: '#defae7', + // HueGreen100: '#94f5b3', + // HueGreen200: '#7be09e', + // HueGreen300: '#59c282', + // HueGreen400: '#31a061', + // HueGreen500: '#16884a', + // HueGreen600: '#197f48', + // HueGreen700: '#0e562f', + // HueGreen800: '#0a4023', + // HueGreen900: '#072e19', + + // HueRed + // HueRed50: '#fff0ee', + // HueRed100: '#ffd8d1', + // HueRed200: '#febbae', + // HueRed300: '#fe8f7a', + // HueRed400: '#fd4e2d', + // HueRed500: '#e72500', + // HueRed600: '#d92300', + // HueRed700: '#951800', + // HueRed800: '#711200', + // HueRed900: '#500d00', + + // HueYellow + // HueYellow50: '#fcf6ac', + // HueYellow100: '#fce101', + // HueYellow200: '#f9c503', + // HueYellow300: '#eb9e05', + // HueYellow400: '#bf8004', + // HueYellow500: '#a16c03', + // HueYellow600: '#966603', + // HueYellow700: '#664402', + // HueYellow800: '#4c3302', + // HueYellow900: '#352401', + + // PalettePrimary + PalettePrimaryLighter: '#f2f3fd', // theme.palette.primary.lighter + PalettePrimaryLight: '#9daaf1', // theme.palette.primary.light + PalettePrimaryMain: '#546be7', // theme.palette.primary.main + PalettePrimaryDark: '#2e40a5', // theme.palette.primary.dark + // PalettePrimaryDarker: '#22307c', + // PalettePrimaryText: '#4c64e1', + // PalettePrimaryHeading: '#182257', + // PalettePrimaryHighlight: '#dbe0fa', + + // PaletteDanger + PaletteDangerLighter: '#fff0ee', // theme.palette.error.lighter + PaletteDangerLight: '#fe8f7a', // theme.palette.error.light + PaletteDangerMain: '#e72500', // theme.palette.error.main + PaletteDangerDark: '#951800', // theme.palette.error.dark + // PaletteDangerDarker: '#711200', + // PaletteDangerText: '#d92300', + // PaletteDangerHeading: '#500d00', + // PaletteDangerHighlight: '#ffd8d1', + + // PaletteWarning + PaletteWarningLighter: '#fcf6ac', // theme.palette.warning.lighter + PaletteWarningLight: '#eb9e05', // theme.palette.warning.light + PaletteWarningMain: '#a16c03', // theme.palette.warning.main + PaletteWarningDark: '#664402', // theme.palette.warning.dark + // PaletteWarningDarker: '#4c3302', + // PaletteWarningText: '#966603', + // PaletteWarningHeading: '#352401', + // PaletteWarningHighlight: '#fce101', + + // PaletteSuccess + PaletteSuccessLighter: '#defae7', // theme.palette.success.lighter + PaletteSuccessLight: '#59c282', // theme.palette.success.light + PaletteSuccessMain: '#16884a', // theme.palette.success.main + PaletteSuccessDark: '#0e562f', // theme.palette.success.dark + // PaletteSuccessDarker: '#0a4023', + // PaletteSuccessText: '#197f48', + // PaletteSuccessHeading: '#072e19', + // PaletteSuccessHighlight: '#94f5b3', + + // PaletteNeutral + PaletteNeutralMain: '#6e6e6e', + PaletteNeutralDark: '#272727', + + // PaletteAlpha + // PaletteAlphaOpaque: 'FF', + // PaletteAlphaSemi: 'BF', + + // ShadowScale + ShadowScale0: '0px 1px 4px rgba(29, 29, 33, 0.08), 0px 4px 6px rgba(29, 29, 33, 0.01), 0px 5px 15px rgba(29, 29, 33, 0.05)', // theme.shadows[1] + ShadowScale1: '0px 1px 4px rgba(29, 29, 33, 0.08), 0px 4px 10px rgba(29, 29, 33, 0.08), 0px 8px 30px rgba(29, 29, 33, 0.1)', // theme.shadows[2] + + // Spacing + Spacing0: '0', // theme.spacing(0) + Spacing1: '0.28571429rem', // theme.spacing(1) + Spacing2: '0.57142857rem', // theme.spacing(2) + Spacing3: '0.85714286rem', // theme.spacing(3) + Spacing4: '1.14285714rem', // theme.spacing(4) + Spacing5: '1.71428571rem', // theme.spacing(5) + Spacing6: '2.28571429rem', // theme.spacing(6) + Spacing7: '2.85714286rem', // theme.spacing(7) + Spacing8: '3.42857143rem', // theme.spacing(8) + Spacing9: '4rem', // theme.spacing(9) + + // Transition + // TransitionDurationMain: '100ms', + // TransitionTimingMain: 'linear', + + // TypographyColor + TypographyColorBody: '#272727', // theme.palette.text.primary + TypographyColorHeading: '#272727', // theme.typography.h1.color + // TypographyColorInverse: '#ffffff', + // TypographyColorSupport: '#4b4b4b', + TypographyColorSubordinate: '#6e6e6e', // theme.typography.caption.color + TypographyColorDisabled: '#aeaeae', // theme.palette.text.disabled + // TypographyColorAction: '#4c64e1', + // TypographyColorDanger: '#d92300', + // TypographyColorSuccess: '#197f48', + // TypographyColorWarning: '#966603', + + // TypographyFamily + TypographyFamilyBody: "'Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif", // theme.typography.fontFamily + TypographyFamilyHeading: "'Aeonik', 'Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif", // theme.typography.h1.fontFamily + TypographyFamilyButton: "'Aeonik', 'Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif", // theme.typography.button.fontFamily + TypographyFamilyMono: "'Roboto Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace", // theme.typography.kbd.fontFamily + + // TypographyScale + // TypographyScale0: '0.857rem', + // TypographyScale1: '1rem', + // TypographyScale2: '1.143rem', + // TypographyScale3: '1.286rem', + // TypographyScale4: '1.429rem', + // TypographyScale5: '1.571rem', + // TypographyScale6: '1.786rem', + // TypographyScale7: '2.000rem', + // TypographyScale8: '2.286rem', + // TypographyScale9: '2.571rem', + // TypographyScale10: '2.857rem', + // TypographyScale11: '3.214rem', + // TypographyScale12: '3.643rem', + + // TypographySize + TypographySizeBase: '87.5%', // theme.typography.body1.fontSize + TypographySizeSubordinate: '0.857rem', // theme.typography.caption.fontSize = TypographyScale0 + TypographySizeBody: '1rem', // theme.typography.body1.fontSize = TypographyScale1 + TypographySizeHeading6: '1.143rem', // theme.typography.h6.fontSize = TypographyScale2 + TypographySizeHeading5: '1.286rem', // theme.typography.h5.fontSize = TypographyScale3 + TypographySizeHeading4: '1.571rem', // theme.typography.h4.fontSize = TypographyScale5 + TypographySizeHeading3: '2.000rem', // theme.typography.h3.fontSize = TypographyScale7 + TypographySizeHeading2: '2.286rem', // theme.typography.h2.fontSize = TypographyScale8 + TypographySizeHeading1: '2.571rem', // theme.typography.h1.fontSize = TypographyScale9 + + // TypographyStyle + TypographyStyleNormal: 'normal', // theme.typography.body1.fontStyle + + // TypographyWeight + TypographyWeightBody: '400', // theme.typography.fontWeightMedium + TypographyWeightBodyBold: '600', // theme.typography.fontWeightBold + TypographyWeightHeading: '500', // theme.typography.h1.fontWeight + // TypographyWeightHeadingBold: '700', + + // TypographyLineHeight + TypographyLineHeightBody: 1.5, // theme.typography.body1.lineHeight + // TypographyLineHeightUi: 1.2, + TypographyLineHeightOverline: 1.3, // theme.typography.overline.lineHeight + TypographyLineHeightHeading6: 1.3, // theme.typography.h6.lineHeight + TypographyLineHeightHeading5: 1.3, // theme.typography.h5.lineHeight + TypographyLineHeightHeading4: 1.25, // theme.typography.h4.lineHeight + TypographyLineHeightHeading3: 1.25, // theme.typography.h3.lineHeight + TypographyLineHeightHeading2: 1.2, // theme.typography.h2.lineHeight + TypographyLineHeightHeading1: 1.2, // theme.typography.h1.lineHeight + + // TypographyLineLength + // TypographyLineLengthMax: '55ch', +}; + +export type DesignTokensType = typeof DESIGN_TOKENS; diff --git a/src/v3/src/util/mergeThemes.ts b/src/v3/src/util/mergeThemes.ts index 8b11f0ba67..c36be7571d 100644 --- a/src/v3/src/util/mergeThemes.ts +++ b/src/v3/src/util/mergeThemes.ts @@ -11,12 +11,10 @@ */ import { CSSInterpolation, ThemeOptions } from '@mui/material'; -import { odysseyTheme } from '@okta/odyssey-react-mui'; import { merge } from 'lodash'; import { cssInterpolate } from './cssInterpolate'; -type Theme = typeof odysseyTheme; type Props = Record; type StyleOverrideFunction = (override: Props) => CSSInterpolation; type StyleOverride = string | CSSInterpolation | StyleOverrideFunction; @@ -44,8 +42,8 @@ const resolve = (override: StyleOverride, arg: Props): CSSInterpolation => { * Merge themes */ export const mergeThemes = ( - first: Theme, - ...rest: Array> + first: ThemeOptions, + ...rest: Array ): ThemeOptions => ( rest.reduce((prev, theme) => ( !theme.components diff --git a/src/v3/src/util/theme.test.ts b/src/v3/src/util/theme.test.ts index 6e01a20f01..f4cde730dc 100644 --- a/src/v3/src/util/theme.test.ts +++ b/src/v3/src/util/theme.test.ts @@ -12,81 +12,216 @@ import { odysseyTheme } from '@okta/odyssey-react-mui'; import chroma from 'chroma-js'; +import { get } from 'lodash'; -import { deriveThemeFromBrand, mapMuiThemeFromBrand } from './theme'; +import { createTheme, generatePalette } from './theme'; describe('theme utilities', () => { - describe('deriveTheme generates', () => { + describe('generatePalette', () => { it('for light primary color', () => { - const derived = deriveThemeFromBrand({ - primaryColor: '#cc0000', - }); - - expect(derived).toBeDefined(); - expect(derived?.primaryColor).toBe('#cc0000'); - expect(derived?.primaryColorLight).toBe('#f28f78'); - expect(derived?.primaryColorLightest).toBe('#fff1f0'); - expect(derived?.primaryColorDark).toBe('#640000'); - expect(derived?.inverseTextColor).toBe('#ffffff'); + const palette = generatePalette('#cc0000'); + expect(palette).toBeDefined(); + expect(palette?.main).toBe('#cc0000'); + expect(palette?.light).toBe('#f28f78'); + expect(palette?.lighter).toBe('#fff1f0'); + expect(palette?.dark).toBe('#640000'); + expect(palette?.contrastText).toBe('#ffffff'); }); it('for light primary color with poor contrast against white', () => { - const derived = deriveThemeFromBrand({ - primaryColor: '#6666ff', - }); - - expect(derived).toBeDefined(); - expect(derived?.inverseTextColor).toBe('#1d1d21'); + const palette = generatePalette('#6666ff'); + expect(palette).toBeDefined(); + expect(palette?.contrastText).toBe('#1d1d21'); }); it('for light primary color with clamped primaryColorLight', () => { const colorWithLightness60 = chroma.hsl(100, 1, 0.6); - const derived = deriveThemeFromBrand({ - primaryColor: colorWithLightness60.hex(), - }); + const palette = generatePalette(colorWithLightness60.hex()); - expect(derived).toBeDefined(); + expect(palette).toBeDefined(); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const derivedPrimaryColorLight = chroma(derived!.primaryColorLight); - - expect(derivedPrimaryColorLight.get('hsl.l')).toBeCloseTo(0.90, 5); + const derivedPrimaryColorLight = chroma(palette.light!); + expect(derivedPrimaryColorLight.get('hsl.l')).toBeCloseTo(0.90, 2); }); it('generates a derived theme for dark primary color', () => { - const derived = deriveThemeFromBrand({ - primaryColor: '#170f5f', - }); - - expect(derived).toBeDefined(); - expect(derived?.primaryColor).toBe('#170f5f'); - expect(derived?.primaryColorLight).toBe('#bdb7f4'); - expect(derived?.primaryColorLightest).toBe('#f4f0fe'); - expect(derived?.primaryColorDark).toBe('#402ede'); - expect(derived?.inverseTextColor).toBe('#ffffff'); + const palette = generatePalette('#170f5f'); + expect(palette).toBeDefined(); + expect(palette?.main).toBe('#170f5f'); + expect(palette?.light).toBe('#bdb7f4'); + expect(palette?.lighter).toBe('#f4f0fe'); + expect(palette?.dark).toBe('#402ede'); + expect(palette?.contrastText).toBe('#ffffff'); }); it('returns null for invalid colors', () => { // suppress warnings from when chroma-js throws - jest.spyOn(console, 'warn').mockImplementation(() => {}); + jest.spyOn(console, 'warn').mockImplementation(() => { }); - expect(deriveThemeFromBrand({ primaryColor: '#12345' })).toBeNull(); - expect(deriveThemeFromBrand({ primaryColor: '#ff00gg' })).toBeNull(); - expect(deriveThemeFromBrand({ primaryColor: '' })).toBeNull(); + expect(generatePalette('#12345')).toEqual({}); + expect(generatePalette('#ff00gg')).toEqual({}); + expect(generatePalette('')).toEqual({}); jest.restoreAllMocks(); }); }); - describe('mapMuiThemeFromBrand', () => { - it('overrides odyssey theme palette', () => { - const mappedTheme = mapMuiThemeFromBrand({ primaryColor: '#ff0000' }, 'ltr'); - expect(mappedTheme.palette.primary).not.toEqual(odysseyTheme.palette.primary); - // the text color remains the same as original - expect(mappedTheme.palette.text.primary).toEqual(odysseyTheme.palette.text.primary); + describe('createTheme', () => { + it('should use brandColors.primaryColor to set theme.palette.primary.*', () => { + const primaryColor = '#7950f2'; + const palette = generatePalette(primaryColor); + const theme = createTheme({ primaryColor }); + expect(theme.palette?.primary).toEqual(palette); + }); + it('should ignore brandColors if undefined', () => { + const theme = createTheme(); + expect(theme.palette?.primary).toEqual(odysseyTheme.palette.primary); + }); + it('should ignore brandColors.primaryColor if invalid', () => { + // suppress warnings from when chroma-js throws + jest.spyOn(console, 'warn').mockImplementation(() => { }); + const primaryColor = '#invalid'; + const theme = createTheme({ primaryColor }); + expect(theme.palette?.primary).toEqual(odysseyTheme.palette.primary); + }); + it('should use PalettePrimaryMain to set theme.palette.primary.*', () => { + const PalettePrimaryMain = '#7950f2'; + const palette = generatePalette(PalettePrimaryMain); + const theme = createTheme(undefined, { PalettePrimaryMain }); + expect(theme.palette?.primary).toEqual(palette); + }); + + it('should use PaletteDangerMain to set theme.palette.error.*', () => { + const PaletteDangerMain = '#e72500'; + const palette = generatePalette(PaletteDangerMain); + const theme = createTheme(undefined, { PaletteDangerMain }); + expect(theme.palette?.error).toEqual(palette); }); - it('handles undefined brand', () => { - expect(mapMuiThemeFromBrand(undefined, 'ltr')).toEqual(odysseyTheme); + it('should use PaletteWarningMain to set theme.palette.warning.*', () => { + const PaletteWarningMain = '#a16c03'; + const palette = generatePalette(PaletteWarningMain); + const theme = createTheme(undefined, { PaletteWarningMain }); + expect(theme.palette?.warning).toEqual(palette); + }); + + it('should use PaletteSuccessMain to set theme.palette.success.*', () => { + const PaletteSuccessMain = '#16884a'; + const palette = generatePalette(PaletteSuccessMain); + const theme = createTheme(undefined, { PaletteSuccessMain }); + expect(theme.palette?.success).toEqual(palette); + }); + + describe('should apply design tokens -> theme properties', () => { + test.each([ + ['BorderRadiusMain', 'mixins.borderRadius', 'TEST_0'], + ['BorderStyleMain', 'mixins.borderStyle', 'TEST_1'], + ['BorderWidthMain', 'mixins.borderWidth', 'TEST_2'], + ['TypographyColorDisabled', 'palette.text.disabled', 'TEST_3'], + ['TypographyColorBody', 'palette.text.primary', 'TEST_4'], + ['ShadowScale0', 'shadows[1]', 'TEST_5'], + ['ShadowScale1', 'shadows[2]', 'TEST_6'], + ['TypographyFamilyBody', 'typography.body1.fontFamily', 'TEST_7'], + ['TypographySizeBody', 'typography.body1.fontSize', 'TEST_8'], + ['TypographyStyleNormal', 'typography.body1.fontStyle', 'TEST_9'], + ['TypographyLineHeightBody', 'typography.body1.lineHeight', 'TEST_10'], + ['TypographyFamilyButton', 'typography.button.fontFamily', 'TEST_11'], + ['TypographyColorSubordinate', 'typography.caption.color', 'TEST_12'], + ['TypographyFamilyBody', 'typography.caption.fontFamily', 'TEST_13'], + ['TypographySizeSubordinate', 'typography.caption.fontSize', 'TEST_14'], + ['TypographyFamilyBody', 'typography.fontFamily', 'TEST_15'], + ['TypographyWeightBodyBold', 'typography.fontWeightBold', 'TEST_16'], + ['TypographyWeightBody', 'typography.fontWeightRegular', 'TEST_17'], + ['TypographyColorHeading', 'typography.h1.color', 'TEST_18'], + ['TypographyFamilyHeading', 'typography.h1.fontFamily', 'TEST_19'], + ['TypographySizeHeading1', 'typography.h1.fontSize', 'TEST_20'], + ['TypographyWeightHeading', 'typography.h1.fontWeight', 'TEST_21'], + ['TypographyLineHeightHeading1', 'typography.h1.lineHeight', 'TEST_22'], + ['TypographyColorHeading', 'typography.h2.color', 'TEST_23'], + ['TypographyFamilyHeading', 'typography.h2.fontFamily', 'TEST_24'], + ['TypographySizeHeading2', 'typography.h2.fontSize', 'TEST_25'], + ['TypographyWeightHeading', 'typography.h2.fontWeight', 'TEST_26'], + ['TypographyLineHeightHeading2', 'typography.h2.lineHeight', 'TEST_27'], + ['TypographyColorHeading', 'typography.h3.color', 'TEST_28'], + ['TypographyFamilyHeading', 'typography.h3.fontFamily', 'TEST_29'], + ['TypographySizeHeading3', 'typography.h3.fontSize', 'TEST_30'], + ['TypographyWeightHeading', 'typography.h3.fontWeight', 'TEST_31'], + ['TypographyLineHeightHeading3', 'typography.h3.lineHeight', 'TEST_32'], + ['TypographyColorHeading', 'typography.h4.color', 'TEST_33'], + ['TypographyFamilyHeading', 'typography.h4.fontFamily', 'TEST_34'], + ['TypographySizeHeading4', 'typography.h4.fontSize', 'TEST_35'], + ['TypographyWeightHeading', 'typography.h4.fontWeight', 'TEST_36'], + ['TypographyLineHeightHeading4', 'typography.h4.lineHeight', 'TEST_37'], + ['TypographyColorHeading', 'typography.h5.color', 'TEST_38'], + ['TypographyFamilyHeading', 'typography.h5.fontFamily', 'TEST_39'], + ['TypographySizeHeading5', 'typography.h5.fontSize', 'TEST_40'], + ['TypographyWeightHeading', 'typography.h5.fontWeight', 'TEST_41'], + ['TypographyLineHeightHeading5', 'typography.h5.lineHeight', 'TEST_42'], + ['TypographyColorHeading', 'typography.h6.color', 'TEST_43'], + ['TypographyFamilyHeading', 'typography.h6.fontFamily', 'TEST_44'], + ['TypographySizeHeading6', 'typography.h6.fontSize', 'TEST_45'], + ['TypographyWeightHeading', 'typography.h6.fontWeight', 'TEST_46'], + ['TypographyLineHeightHeading6', 'typography.h6.lineHeight', 'TEST_47'], + ['TypographyLineHeightOverline', 'typography.overline.lineHeight', 'TEST_48'], + ['TypographyFamilyBody', 'typography.subtitle1.fontFamily', 'TEST_49'], + ['TypographyFamilyBody', 'typography.subtitle2.fontFamily', 'TEST_50'], + ])('%s -> %s', (name, path, value) => { + const theme = createTheme(undefined, { [name]: value }); + expect(get(theme, path)).toEqual(value); + }); + }); + + it('should use Spacing0..Spacing9 tokens to set the theme.spacing function', () => { + const theme = createTheme(undefined, { + Spacing0: '0ex', + Spacing1: '2ex', + Spacing2: '4ex', + Spacing3: '6ex', + Spacing4: '8ex', + Spacing5: '10ex', + Spacing6: '12ex', + Spacing7: '14ex', + Spacing8: '16ex', + Spacing9: '18ex', + }); + expect(typeof theme.spacing).toBe('function'); + + if (typeof theme.spacing !== 'function') { + throw new Error('theme.spacing should be a function'); + } + expect(theme.spacing(0)).toBe('0ex'); + expect(theme.spacing(1)).toBe('2ex'); + expect(theme.spacing(2)).toBe('4ex'); + expect(theme.spacing(3)).toBe('6ex'); + expect(theme.spacing(4)).toBe('8ex'); + expect(theme.spacing(5)).toBe('10ex'); + expect(theme.spacing(6)).toBe('12ex'); + expect(theme.spacing(7)).toBe('14ex'); + expect(theme.spacing(8)).toBe('16ex'); + expect(theme.spacing(9)).toBe('18ex'); + }); + + test('theme.tokens.PalettePrimaryMain overrides brandColors.primaryColor', () => { + const theme = createTheme({ primaryColor: '#aaa' }, { PalettePrimaryMain: '#bbb' }); + // @ts-expect-error Property PaletteColorOptions is a union + expect(theme.palette?.primary?.main).toEqual('#bbb'); + }); + + test('tokens should override generated palette colors', () => { + const tokens = { + PalettePrimaryLight: '#77216F', + PalettePrimaryMain: '#5E2750', + PalettePrimaryDark: '#2C001E', + }; + const palette = generatePalette('#5E2750'); + const theme = createTheme(undefined, tokens); + expect(theme.palette?.primary).toEqual({ + lighter: palette.lighter, // generated + light: tokens.PalettePrimaryLight, // provided + main: tokens.PalettePrimaryMain, // provided + dark: tokens.PalettePrimaryDark, // provided + contrastText: palette.contrastText, // generated + }); }); }); }); diff --git a/src/v3/src/util/theme.ts b/src/v3/src/util/theme.ts index f1a4ba1863..c0eaaa833b 100644 --- a/src/v3/src/util/theme.ts +++ b/src/v3/src/util/theme.ts @@ -11,115 +11,318 @@ */ import { ThemeOptions } from '@mui/material'; -import { Theme } from '@mui/material/styles/createTheme'; import { odysseyTheme } from '@okta/odyssey-react-mui'; import chroma from 'chroma-js'; -import { cloneDeep, merge } from 'lodash'; +import { set as _set } from 'lodash'; -import { BrandColors, LanguageDirection } from '../types'; +import { BrandColors } from '../types'; +import { DESIGN_TOKENS, DesignTokensType } from './designTokens'; +import { mergeThemes } from './mergeThemes'; -type DerivedTheme = { - primaryColor: string; - primaryColorLight: string; - primaryColorLightest: string; - primaryColorDark: string; - textColor: string; - inverseTextColor: string; -}; +export type Palette = Partial<{ + main: string; + light: string; + lighter: string; + dark: string; + contrastText: string; +}>; -const getInverseTextColor = (primaryColor: string): string => { - const contrastRatio = chroma.contrast(primaryColor, '#ffffff'); +export type SpacingArgument = number | string; - if (contrastRatio > 4.5) { - return '#ffffff'; - } - return '#1d1d21'; -}; +const WHITE_HEX = '#ffffff'; +const BLACK_HEX = '#1d1d21'; -export const deriveThemeFromBrand = (brand: BrandColors): DerivedTheme | null => { - try { - const isLightPrimaryColor = chroma(brand.primaryColor).get('hsl.l') > 0.24; +/** + * Determine whether to use BLACK (#1d1d21) or WHITE (#ffffff) based on a color. + * If WHITE vs color has a contrast ratio <4.5:1 this will return BLACK. + * Contrast ratios are symmetrical using the WCAG 2.x algorithm + * + * @param color color to compare against black/white + */ +const getInverseTextColor = (color: string): string => ( + chroma.contrast(color, WHITE_HEX) >= 4.5 ? WHITE_HEX : BLACK_HEX +); - if (isLightPrimaryColor) { - let primaryColorLight = chroma(brand.primaryColor) - .set('hsl.h', '+11') - .set('hsl.s', '-0.18') - .set('hsl.l', '+0.31'); - // lightness of primaryColorLight should be clamped at max of 0.9 - if (primaryColorLight.get('hsl.l') > 0.9) { - primaryColorLight = primaryColorLight.set('hsl.l', 0.9); - } +/** + * Sets the design token to theme path iff the value is not undefined, i.e., + * null, false, 0, etc. will be set. Only undefined will be ignored. Paths and + * values are not checked for type safety. + * + * @param obj {Theme} the theme object + * @param path {string} target path + * @param val the value to set, if defined. + */ +// eslint-disable-next-line @typescript-eslint/ban-types +function set(obj: T, path: string | string[], val: V) { + return val === undefined ? null : _set(obj, path, val); +} - return { - primaryColor: brand.primaryColor, - textColor: '#1d1d21', - primaryColorLight: primaryColorLight.hex(), - primaryColorLightest: chroma(brand.primaryColor) +/** + * Generates a palette based on the "main" (f.k.a. "base") value. Main value + * corresponds to 500 in the hue-based color scale. + * + * Example: + * PalettePrimaryMain -> HueBlue50 + * PalettePrimaryLighter -> HueBlue300 + * PalettePrimaryLight -> HueBlue500 + * PalettePrimaryDark -> HueBlue700 + * + * @param main Main color (Hue 500) + */ +export const generatePalette = (main: string): Palette => { + try { + const lightness = chroma(main).get('hsl.l'); + return lightness > 0.24 + ? { + main, + lighter: chroma(main) .set('hsl.h', '+9') .set('hsl.s', '+0.18') .set('hsl.l', 0.97) .hex(), - primaryColorDark: chroma(brand.primaryColor) + light: chroma(main) + .set('hsl.h', '+11') + .set('hsl.s', '-0.18') + .set('hsl.l', lightness < 0.59 ? '+0.31' : 0.9) // clamp lightness + .hex(), + dark: chroma(main) .set('hsl.h', '+3') .set('hsl.s', '+0.18') .set('hsl.l', '-0.24') .hex(), - inverseTextColor: getInverseTextColor(brand.primaryColor), + contrastText: getInverseTextColor(main), + } : { + main, + lighter: chroma(main) + .set('hsl.h', '+9') + .set('hsl.s', '+0.18') + .set('hsl.l', 0.97) + .hex(), + light: chroma(main) + .set('hsl.l', '+0.62') + .hex(), + dark: chroma(main) + .set('hsl.l', '+0.31') + .hex(), + contrastText: getInverseTextColor(main), }; - } - - return { - primaryColor: brand.primaryColor, - textColor: '#1d1d21', - primaryColorLight: chroma(brand.primaryColor) - .set('hsl.l', '+0.62') - .hex(), - primaryColorLightest: chroma(brand.primaryColor) - .set('hsl.h', '+9') - .set('hsl.s', '+0.18') - .set('hsl.l', 0.97) - .hex(), - primaryColorDark: chroma(brand.primaryColor) - .set('hsl.l', '+0.31') - .hex(), - inverseTextColor: getInverseTextColor(brand.primaryColor), - }; - } catch (e) { - // eslint-disable-next-line no-console - console.warn('Invalid theme color in configuration', brand); - - return null; + } catch (err) { + console.warn(err); + return {}; } }; -export const mapMuiThemeFromBrand = ( - brand: BrandColors | undefined, - languageDirection: LanguageDirection, - muiThemeOverrides?: ThemeOptions, -): Theme => { - // TODO: OKTA-517723 temporary override until odyssey-react-mui theme borderRadius value is fixed - odysseyTheme.shape.borderRadius = 4; - - odysseyTheme.direction = languageDirection; - - // Do not modify `odysseyTheme` after this line, it will have no effect on the resulting theme - const odysseyThemeCopy = cloneDeep(odysseyTheme); - - if (brand) { - const derivedTheme = deriveThemeFromBrand(brand); - - if (derivedTheme) { - odysseyThemeCopy.palette.primary = { - main: derivedTheme.primaryColor, - light: derivedTheme.primaryColorLight, - lighter: derivedTheme.primaryColorLightest, - dark: derivedTheme.primaryColorDark, - contrastText: derivedTheme.inverseTextColor, - }; +export const createTheme = ( + brandColors?: BrandColors, + customTokens?: Partial, +): ThemeOptions => { + const defaultTokens = DESIGN_TOKENS; + const mergedTokens: DesignTokensType = { ...defaultTokens, ...customTokens }; + const theme = odysseyTheme; - odysseyThemeCopy.palette.text.primary = derivedTheme.textColor; + theme.palette.text.primary = BLACK_HEX; + if (brandColors?.primaryColor) { + const p = generatePalette(brandColors.primaryColor); + set(theme, 'palette.primary.lighter', p.lighter); + set(theme, 'palette.primary.light', p.light); + set(theme, 'palette.primary.main', p.main); + set(theme, 'palette.primary.dark', p.dark); + set(theme, 'palette.primary.contrastText', p.contrastText); + } + if (customTokens) { + if (customTokens.PalettePrimaryMain) { + const p = generatePalette(customTokens.PalettePrimaryMain); + set(theme, 'palette.primary.lighter', customTokens.PalettePrimaryLighter ?? p.lighter); + set(theme, 'palette.primary.light', customTokens.PalettePrimaryLight ?? p.light); + set(theme, 'palette.primary.main', customTokens.PalettePrimaryMain ?? p.main); + set(theme, 'palette.primary.dark', customTokens.PalettePrimaryDark ?? p.dark); + set(theme, 'palette.primary.contrastText', p.contrastText); + } + if (customTokens.PaletteDangerMain) { + const p = generatePalette(customTokens.PaletteDangerMain); + set(theme, 'palette.error.lighter', customTokens.PaletteDangerLighter ?? p.lighter); + set(theme, 'palette.error.light', customTokens.PaletteDangerLight ?? p.light); + set(theme, 'palette.error.main', customTokens.PaletteDangerMain ?? p.main); + set(theme, 'palette.error.dark', customTokens.PaletteDangerDark ?? p.dark); + set(theme, 'palette.error.contrastText', p.contrastText); + } + if (customTokens.PaletteWarningMain) { + const p = generatePalette(customTokens.PaletteWarningMain); + set(theme, 'palette.warning.lighter', customTokens.PaletteWarningLighter ?? p.lighter); + set(theme, 'palette.warning.light', customTokens.PaletteWarningLight ?? p.light); + set(theme, 'palette.warning.main', customTokens.PaletteWarningMain ?? p.main); + set(theme, 'palette.warning.dark', customTokens.PaletteWarningDark ?? p.dark); + set(theme, 'palette.warning.contrastText', p.contrastText); + } + if (customTokens.PaletteSuccessMain) { + const p = generatePalette(customTokens.PaletteSuccessMain); + set(theme, 'palette.success.lighter', customTokens.PaletteSuccessLighter ?? p.lighter); + set(theme, 'palette.success.light', customTokens.PaletteSuccessLight ?? p.light); + set(theme, 'palette.success.main', customTokens.PaletteSuccessMain ?? p.main); + set(theme, 'palette.success.dark', customTokens.PaletteSuccessDark ?? p.dark); + set(theme, 'palette.success.contrastText', p.contrastText); } + set(theme, 'mixins.borderRadius', mergedTokens.BorderRadiusMain); + set(theme, 'mixins.borderStyle', mergedTokens.BorderStyleMain); + set(theme, 'mixins.borderWidth', mergedTokens.BorderWidthMain); + set(theme, 'palette.text.disabled', mergedTokens.TypographyColorDisabled); + set(theme, 'palette.text.primary', mergedTokens.TypographyColorBody); + set(theme, 'shadows[1]', mergedTokens.ShadowScale0); + set(theme, 'shadows[2]', mergedTokens.ShadowScale1); + set(theme, 'typography.body1.fontFamily', mergedTokens.TypographyFamilyBody); + set(theme, 'typography.body1.fontSize', mergedTokens.TypographySizeBody); + set(theme, 'typography.body1.fontStyle', mergedTokens.TypographyStyleNormal); + set(theme, 'typography.body1.lineHeight', mergedTokens.TypographyLineHeightBody); + set(theme, 'typography.button.fontFamily', mergedTokens.TypographyFamilyButton); + set(theme, 'typography.caption.color', mergedTokens.TypographyColorSubordinate); + set(theme, 'typography.caption.fontFamily', mergedTokens.TypographyFamilyBody); + set(theme, 'typography.caption.fontSize', mergedTokens.TypographySizeSubordinate); + set(theme, 'typography.fontFamily', mergedTokens.TypographyFamilyBody); + set(theme, 'typography.fontWeightBold', mergedTokens.TypographyWeightBodyBold); + set(theme, 'typography.fontWeightRegular', mergedTokens.TypographyWeightBody); + set(theme, 'typography.h1.color', mergedTokens.TypographyColorHeading); + set(theme, 'typography.h1.fontFamily', mergedTokens.TypographyFamilyHeading); + set(theme, 'typography.h1.fontSize', mergedTokens.TypographySizeHeading1); + set(theme, 'typography.h1.fontWeight', mergedTokens.TypographyWeightHeading); + set(theme, 'typography.h1.lineHeight', mergedTokens.TypographyLineHeightHeading1); + set(theme, 'typography.h2.color', mergedTokens.TypographyColorHeading); + set(theme, 'typography.h2.fontFamily', mergedTokens.TypographyFamilyHeading); + set(theme, 'typography.h2.fontSize', mergedTokens.TypographySizeHeading2); + set(theme, 'typography.h2.fontWeight', mergedTokens.TypographyWeightHeading); + set(theme, 'typography.h2.lineHeight', mergedTokens.TypographyLineHeightHeading2); + set(theme, 'typography.h3.color', mergedTokens.TypographyColorHeading); + set(theme, 'typography.h3.fontFamily', mergedTokens.TypographyFamilyHeading); + set(theme, 'typography.h3.fontSize', mergedTokens.TypographySizeHeading3); + set(theme, 'typography.h3.fontWeight', mergedTokens.TypographyWeightHeading); + set(theme, 'typography.h3.lineHeight', mergedTokens.TypographyLineHeightHeading3); + set(theme, 'typography.h4.color', mergedTokens.TypographyColorHeading); + set(theme, 'typography.h4.fontFamily', mergedTokens.TypographyFamilyHeading); + set(theme, 'typography.h4.fontSize', mergedTokens.TypographySizeHeading4); + set(theme, 'typography.h4.fontWeight', mergedTokens.TypographyWeightHeading); + set(theme, 'typography.h4.lineHeight', mergedTokens.TypographyLineHeightHeading4); + set(theme, 'typography.h5.color', mergedTokens.TypographyColorHeading); + set(theme, 'typography.h5.fontFamily', mergedTokens.TypographyFamilyHeading); + set(theme, 'typography.h5.fontSize', mergedTokens.TypographySizeHeading5); + set(theme, 'typography.h5.fontWeight', mergedTokens.TypographyWeightHeading); + set(theme, 'typography.h5.lineHeight', mergedTokens.TypographyLineHeightHeading5); + set(theme, 'typography.h6.color', mergedTokens.TypographyColorHeading); + set(theme, 'typography.h6.fontFamily', mergedTokens.TypographyFamilyHeading); + set(theme, 'typography.h6.fontSize', mergedTokens.TypographySizeHeading6); + set(theme, 'typography.h6.fontWeight', mergedTokens.TypographyWeightHeading); + set(theme, 'typography.h6.lineHeight', mergedTokens.TypographyLineHeightHeading6); + set(theme, 'typography.overline.lineHeight', mergedTokens.TypographyLineHeightOverline); + set(theme, 'typography.subtitle1.fontFamily', mergedTokens.TypographyFamilyBody); + set(theme, 'typography.subtitle2.fontFamily', mergedTokens.TypographyFamilyBody); + + theme.spacing = (...args: Array): string => { + if (args.length === 0) { + return mergedTokens.Spacing2; + } + const spaces: string[] = [ + mergedTokens.Spacing0, + mergedTokens.Spacing1, + mergedTokens.Spacing2, + mergedTokens.Spacing3, + mergedTokens.Spacing4, + mergedTokens.Spacing5, + mergedTokens.Spacing6, + mergedTokens.Spacing7, + mergedTokens.Spacing8, + mergedTokens.Spacing9, + ]; + return args + .slice(0, 4) // limit to 4 args + .map((n) => ( typeof n === 'number' ? spaces[n] : n )) // lookup + .join(' '); // concat into space-separated string + }; } + return mergeThemes(theme, { + ...odysseyTheme, + components: { + MuiAlert: { + styleOverrides: { + root: { + gap: 0, + }, + icon: ({ theme: t }) => ({ + paddingInlineEnd: t.spacing(4), + flexShrink: 0, + }), + }, + }, + MuiInputBase: { + styleOverrides: { + root: { + width: '100%', + }, + input: { + '::-ms-reveal': { + display: 'none', + }, + }, + }, + }, + MuiInputLabel: { + styleOverrides: { + root: { + wordBreak: 'break-word', + whiteSpace: 'normal', + }, + }, + }, + // ruleset with :focus-visible pseudo-selector break entire ruleset in + // ie11 because its not supported. re-define the :hover rule separately + // again so the ruleset is applied in ie11 + MuiButton: { + styleOverrides: { + root: ({ ownerState, theme: t }) => ({ + ...(ownerState.variant === 'primary' && { + '&:hover': { + backgroundColor: t.palette.primary.dark, + }, + }), + ...(ownerState.variant === 'secondary' && { + '&:hover': { + backgroundColor: t.palette.primary.lighter, + borderColor: t.palette.primary.light, + color: t.palette.primary.main, + }, + }), + ...(ownerState.variant === 'floating' && { + '&:hover': { + backgroundColor: 'rgba(29, 29, 33, 0.1)', + borderColor: 'transparent', + }, + }), + }), + }, + }, + // ruleset with :focus-visible pseudo-selector break entire ruleset in + // ie11 because its not supported. re-define the :hover rule separately + // again so the ruleset is applied in ie11 + MuiIconButton: { + styleOverrides: { + root: { + '&:hover': { + backgroundColor: 'rgba(29, 29, 33, 0.1)', + borderColor: 'transparent', + }, + }, + }, + }, + + MuiLink: { + styleOverrides: { + root: ({ ownerState, theme: t }) => ({ + color: t.palette.primary.main, + textDecoration: ownerState?.component === 'a' ? 'underline' : 'inherit', - return merge(odysseyThemeCopy, muiThemeOverrides); + '&:hover': { + color: t.palette.primary.dark, + }, + }), + }, + }, + }, + }); }; diff --git a/src/v3/test/e2e/tests/theming.spec.js b/src/v3/test/e2e/tests/theming.spec.js index 5bbdb6130f..cb6eb6cad8 100644 --- a/src/v3/test/e2e/tests/theming.spec.js +++ b/src/v3/test/e2e/tests/theming.spec.js @@ -50,7 +50,8 @@ test('Theme configuration applies correctly', async (t) => { `, }); -test('should override text color based on MUI theme options override', async (t) => { +// TODO OKTA-654743 enable/expose theme overrides on OktaSignIn configs +test.skip('should override text color based on MUI theme options override', async (t) => { const header = Selector('h2') .withText('Sign In'); await t diff --git a/src/v3/test/integration/__snapshots__/admin-consent-without-logo.test.tsx.snap b/src/v3/test/integration/__snapshots__/admin-consent-without-logo.test.tsx.snap index f30619f444..1acca579f8 100644 --- a/src/v3/test/integration/__snapshots__/admin-consent-without-logo.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/admin-consent-without-logo.test.tsx.snap @@ -2,237 +2,241 @@ exports[`admin-consent-without-logo should render form without logo 1`] = `
-
-
-
-
- -

- Native client -

-

- would like to access: -

-
-

- http://localhost:3000 -

-
-
-
+ +

+ Native client +

+

+ would like to access: +

-
+ +
+
- + +
-
-
-
-
+
+
+
+ -
-
-
-
+ okta.clients.manage + +

+ Allows the app to manage clients in your Okta organization. +

+ + +
+
+
- - -
-
-
+
- Allow Access - -
-
- +
+
- Cancel - + +
-
- + +
- - + + `; diff --git a/src/v3/test/integration/__snapshots__/admin-consent.test.tsx.snap b/src/v3/test/integration/__snapshots__/admin-consent.test.tsx.snap index 927398d721..05cd723a2b 100644 --- a/src/v3/test/integration/__snapshots__/admin-consent.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/admin-consent.test.tsx.snap @@ -2,256 +2,260 @@ exports[`admin-consent should render form with logo 1`] = `
-
-
-
+

+

+
-
- -

- Native client -

-

- would like to access: -

-
+

+ Native client +

- http://localhost:3000 + would like to access:

-
-
-
-
-
-
-
+ +
+
- + +
-
-
-
-
+
+
+
+ -
-
-
-
+ okta.clients.manage + +

+ Allows the app to manage clients in your Okta organization. +

+ + +
+
+
- - -
-
-
+
- Allow Access - -
-
- +
+
- Cancel - + +
-
- + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-apple-sso-extension.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-apple-sso-extension.test.tsx.snap index 14107355ba..f6bb7e914f 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-apple-sso-extension.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-apple-sso-extension.test.tsx.snap @@ -2,40 +2,40 @@ exports[`authenticator-apple-sso-extension calls verify then cancels the transaction when step up error is encountered 1`] = `
-
-
-
-
+

+

+
-
-

- Sign In -

+

+ Sign In +

+
-
-
-
- + +
+ +
-
-
-
- -
-
-
-
+
- Next - -
- + -
-
-
- +
+
+
-

- Don't have an account? -

+

+ Don't have an account? +

+
-
-
- + +
-
- + + - - + + `; exports[`authenticator-apple-sso-extension cancels the transaction when sso extension authenticator does not exist 1`] = `
-
-
-
-
-
+
+
+
-

- Sign In -

+

+ Sign In +

+
-
-
-
- + +
+ +
-
-
-
- -
-
-
-
+
- Next - -
- + -
-
-
- +
+
+
-

- Don't have an account? -

+

+ Don't have an account? +

+
-
-
- + +
-
- + + - - + + `; exports[`authenticator-apple-sso-extension opens the verify url with credential SSO Extension approach 1`] = `
-
-
-
-
+

+

+
-
-

- Sign In -

+

+ Sign In +

+
-
-
-
- + +
+ +
-
-
-
- -
-
-
-
+
- Next - -
- + -
-
-
- +
+
+
-

- Don't have an account? -

+

+ Don't have an account? +

+
-
-
- + +
-
- + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-email-verification-data.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-email-verification-data.test.tsx.snap index 1da227bc5a..47fbdd04c6 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-email-verification-data.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-email-verification-data.test.tsx.snap @@ -2,115 +2,115 @@ exports[`authenticator-email-verification-data should render form 1`] = `
-
-
-
- - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
-
-
-
-

- Get a verification email -

+

+ Get a verification email +

+
-
-
-

- Send a verification email by clicking on "Send me an email". -

+

+ Send a verification email by clicking on "Send me an email". +

+
-
-
- -
-
- +
+
- Back to sign in - + +
-
- + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-data-phone.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-data-phone.test.tsx.snap index 2ac41ff078..951e45ff2b 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-data-phone.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-data-phone.test.tsx.snap @@ -2,125 +2,125 @@ exports[`authenticator-enroll-data-phone should render form 1`] = `
-
-
-
- - - - - User - - - - - tester13@test.com - + + + + User + + + + + tester13@test.com + +
-
-
-
-

- Set up phone authentication -

+

+ Set up phone authentication +

+
-
-
-

- Enter your phone number to receive a verification code via SMS. -

+

+ Enter your phone number to receive a verification code via SMS. +

+
-
-
-
- -
- - -
-
-
-
+ +
+ +
-
- - South Georgia and the South Sandwich Islands - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- -
- -

- +1 -

-
- -
-
-
-
-
-
- -
-
-
- -
-
- -
- - - - - - - - -`; - -exports[`authenticator-enroll-data-phone should render form without an autoFocused field 1`] = ` -
-
-
-
-
- -
-
-
- - - - - User - - - - - tester13@test.com - -
-
-
-
-
-
-

- Set up phone authentication -

-
-
-
-
-
-

- Enter your phone number to receive a verification code via SMS. -

-
-
-
-
- -
- - -
-
-
-
-
-
- -
- - + Afghanistan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-
-
-
- -

+ Phone number + +

+ - +1 -

-
- +

+ +1 +

+ + +
-
-
-
-
-
- -
-
-
- -
-
- -
-
- -
-
-
-
- - -`; - -exports[`authenticator-enroll-data-phone should send correct payload when selecting voice 1`] = ` -
-
-
-
-
- -
-
-
- - - - - User - - - - - tester13@test.com - -
-
-
-
-
-
-

- Set up phone authentication -

-
-
-
-
-
-

- Enter your phone number to receive a verification code via voice call. -

-
-
-
-
- -
- - +
- +
+
+ +
-
-
- -
- + + + + + + - Western Sahara - - -
+ +
+
+
+
+ +
+ + +
+
+
+
+ +
+ +

+ +1 +

+
+ +
+
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+ +`; + +exports[`authenticator-enroll-data-phone should send correct payload when selecting voice 1`] = ` +
+
+
+
+
+
+ +
+
+
+ + + + + User + + + + + tester13@test.com + +
+
+
+
+
+
+

+ Set up phone authentication +

+
+
+
+
+
+

+ Enter your phone number to receive a verification code via voice call. +

+
+
+
+
+ +
+ + +
+
+
+
+
+
+ +
- - + + +
-
-
-
- -

+ Phone number + +

+ - +1 -

-
- +

+ +1 +

+ + +
-
-
-
- + +
+ +
+
+ +
-
-
- -
-
- + +
-
- + +
- - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-email-magic-link-false.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-email-magic-link-false.test.tsx.snap index b198c7528a..bf60624bf1 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-email-magic-link-false.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-email-magic-link-false.test.tsx.snap @@ -2,230 +2,234 @@ exports[`Email authenticator enroll when magic link = false Tests should render form 1`] = `
-
-
-
- - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
-
-
-
-
+
-

- Verify with your email -

+

+ Verify with your email +

+
-
-
-

- We sent an email to - - testUser@okta.com - - . Enter the verification code in the text box. -

+ We sent an email to + + testUser@okta.com + + . Enter the verification code in the text box. +

+
-
-
-
- + +
+ +
-
-
- -
-
- +
+
- Return to authenticator list - -
-
- +
+
- Back to sign in - + +
-
- + +
- - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-email.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-email.test.tsx.snap index 4039f2a992..c5965efbe4 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-email.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-email.test.tsx.snap @@ -2,201 +2,205 @@ exports[`Email authenticator enroll when email magic link = true Tests should render form 1`] = `
-
-
-
- - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
-
-
-
-
+
-

- Verify with your email -

+

+ Verify with your email +

+
-
-
- + We sent an email to + + testUser@okta.com + + . Click the verification link in your email to continue or enter the code below. +

+
+
+
+
-
-
- -
-
- + +
-
- + +
- - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-google-authenticator.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-google-authenticator.test.tsx.snap index 2d352dced8..040a3ef41d 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-google-authenticator.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-google-authenticator.test.tsx.snap @@ -2,135 +2,135 @@ exports[`authenticator-enroll-google-authenticator renders form renders QR code view 1`] = `
-
-
-
- - - - - User - - - - - tester19@test.com - + + + + User + + + + + tester19@test.com + +
-
-
-
-

- Set up Google Authenticator -

+

+ Set up Google Authenticator +

+
-
-
+
+
+

+ Scan barcode +

+
+
+
+
+

+ Launch Google Authenticator, tap the "+" icon, then select "Scan barcode". +

+
+
-

- Scan barcode -

+ QR code +
-
-
-

- Launch Google Authenticator, tap the "+" icon, then select "Scan barcode". -

+ Can't scan? +
-
-
- QR code +
-
- -
-
- -
-
- + +
- - + + `; exports[`authenticator-enroll-google-authenticator renders form renders challenge view 1`] = `
-
-
-
- - - - - User - - - - - tester19@test.com - + + + + User + + + + + tester19@test.com + +
-
-
-
-

- Set up Google Authenticator -

+

+ Set up Google Authenticator +

+
-
-
-

- Enter code displayed from application -

+

+ Enter code displayed from application +

+
-
-
-
- + +
+ +
+
+ +
-
-
- -
-
- + +
-
- + + - - + + `; exports[`authenticator-enroll-google-authenticator renders form renders secret key view 1`] = `
-
-
-
- - - - - User - - - - - tester19@test.com - + + + + User + + + + + tester19@test.com + +
-
-
-
-

- Set up Google Authenticator -

+

+ Set up Google Authenticator +

+
-
-
+
+
+

+ Can't scan barcode? +

+
+
-

- Can't scan barcode? -

+

+ To set up manually enter your Okta Account username and then input the following in the Secret Key Field +

+
-
-
-

- To set up manually enter your Okta Account username and then input the following in the Secret Key Field -

+

+ K A G W B I X A K O L P E F M Y +

+
-
-
-

- K A G W B I X A K O L P E F M Y -

+ Next +
-
-
- -
-
- + +
- - + + - - + + `; exports[`authenticator-enroll-google-authenticator renders form renders secret key view 2`] = `
-
-
-
- - - - - User - - - - - tester19@test.com - + + + + User + + + + + tester19@test.com + +
-
-
-
-

- Set up Google Authenticator -

+

+ Set up Google Authenticator +

+
-
-
-

- Enter code displayed from application -

+

+ Enter code displayed from application +

+
-
-
-
- + +
+ +
+
+ +
-
-
- -
-
- + +
-
- + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-password-requirements-not-met.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-password-requirements-not-met.test.tsx.snap index 5d197876ea..83d26d494e 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-password-requirements-not-met.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-password-requirements-not-met.test.tsx.snap @@ -2,115 +2,115 @@ exports[`authenticator-password-requirements-not-met should render form 1`] = `
-
-
-
- - - - - User - - - - - tester47@test.com - + + + + User + + + + + tester47@test.com + +
-
-
-
-

- Set up password -

+

+ Set up password +

+
-
-
-
-
- Password requirements: -
-
    -
  • + Password requirements: + +
      -
      -
      -
      +
      - At least 8 characters -

      +

      + At least 8 characters +

      +
      -
- -
  • -
    +
  • -
    -
    +
    - A lowercase letter -

    +

    + A lowercase letter +

    +
  • -
    - -
  • -
    +
  • -
    -
    +
    - An uppercase letter -

    +

    + An uppercase letter +

    +
  • - - -
  • -
    +
  • -
    -
    +
    - A number -

    +

    + A number +

    +
    - -
  • -
  • -
    +
  • -
    -
    +
    - No parts of your username -

    +

    + No parts of your username +

    +
    - -
  • -
  • -
    +
  • +
    +

    + Does not include your first name +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + Does not include your last name +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - -
    -

    - Does not include your last name -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - +
    - + Password requirements were not met +

    -
    - -
    - -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    -
    - - + + + - -
    - -
    -
    - +
    +
    - Return to authenticator list - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-sms.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-sms.test.tsx.snap index 89b24d3ed1..c6c63a5631 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-sms.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-sms.test.tsx.snap @@ -2,77 +2,77 @@ exports[`authenticator-enroll-phone-sms Send correct payload when back to authenticators list 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - tester13@test.com - + + + + User + + + + + tester13@test.com + +
    -
    -
    -
    -

    - Set up security methods -

    +

    + Set up security methods +

    +
    -
    -
    -

    - Security methods help protect your account by ensuring only you have access. -

    +

    + Security methods help protect your account by ensuring only you have access. +

    +
    -
    -
    -

    - Set up required -

    +

    + Set up required +

    +
    -
    -
    -
      -
    • -
    -
    -

    - Google Authenticator -

    -

    - Enter a temporary code generated from the Google Authenticator app. -

    - - Set up - - +

    - - + Enter a temporary code generated from the Google Authenticator app. + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="google_otp" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="google_otp_0-ctaLabel" + > Set up - - + + + + + Set up + + +

    -
    - - -
  • -
  • +
  • -
    - -
    -

    - Okta Verify -

    -

    - Okta Verify is an authenticator app, installed on your phone, used to prove your identity -

    - - Set up - - +

    - - + Okta Verify is an authenticator app, installed on your phone, used to prove your identity + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="okta_verify" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="okta_verify_1-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Phone -

    -

    - Verify with a code sent to your phone -

    - + Phone + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="phone_number_2-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - Security Key or Biometric Authenticator -

    -

    - Use a security key or a biometric authenticator to sign in -

    - + Security Key or Biometric Authenticator + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="webauthn_3-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - -
  • - - -
    -
    +
    - Back to sign in - + +
    - - + + - - + + `; exports[`authenticator-enroll-phone-sms should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester13@test.com - + + + + User + + + + + tester13@test.com + +
    -
    -
    -
    -
    +
    -

    - Set up phone authentication -

    +

    + Set up phone authentication +

    +
    -
    -
    -

    - A code was sent to your phone. Enter the code below to verify. -

    +

    + A code was sent to your phone. Enter the code below to verify. +

    +
    -
    -
    -

    - Carrier messaging charges may apply -

    +

    + Carrier messaging charges may apply +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Return to authenticator list - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-voice.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-voice.test.tsx.snap index 7f708767e4..2604e5eee2 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-voice.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-phone-voice.test.tsx.snap @@ -2,249 +2,253 @@ exports[`authenticator-enroll-phone-voice should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester3@test.com - + + + + User + + + + + tester3@test.com + +
    -
    -
    -
    -
    +
    -

    - Set up phone authentication -

    +

    + Set up phone authentication +

    +
    -
    -
    -

    - Calling your phone. Enter the code below to verify. -

    +

    + Calling your phone. Enter the code below to verify. +

    +
    -
    -
    -

    - Carrier messaging charges may apply -

    +

    + Carrier messaging charges may apply +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Return to authenticator list - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question-error.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question-error.test.tsx.snap index fa22b29d47..d0f44bbfe3 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question-error.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question-error.test.tsx.snap @@ -2,2002 +2,2018 @@ exports[`authenticator-enroll-security-question-error custom question should show field level character count error message when invalid number of characters are sent and field should retain characters 1`] = `
    -
    -
    -
    -
    +

    -
    -
    +
    +
    -
    -
    -
    +
    +
    +
    + +
    - - - - + - - + + + - - - Choose a security question - - - + -
    -
    -
    -
    + + Create my own security question + + +
    + +
    -
    - + +
    + +
    -
    -
    -
    - +
    - + +
    + +
    -
    -
    - + +
    +
    + +
    -
    -
    - -
    -
    - + +
    -
    - + +
    - - + + `; exports[`authenticator-enroll-security-question-error predefined question should send correct payload when toggling between question types and submitted form with incorrect number of characters 1`] = `
    -
    -
    -
    +

    -
    -
    +
    +
    -
    -
    -
    +
    +
    +
    + +
    - - - - + - - + + + - - + Choose a security question + + + + + + + + + + + + Create my own security question + + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    - -
    -
    +
    - -
    - - -
    + Verify +
    -
    - -
    - -
    - -
    -
    -
    - -
    -
    + Return to authenticator list +
    -
    - -
    -
    - -
    -
    - + +
    - - + + `; exports[`authenticator-enroll-security-question-error predefined question should show field level character count error message on multiple attempts to submit with invalid character count 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester35@test.com - + + + + User + + + + + tester35@test.com + +
    -
    -
    -
    -

    - Set up security question -

    +

    + Set up security question +

    +
    -
    -
    -
    - -
    - - + -
    -
    -
    -
    + + Create my own security question + + +
    + +
    -
    - -
    - - + + +
    -
    -
    -
    - +
    - + +
    + +
    +
    +
    +
    -
    +
    +
    +
    + + + + + +
    + + Verify +
    -
    -
    - -
    -
    - + +
    -
    - + +
    - - + + `; exports[`authenticator-enroll-security-question-error predefined question should show field level character count error message when invalid number of characters are sent and field should retain characters 1`] = `
    -
    -
    -
    -
    +

    -
    -
    +
    +
    -
    -
    -
    +
    +
    +
    + +
    - - - - + - - + + + - - - Choose a security question - - - + -
    -
    -
    -
    + + Create my own security question + + +
    + +
    -
    - -
    - - + + +
    -
    -
    -
    - +
    - + +
    + +
    -
    -
    - + +
    +
    + +
    -
    -
    - -
    -
    - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question.test.tsx.snap index ef1290f950..ff00fcd0f0 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-security-question.test.tsx.snap @@ -2,1748 +2,1764 @@ exports[`authenticator-enroll-security-question custom question fails client side validation when custom question is missing 1`] = `
    -
    -
    -
    -
    +

    -
    -
    +
    +
    -
    -
    -
    +
    +
    +
    + +
    - - - - + - - + + + - - - Choose a security question - - - + -
    -
    -
    -
    + + Create my own security question + + +
    + +
    - -
    - -
    -
    + +
    +
    - This field cannot be left blank -

    + +
    -
    -
    -
    - +
    - + + +
    +
    + +
    -
    -
    - -
    -
    - + +
    -
    - + +
    - - + + `; exports[`authenticator-enroll-security-question custom question renders correct form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester14@test.com - + + + + User + + + + + tester14@test.com + +
    -
    -
    -
    -

    - Set up security question -

    +

    + Set up security question +

    +
    -
    -
    -
    - -
    - - + -
    -
    -
    -
    + + Create my own security question + + +
    + +
    -
    - + +
    + +
    -
    -
    -
    - +
    - + + +
    +
    + +
    -
    -
    - -
    -
    - + +
    - - + + - - + + `; exports[`authenticator-enroll-security-question predefined question renders correct form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester14@test.com - + + + + User + + + + + tester14@test.com + +
    -
    -
    -
    -

    - Set up security question -

    +

    + Set up security question +

    +
    -
    -
    -
    - -
    - - + -
    -
    -
    -
    + + Create my own security question + + +
    + +
    -
    - - Who is your favorite book/movie character? - - + + + + + + + + + + + + + + + + + + + + + +
    -
    -
    -
    - +
    - + + +
    +
    + +
    -
    -
    - -
    -
    - + +
    - - + + - - + + `; exports[`authenticator-enroll-security-question predefined question should render form without an autoFocused field 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester14@test.com - + + + + User + + + + + tester14@test.com + +
    -
    -
    -
    -

    - Set up security question -

    +

    + Set up security question +

    +
    -
    -
    -
    - -
    - - + -
    -
    -
    -
    + + Create my own security question + + +
    + +
    -
    - - Who is your favorite book/movie character? - - + + + + + + + + + + + + + + + + + + + + + +
    -
    -
    -
    - +
    - + + +
    +
    + +
    -
    -
    - -
    -
    - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator-with-skip.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator-with-skip.test.tsx.snap index d7bfb3efb4..ad4463c9a9 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator-with-skip.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator-with-skip.test.tsx.snap @@ -2,77 +2,77 @@ exports[`authenticator-enroll-select-authenticator renders form 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Set up security methods -

    +

    + Set up security methods +

    +
    -
    -
    -

    - Security methods help protect your account by ensuring only you have access. -

    +

    + Security methods help protect your account by ensuring only you have access. +

    +
    -
    -
    -

    - Set up optional -

    +

    + Set up optional +

    +
    -
    -
    -
      -
    • -
    -
    -

    - Password -

    -

    - Choose a password for your account -

    - + Password + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="okta_password_0-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - - -
  • -
  • +
  • -
    -
  • -
    -

    - Phone -

    -

    - Verify with a code sent to your phone -

    - + Phone + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="phone_number_1-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - - -
  • -
  • +
  • -
    - -
    -

    - Security Key or Biometric Authenticator -

    -

    - Use a security key or a biometric authenticator to sign in -

    - + Security Key or Biometric Authenticator + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="webauthn_2-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - -
  • - - -
    -
    +
    - Set up later - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator.test.tsx.snap index 07be8f62b8..6d2e084888 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-select-authenticator.test.tsx.snap @@ -2,77 +2,77 @@ exports[`authenticator-enroll-select-authenticator renders form 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Set up security methods -

    +

    + Set up security methods +

    +
    -
    -
    -

    - Security methods help protect your account by ensuring only you have access. -

    +

    + Security methods help protect your account by ensuring only you have access. +

    +
    -
    -
    -

    - Set up required -

    +

    + Set up required +

    +
    -
    -
    -
      -
    • -
    -
    -

    - Password -

    -

    - Choose a password for your account -

    - + Password + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="okta_password_0-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - - -
  • -
  • +
  • -
    -
  • -
    -

    - Phone -

    -

    - Verify with a code sent to your phone -

    - + Phone + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="phone_number_1-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - - -
  • -
  • +
  • -
    - -
    -

    - Security Key or Biometric Authenticator -

    -

    - Use a security key or a biometric authenticator to sign in -

    - - Set up - - +

    - - + Use a security key or a biometric authenticator to sign in + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="webauthn" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="webauthn_2-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Security Question -

    -

    - Choose a security question and answer that will be used for signing in -

    - + Security Question + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="security_question_3-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - Okta Verify -

    -

    - Okta Verify is an authenticator app, installed on your phone, used to prove your identity -

    - - Set up - - +

    - - + Okta Verify is an authenticator app, installed on your phone, used to prove your identity + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="okta_verify" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="okta_verify_4-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Google Authenticator -

    -

    - Enter a temporary code generated from the Google Authenticator app. -

    - - Set up - - +

    - - + Enter a temporary code generated from the Google Authenticator app. + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="google_otp" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="google_otp_5-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Atko Custom On-prem -

    -

    - Verify by entering a code generated by Atko Custom On-prem. -

    - + Atko Custom On-prem + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="onprem_mfa_6-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - RSA SecurID -

    -

    - Verify by entering a code generated by RSA SecurID -

    - - Set up - - +

    - - + Verify by entering a code generated by RSA SecurID + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="rsa_token-otp" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="rsa_token_7-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Duo Security -

    -

    - Verify your identity using Duo Security. -

    - + Duo Security + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="duo_8-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - IDP Authenticator -

    -

    - Redirect to verify with IDP Authenticator. -

    - - Set up - - +

    - - + Redirect to verify with IDP Authenticator. + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="external_idp" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="external_idp_9-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Atko Custom OTP Authenticator -

    -

    - Enter a temporary code generated from an authenticator device. -

    - - Set up - - +

    - - + Enter a temporary code generated from an authenticator device. + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="custom_otp" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="custom_otp_10-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Symantec VIP -

    -

    - Verify by entering a temporary code from the Symantec VIP app. -

    - + Symantec VIP + +

    - Set up - - +

    - - + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="symantec_vip_11-ctaLabel" + > Set up - - + + + + + Set up + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - YubiKey Authenticator -

    -

    - Verify your identity using YubiKey -

    - - Set up - - +

    - - + Verify your identity using YubiKey + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-33" + data-se="yubikey_token" + > + <span + class="button select-factor link-button MuiBox-root emotion-34" + data-se="cta-button-label" + id="yubikey_token_12-ctaLabel" + > Set up - - + + + + + Set up + + +

    - - -
  • - - -
    -
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-enroll-yubikey-otp.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-enroll-yubikey-otp.test.tsx.snap index 69b5edd9f8..e67e6a75b8 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-enroll-yubikey-otp.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-enroll-yubikey-otp.test.tsx.snap @@ -2,292 +2,296 @@ exports[`authenticator-enroll-yubikey-otp renders form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    - + +
    -
    -
    -

    - Set up YubiKey -

    +

    + Set up YubiKey +

    +
    -
    -
    -

    - Use your YubiKey to insert a verification code. -

    +

    + Use your YubiKey to insert a verification code. +

    +
    -
    -
    -
    - +
    - + + +
    -
    -
    - -
    -
    - +
    +
    - Return to authenticator list - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-expired-password-no-complexity.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-expired-password-no-complexity.test.tsx.snap index 180856070a..90b97686d2 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-expired-password-no-complexity.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-expired-password-no-complexity.test.tsx.snap @@ -2,347 +2,351 @@ exports[`authenticator-expired-password-no-complexity should render form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    -
    -
    - + + + User + + + + + testUser@okta.com +
    +
    +
    -
    - -
    - -
    + Your password has expired +
    -
    -
    + +
    +
    -
    - +
    - + + +
    -
    -
    -
    +
    +
    +
    +
    -
    - - + + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-expired-password-with-enrollment-authenticator.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-expired-password-with-enrollment-authenticator.test.tsx.snap index f0e90540d1..082c98f902 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-expired-password-with-enrollment-authenticator.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-expired-password-with-enrollment-authenticator.test.tsx.snap @@ -2,780 +2,784 @@ exports[`authenticator-expired-password-with-enrollment-authenticator should present field level error message of (failed) password requirements 1`] = `
    -
    -
    -
    -
    +

    -
    -
    +
    + We found some errors. Please review the form and make corrections. +
    -
    -
    - Password requirements: -
    -
      + Your password has expired + +
    +
    +
    +
    -
  • + Password requirements: + +
      -
      -
      -
      +
      - At least 8 characters -

      +

      + At least 8 characters +

      +
      -
  • - -
  • -
    +
  • +
    +

    + A lowercase letter +

    +
  • + +
  • - + + + + info + + +
    +
    +

    + An uppercase letter +

    +
  • -
    - -
  • -
    +
  • +
    +

    + A number +

    +
  • + +
  • - + + + + info + + +
    +
    +

    + No parts of your username +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - + +
    +
    +
    +

    - A number + Password requirements were not met:

    +
      +
    • + At least 8 characters +
    • +
    • + An uppercase letter +
    • +
    • + A number +
    • +
    -
    -
  • -
  • + + + +
    +
    + +
    +
    - -
    -

    - No parts of your username -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - +
    - + This field cannot be left blank +

    +
    +
    -
    -

    - Password requirements were not met: -

    -
      -
    • - At least 8 characters -
    • - -
    +
    - A number - - -
    -

    +

    + Passwords must match +

    +
    +
    + + - -
    - -
    - -
    - -
    -
    -
    - -
    + Change Password +
    -
    -
    - + Return to authenticator list +
    -
    -
    - -
    -
    - -
    -
    - + +
    - - + + - - + + `; exports[`authenticator-expired-password-with-enrollment-authenticator should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Your password has expired -

    +

    + Your password has expired +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • +
    +

    + A lowercase letter +

    +
  • + +
  • - + + + + info + + +
    +
    +

    + An uppercase letter +

    +
  • -
    - -
  • -
    +
  • +
    +

    + A number +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + No parts of your username +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - -
    -

    - A number -

    -
    +
    -
  • -
  • + + +
    +
    + +
    +
    - -
    -

    - No parts of your username -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - - + + +
    - -
    - -
    -
    - +
    +
    - Return to authenticator list - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-expired-password.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-expired-password.test.tsx.snap index db3f2cbfc6..694c75145e 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-expired-password.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-expired-password.test.tsx.snap @@ -2,768 +2,772 @@ exports[`authenticator-expired-password should present field level error message of (failed) password requirements 1`] = `
    -
    -
    -
    -
    +

    -
    -
    +
    - Your password has expired - + We found some errors. Please review the form and make corrections. +
    -
    -
    - Password requirements: -
    -
      + Your password has expired + +
    +
    +
    +
    -
  • + Password requirements: + +
      -
      -
      -
      +
      - At least 8 characters -

      +

      + At least 8 characters +

      +
      -
  • - -
  • -
    +
  • +
    +

    + A lowercase letter +

    +
  • + +
  • - + + + + info + + +
    +
    +

    + An uppercase letter +

    +
  • -
    - -
  • -
    +
  • +
    +

    + A number +

    +
  • + +
  • - + + + + info + + +
    +
    +

    + No parts of your username +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - + +
    +
    +
    +

    - A number + Password requirements were not met:

    +
      +
    • + At least 8 characters +
    • +
    • + An uppercase letter +
    • +
    • + A number +
    • +
    -
    -
  • -
  • + + + +
    +
    + +
    +
    - -
    -

    - No parts of your username -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - +
    - + This field cannot be left blank +

    +
    +
    -
    -

    - Password requirements were not met: -

    -
      -
    • - At least 8 characters -
    • - -
    +
    - A number - - -
    -

    +

    + Passwords must match +

    +
    +
    + + - -
    - -
    - -
    - -
    -
    -
    - -
    + Change Password +
    -
    -
    - + Back to sign in +
    -
    - -
    -
    - -
    - - + + - - + + `; exports[`authenticator-expired-password should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester8@test.com - + + + + User + + + + + tester8@test.com + +
    -
    -
    -
    -

    - Your password has expired -

    +

    + Your password has expired +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • +
    +

    + A lowercase letter +

    +
  • + +
  • - + + + + info + + +
    +
    +

    + An uppercase letter +

    +
  • -
    - -
  • -
    +
  • +
    +

    + A number +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + No parts of your username +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - -
    -

    - A number -

    -
    +
    -
  • -
  • + + +
    +
    + +
    +
    - -
    -

    - No parts of your username -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - - + + +
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-expiry-warning-password.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-expiry-warning-password.test.tsx.snap index 1a9988bfb7..ae23c9eea2 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-expiry-warning-password.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-expiry-warning-password.test.tsx.snap @@ -2,163 +2,147 @@ exports[`authenticator-expiry-warning-password should present field level error message of (failed) password requirements 1`] = `
    -
    -
    -
    -
    +

    -
    -
    +
    - Your password will expire in 4 days - + We found some errors. Please review the form and make corrections. +
    -

    - When your password expires, you will have to change your password before you can login to your Localhost account. -

    +

    + Your password will expire in 4 days +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      + When your password expires, you will have to change your password before you can login to your Localhost account. +

      +
    +
    +
    +
    -
  • + Password requirements: + +
      -
      -
      -
      +
      - At least 8 characters -

      +

      + At least 8 characters +

      +
      -
  • - -
  • -
    +
  • -
    -
    +
    - A lowercase letter -

    +

    + A lowercase letter +

    +
  • -
    - -
  • -
    +
  • -
    -
    +
    - An uppercase letter -

    +

    + An uppercase letter +

    +
    - -
  • -
  • -
    +
  • -
    -
    +
    - A number -

    +

    + A number +

    +
    - -
  • -
  • -
    +
  • +
    +

    + A symbol +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + No parts of your username +

    +
    - -
  • -
  • -
    +
  • +
    +

    + Does not include your first name +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + Does not include your last name +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - + +
    +
    +
    +

    - Does not include your first name + Password requirements were not met:

    +
      +
    • + At least 8 characters +
    • +
    • + An uppercase letter +
    • +
    • + A number +
    • +
    • + A symbol +
    • +
    -
    -
  • -
  • + + + +
    +
    + +
    +
    - -
    -

    - Does not include your last name -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - +
    - + This field cannot be left blank +

    +
    +
    -
    -

    - Password requirements were not met: -

    -
      -
    • - At least 8 characters -
    • - -
    +
    - A number - -
  • - A symbol -
  • - -
    -

    +

    + Passwords must match +

    +
    +
    + + - -
    - -
    +
    +
    + -
    -
    -
    - -
    + Remind me later +
    - -
    - + Back to sign in +
    -
    - -
    -
    - -
    -
    - -
    - - + + - - + + `; exports[`authenticator-expiry-warning-password should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Your password will expire in 4 days -

    +

    + Your password will expire in 4 days +

    +
    -
    -
    -

    - When your password expires, you will have to change your password before you can login to your Localhost account. -

    +

    + When your password expires, you will have to change your password before you can login to your Localhost account. +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • -
    -
    +
    - A lowercase letter -

    +

    + A lowercase letter +

    +
  • -
    - -
  • -
    +
  • -
    -
    +
    - An uppercase letter -

    +

    + An uppercase letter +

    +
    - -
  • -
  • -
    +
  • -
    -
    +
    - A number -

    +

    + A number +

    +
    - -
  • -
  • -
    +
  • +
    +

    + A symbol +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + No parts of your username +

    +
    - -
  • -
  • -
    +
  • +
    +

    + Does not include your first name +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + Does not include your last name +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - -
    -

    - Does not include your first name -

    -
    +
    -
  • -
  • + + +
    +
    + +
    +
    - -
    -

    - Does not include your last name -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - - + + +
    - -
    - -
    -
    - +
    +
    - Remind me later - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-piv-cac-verification.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-piv-cac-verification.test.tsx.snap index 287b32dc81..5cad104160 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-piv-cac-verification.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-piv-cac-verification.test.tsx.snap @@ -2,40 +2,40 @@ exports[`authenticator-piv-cac-verification renders form with custom PIV/CAC Button label and class 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    - -
    -
    + + + + My custom PIV Button Label + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    + +
    + +
    +
    +
    +
    +
    +
    +
    -
    + + + Keep me signed in + + +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Sign in - -
    -
    - +
    +
    - Forgot password? - -
    -
    - +
    +
    - Unlock account? - -
    - +
    - Help - -
    -
    -
    -
    -
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    - -
    - + +
    - - + + - - + + `; exports[`authenticator-piv-cac-verification renders form with idpDisplay as PRIMARY/default 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    - -
    -
    + + + + Sign in with PIV / CAC card + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    + +
    + +
    +
    +
    +
    +
    +
    +
    -
    + + + Keep me signed in + + +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Sign in - -
    -
    - +
    +
    - Forgot password? - -
    -
    - +
    +
    - Unlock account? - -
    - +
    - Help - -
    -
    -
    -
    -
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    - -
    - + +
    - - + + - - + + `; exports[`authenticator-piv-cac-verification renders form with idpDisplay as SECONDARY 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    + +
    + +
    +
    +
    +
    +
    +
    +
    -
    + + + Keep me signed in + + +
    -
    -
    -
    -
    +
    + +
    +
    +
    -
    - -
    -
    + Sign in with PIV / CAC card + +
    -
    -
    - -
    -
    - -
    -
    -
    +
    - Unlock account? - -
    - +
    - Help - -
    -
    -
    -
    -
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    -
    -
    - + +
    - - + + - - + + `; exports[`authenticator-piv-cac-verification should render PIV/CAC view when clicking PIV button 1`] = `
    -
    -
    -
    -
    -
    -

    - PIV / CAC card -

    +

    + PIV / CAC card +

    +
    -
    -
    -

    - Please insert your PIV / CAC card and select the user certificate. -

    +

    + Please insert your PIV / CAC card and select the user certificate. +

    +
    -
    -
    - - - - - + + + + +
    -
    - + +
    - -
    - - -
    - +
    + + +
    + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-reset-password-revoke-sessions.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-reset-password-revoke-sessions.test.tsx.snap index 787af49e7a..9556bcdee4 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-reset-password-revoke-sessions.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-reset-password-revoke-sessions.test.tsx.snap @@ -2,115 +2,115 @@ exports[`authenticator-reset-password-revoke-sessions should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta.com - + + + + User + + + + + tester@okta.com + +
    -
    -
    -
    -

    - Reset your password -

    +

    + Reset your password +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • -
    -
    +
    - A lowercase letter -

    +

    + A lowercase letter +

    +
  • -
    - -
  • -
    +
  • -
    -
    +
    - An uppercase letter -

    +

    + An uppercase letter +

    +
  • - - -
  • -
    +
  • +
    +

    + A number +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + No parts of your username +

    +
    - -
  • -
  • -
    +
  • +
    +

    + Does not include your first name +

    +
    +
  • +
  • - + + + + info + + +
    +
    +

    + Does not include your last name +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - -
    -

    - Does not include your first name -

    -
    +
    -
  • -
  • + + +
    +
    + +
    +
    - -
    -

    - Does not include your last name -

    -
    +
    -
  • - - - -
    - -
    -
    +
    + +
    -
    - - + +
    +

    + Passwords must match +

    +
    +
    + +
    - -
    - -
    - -
    - -
    -
    + + + Sign me out of all other devices. + + +
    -
    -
    - + Reset Password +
    -
    -
    -
    - -
    -
    -
    - -
    -
    - + Back to sign in + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-reset-password.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-reset-password.test.tsx.snap index 693e38dad0..01582136e9 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-reset-password.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-reset-password.test.tsx.snap @@ -2,115 +2,115 @@ exports[`authenticator-reset-password should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester8@test.com - + + + + User + + + + + tester8@test.com + +
    -
    -
    -
    -

    - Reset your password -

    +

    + Reset your password +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • +
    +

    + A lowercase letter +

    +
  • + +
  • -
    +
    - A lowercase letter -

    +

    + An uppercase letter +

    +
  • -
    - -
  • -
    +
  • +
    +

    + A number +

    +
    +
  • +
  • -
    +
    - An uppercase letter -

    +

    + No parts of your username +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - -
    -

    - A number -

    -
    +
    -
  • -
  • + + +
    +
    + +
    +
    - -
    -

    - No parts of your username -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - - + + +
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; exports[`authenticator-reset-password should render form with custom brand name 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester8@test.com - + + + + User + + + + + tester8@test.com + +
    -
    -
    -
    -

    - Reset your Acme Corp password -

    +

    + Reset your Acme Corp password +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • +
    +

    + A lowercase letter +

    +
  • + +
  • -
    +
    - A lowercase letter -

    +

    + An uppercase letter +

    +
  • -
    - -
  • -
    +
  • +
    +

    + A number +

    +
    +
  • +
  • -
    +
    - An uppercase letter -

    +

    + No parts of your username +

    +
    - -
  • -
  • + + + +
    + +
    +
    +
    + +
    +
    - -
    -

    - A number -

    -
    +
    -
  • -
  • + + +
    +
    + +
    +
    - -
    -

    - No parts of your username -

    -
    +
    -
  • - - - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - - + + +
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-custom-otp.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-custom-otp.test.tsx.snap index b54bd2e283..d136c61840 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-custom-otp.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-custom-otp.test.tsx.snap @@ -2,120 +2,120 @@ exports[`authenticator-verification-custom-otp should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Verify with Atko Custom OTP Authenticator -

    +

    + Verify with Atko Custom OTP Authenticator +

    +
    -
    -
    -

    - Enter the code generated on your authenticator and verify. -

    +

    + Enter the code generated on your authenticator and verify. +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-with-device-known.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-with-device-known.test.tsx.snap index 109e0fd0f3..b94ab5e173 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-with-device-known.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-with-device-known.test.tsx.snap @@ -2,111 +2,111 @@ exports[`authenticator-verification-data-ov-only-with-device-known should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Verify it's you with a security method -

    +

    + Verify it's you with a security method +

    +
    -
    -
    -

    - Select from the following options -

    +

    + Select from the following options +

    +
    -
    -
    -
      -
    • -
    -
    -

    - Use Okta FastPass -

    -

    - Okta Verify -

    - - Select - - +

    - - + Okta Verify + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-31" + data-se="okta_verify-signed_nonce" + > + <span + class="button select-factor link-button MuiBox-root emotion-32" + data-se="cta-button-label" + id="okta_verify_2-ctaLabel" + > Select - - + + + + + Select + + +

    -
    - - -
  • -
  • +
  • -
    -
  • -
    -

    - Get a push notification -

    -

    - Okta Verify -

    - - Select - - +

    - - + Okta Verify + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-31" + data-se="okta_verify-push" + > + <span + class="button select-factor link-button MuiBox-root emotion-32" + data-se="cta-button-label" + id="okta_verify_0-ctaLabel" + > Select - - + + + + + Select + + +

    - - - -
  • -
  • +
  • -
    - -
    -

    - Enter a code -

    -

    - Okta Verify -

    - - Select - - +

    - - + Okta Verify + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-31" + data-se="okta_verify-totp" + > + <span + class="button select-factor link-button MuiBox-root emotion-32" + data-se="cta-button-label" + id="okta_verify_1-ctaLabel" + > Select - - + + + + + Select + + +

    - - -
  • - - -
    -
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-without-device-known.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-without-device-known.test.tsx.snap index af3eb84fd3..4437805895 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-without-device-known.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-data-ov-only-without-device-known.test.tsx.snap @@ -2,111 +2,111 @@ exports[`authenticator-verification-data-ov-only-without-device-known should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Verify it's you with a security method -

    +

    + Verify it's you with a security method +

    +
    -
    -
    -

    - Select from the following options -

    +

    + Select from the following options +

    +
    -
    -
    -
      -
    • -
    -
    -

    - Get a push notification -

    -

    - Okta Verify -

    - - Select - - +

    - - + Okta Verify + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-31" + data-se="okta_verify-push" + > + <span + class="button select-factor link-button MuiBox-root emotion-32" + data-se="cta-button-label" + id="okta_verify_0-ctaLabel" + > Select - - + + + + + Select + + +

    -
    - - -
  • -
  • +
  • -
    -
  • -
    -

    - Enter a code -

    -

    - Okta Verify -

    - - Select - - +

    - - + Okta Verify + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-31" + data-se="okta_verify-totp" + > + <span + class="button select-factor link-button MuiBox-root emotion-32" + data-se="cta-button-label" + id="okta_verify_1-ctaLabel" + > Select - - + + + + + Select + + +

    - - - -
  • -
  • +
  • -
    - -
    -

    - Use Okta FastPass -

    -

    - Okta Verify -

    - - Select - - +

    - - + Okta Verify + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-31" + data-se="okta_verify-signed_nonce" + > + <span + class="button select-factor link-button MuiBox-root emotion-32" + data-se="cta-button-label" + id="okta_verify_2-ctaLabel" + > Select - - + + + + + Select + + +

    - - -
  • - - -
    -
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-data-phone-sms-only.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-data-phone-sms-only.test.tsx.snap index ba85717b3a..64142acbdb 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-data-phone-sms-only.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-data-phone-sms-only.test.tsx.snap @@ -2,125 +2,125 @@ exports[`authenticator-verification-data-phone-sms-only should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Verify with your phone -

    +

    + Verify with your phone +

    +
    -
    -
    -

    - Send a code via SMS to - - ‎+1 XXX-XXX-4601 - -

    + Send a code via SMS to + + ‎+1 XXX-XXX-4601 + +

    +
    -
    -
    -

    - Carrier messaging charges may apply -

    +

    + Carrier messaging charges may apply +

    +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-data-with-email.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-data-with-email.test.tsx.snap index 536085fae4..ff14ba93e0 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-data-with-email.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-data-with-email.test.tsx.snap @@ -2,115 +2,115 @@ exports[`authenticator-verification-data-with-email should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Get a verification email -

    +

    + Get a verification email +

    +
    -
    -
    -

    - Send a verification email to - - t****1@okta.com - - by clicking on "Send me an email". -

    + Send a verification email to + + t****1@okta.com + + by clicking on "Send me an email". +

    +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-email-magic-link-false.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-email-magic-link-false.test.tsx.snap index d11eb7f8d3..d21b9908d2 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-email-magic-link-false.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-email-magic-link-false.test.tsx.snap @@ -2,218 +2,222 @@ exports[`Email authenticator verification when email magic link = false Tests should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - firstname.lastname@example.com - + + + + User + + + + + firstname.lastname@example.com + +
    -
    -
    -
    -
    +
    -

    - Verify with your email -

    +

    + Verify with your email +

    +
    -
    -
    -

    - We sent an email to - - f****************e@example.com - - . Enter the verification code in the text box. -

    + We sent an email to + + f****************e@example.com + + . Enter the verification code in the text box. +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-email.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-email.test.tsx.snap index 8c569cdc4e..a70990a560 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-email.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-email.test.tsx.snap @@ -2,1568 +2,1596 @@ exports[`Email authenticator verification when email magic link = undefined renders correct form renders the initial form 1`] = `
    -
    -
    -
    - - - - - User - - - - - firstname.lastname@example.com - + + + + User + + + + + firstname.lastname@example.com + +
    -
    -
    -
    -
    +
    -

    - Verify with your email -

    +

    + Verify with your email +

    +
    -
    -
    - + We sent an email to + + f****************e@example.com + + . Click the verification link in your email to continue or enter the code below. +

    +
    +
    +
    +
    -
    - -
    -
    -
    + +
    - - + + `; exports[`Email authenticator verification when email magic link = undefined renders correct form renders the initial form with resend alert box 1`] = `
    -
    -
    -
    - - - - - User - - - - - firstname.lastname@example.com - + + + + User + + + + + firstname.lastname@example.com + +
    -
    -
    -
    -
    -
    -

    - Verify with your email -

    +

    + Verify with your email +

    +
    -
    -
    - + We sent an email to + + f****************e@example.com + + . Click the verification link in your email to continue or enter the code below. +

    +
    +
    +
    +
    -
    - -
    -
    - + +
    - - + + `; exports[`Email authenticator verification when email magic link = undefined renders correct form renders the otp challenge form 1`] = `
    -
    -
    -
    - - - - - User - - - - - firstname.lastname@example.com - + + + + User + + + + + firstname.lastname@example.com + +
    -
    -
    -
    -
    +
    -

    - Verify with your email -

    +

    + Verify with your email +

    +
    -
    -
    - + We sent an email to + + f****************e@example.com + + . Click the verification link in your email to continue or enter the code below. +

    +
    -
    -
    -
    - + +
    + +
    +
    + +
    -
    - -
    -
    -
    + +
    - - + + `; exports[`Email authenticator verification when email magic link = undefined renders correct form renders the otp challenge form 2`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    - + We found some errors. Please review the form and make corrections.
    +
    +
    +
    -
    - +

    + Verify with your email +

    +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    +
    + +
    -
    -
    - -
    -
    - + +
    -
    - + +
    -
    -
    + +
    `; exports[`Email authenticator verification when email magic link = undefined renders correct form should display reminder prompt, then global error after invalid entry and finally display reminder again with global error 1`] = `
    -
    -
    -
    -
    +

    -
    -
    +
    +
    +
    +
    -
    -
    -

    - Verify with your email -

    +

    + Verify with your email +

    +
    -
    -
    - + We sent an email to + + t***t@idx.com + + . Click the verification link in your email to continue or enter the code below. +

    +
    -
    -
    -
    - -
    -
    - + Enter Code + +
    + +
    +
    + +
    +
    + +
    -
    -
    - -
    -
    - + +
    -
    - + +
    - - + + `; exports[`Email authenticator verification when email magic link = undefined renders correct form should render session expired terminal view when polling results in expired session 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -
    -
    - + +
    -
    - + +
    - - + + `; exports[`Email authenticator verification when email magic link = undefined should have autocomplete attribute on otp input element when in ios browser 1`] = `
    -
    -
    -
    - - - - - User - - - - - firstname.lastname@example.com - + + + + User + + + + + firstname.lastname@example.com + +
    -
    -
    -
    -
    +
    -

    - Verify with your email -

    +

    + Verify with your email +

    +
    -
    -
    - + We sent an email to + + f****************e@example.com + + . Click the verification link in your email to continue or enter the code below. +

    +
    -
    -
    -
    - + +
    + +
    +
    + +
    -
    - -
    -
    -
    + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-google-authenticator.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-google-authenticator.test.tsx.snap index 29a9d92117..0667ded28d 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-google-authenticator.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-google-authenticator.test.tsx.snap @@ -2,135 +2,135 @@ exports[`authenticator-verification-google-authenticator should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Verify with Google Authenticator -

    +

    + Verify with Google Authenticator +

    +
    -
    -
    -

    - Enter the temporary code generated in your Google Authenticator app -

    +

    + Enter the temporary code generated in your Google Authenticator app +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-code.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-code.test.tsx.snap index be0cac9326..c0783e0be6 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-code.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-code.test.tsx.snap @@ -2,593 +2,601 @@ exports[`authenticator-verification-okta-verify-push-code Polling should display reminder prompt when waiting on page for >= 30 secs 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -
    -
    -

    - Push notification sent -

    +

    + Push notification sent +

    +
    -
    -
    -
    - -
    -
    -
    + + + + Send push automatically + + + +
    -

    - On your mobile device, open the Okta Verify prompt, then tap - - 52 - - in Okta Verify to continue. -

    + On your mobile device, open the Okta Verify prompt, then tap + + 52 + + in Okta Verify to continue. +

    +
    -
    -
    - -
    -
    -
    +
    - 52 - + + 52 + +
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; exports[`authenticator-verification-okta-verify-push-code should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -
    +
    -

    - Push notification sent -

    +

    + Push notification sent +

    +
    -
    -
    -
    - -
    -
    -
    + + + + Send push automatically + + + +
    -

    - On your mobile device, open the Okta Verify prompt, then tap - - 52 - - in Okta Verify to continue. -

    + On your mobile device, open the Okta Verify prompt, then tap + + 52 + + in Okta Verify to continue. +

    +
    -
    -
    - -
    -
    -
    +
    - 52 - + + 52 + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-poll.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-poll.test.tsx.snap index bc89a008f3..b696ec134c 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-poll.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push-poll.test.tsx.snap @@ -2,111 +2,111 @@ exports[`authenticator-verification-okta-verify-push should render polling form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Get a push notification -

    +

    + Get a push notification +

    +
    -
    -
    -
    -
    +
    - -
    -
    -
    -
    +
    - Push notification sent - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push.test.tsx.snap index 77b26c9559..55e415370d 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-push.test.tsx.snap @@ -2,111 +2,111 @@ exports[`authenticator-verification-okta-verify-push should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Get a push notification -

    +

    + Get a push notification +

    +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Send push - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp-only-ov.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp-only-ov.test.tsx.snap index c79dd7dc84..74dd93584d 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp-only-ov.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp-only-ov.test.tsx.snap @@ -2,111 +2,111 @@ exports[`authenticator-verification-okta-verify-totp-only-ov should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Enter a code -

    +

    + Enter a code +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp.test.tsx.snap index dc68ea0c18..9b7f916316 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-okta-verify-totp.test.tsx.snap @@ -2,111 +2,111 @@ exports[`authenticator-verification-okta-verify-totp should have autocomplete attribute on totp input element when in ios browser 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Enter a code -

    +

    + Enter a code +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; exports[`authenticator-verification-okta-verify-totp should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Enter a code -

    +

    + Enter a code +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-ov-resend-push-notification.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-ov-resend-push-notification.test.tsx.snap index 0e43ab3f8a..add2bd6c61 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-ov-resend-push-notification.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-ov-resend-push-notification.test.tsx.snap @@ -2,111 +2,111 @@ exports[`authenticator-verification-ov-resend-push-notification renders form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Get a push notification -

    +

    + Get a push notification +

    +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-ov-totp-biometrics-error.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-ov-totp-biometrics-error.test.tsx.snap index f252420180..5754af40e9 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-ov-totp-biometrics-error.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-ov-totp-biometrics-error.test.tsx.snap @@ -2,272 +2,276 @@ exports[`authenticator-verification-ov-totp-biometrics-error should render form with Biometrics error 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -
    -
    -

    - Enter a code -

    +

    + Enter a code +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-phone-sms.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-phone-sms.test.tsx.snap index d9d74f1424..36e9c5025c 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-phone-sms.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-phone-sms.test.tsx.snap @@ -2,255 +2,259 @@ exports[`authenticator-verification-phone-sms should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -
    +
    -

    - Verify with your phone -

    +

    + Verify with your phone +

    +
    -
    -
    -

    - A code was sent to - - ‎+1 XXX-XXX-4601. - - Enter the code below to verify. -

    + A code was sent to + + ‎+1 XXX-XXX-4601. + + Enter the code below to verify. +

    +
    -
    -
    -

    - Carrier messaging charges may apply -

    +

    + Carrier messaging charges may apply +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Verify with something else - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-security-question.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-security-question.test.tsx.snap index 1adc4e0a54..023607b3e8 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-security-question.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-security-question.test.tsx.snap @@ -2,115 +2,115 @@ exports[`authenticator-verification-security-question renders form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Verify with your Security Question -

    +

    + Verify with your Security Question +

    +
    -
    -
    -
    - +
    - + + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-select-authenticator.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-select-authenticator.test.tsx.snap index a87e84f7ad..2941c6213c 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-select-authenticator.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-select-authenticator.test.tsx.snap @@ -2,77 +2,77 @@ exports[`authenticator-verification-select-authenticator renders form 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Verify it's you with a security method -

    +

    + Verify it's you with a security method +

    +
    -
    -
    -

    - Select from the following options -

    +

    + Select from the following options +

    +
    -
    -
    -
      -
    • -
    -
    -

    - Password -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="okta_password_0-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - - -
  • -
  • +
  • -
    -
  • -
    -

    - Security Key or Biometric Authenticator -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="webauthn_1-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - - -
  • -
  • +
  • -
    -
  • -
    -

    - Email -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="okta_email_2-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - - -
  • -
  • +
  • -
    - -
    -

    - Phone -

    -

    - +1 XXX-XXX-5309 -

    - - Select - - +

    - - + +1 XXX-XXX-5309 + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-29" + data-se="phone_number" + > + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="phone_number_3-ctaLabel" + > Select - - + + + + + Select + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Phone -

    -

    - +1 XXX-XXX-5310 -

    - - Select - - +

    - - + +1 XXX-XXX-5310 + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-29" + data-se="phone_number" + > + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="phone_number_4-ctaLabel" + > Select - - + + + + + Select + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Security Question -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="security_question_5-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - Use Okta FastPass -

    -

    - Okta Verify -

    - - Select - - +

    - - + Okta Verify + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-29" + data-se="okta_verify-signed_nonce" + > + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="okta_verify_6-ctaLabel" + > Select - - + + + + + Select + + +

    - - -
  • -
  • -
  • +
  • -
    - -
    -

    - Google Authenticator -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="google_otp_7-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - Atko Custom On-prem -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="onprem_mfa_8-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - RSA SecurID -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="rsa_token_9-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - Duo Security -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="duo_10-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - IDP Authenticator -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="external_idp_11-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - Atko Custom OTP Authenticator -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="custom_otp_12-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - Symantec VIP -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="symantec_vip_13-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    - -
    -

    - YubiKey Authenticator -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="yubikey_token_14-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - -
  • -
  • -
  • +
  • -
    -
    -
    -

    - Get a push notification -

    -

    - Custom Push App -

    - - Select - - +

    - - + Custom Push App + </p> + <div + class="cta-button authenticator-button MuiBox-root emotion-29" + data-se="custom_app" + > + <span + class="button select-factor link-button MuiBox-root emotion-30" + data-se="cta-button-label" + id="custom_app_15-ctaLabel" + > Select - - + + + + + Select + + +

    - - -
  • - - -
    -
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-unlock-success.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-unlock-success.test.tsx.snap index a6fc209145..8e117f4479 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-unlock-success.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-unlock-success.test.tsx.snap @@ -2,224 +2,137 @@ exports[`authenticator-verification-unlock-success should render form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    -
    -
    -
    + + User + + + + -

    - Verify with your password -

    -
    -
    -
    - + tester.test@okta.com +
    +
    +
    -
    - +
    + Account successfully unlocked! Verify your account with a security method to continue. +
    -
    -
    - -
    -
    -
    +
    +
    - Forgot password? - -
    -
    -
    +
    - Back to sign in - +
    + +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-webauthn.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-webauthn.test.tsx.snap index ba942df4d2..bf1a67c785 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-webauthn.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-webauthn.test.tsx.snap @@ -2,135 +2,135 @@ exports[`authenticator-verification-webauthn renders form - webauthn not supported 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Verify with Security Key or Biometric Authenticator -

    +

    + Verify with Security Key or Biometric Authenticator +

    +
    -
    -
    -
    -
    -
    -
    -

    - Are you trying to use a biometric authenticator? -

    +

    + Are you trying to use a biometric authenticator? +

    +
    -
    -
    -

    - Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. -

    +

    + Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. +

    +
    -
    -
    -

    - If available, set up another security method on the device you used to set up your biometric authenticator. -

    +

    + If available, set up another security method on the device you used to set up your biometric authenticator. +

    +
    -
    -
    -

    - Are you trying to use a security key? -

    +

    + Are you trying to use a security key? +

    +
    -
    -
    -

    - If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. -

    +

    + If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. +

    +
    @@ -308,172 +312,172 @@ exports[`authenticator-verification-webauthn renders form - webauthn not support
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; exports[`authenticator-verification-webauthn renders form - webauthn supported 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Verify with Security Key or Biometric Authenticator -

    +

    + Verify with Security Key or Biometric Authenticator +

    +
    -
    -
    -

    - You will be prompted to use a security key or biometric verification (Windows Hello, Touch ID, etc.). Follow the instructions to complete verification. -

    +

    + You will be prompted to use a security key or biometric verification (Windows Hello, Touch ID, etc.). Follow the instructions to complete verification. +

    +
    -
    -
    - + +
    -
    -
    -
    -
    -

    - Are you trying to use a biometric authenticator? -

    +

    + Are you trying to use a biometric authenticator? +

    +
    -
    -
    -

    - Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. -

    +

    + Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. +

    +
    -
    -
    -

    - If available, set up another security method on the device you used to set up your biometric authenticator. -

    +

    + If available, set up another security method on the device you used to set up your biometric authenticator. +

    +
    -
    -
    -

    - Are you trying to use a security key? -

    +

    + Are you trying to use a security key? +

    +
    -
    -
    -

    - If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. -

    +

    + If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. +

    +
    @@ -643,172 +651,172 @@ exports[`authenticator-verification-webauthn renders form - webauthn supported 1
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; exports[`authenticator-verification-webauthn should render form with required user verification in safari browser 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Verify with Security Key or Biometric Authenticator -

    +

    + Verify with Security Key or Biometric Authenticator +

    +
    -
    -
    -

    - You will be prompted to use a security key or biometric verification (Windows Hello, Touch ID, etc.). Follow the instructions to complete verification. -

    +

    + You will be prompted to use a security key or biometric verification (Windows Hello, Touch ID, etc.). Follow the instructions to complete verification. +

    +
    -
    -
    - + +
    -
    -
    -
    -
    -

    - Are you trying to use a biometric authenticator? -

    +

    + Are you trying to use a biometric authenticator? +

    +
    -
    -
    -

    - Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. -

    +

    + Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. +

    +
    -
    -
    -

    - If available, set up another security method on the device you used to set up your biometric authenticator. -

    +

    + If available, set up another security method on the device you used to set up your biometric authenticator. +

    +
    -
    -
    -

    - Are you trying to use a security key? -

    +

    + Are you trying to use a security key? +

    +
    -
    -
    -

    - If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. -

    +

    + If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. +

    +
    @@ -978,37 +990,37 @@ exports[`authenticator-verification-webauthn should render form with required us
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/authenticator-verification-yubikey-otp.test.tsx.snap b/src/v3/test/integration/__snapshots__/authenticator-verification-yubikey-otp.test.tsx.snap index 1711e4e91f..5cc994b0c0 100644 --- a/src/v3/test/integration/__snapshots__/authenticator-verification-yubikey-otp.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/authenticator-verification-yubikey-otp.test.tsx.snap @@ -2,117 +2,117 @@ exports[`authenticator-verification-yubikey-otp renders form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Verify with YubiKey -

    +

    + Verify with YubiKey +

    +
    -
    -
    -

    - Use your YubiKey to insert a verification code. -

    +

    + Use your YubiKey to insert a verification code. +

    +
    -
    -
    -
    - +
    - + + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/byol.test.tsx.snap b/src/v3/test/integration/__snapshots__/byol.test.tsx.snap index 124a395e33..74e580ae02 100644 --- a/src/v3/test/integration/__snapshots__/byol.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/byol.test.tsx.snap @@ -2,125 +2,125 @@ exports[`byol loading custom language should load custom language with "language" option defined, and assets.baseUrl is set to a path containing the language assets 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Set up foo authentication -

    +

    + Set up foo authentication +

    +
    -
    -
    -

    - Enter your phone number to receive a verification code via SMS. -

    +

    + Enter your phone number to receive a verification code via SMS. +

    +
    -
    -
    -
    - -
    - - -
    -
    -
    -
    + +
    + +
    -
    - - South Africa - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - -
    - -

    - +1 -

    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    - -
    -
    - -
    - - - - - - - - -`; - -exports[`byol loading custom language should load custom language with assets.baseUrl and assets.languages set and with navigator.languages containing language 1`] = ` -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - User - - - - - testUser@okta.com - -
    -
    -
    -
    -
    -
    -

    - Set up foo authentication -

    -
    -
    -
    -
    -
    -

    - Enter your phone number to receive a verification code via SMS. -

    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - -
    - -

    +

    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -`; - -exports[`byol loading default language should not load custom language when the language/assets.languages value is not provided while assets.baseUrl is set to a path containing the language assets and navigator.languages containing language 1`] = ` -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - User - - - - - testUser@okta.com - -
    -
    -
    -
    -
    -
    -

    - Set up phone authentication -

    -
    -
    -
    -
    -
    -

    - Enter your phone number to receive a verification code via SMS. -

    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    -
    -
    - -
    - - + Albania + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    -
    -
    -
    - -

    + Phone number + +

    + - +1 -

    -
    - +

    + +1 +

    + + +
    +
    + +
    -
    -
    - -
    -
    - + +
    -
    - + +
    - - + + `; -exports[`byol loading default language should not load custom language with "language" option set when assets.baseUrl value is missing 1`] = ` +exports[`byol loading custom language should load custom language with assets.baseUrl and assets.languages set and with navigator.languages containing language 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Set up phone authentication -

    +

    + Set up foo authentication +

    +
    -
    -
    -

    +

    + Enter your phone number to receive a verification code via SMS. +

    +
    +
    +
    +
    - Enter your phone number to receive a verification code via SMS. -

    + +
    + + +
    +
    -
    -
    -
    -
    -
    +
    - - - - - - - - - Voice call - - + +
    + +

    + +1 +

    +
    + +
    +
    +
    - -
    -
    +
    -
    - -
    - + + + + + + - Western Sahara - - -
    + +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    + +
    + +

    + +1 +

    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + +`; + +exports[`byol loading default language should not load custom language with "language" option set when assets.baseUrl value is missing 1`] = ` +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + User + + + + + testUser@okta.com + +
    +
    +
    +
    +
    +
    +

    + Set up phone authentication +

    +
    +
    +
    +
    +
    +

    + Enter your phone number to receive a verification code via SMS. +

    +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    + +
    - - + + +
    -
    -
    -
    - -

    + Phone number + +

    + - +1 -

    -
    - +

    + +1 +

    + + +
    +
    + +
    -
    -
    - -
    -
    - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/device-code-activate.test.tsx.snap b/src/v3/test/integration/__snapshots__/device-code-activate.test.tsx.snap index 47245adf72..01ecafd76e 100644 --- a/src/v3/test/integration/__snapshots__/device-code-activate.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/device-code-activate.test.tsx.snap @@ -2,40 +2,40 @@ exports[`device-code-activate should render form 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -

    - Activate your device -

    +

    + Activate your device +

    +
    -
    -
    -

    - Follow the instructions on your device to get an activation code -

    +

    + Follow the instructions on your device to get an activation code +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/email-challenge-consent.test.tsx.snap b/src/v3/test/integration/__snapshots__/email-challenge-consent.test.tsx.snap index bccc07e6aa..f9da57e373 100644 --- a/src/v3/test/integration/__snapshots__/email-challenge-consent.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/email-challenge-consent.test.tsx.snap @@ -2,115 +2,115 @@ exports[`email-challenge-consent should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    - + +
    -
    -
    - -
    -
    -
    +
    - CHROME - + + CHROME + +
    -
    -
    - -
    -
    -
    +
    - Okta Dashboard - + + Okta Dashboard + +
    -
    -
    - -
    -
    - +
    +
    - Yes, it's me - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enduser-consent-without-logo.test.tsx.snap b/src/v3/test/integration/__snapshots__/enduser-consent-without-logo.test.tsx.snap index f482a46737..6e5ac214da 100644 --- a/src/v3/test/integration/__snapshots__/enduser-consent-without-logo.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enduser-consent-without-logo.test.tsx.snap @@ -2,120 +2,124 @@ exports[`enduser-consent-without-lgoo should render form 1`] = `
    -
    -
    -
    -
    - -

    - Native client -

    -

    - would like to: -

    -
    +
    +

    + Native client +

    +

    + would like to: +

    +
    +
    +
    +
    + + + + + User + + + + + testUser@okta.com + +
    +
    +
    + - - - User - - - testUser@okta.com -
    -
    - - - - - -
    -
    -
    + +
    `; diff --git a/src/v3/test/integration/__snapshots__/enduser-consent.test.tsx.snap b/src/v3/test/integration/__snapshots__/enduser-consent.test.tsx.snap index c91ce23ba2..5cdb449b0c 100644 --- a/src/v3/test/integration/__snapshots__/enduser-consent.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enduser-consent.test.tsx.snap @@ -2,139 +2,143 @@ exports[`enduser-consent should render form with logo 1`] = `
    -
    -
    -
    +

    +

    +
    + +

    + Native client +

    +

    + would like to: +

    +
    - -

    - Native client -

    -

    - would like to: -

    -
    -
    -
    + + + + + User + + + + + testUser@okta.com + +
    +
    - - - User - - - testUser@okta.com -
    -
    - - - - - -
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enroll-profile-new-additional-fields.test.tsx.snap b/src/v3/test/integration/__snapshots__/enroll-profile-new-additional-fields.test.tsx.snap index 0cf015170f..3afee6d48c 100644 --- a/src/v3/test/integration/__snapshots__/enroll-profile-new-additional-fields.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enroll-profile-new-additional-fields.test.tsx.snap @@ -2,3599 +2,3607 @@ exports[`enroll-profile-new-additional-fields fails client side validation with empty required fields 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    -
    -

    - Sign up -

    +

    + Sign up +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    - + First name + + +
    + +
    +
    + +
    +
    +
    +
    - + +
    + +
    +
    + +
    +
    +
    - + Email + + +
    + +
    +
    + +
    -
    -
    - + Country + + +
    + + +
    +
    + +
    +
    +
    +
    - + +
    + +
    +
    + +
    +
    +
    - + Time zone + + +
    + + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    + Already have an account? +

    +
    +
    +
    +
    + +
    + + + + + + +`; + +exports[`enroll-profile-new-additional-fields should render form 1`] = ` +
    +
    +
    +
    +
    +
    + +
    +
    -
    - +

    + Sign up +

    +
    +
    -
    -
    - + First name + + +
    + +
    +
    +
    +
    - -
    - - +
    +
    +
    - + Email + + +
    + +
    -
    -
    - -
    - -
    - + Country + + +
    + + +
    -
    -
    -
    - -
    - - -
    -
    - +
    -
    -
    - -
    -
    -
    -
    -
    -

    - Already have an account? -

    + Time zone + + +
    + + +
    -
    -
    - -
    -
    -
    -
    - - -`; - -exports[`enroll-profile-new-additional-fields should render form 1`] = ` -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -

    - Sign up -

    -
    -
    -
    -

    - Fields are required unless marked optional. -

    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    +
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    - - +

    + Already have an account? +

    +
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -

    - Already have an account? -

    + Sign In +
    -
    - -
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enroll-profile-new.test.tsx.snap b/src/v3/test/integration/__snapshots__/enroll-profile-new.test.tsx.snap index 2ddc319c4d..568d9afcf6 100644 --- a/src/v3/test/integration/__snapshots__/enroll-profile-new.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enroll-profile-new.test.tsx.snap @@ -2,40 +2,40 @@ exports[`enroll-profile-new should render form 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Sign up -

    +

    + Sign up +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    -
    -
    -
    + +
    +
    +
    +
    -

    - Already have an account? -

    +

    + Already have an account? +

    +
    -
    -
    - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enroll-profile-registration-callbacks.test.tsx.snap b/src/v3/test/integration/__snapshots__/enroll-profile-registration-callbacks.test.tsx.snap index dd66f9ab75..339f8b6d66 100644 --- a/src/v3/test/integration/__snapshots__/enroll-profile-registration-callbacks.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enroll-profile-registration-callbacks.test.tsx.snap @@ -2,40 +2,40 @@ exports[`enroll-profile-with-password should add new field to view and remove it from the payload before submission 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -

    - Sign up -

    +

    + Sign up +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    -
    -
    -
    + +
    +
    +
    +
    -

    - Already have an account? -

    +

    + Already have an account? +

    +
    -
    -
    - + +
    - - + + - - + + `; exports[`enroll-profile-with-password should show custom error message and prevent submission when failure is triggered in preSubmit callback 1`] = `
    -
    -
    -
    -
    -
    +
    +
    + -
    -
    -
    -
    -
    +
    - Sign up - + This is my custom global message +
    -

    - Fields are required unless marked optional. -

    +

    + Sign up +

    +
    -
    -
    - -
    - -
    -
    -
    -
    - + +
    + +
    +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    -
    -
    -
    -

    - Already have an account? -

    + Email + + +
    + +
    +
    +
    +
    +
    +
    +
    +

    + Already have an account? +

    +
    +
    +
    + +
    +
    -
    - + +
    - - + + `; exports[`enroll-profile-with-password should show custom field level error message and custom global message on page load 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    -
    -
    -
    -
    +
    - Sign up - + This is my custom global message +
    -

    - Fields are required unless marked optional. -

    +

    + Sign up +

    +
    -
    -
    -
    - -
    -
    -
    -
    -
    - + +
    + +
    +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    -
    -
    -
    -

    - Already have an account? -

    + Email + + +
    + +
    +
    +
    +
    +
    +
    +
    +

    + Already have an account? +

    +
    +
    +
    + +
    +
    -
    - + +
    - - + + `; exports[`enroll-profile-with-password should show generic error message and prevent updated view rendering when failure is triggered in postSubmit callback 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    -
    -

    - Sign up -

    +

    + Sign up +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    -
    -
    -
    + +
    +
    +
    +
    -

    - Already have an account? -

    +

    + Already have an account? +

    +
    -
    -
    - + +
    - - + + - - + + `; exports[`enroll-profile-with-password should show validation error messages on all fields when submitted without completing required fields 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    -
    -
    -
    -
    +
    - Sign up - + We found some errors. Please review the form and make corrections. +
    -

    - Fields are required unless marked optional. -

    +

    + Sign up +

    +
    -
    -
    -
    - -
    -
    -
    -
    - -
    - -
    - + Last name + + +
    + +
    +
    + +
    -
    -
    - -
    - -
    - + First name + + +
    + +
    +
    + +
    -
    -
    - -
    - -
    - + Email + + +
    + +
    +
    + +
    -
    -
    - -
    -
    -
    -
    -
    -

    - Already have an account? -

    + Street Address + + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    + Already have an account? +

    +
    +
    +
    + +
    +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enroll-profile-update-optional-fields.test.tsx.snap b/src/v3/test/integration/__snapshots__/enroll-profile-update-optional-fields.test.tsx.snap index d0ffb2392a..3f3af05c3b 100644 --- a/src/v3/test/integration/__snapshots__/enroll-profile-update-optional-fields.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enroll-profile-update-optional-fields.test.tsx.snap @@ -2,267 +2,271 @@ exports[`enroll-profile-update-optional-fields should render form with one required field 1`] = `
    -
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - -
    +

    -
    -
    - -
    + + + User + + + + + testUser@okta.com +
    +
    +
    -

    - Fields are required unless marked optional. -

    +

    + Additional Profile information +

    +
    -
    -
    - -
    -
    -
    -
    -
    - -
    -

    - Use a second email to - - recover your account - - in case you become locked out. This email must be verified after setup. -

    + Some custom attribute +

    + Optional +

    + +
    + +
    +
    -
    -
    - +
    +
    +
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Skip Profile - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enroll-profile-update-required-field.test.tsx.snap b/src/v3/test/integration/__snapshots__/enroll-profile-update-required-field.test.tsx.snap index 1abf24b7f3..72e057c083 100644 --- a/src/v3/test/integration/__snapshots__/enroll-profile-update-required-field.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enroll-profile-update-required-field.test.tsx.snap @@ -2,125 +2,109 @@ exports[`enroll-profile-update-required-field fails client side validation with empty required fields 1`] = `
    -
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - -
    +

    -
    -
    +
    + We found some errors. Please review the form and make corrections. +
    -

    - Fields are required unless marked optional. -

    +

    + Additional Profile information +

    +
    -
    -
    - +
    +
    +
    - + +
    + +
    -
    -
    - -
    -
    -

    - Use a second email to - - recover your account - - in case you become locked out. This email must be verified after setup. -

    -
    -
    -
    - -
    -
    - + Some custom attribute 2 + + +
    + +
    +
    + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; exports[`enroll-profile-update-required-field should render form with one required field 1`] = `
    -
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - -
    +

    -
    -
    - -
    + + + User + + + + + testUser@okta.com +
    +
    +
    -

    - Fields are required unless marked optional. -

    +

    + Additional Profile information +

    +
    -
    -
    - +
    +
    +
    - + +
    + +
    -
    -
    - -
    -
    -

    - Use a second email to - - recover your account - - in case you become locked out. This email must be verified after setup. -

    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enroll-profile-update.test.tsx.snap b/src/v3/test/integration/__snapshots__/enroll-profile-update.test.tsx.snap index 21f8b509fc..62dc2ed4b4 100644 --- a/src/v3/test/integration/__snapshots__/enroll-profile-update.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enroll-profile-update.test.tsx.snap @@ -2,125 +2,109 @@ exports[`enroll-profile-update fails client side validation with empty required fields 1`] = `
    -
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - -
    +

    -
    -
    +
    + We found some errors. Please review the form and make corrections. +
    -

    - Fields are required unless marked optional. -

    +

    + Sign in +

    +
    -
    -
    -
    - -
    -
    -
    -
    -
    - + +
    + +
    +
    + +
    +
    +
    - + Custom attribute + + +
    + +
    +
    + +
    -
    -
    - + +
    -
    - + +
    - - + + `; exports[`enroll-profile-update should render form 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Sign in -

    +

    + Sign in +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/enroll-profile-with-password.test.tsx.snap b/src/v3/test/integration/__snapshots__/enroll-profile-with-password.test.tsx.snap index abcb32afa5..6150f0e8ce 100644 --- a/src/v3/test/integration/__snapshots__/enroll-profile-with-password.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/enroll-profile-with-password.test.tsx.snap @@ -2,1200 +2,1208 @@ exports[`enroll-profile-with-password should display field level error when password does not fulfill requirements 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    -
    -

    - Sign up -

    +

    + Sign up +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • -
    -
    +
    - A lowercase letter -

    +

    + A lowercase letter +

    +
  • -
    - -
  • -
    +
  • -
    -
    +
    - An uppercase letter -

    +

    + An uppercase letter +

    +
  • - - -
  • -
    +
  • -
    -
    +
    - A number -

    +

    + A number +

    +
    - -
  • -
  • -
    +
  • -
    -
    +
    - No parts of your username -

    +

    + No parts of your username +

    +
    - -
  • - - - -
    + + + +
    -
    - + +
    + +
    - -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    - + + +
    -
    -
    - -

    +
  • + At least 8 characters +
  • +
  • + An uppercase letter +
  • + +
    +

    +
    - -
    - -
    -
    -
    -
    -
    + +
    +
    +
    +
    -

    - Already have an account? -

    +

    + Already have an account? +

    +
    - -
    - + +
    - - + + - - + + `; exports[`enroll-profile-with-password should display field level error when password field is required but is not filled 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -
    -
    -

    - Sign up -

    +

    + Sign up +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • -
    -
    +
    - A lowercase letter -

    +

    + A lowercase letter +

    +
  • -
    - -
  • -
    +
  • -
    -
    +
    - An uppercase letter -

    +

    + An uppercase letter +

    +
  • - - -
  • -
    +
  • -
    -
    +
    - A number -

    +

    + A number +

    +
    - -
  • -
  • -
    +
  • -
    -
    +
    - No parts of your username -

    +

    + No parts of your username +

    +
    - -
  • - - - -
    + + + +
    -
    - + +
    + +
    - -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    - + + +
    -
    -
    - + +
    - -
    - -
    -
    -
    -
    -
    + +
    +
    +
    +
    -

    - Already have an account? -

    +

    + Already have an account? +

    +
    - -
    - + +
    - - + + - - + + `; exports[`enroll-profile-with-password should render form 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Sign up -

    +

    + Sign up +

    +
    -
    -
    -

    - Fields are required unless marked optional. -

    +

    + Fields are required unless marked optional. +

    +
    -
    -
    -
    -
    - Password requirements: -
    -
      -
    • + Password requirements: + +
        -
        -
        -
        +
        - At least 8 characters -

        +

        + At least 8 characters +

        +
        -
    - -
  • -
    +
  • -
    -
    +
    - A lowercase letter -

    +

    + A lowercase letter +

    +
  • -
    - -
  • -
    +
  • -
    -
    +
    - An uppercase letter -

    +

    + An uppercase letter +

    +
  • - - -
  • -
    +
  • -
    -
    +
    - A number -

    +

    + A number +

    +
    - -
  • -
  • -
    +
  • -
    -
    +
    - No parts of your username -

    +

    + No parts of your username +

    +
    - -
  • - - - -
    + + + +
    -
    - + +
    + +
    - -
    -
    - + +
    + +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    - + + +
    - -
    - -
    -
    -
    -
    -
    + +
    +
    +
    +
    -

    - Already have an account? -

    +

    + Already have an account? +

    +
    - -
    - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/error-400-unauthorized-client.test.tsx.snap b/src/v3/test/integration/__snapshots__/error-400-unauthorized-client.test.tsx.snap index 85f5d37df7..48f00444ed 100644 --- a/src/v3/test/integration/__snapshots__/error-400-unauthorized-client.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/error-400-unauthorized-client.test.tsx.snap @@ -2,86 +2,90 @@ exports[`error-400-unauthorized-client should render form 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/error-account-creation.test.tsx.snap b/src/v3/test/integration/__snapshots__/error-account-creation.test.tsx.snap index e2872a3c19..73aa529d22 100644 --- a/src/v3/test/integration/__snapshots__/error-account-creation.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/error-account-creation.test.tsx.snap @@ -2,98 +2,102 @@ exports[`error-account-creation should render form 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    -
    - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/error-authenticator-enrollment-not-allowed.test.tsx.snap b/src/v3/test/integration/__snapshots__/error-authenticator-enrollment-not-allowed.test.tsx.snap index c374604d8a..e7f4746c39 100644 --- a/src/v3/test/integration/__snapshots__/error-authenticator-enrollment-not-allowed.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/error-authenticator-enrollment-not-allowed.test.tsx.snap @@ -2,135 +2,139 @@ exports[`error-authenticator-enrollment-not-allowed should render form 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -
    -
    - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/error-feature-not-enabled.test.tsx.snap b/src/v3/test/integration/__snapshots__/error-feature-not-enabled.test.tsx.snap index 48dcdbd248..7e1b0805b3 100644 --- a/src/v3/test/integration/__snapshots__/error-feature-not-enabled.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/error-feature-not-enabled.test.tsx.snap @@ -2,86 +2,90 @@ exports[`error-feature-not-enabled should render form 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/error-recovery-token-invalid.test.tsx.snap b/src/v3/test/integration/__snapshots__/error-recovery-token-invalid.test.tsx.snap index 74f788ce64..4b035ce7b5 100644 --- a/src/v3/test/integration/__snapshots__/error-recovery-token-invalid.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/error-recovery-token-invalid.test.tsx.snap @@ -2,86 +2,90 @@ exports[`error-recovery-token-invalid should render form 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/error-session-expired.test.tsx.snap b/src/v3/test/integration/__snapshots__/error-session-expired.test.tsx.snap index 94e2d881e1..0d26921f45 100644 --- a/src/v3/test/integration/__snapshots__/error-session-expired.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/error-session-expired.test.tsx.snap @@ -2,98 +2,102 @@ exports[`error-session-expired should render form 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -
    -
    - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/flow-unlock-account-email-polling-to-mfa-authenticator.test.tsx.snap b/src/v3/test/integration/__snapshots__/flow-unlock-account-email-polling-to-mfa-authenticator.test.tsx.snap index b0b8cc1e96..b6aa304c21 100644 --- a/src/v3/test/integration/__snapshots__/flow-unlock-account-email-polling-to-mfa-authenticator.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/flow-unlock-account-email-polling-to-mfa-authenticator.test.tsx.snap @@ -2,135 +2,135 @@ exports[`flow-unlock-account-email-polling-to-mfa-challenge-authenticator should poll for Magic link email consent and advance to webauthn challenge once consent is provided 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Verify with Security Key or Biometric Authenticator -

    +

    + Verify with Security Key or Biometric Authenticator +

    +
    -
    -
    -
    -
    -
    -
    -

    - Are you trying to use a biometric authenticator? -

    +

    + Are you trying to use a biometric authenticator? +

    +
    -
    -
    -

    - Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. -

    +

    + Biometric authenticators (fingerprint, face recognition, PIN) will only work on the same device on which they were set up. +

    +
    -
    -
    -

    - If available, set up another security method on the device you used to set up your biometric authenticator. -

    +

    + If available, set up another security method on the device you used to set up your biometric authenticator. +

    +
    -
    -
    -

    - Are you trying to use a security key? -

    +

    + Are you trying to use a security key? +

    +
    -
    -
    -

    - If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. -

    +

    + If you have set up a security key, insert it in a USB port when prompted by the browser and tap on the button or gold disk. Security keys can work on multiple devices. +

    +
    @@ -308,37 +312,37 @@ exports[`flow-unlock-account-email-polling-to-mfa-challenge-authenticator should
    - -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/flow-verify-with-piv-as-authenticator.test.tsx.snap b/src/v3/test/integration/__snapshots__/flow-verify-with-piv-as-authenticator.test.tsx.snap index 1e1bad26a2..d3c67c7889 100644 --- a/src/v3/test/integration/__snapshots__/flow-verify-with-piv-as-authenticator.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/flow-verify-with-piv-as-authenticator.test.tsx.snap @@ -2,119 +2,119 @@ exports[`flow-verify-with-piv-as-authenticator should render select authenticator page with PIV as authenticator and clicking it will render PIV verify view 1`] = `
    -
    -
    -
    - - - - - User - - - - - 32011152472674@upn.example.com - + + + + User + + + + + 32011152472674@upn.example.com + +
    -
    -
    -
    -

    - PIV / CAC card -

    +

    + PIV / CAC card +

    +
    -
    -
    -

    - Please insert your PIV / CAC card and select the user certificate. -

    +

    + Please insert your PIV / CAC card and select the user certificate. +

    +
    +
    +
    +
    + +
    -
    -
    -
    -
    - -
    -
    - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/granular-consent-without-logo.test.tsx.snap b/src/v3/test/integration/__snapshots__/granular-consent-without-logo.test.tsx.snap index 7d823d4836..21b5b6e90c 100644 --- a/src/v3/test/integration/__snapshots__/granular-consent-without-logo.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/granular-consent-without-logo.test.tsx.snap @@ -2,462 +2,466 @@ exports[`granular-consent-without-logo should render form 1`] = `
    -
    -
    -
    -
    -
    -

    - Native client -

    - -

    - wants to access -

    -
    - +
    - - - - User - - - - - testUser@okta.com - + Native client + + +

    + wants to access +

    +
    -
    -
    -
    - -
    + + + User + + + + + testUser@okta.com +
    +
    +
    -
    -
    +
    +
    +
    + -
    -
    -
    -
    + View your mobile phone data plan. + +

    + This allows the app to view your mobile phone data plan. +

    + + +
    +
    +
    - - -
    -
    -
    +
    +
    +
    - - -
    -
    -
    +
    +
    +
    - - -
    -
    -
    + This allows the app to view your email address. +

    + + +
    +
    +
    - - -
    -
    -
    +
    +
    +
    - - -
    - + - +
    - Privacy Policy - -
    -
    -
    +
    - Allow Access - -
    -
    - +
    +
    - Cancel - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/granular-consent.test.tsx.snap b/src/v3/test/integration/__snapshots__/granular-consent.test.tsx.snap index 1ca86e8df3..b02a5606d4 100644 --- a/src/v3/test/integration/__snapshots__/granular-consent.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/granular-consent.test.tsx.snap @@ -2,138 +2,142 @@ exports[`granular-consent should render form with logo 1`] = `
    -
    -
    -
    +

    +

    +
    +
    +
    +

    + Native client +

    + +

    + wants to access +

    -

    - Native client -

    - -

    - wants to access -

    + + + + + User + + + + + testUser@okta.com + +
    -
    -
    - - - User - - - testUser@okta.com -
    -
    - - - - - -
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/identify-recovery.test.tsx.snap b/src/v3/test/integration/__snapshots__/identify-recovery.test.tsx.snap index edd57d2946..e82611b9fe 100644 --- a/src/v3/test/integration/__snapshots__/identify-recovery.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/identify-recovery.test.tsx.snap @@ -2,40 +2,40 @@ exports[`identify-recovery renders form 1`] = `
    -
    -
    -
    -
    +

    +

    +
    -
    -

    - Reset your password -

    +

    + Reset your password +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/identify-with-password.test.tsx.snap b/src/v3/test/integration/__snapshots__/identify-with-password.test.tsx.snap index a0eb6031c5..93be96e829 100644 --- a/src/v3/test/integration/__snapshots__/identify-with-password.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/identify-with-password.test.tsx.snap @@ -2,1021 +2,1033 @@ exports[`identify-with-password Client-side field change validation tests fails client side validation with no inputs 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -
    -
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    -
    - + +
    + +
    +
    + +
    +
    +
    - + Password + +
    + +
    + +
    +
    +
    + +
    -
    -
    - -
    - -
    - -
    -
    -
    - -
    + + + Keep me signed in + + +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Sign in - -
    -
    - +
    +
    - Forgot password? - -
    - +
    - Help - -
    -
    -
    -
    -
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    -
    -
    - + +
    -
    - + + - - + + `; exports[`identify-with-password Client-side field change validation tests should attempt to submit page with all required fields empty 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -
    -
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    -
    - + +
    + +
    +
    + +
    +
    +
    -
    - This field cannot be left blank -

    + +
    + +
    +
    +
    + +
    -
    -
    - -
    - -
    - -
    -
    -
    - -
    + + + Keep me signed in + + +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Sign in - -
    -
    - +
    +
    - Forgot password? - -
    - +
    - Help - -
    -
    -
    -
    -
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    -
    -
    - + +
    -
    - + + - - + + `; exports[`identify-with-password Client-side field change validation tests should attempt to submit page with all required fields empty and type in one of the required fields to remove error 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -
    -
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    -
    - -
    -
    -
    + +
    +
    - This field cannot be left blank -

    + +
    -
    -
    -
    - +
    - + + +
    -
    -
    - + +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Sign in - -
    -
    - +
    +
    - Forgot password? - -
    - + -
    -
    -
    - +
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    -
    -
    - + +
    - - + + - - + + `; exports[`identify-with-password renders form with focus 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    + +
    + +
    +
    +
    +
    +
    +
    +
    -
    + + + Keep me signed in + + +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Sign in - -
    -
    - +
    +
    - Forgot password? - -
    - +
    - Help - -
    -
    -
    -
    -
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    -
    -
    - + +
    - - + + - - + + `; exports[`identify-with-password renders form without focus 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Sign In -

    +

    + Sign In +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
    - +
    + +
    + +
    +
    +
    +
    +
    +
    +
    -
    + + + Keep me signed in + + +
    -
    -
    -
    - -
    -
    -
    -
    +
    - Sign in - -
    -
    - +
    +
    - Forgot password? - -
    - +
    - Help - -
    -
    -
    -
    -
    +
    +
    -

    - Don't have an account? -

    +

    + Don't have an account? +

    +
    -
    -
    - + +
    - - + + - - + + `; exports[`identify-with-password renders the loading state first 1`] = `
    -
    -
    -
    +
    - - - - - + + + + +
    -
    - + + `; diff --git a/src/v3/test/integration/__snapshots__/oda-enrollment-android-applink.test.tsx.snap b/src/v3/test/integration/__snapshots__/oda-enrollment-android-applink.test.tsx.snap index 872d212e84..589b009495 100644 --- a/src/v3/test/integration/__snapshots__/oda-enrollment-android-applink.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/oda-enrollment-android-applink.test.tsx.snap @@ -2,795 +2,807 @@ exports[`oda-enrollment-android-applink should render form 1`] = `
    -
    -
    -
    -
    -
    -

    - Additional setup required to use Okta FastPass -

    +

    + Additional setup required to use Okta FastPass +

    +
    -
    -
    -
    - -
    -
    -
    -
    + +
    +
    - Next - + +
    -
    - + +
    - - + + `; exports[`oda-enrollment-android-applink should render view when "No, I don’t have an account" is selected 1`] = `
    -
    -
    -
    -
    -
    -

    - Set up an Okta Verify account -

    +

    + Set up an Okta Verify account +

    +
    -
    -
    -

    - To sign in with Okta FastPass, you’ll need to set up Okta Verify on this device. -

    +

    + To sign in with Okta FastPass, you’ll need to set up Okta Verify on this device. +

    +
    -
    -
    -
      -
    1. -
      -

      - If you don’t have Okta Verify installed, - - download the app. - - - - -

      + + + +

      +
      -
    - -
  • -
    +
  • -

    - Open Okta Verify and follow the steps to add your account. -

    +

    + Open Okta Verify and follow the steps to add your account. +

    +
  • -
    - -
  • -
    +
  • -

    - When prompted, choose Sign In, then enter the sign-in URL: -

    +

    + When prompted, choose Sign In, then enter the sign-in URL: +

    +
    -
  • -
    -

    - - https://idx.okta1.com - -

    + + https://idx.okta1.com + +

    +
    -
    -
    - + +
    -
    - -
  • - Finish setting up your account in Okta Verify, then try signing in again. -
  • - + +
  • + Finish setting up your account in Okta Verify, then try signing in again. +
  • + + - -
    - + +
    - - + + - - + + `; exports[`oda-enrollment-android-applink should render view when "Yes, I already have an account" is selected 1`] = `
    -
    -
    -
    -
    -
    -

    - Additional setup required to use Okta FastPass -

    +

    + Additional setup required to use Okta FastPass +

    +
    -
    -
    -

    - Okta FastPass is a security method that can sign you in without needing your username. -

    +

    + Okta FastPass is a security method that can sign you in without needing your username. +

    +
    -
    -
    -

    - Already have Okta FastPass enabled for your account? -

    -
      -
    • + Already have Okta FastPass enabled for your account? +

      +
        -
        -

        - Make sure your Okta Verify is up-to-date, then try signing in again. -

        +

        + Make sure your Okta Verify is up-to-date, then try signing in again. +

        +
        -
    - -
  • -
    +
  • -

    - If your device has a work profile, make sure you are signing in from the same profile that Okta Verify is installed in. -

    +

    + If your device has a work profile, make sure you are signing in from the same profile that Okta Verify is installed in. +

    +
  • -
    - -
  • -
    +
  • -

    - On certain browsers and applications, Okta FastPass is not supported. -

    +

    + On certain browsers and applications, Okta FastPass is not supported. +

    +
  • -
    - - + + +
    - -
    -

    - Need to set up Okta FastPass for your account? -

    -
      -
    1. -
      +
        +
      1. -

        - On this device, open the Okta Verify app. -

        +

        + On this device, open the Okta Verify app. +

        +
      -
    - -
  • -
    +
  • -

    - On the list of accounts, tap your account for https://idx.okta1.com. -

    +

    + On the list of accounts, tap your account for https://idx.okta1.com. +

    +
  • - - -
  • -
    +
  • -

    - Under the “Okta FastPass” section, tap Setup, then follow the instructions. -

    +

    + Under the “Okta FastPass” section, tap Setup, then follow the instructions. +

    +
    - -
  • -
  • -
    +
  • -

    - After your setup is complete, return here to try signing in again. -

    +

    + After your setup is complete, return here to try signing in again. +

    +
    - -
  • - + + + - -
    - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/oda-enrollment-android-loopback.test.tsx.snap b/src/v3/test/integration/__snapshots__/oda-enrollment-android-loopback.test.tsx.snap index b85e797d5f..f3c7df7438 100644 --- a/src/v3/test/integration/__snapshots__/oda-enrollment-android-loopback.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/oda-enrollment-android-loopback.test.tsx.snap @@ -2,74 +2,74 @@ exports[`oda-enrollment-android-loopback should render form 1`] = `
    -
    -
    -
    -
    -
    -

    - Download Okta Verify -

    +

    + Download Okta Verify +

    +
    -
    -
    -

    - To sign in using Okta Verify, you will need to set up Okta Verify on this device. -

    +

    + To sign in using Okta Verify, you will need to set up Okta Verify on this device. +

    +
    -
    -
    -
      -
    1. -
      -

      - On Google Play, download the Okta Verify app. -

      +

      + On Google Play, download the Okta Verify app. +

      +
      -
    - -
  • -
    +
  • -

    - Open Okta Verify and follow the steps to add your account. -

    +

    + Open Okta Verify and follow the steps to add your account. +

    +
  • -
    - -
  • -
    +
  • -

    - When prompted, choose Sign In, then enter the sign-in URL: -

    +

    + When prompted, choose Sign In, then enter the sign-in URL: +

    +
    -
  • -
    -

    - - https://idx.okta1.com - -

    + + https://idx.okta1.com + +

    +
    -
    -
    - + +
    - - -
  • -
    +
  • -

    - Finish setting up your account in Okta Verify, then try accessing this app again. -

    +

    + Finish setting up your account in Okta Verify, then try accessing this app again. +

    +
    - -
  • - + + + - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/oda-enrollment-ios.test.tsx.snap b/src/v3/test/integration/__snapshots__/oda-enrollment-ios.test.tsx.snap index 256c5ee439..a82f709a21 100644 --- a/src/v3/test/integration/__snapshots__/oda-enrollment-ios.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/oda-enrollment-ios.test.tsx.snap @@ -2,74 +2,74 @@ exports[`oda-enrollment-ios should render form 1`] = `
    -
    -
    -
    -
    -
    -

    - Download Okta Verify -

    +

    + Download Okta Verify +

    +
    -
    -
    -

    - To sign in using Okta Verify, you will need to set up Okta Verify on this device. -

    +

    + To sign in using Okta Verify, you will need to set up Okta Verify on this device. +

    +
    -
    -
    -
      -
    1. -
      -

      - Tap the Copy Link button below. -

      +

      + Tap the Copy Link button below. +

      +
      -
      -
      - + +
    -
    - -
  • -
    +
  • -

    - On this device, open your browser, then paste the copied link into the address bar. -

    +

    + On this device, open your browser, then paste the copied link into the address bar. +

    +
  • -
    - -
  • -
    +
  • -

    - Download the Okta Verify app. -

    +

    + Download the Okta Verify app. +

    +
  • - - -
  • -
    +
  • -

    - Open Okta Verify and follow the steps to add your account. -

    +

    + Open Okta Verify and follow the steps to add your account. +

    +
    - -
  • -
  • -
    +
  • -

    - When prompted, choose Sign In, then enter the sign-in URL: -

    +

    + When prompted, choose Sign In, then enter the sign-in URL: +

    +
    - -
    -

    - - https://idx.okta1.com - -

    + + https://idx.okta1.com + +

    +
    - -
    - + +
    - -
  • -
  • -
    +
  • -

    - Finish setting up your account in Okta Verify, then try accessing this app again. -

    +

    + Finish setting up your account in Okta Verify, then try accessing this app again. +

    +
    - -
  • - + + + - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/okta-verify-email-channel-enrollment.test.tsx.snap b/src/v3/test/integration/__snapshots__/okta-verify-email-channel-enrollment.test.tsx.snap index 17deadfc6d..d910d0a9b9 100644 --- a/src/v3/test/integration/__snapshots__/okta-verify-email-channel-enrollment.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/okta-verify-email-channel-enrollment.test.tsx.snap @@ -2,111 +2,111 @@ exports[`okta-verify-email-channel-enrollment should render email channel form and send correct payload 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester2@test.com - + + + + User + + + + + tester2@test.com + +
    -
    -
    -
    - + +
    -
    -
    -
    - + +
    + +
    -
    -
    -

    - Make sure you can access the email on your mobile device. -

    +

    + Make sure you can access the email on your mobile device. +

    +
    -
    -
    - -
    -
    + +
    - Or - - try a different way - - to set up Okta Verify. + Or + + try a different way + + to set up Okta Verify. +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/okta-verify-enrollment-version-upgrade.test.tsx.snap b/src/v3/test/integration/__snapshots__/okta-verify-enrollment-version-upgrade.test.tsx.snap index 4875c7f7b9..d22ac6fed3 100644 --- a/src/v3/test/integration/__snapshots__/okta-verify-enrollment-version-upgrade.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/okta-verify-enrollment-version-upgrade.test.tsx.snap @@ -2,258 +2,262 @@ exports[`okta-verify-enrollment-version-upgrade should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -
    -
    -

    - Set up Okta Verify -

    +

    + Set up Okta Verify +

    +
    -
    -
    -
      -
    1. - On your mobile device, download the Okta Verify app from the App Store (iPhone and iPad) or Google Play (Android devices). -
    2. -
    3. - Open the app and follow the instructions to add your account -
    4. -
    5. - When prompted, tap Scan a QR code, then scan the QR code below: -
    6. -
    +
  • + On your mobile device, download the Okta Verify app from the App Store (iPhone and iPad) or Google Play (Android devices). +
  • +
  • + Open the app and follow the instructions to add your account +
  • +
  • + When prompted, tap Scan a QR code, then scan the QR code below: +
  • + +
    -
    -
    - QR code +
    + QR code +
    +
    +
    +
    -
    -
    - -
    -
    - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/okta-verify-sms-channel-enrollment.test.tsx.snap b/src/v3/test/integration/__snapshots__/okta-verify-sms-channel-enrollment.test.tsx.snap index 2603dfe846..e3d78b7826 100644 --- a/src/v3/test/integration/__snapshots__/okta-verify-sms-channel-enrollment.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/okta-verify-sms-channel-enrollment.test.tsx.snap @@ -2,111 +2,111 @@ exports[`okta-verify-sms-channel-enrollment should render sms channel form and send correct payload 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester2@test.com - + + + + User + + + + + tester2@test.com + +
    -
    -
    -
    -

    - Set up Okta Verify via SMS -

    +

    + Set up Okta Verify via SMS +

    +
    -
    -
    -
    - - United States - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - -
    - -

    - +1 -

    -
    - -
    -
    -
    -
    -
    -
    -
    -

    - Make sure you can access the text on your mobile device. -

    -
    -
    -
    - -
    -
    -
    - Or - - try a different way - - to set up Okta Verify. -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    - - - - -`; - -exports[`okta-verify-sms-channel-enrollment should render sms channel form without an auto focused element when autoFocus is disabled 1`] = ` -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - User - - - - - tester2@test.com - -
    -
    -
    -
    -
    -
    -

    - Set up Okta Verify via SMS -

    -
    -
    -
    -
    -
    - -
    - -
    +
    +
    +
    + +
    + +

    + +1 +

    +
    + +
    +
    +
    +
    +
    +
    +
    +

    + Make sure you can access the text on your mobile device. +

    +
    +
    +
    + +
    +
    +
    + Or + + try a different way + + to set up Okta Verify. +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +`; + +exports[`okta-verify-sms-channel-enrollment should render sms channel form without an auto focused element when autoFocus is disabled 1`] = ` +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + User + + + + + tester2@test.com + +
    +
    +
    +
    +
    +
    +

    + Set up Okta Verify via SMS +

    +
    +
    +
    +
    +
    + +
    - - + + +
    -
    -
    -
    - -

    - +1 -

    -
    - + +
    + +

    + +1 +

    +
    + +
    -
    -
    -

    - Make sure you can access the text on your mobile device. -

    +

    + Make sure you can access the text on your mobile device. +

    +
    -
    -
    - -
    -
    + +
    - Or - - try a different way - - to set up Okta Verify. + Or + + try a different way + + to set up Okta Verify. +
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/request-activation-email.test.tsx.snap b/src/v3/test/integration/__snapshots__/request-activation-email.test.tsx.snap index 8000d94be0..5c4d6e7e9b 100644 --- a/src/v3/test/integration/__snapshots__/request-activation-email.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/request-activation-email.test.tsx.snap @@ -2,77 +2,77 @@ exports[`request-activation-email renders form 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    - + +
    -
    -
    -
    -
    - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-email-error.test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-email-error.test.tsx.snap index e2bff84911..fe55303c57 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-email-error.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-email-error.test.tsx.snap @@ -2,136 +2,140 @@ exports[`terminal-return-email-error should render form 1`] = `
    -
    -
    -
    -
    -
    -
    -
    - + +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-email.test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-email.test.tsx.snap index 1733c5e050..80d0394ea3 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-email.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-email.test.tsx.snap @@ -2,115 +2,115 @@ exports[`terminal-return-email renders form 1`] = `
    -
    -
    -
    - - - - - User - - - - - testUser@okta.com - + + + + User + + + + + testUser@okta.com + +
    -
    -
    -
    -

    - Success! Return to the original tab or window -

    +

    + Success! Return to the original tab or window +

    +
    -
    -
    -

    - To continue, please return to the original browser tab or window you used to verify. -

    +

    + To continue, please return to the original browser tab or window you used to verify. +

    +
    -
    -
    -

    - Close this window anytime. -

    +

    + Close this window anytime. +

    +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-enrollment.test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-enrollment.test.tsx.snap index ad997400e7..0b169b5bf7 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-enrollment.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-enrollment.test.tsx.snap @@ -2,355 +2,359 @@ exports[`terminal-return-otp-only-full-location-enrollment renders form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    + + + User + + + + + test@okta.com +
    +
    +
    -

    - Enter this code on the sign up page. -

    +

    + Your verification code +

    +
    -
    -
    -

    - 123456 -

    +

    + Enter this code on the sign up page. +

    +
    -
    -
    -

    - Request from: -

    +

    + 123456 +

    +
    -
    -
    - + Request from: +

    +
    +
    - + +
    +
    - FIREFOX on iOS - + + FIREFOX on iOS + +
    -
    -
    - -
    -
    -
    +
    - my 3rd magic link spa - + + my 3rd magic link spa + +
    -
    -
    - -
    -
    -
    +
    - Toronto, Ontario, Canada - + + Toronto, Ontario, Canada + +
    - -
    -

    - If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. -

    +

    + If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. +

    +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-recovery.test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-recovery.test.tsx.snap index 5f18ec225b..d5d8115cbc 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-recovery.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-recovery.test.tsx.snap @@ -2,355 +2,359 @@ exports[`terminal-return-otp-only-full-location-recovery renders form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    + + + User + + + + + test@okta.com +
    +
    +
    -

    - Enter this code on the password reset page. -

    +

    + Your verification code +

    +
    -
    -
    -

    - 123456 -

    +

    + Enter this code on the password reset page. +

    +
    -
    -
    -

    - Request from: -

    +

    + 123456 +

    +
    -
    -
    - + Request from: +

    +
    +
    - + +
    +
    - FIREFOX on Android - + + FIREFOX on Android + +
    -
    -
    - -
    -
    -
    +
    - my 3rd magic link spa - + + my 3rd magic link spa + +
    -
    -
    - -
    -
    -
    +
    - Toronto, Ontario, Canada - + + Toronto, Ontario, Canada + +
    - -
    -

    - If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. -

    +

    + If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. +

    +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-unlock.test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-unlock.test.tsx.snap index 0e7f46f7f2..f77748fac4 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-unlock.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location-unlock.test.tsx.snap @@ -2,355 +2,359 @@ exports[`terminal-return-otp-only-full-location-unlock renders form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    + + + User + + + + + test@okta.com +
    +
    +
    -

    - Enter this code on the account unlock page. -

    +

    + Your verification code +

    +
    -
    -
    -

    - 123456 -

    +

    + Enter this code on the account unlock page. +

    +
    -
    -
    -

    - Request from: -

    +

    + 123456 +

    +
    -
    -
    - + Request from: +

    +
    +
    - + +
    +
    - FIREFOX on iOS - + + FIREFOX on iOS + +
    -
    -
    - -
    -
    -
    +
    - my 3rd magic link spa - + + my 3rd magic link spa + +
    -
    -
    - -
    -
    -
    +
    - Toronto, Ontario, Canada - + + Toronto, Ontario, Canada + +
    - -
    -

    - If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. -

    +

    + If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. +

    +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location.test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location.test.tsx.snap index 53d088d2d2..65e3da4aac 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-full-location.test.tsx.snap @@ -2,366 +2,370 @@ exports[`terminal-return-otp-only-full-location renders form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    + + + User + + + + + test@okta.com +
    +
    +
    -

    - Enter this code on the sign-in page. -

    +

    + Your verification code +

    +
    -
    -
    -

    - 123456 -

    +

    + Enter this code on the sign-in page. +

    +
    -
    -
    -

    - Request from: -

    +

    + 123456 +

    +
    -
    -
    - + Request from: +

    +
    +
    - + +
    +
    - FIREFOX on Mac OS X - + + FIREFOX on Mac OS X + +
    -
    -
    - -
    -
    -
    +
    - my 3rd magic link spa - + + my 3rd magic link spa + +
    -
    -
    - -
    -
    -
    +
    - Toronto, Ontario, Canada - + + Toronto, Ontario, Canada + +
    - -
    -

    - If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. -

    +

    + If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. +

    +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-no-location.test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-no-location.test.tsx.snap index f519b56b63..6c2f14c899 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-no-location.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-no-location.test.tsx.snap @@ -2,317 +2,321 @@ exports[`terminal-return-otp-only-no-location renders form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    + + + User + + + + + test@okta.com +
    +
    +
    -

    - Enter this code on the sign-in page. -

    +

    + Your verification code +

    +
    -
    -
    -

    - 123456 -

    +

    + Enter this code on the sign-in page. +

    +
    -
    -
    -

    - Request from: -

    +

    + 123456 +

    +
    -
    -
    - + Request from: +

    +
    +
    - - FIREFOX on Mac OS X - + +
    +
    + + FIREFOX on Mac OS X + +
    -
    -
    - -
    -
    -
    +
    - my 3rd magic link spa - + + my 3rd magic link spa + +
    -
    -
    -

    - If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. -

    +

    + If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. +

    +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-partial-location..test.tsx.snap b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-partial-location..test.tsx.snap index b27be91125..c772cbaae9 100644 --- a/src/v3/test/integration/__snapshots__/terminal-return-otp-only-partial-location..test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/terminal-return-otp-only-partial-location..test.tsx.snap @@ -2,366 +2,370 @@ exports[`terminal-return-otp-only-partial-location renders form 1`] = `
    -
    -
    -
    -
    +

    -
    -
    - -
    + + + User + + + + + test@okta.com +
    +
    +
    -

    - Enter this code on the sign-in page. -

    +

    + Your verification code +

    +
    -
    -
    -

    - 123456 -

    +

    + Enter this code on the sign-in page. +

    +
    -
    -
    -

    - Request from: -

    +

    + 123456 +

    +
    -
    -
    - + Request from: +

    +
    +
    - + +
    +
    - FIREFOX on Mac OS X - + + FIREFOX on Mac OS X + +
    -
    -
    - -
    -
    -
    +
    - my 3rd magic link spa - + + my 3rd magic link spa + +
    -
    -
    - -
    -
    -
    +
    - Toronto, Canada - + + Toronto, Canada + +
    - -
    -

    - If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. -

    +

    + If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. +

    +
    - - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/trigger-email-verify-callback.test.tsx.snap b/src/v3/test/integration/__snapshots__/trigger-email-verify-callback.test.tsx.snap index 9a9658e29b..c74c6c0287 100644 --- a/src/v3/test/integration/__snapshots__/trigger-email-verify-callback.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/trigger-email-verify-callback.test.tsx.snap @@ -2,78 +2,78 @@ exports[`triggerEmailVerifyCallback with otp flow should create proxy server response and render terminal state when interactionHandle is absent 1`] = `
    -
    -
    -
    -
    -
    -

    - Your verification code -

    +

    + Your verification code +

    +
    -
    -
    -

    - Enter the OTP in your original authentication location. -

    +

    + Enter the OTP in your original authentication location. +

    +
    -
    -
    -

    +
    +

    +

    -
    -
    -

    - If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. -

    +

    + If you didn’t request this code, you can ignore this message. Your account is safe and can only be accessed with this code. +

    +
    -
    - + +
    - - + + `; diff --git a/src/v3/test/integration/__snapshots__/unlock-account-success.test.tsx.snap b/src/v3/test/integration/__snapshots__/unlock-account-success.test.tsx.snap index ae752b801e..3986791b47 100644 --- a/src/v3/test/integration/__snapshots__/unlock-account-success.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/unlock-account-success.test.tsx.snap @@ -2,77 +2,77 @@ exports[`unlock-account-success renders form 1`] = `
    -
    -
    -
    +

    +

    +
    - - - - - User - - - - - tester@okta1.com - + + + + User + + + + + tester@okta1.com + +
    -
    -
    -
    -

    - Account successfully unlocked! -

    +

    + Account successfully unlocked! +

    +
    -
    -
    -

    - You can log in using your existing username and password. -

    +

    + You can log in using your existing username and password. +

    +
    -
    -
    - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/user-unlock-account.test.tsx.snap b/src/v3/test/integration/__snapshots__/user-unlock-account.test.tsx.snap index 34c819371d..2f9a1aa986 100644 --- a/src/v3/test/integration/__snapshots__/user-unlock-account.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/user-unlock-account.test.tsx.snap @@ -2,40 +2,40 @@ exports[`user-unlock-account renders form 1`] = `
    -
    -
    -
    -
    -
    +
    +
    +
    -

    - Unlock account? -

    +

    + Unlock account? +

    +
    -
    -
    -
    - + +
    + +
    -
    -
    -
      -
    • -
    -
    -

    - Email -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-27" + data-se="cta-button-label" + id="okta_email_0-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - - -
  • -
  • +
  • -
    -
  • -
    -

    - Phone -

    - - Select - - +
    - - + <span + class="button select-factor link-button MuiBox-root emotion-27" + data-se="cta-button-label" + id="phone_number_1-ctaLabel" + > Select - - + + + + + Select + + +
    -
    - - - -
    -
    -
    +
    - Back to sign in - + +
    -
    - + + - - + + `; diff --git a/src/v3/test/integration/__snapshots__/webauthn-enroll.test.tsx.snap b/src/v3/test/integration/__snapshots__/webauthn-enroll.test.tsx.snap index 20da6ff8bc..b823a64982 100644 --- a/src/v3/test/integration/__snapshots__/webauthn-enroll.test.tsx.snap +++ b/src/v3/test/integration/__snapshots__/webauthn-enroll.test.tsx.snap @@ -2,135 +2,135 @@ exports[`webauthn-enroll should render form 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester5@test.com - + + + + User + + + + + tester5@test.com + +
    -
    -
    -
    -

    - Set up security key or biometric authenticator -

    +

    + Set up security key or biometric authenticator +

    +
    -
    -
    -

    - You will be prompted to register a security key or biometric authenticator (Windows Hello, Touch ID, Face ID, etc.). Follow the instructions to complete set up. -

    +

    + You will be prompted to register a security key or biometric authenticator (Windows Hello, Touch ID, Face ID, etc.). Follow the instructions to complete set up. +

    +
    -
    -
    +
    + +
    +
    +
    -
    -
    - -
    -
    - + +
    -
    - + + - - + + `; exports[`webauthn-enroll should render form when Credentials API is not available 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester5@test.com - + + + + User + + + + + tester5@test.com + +
    -
    -
    -
    -

    - Set up security key or biometric authenticator -

    +

    + Set up security key or biometric authenticator +

    +
    -
    -
    -
    -
    - -
    -
    - +
    +
    - Back to sign in - + +
    -
    - + + - - + + `; exports[`webauthn-enroll should render form with user verification and edge browser callouts 1`] = `
    -
    -
    -
    - - - - - User - - - - - tester5@test.com - + + + + User + + + + + tester5@test.com + +
    -
    -
    -
    -

    - Set up security key or biometric authenticator -

    +

    + Set up security key or biometric authenticator +

    +
    -
    -
    -

    - You will be prompted to register a security key or biometric authenticator (Windows Hello, Touch ID, Face ID, etc.). Follow the instructions to complete set up. -

    +

    + You will be prompted to register a security key or biometric authenticator (Windows Hello, Touch ID, Face ID, etc.). Follow the instructions to complete set up. +

    +
    -
    -
    -

    - Note: If you are enrolling a security key and Windows Hello or PIN is enabled, you will need to select 'Cancel' in the prompt before continuing. -

    +

    + Note: If you are enrolling a security key and Windows Hello or PIN is enabled, you will need to select 'Cancel' in the prompt before continuing. +

    +
    -
    -
    +
    + +
    +
    +
    -
    -
    - -
    -
    - + +
    - - + + - - + + `;