diff --git a/CHANGELOG.md b/CHANGELOG.md index f4265ed75f..c16488a087 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,8 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/ - `styleOptions.bubbleImageHeight` is being deprecated in favor of `styleOptions.bubbleImageMaxHeight` and `styleOptions.bubbleImageMinHeight`. The option will be removed on or after 2026-07-05 - `styleOptions.bubbleMaxWidth`/`bubbleMinWidth` is being deprecated in favor of `styleOptions.bubbleAttachmentMaxWidth`/`bubbleAttachmentMinWidth` and `styleOptions.bubbleMessageMaxWidth`/`bubbleMessageMinWidth`. The option will be removed on or after 2026-10-08 +- Moved to `micromark` for rendering Markdown, instead of `markdown-it` + - Please refer to PR [#5330](https://github.com/microsoft/BotFramework-WebChat/pull/5330) for details ### Added @@ -74,6 +76,7 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/ - Improved message bubble layout in Fluent theme to allow growth beyond 450px up to 75% of container width, in PR [#5324](https://github.com/microsoft/BotFramework-WebChat/pull/5324), by [@OEvgeny](https://github.com/OEvgeny) - Improved drop zone behavior and styling in Fluent theme, in PR [#5328](https://github.com/microsoft/BotFramework-WebChat/pull/5328), by [@OEvgeny](https://github.com/OEvgeny) - Excluded side effects from module entry points to prevent global scope modifications, in PR [#5329](https://github.com/microsoft/BotFramework-WebChat/pull/5329), by [@OEvgeny](https://github.com/OEvgeny) +- Moved to `micromark` for rendering Markdown, instead of `markdown-it`, in PR [#5330](https://github.com/microsoft/BotFramework-WebChat/pull/5330), by [@compulim](https://github.com/compulim) ### Fixed diff --git a/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-container-styles-1-snap.png b/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-container-styles-1-snap.png index 7ebcceb2f9..ad0cd8d01b 100644 Binary files a/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-container-styles-1-snap.png and b/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-container-styles-1-snap.png differ diff --git a/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-textblock-styles-1-snap.png b/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-textblock-styles-1-snap.png index 6d80f80a86..f453a44550 100644 Binary files a/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-textblock-styles-1-snap.png and b/__tests__/__image_snapshots__/chrome-docker/adaptive-cards-js-textblock-styles-1-snap.png differ diff --git a/__tests__/__image_snapshots__/chrome-docker/username-js-send-username-in-activity-1-snap.png b/__tests__/__image_snapshots__/chrome-docker/username-js-send-username-in-activity-1-snap.png index 77ddc4a971..1a5b0c187c 100644 Binary files a/__tests__/__image_snapshots__/chrome-docker/username-js-send-username-in-activity-1-snap.png and b/__tests__/__image_snapshots__/chrome-docker/username-js-send-username-in-activity-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-1-snap.png b/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-1-snap.png index 4e45e7115d..077d0bb2f2 100644 Binary files a/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-1-snap.png and b/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-2-snap.png b/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-2-snap.png index 5c8ba44cdd..4dedd0fd11 100644 Binary files a/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-2-snap.png and b/__tests__/__image_snapshots__/html/activity-grouping-legacy-activity-status-middleware-js-activity-grouping-should-not-break-legacy-activity-status-middleware-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/adaptive-cards-tap-action-js-adaptive-cards-with-tap-action-prop-should-react-to-click-enter-and-spacebar-1-snap.png b/__tests__/__image_snapshots__/html/adaptive-cards-tap-action-js-adaptive-cards-with-tap-action-prop-should-react-to-click-enter-and-spacebar-1-snap.png index 892be87412..b7a21c047c 100644 Binary files a/__tests__/__image_snapshots__/html/adaptive-cards-tap-action-js-adaptive-cards-with-tap-action-prop-should-react-to-click-enter-and-spacebar-1-snap.png and b/__tests__/__image_snapshots__/html/adaptive-cards-tap-action-js-adaptive-cards-with-tap-action-prop-should-react-to-click-enter-and-spacebar-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/default-adaptive-cards-js-markdown-render-html-when-unset-should-render-sanitized-html-in-adaptive-cards-1-snap.png b/__tests__/__image_snapshots__/html/default-adaptive-cards-js-markdown-render-html-when-unset-should-render-sanitized-html-in-adaptive-cards-1-snap.png index 5f7deee74b..d6b384b57f 100644 Binary files a/__tests__/__image_snapshots__/html/default-adaptive-cards-js-markdown-render-html-when-unset-should-render-sanitized-html-in-adaptive-cards-1-snap.png and b/__tests__/__image_snapshots__/html/default-adaptive-cards-js-markdown-render-html-when-unset-should-render-sanitized-html-in-adaptive-cards-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/default-citation-modal-js-markdown-render-html-when-unset-should-render-sanitized-html-in-citation-modal-1-snap.png b/__tests__/__image_snapshots__/html/default-citation-modal-js-markdown-render-html-when-unset-should-render-sanitized-html-in-citation-modal-1-snap.png index 480393d79c..da17ca3f70 100644 Binary files a/__tests__/__image_snapshots__/html/default-citation-modal-js-markdown-render-html-when-unset-should-render-sanitized-html-in-citation-modal-1-snap.png and b/__tests__/__image_snapshots__/html/default-citation-modal-js-markdown-render-html-when-unset-should-render-sanitized-html-in-citation-modal-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/default-message-activity-js-markdown-render-html-when-unset-should-render-sanitized-html-in-message-activity-1-snap.png b/__tests__/__image_snapshots__/html/default-message-activity-js-markdown-render-html-when-unset-should-render-sanitized-html-in-message-activity-1-snap.png index cc28ba2df9..04d15e4851 100644 Binary files a/__tests__/__image_snapshots__/html/default-message-activity-js-markdown-render-html-when-unset-should-render-sanitized-html-in-message-activity-1-snap.png and b/__tests__/__image_snapshots__/html/default-message-activity-js-markdown-render-html-when-unset-should-render-sanitized-html-in-message-activity-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/false-adaptive-cards-js-markdown-render-html-when-set-to-false-should-not-render-html-in-adaptive-cards-1-snap.png b/__tests__/__image_snapshots__/html/false-adaptive-cards-js-markdown-render-html-when-set-to-false-should-not-render-html-in-adaptive-cards-1-snap.png index 04db333b8b..88d9503ef0 100644 Binary files a/__tests__/__image_snapshots__/html/false-adaptive-cards-js-markdown-render-html-when-set-to-false-should-not-render-html-in-adaptive-cards-1-snap.png and b/__tests__/__image_snapshots__/html/false-adaptive-cards-js-markdown-render-html-when-set-to-false-should-not-render-html-in-adaptive-cards-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/false-citation-modal-js-markdown-render-html-when-set-to-false-should-not-render-html-in-citation-modal-1-snap.png b/__tests__/__image_snapshots__/html/false-citation-modal-js-markdown-render-html-when-set-to-false-should-not-render-html-in-citation-modal-1-snap.png index 26fb25b06e..17cd4607af 100644 Binary files a/__tests__/__image_snapshots__/html/false-citation-modal-js-markdown-render-html-when-set-to-false-should-not-render-html-in-citation-modal-1-snap.png and b/__tests__/__image_snapshots__/html/false-citation-modal-js-markdown-render-html-when-set-to-false-should-not-render-html-in-citation-modal-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/false-message-activity-js-markdown-render-html-when-set-to-false-should-not-render-html-in-message-activity-1-snap.png b/__tests__/__image_snapshots__/html/false-message-activity-js-markdown-render-html-when-set-to-false-should-not-render-html-in-message-activity-1-snap.png index 776a94cf1e..da86acca07 100644 Binary files a/__tests__/__image_snapshots__/html/false-message-activity-js-markdown-render-html-when-set-to-false-should-not-render-html-in-message-activity-1-snap.png and b/__tests__/__image_snapshots__/html/false-message-activity-js-markdown-render-html-when-set-to-false-should-not-render-html-in-message-activity-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/markdown-attributes-curly-brackets-js-markdown-should-process-valid-aria-label-attributes-set-through-curly-brackets-1-snap.png b/__tests__/__image_snapshots__/html/markdown-attributes-curly-brackets-js-markdown-should-process-valid-aria-label-attributes-set-through-curly-brackets-1-snap.png deleted file mode 100644 index 6d540dd9b5..0000000000 Binary files a/__tests__/__image_snapshots__/html/markdown-attributes-curly-brackets-js-markdown-should-process-valid-aria-label-attributes-set-through-curly-brackets-1-snap.png and /dev/null differ diff --git a/__tests__/__image_snapshots__/html/markdown-no-java-script-scheme-js-markdown-should-not-render-url-with-javascript-scheme-1-snap.png b/__tests__/__image_snapshots__/html/markdown-no-java-script-scheme-js-markdown-should-not-render-url-with-javascript-scheme-1-snap.png index 18a4bef58c..673c3f4cb5 100644 Binary files a/__tests__/__image_snapshots__/html/markdown-no-java-script-scheme-js-markdown-should-not-render-url-with-javascript-scheme-1-snap.png and b/__tests__/__image_snapshots__/html/markdown-no-java-script-scheme-js-markdown-should-not-render-url-with-javascript-scheme-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/reference-js-link-definition-should-reference-sample-1-snap.png b/__tests__/__image_snapshots__/html/reference-js-link-definition-should-reference-sample-1-snap.png index f1a5d33bac..3b86fd82cd 100644 Binary files a/__tests__/__image_snapshots__/html/reference-js-link-definition-should-reference-sample-1-snap.png and b/__tests__/__image_snapshots__/html/reference-js-link-definition-should-reference-sample-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/scroll-to-end-button-tab-order-js-scroll-to-end-button-should-have-correct-tab-order-1-snap.png b/__tests__/__image_snapshots__/html/scroll-to-end-button-tab-order-js-scroll-to-end-button-should-have-correct-tab-order-1-snap.png index 1287c59355..38487c3951 100644 Binary files a/__tests__/__image_snapshots__/html/scroll-to-end-button-tab-order-js-scroll-to-end-button-should-have-correct-tab-order-1-snap.png and b/__tests__/__image_snapshots__/html/scroll-to-end-button-tab-order-js-scroll-to-end-button-should-have-correct-tab-order-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/shadow-root-js-fluent-theme-applied-web-chat-as-custom-element-inside-shadow-root-1-snap.png b/__tests__/__image_snapshots__/html/shadow-root-js-fluent-theme-applied-web-chat-as-custom-element-inside-shadow-root-1-snap.png index 30490aab40..335b3929f1 100644 Binary files a/__tests__/__image_snapshots__/html/shadow-root-js-fluent-theme-applied-web-chat-as-custom-element-inside-shadow-root-1-snap.png and b/__tests__/__image_snapshots__/html/shadow-root-js-fluent-theme-applied-web-chat-as-custom-element-inside-shadow-root-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/shadow-root-js-web-chat-as-custom-element-inside-shadow-root-1-snap.png b/__tests__/__image_snapshots__/html/shadow-root-js-web-chat-as-custom-element-inside-shadow-root-1-snap.png index c9e54d7620..8b199390a1 100644 Binary files a/__tests__/__image_snapshots__/html/shadow-root-js-web-chat-as-custom-element-inside-shadow-root-1-snap.png and b/__tests__/__image_snapshots__/html/shadow-root-js-web-chat-as-custom-element-inside-shadow-root-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png index dfcf9114d4..172688742c 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png index 10367686b2..e70e0b4f42 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png index c25d9d78ad..3307580d44 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png index 945b546034..7bdf340d4f 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png index 9333b0df5a..7a22155044 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png index 29fc1a10d5..7201ab4642 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png index acc7be0794..0ca06ad684 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png index 652c6909c8..a17413a969 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png index af599bc0d0..34cfda4017 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png index 4817f74cfd..f82da9e604 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png index 1ec69b262b..2bd4ca9864 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png index 774febd625..386f7d34cd 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png index 6ef597d8a6..a15f54acde 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png index 91ef975e72..d0406837f1 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png index b0afb15b62..8bfc0a9128 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png index 91ef975e72..d0406837f1 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png index a8844c0337..00b276cc6b 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png index 15cf7be798..a5d594b93e 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png index e92f66dab7..bdfe639dbf 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png index d9fd882011..973214cbd2 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png index 7a6273415f..caf132bb96 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png index fec80ac2e9..85e07320d8 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png index 8241412476..4de0347c2a 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png index 397c37a25e..7c1a48a1ab 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png index f34ff81dbe..e775e73a1c 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png index 000c4597d3..f1f9c6892b 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png index cc20739db6..4257b5e581 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png index 79c6026adb..89b13c67ef 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png index d6ea7ae549..f04af2452e 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png index 5af09146b0..4c408dca5a 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png index c99baae5da..0395f5fe11 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png index 4da9aef879..8dec50dd6d 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png index cae5fa93ae..aaff144512 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png index c393a70e11..a19e96afe3 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png index ae6a698adf..6c843bf36b 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png index 546822bd73..65cd263e5b 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png index 18de42ddeb..e976183ec2 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png index 50b759f061..36bd48021e 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-dark-js-fluent-theme-applied-dark-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png index fef79afec7..5939d192ec 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png index 7dd4a5abf7..0109aa9f59 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png index 88b4752ec7..b7ede1ec36 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png index ed9f26a409..a6f2a388a9 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png index cfab349ea5..76091da837 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png index 1ec0c57902..3cf695fe34 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png index 12dc3825f9..321385f96b 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png index fcf18adc74..2f7c5e5413 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png index 0c2a3874de..30c9223742 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-fluent-right-fluent-9-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png index 55275b3a7b..8127c4fe13 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png index ddd0d1348c..fa284891db 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png index 9a8a7705d8..4761723925 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png index 03b7e60377..73971fc196 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png index a02b24782c..04b32c6811 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png index a53816d86d..c4e185a886 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png index a02b24782c..04b32c6811 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png index efebe39219..cf373ca154 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png index 68c7e14820..f558a8632d 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-9-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png index 882e838b08..c642d27841 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-chat-message-fluent-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png index 274534fd93..0e2a6587bc 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-pre-liner-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png index ea25cad476..0c1c859c34 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-streaming-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png index e0304496a0..9e825c09c7 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png index 1e2163b6ae..0a81efa8da 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-10-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png index 0fa061ee4c..5784c5ff01 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-11-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png index faebc33ca1..f09c22d3d8 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-12-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png index dee822140a..19867e341e 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-13-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png index 8045b99ae7..edf9d42ccb 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-14-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png index 55746d4b42..1d24813246 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-15-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png index dc3e800882..02da561737 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-16-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png index b41fd846d5..386ce5c77e 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-17-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png index 08f8837c9b..44ec5b9f93 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png index 76285d282f..0542ad7d68 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png index 169b088863..6b44dec35a 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png index e09c8016c2..6dd3eb3719 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png index 17a21c0beb..820145b006 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png index b401e61703..e814e5decf 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png index 1a1205ef5c..20ce86e669 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png index 1f56ed33c5..e0de9caa1a 100644 Binary files a/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png and b/__tests__/__image_snapshots__/html/side-by-side-wide-js-fluent-theme-applied-side-by-side-left-transcript-right-transcript-9-snap.png differ diff --git a/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-1-snap.png b/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-1-snap.png index 46c19422f1..e72e750324 100644 Binary files a/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-1-snap.png and b/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-2-snap.png b/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-2-snap.png index 6c0c86b127..f5ba1126c9 100644 Binary files a/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-2-snap.png and b/__tests__/__image_snapshots__/html/simple-coarse-pointer-js-fluent-theme-applied-should-handle-coarse-pointer-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/slotted-js-fluent-theme-applied-web-chat-as-custom-element-when-slotted-1-snap.png b/__tests__/__image_snapshots__/html/slotted-js-fluent-theme-applied-web-chat-as-custom-element-when-slotted-1-snap.png index 30490aab40..335b3929f1 100644 Binary files a/__tests__/__image_snapshots__/html/slotted-js-fluent-theme-applied-web-chat-as-custom-element-when-slotted-1-snap.png and b/__tests__/__image_snapshots__/html/slotted-js-fluent-theme-applied-web-chat-as-custom-element-when-slotted-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/slotted-js-web-chat-as-custom-element-when-slotted-1-snap.png b/__tests__/__image_snapshots__/html/slotted-js-web-chat-as-custom-element-when-slotted-1-snap.png index c9e54d7620..8b199390a1 100644 Binary files a/__tests__/__image_snapshots__/html/slotted-js-web-chat-as-custom-element-when-slotted-1-snap.png and b/__tests__/__image_snapshots__/html/slotted-js-web-chat-as-custom-element-when-slotted-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-43-1-snap.png b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-43-1-snap.png index 2b77f72751..f3f2861313 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-43-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-43-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-44-1-snap.png b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-44-1-snap.png index 64ee557c89..7417deccfd 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-44-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-44-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-45-1-snap.png b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-45-1-snap.png index ca057075a3..fa0e93d569 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-45-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-45-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-46-1-snap.png b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-46-1-snap.png index 9ef419eb3f..bba7b03fa4 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-46-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-activity-grouping-js-transcript-with-activity-grouping-test-46-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-1-snap.png index 5c2713131d..ea342ee0fa 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-2-snap.png index 6de43d72aa..d1354050b9 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-3-snap.png index a4d2914829..b4cf5fc856 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-4-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-4-snap.png index dd8524fda6..69b321ed01 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-4-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-5-snap.png index 580178c616..ebbc0e15db 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-behavior-proactive-message-js-transcript-navigation-proactive-message-behavior-should-focus-on-last-activity-when-focus-is-on-send-box-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-1-snap.png index 2882351d23..7321be9d34 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-2-snap.png index bc17d05e34..3299198aa0 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-3-snap.png index 76c488966c..b4cd14ac20 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-escape-key-js-transcript-navigation-should-back-up-when-escape-key-is-pressed-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-1-snap.png index 2c009a6221..7c92f5ab3d 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-2-snap.png index 5c42ca8ac7..81b2e3c44e 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-3-snap.png index 61b320e43a..ebaefc4c13 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-4-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-4-snap.png index ee932b1860..aacb83bb8f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-4-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-by-click-js-transcript-navigation-should-focus-activity-by-click-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-1-snap.png index ea8ec035ba..ebdec99c4f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-10-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-10-snap.png index 7e4f51f2cf..c8f850ce53 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-10-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-10-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-11-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-11-snap.png index 9bd56baf1b..f1884f315c 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-11-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-11-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-12-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-12-snap.png index ee932b1860..aacb83bb8f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-12-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-12-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-2-snap.png index f24a735e83..b3a9db54fa 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-3-snap.png index ee932b1860..aacb83bb8f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-4-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-4-snap.png index 7e4f51f2cf..c8f850ce53 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-4-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-5-snap.png index f7ef2b0aad..e1d7b9fc27 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-6-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-6-snap.png index be022f3213..0e41d49e0b 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-6-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-7-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-7-snap.png index 9bd56baf1b..f1884f315c 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-7-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-8-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-8-snap.png index 7e4f51f2cf..c8f850ce53 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-8-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-9-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-9-snap.png index ee932b1860..aacb83bb8f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-9-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-focus-card-js-transcript-navigation-should-focus-activity-and-focus-on-card-9-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-1-snap.png index ea8ec035ba..ebdec99c4f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-2-snap.png index f24a735e83..b3a9db54fa 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-3-snap.png index 29370529af..238e5e016a 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-4-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-4-snap.png index f24a735e83..b3a9db54fa 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-4-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-5-snap.png index e4d61ac321..475f62b550 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-save-focus-js-transcript-navigation-should-save-last-focused-activity-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-1-snap.png index 44448bb912..4c4c24a126 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-2-snap.png index 740e20fbbf..26565b7cba 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-3-snap.png index b0c63f0a9f..b0a15bc569 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-assumptions-js-transcript-navigation-should-scroll-into-view-based-on-input-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-1-snap.png index ea8ec035ba..ebdec99c4f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-2-snap.png index ee932b1860..aacb83bb8f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-3-snap.png index 89b94ac543..05e7b17150 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-4-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-4-snap.png index 2cb921c877..2f8a58b569 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-4-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-5-snap.png index c9e54d7620..8b199390a1 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-6-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-6-snap.png index ee932b1860..aacb83bb8f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-6-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-keyboard-js-transcript-navigation-should-scroll-into-view-after-pressing-tab-key-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-1-snap.png index 2c009a6221..7c92f5ab3d 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-2-snap.png index 61b320e43a..ebaefc4c13 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-3-snap.png index 2c009a6221..7c92f5ab3d 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-focus-activity-scroll-into-view-mouse-js-transcript-navigation-should-not-scroll-into-view-after-clicking-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-5-snap.png index c0ef8b0d25..b354bb2b9e 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-6-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-6-snap.png index 98cfd612c5..288ad11d9f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-6-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-7-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-7-snap.png index 98cfd612c5..288ad11d9f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-7-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-fluent-theme-applied-performs-transcript-navigation-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-5-snap.png index c9e54d7620..8b199390a1 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-6-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-6-snap.png index 937047ca93..49abbdba1c 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-6-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-7-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-7-snap.png index 04911ee70c..76fd5ba2e1 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-7-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-page-up-down-js-transcript-navigation-should-scroll-page-up-and-down-on-keys-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-1-snap.png index ea8ec035ba..ebdec99c4f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-2-snap.png index f24a735e83..b3a9db54fa 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-3-snap.png index ee932b1860..aacb83bb8f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-5-snap.png index ea8ec035ba..ebdec99c4f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-7-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-7-snap.png index ea8ec035ba..ebdec99c4f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-7-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-scroll-into-view-js-transcript-navigation-should-scroll-focused-activity-into-view-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-1-snap.png index 29370529af..238e5e016a 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-2-snap.png index ea8ec035ba..ebdec99c4f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-up-arrow-on-terminator-js-transcript-navigation-should-focus-the-last-activity-when-press-up-arrow-key-on-the-terminator-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-1-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-1-snap.png index 678b40ab57..facbfebb3f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-1-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-2-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-2-snap.png index 0e1a7f6759..67fe59e9c7 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-2-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-3-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-3-snap.png index 90cfcf392a..6d0c1a0da4 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-3-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-4-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-4-snap.png index 0e1a7f6759..67fe59e9c7 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-4-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-5-snap.png b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-5-snap.png index 678b40ab57..facbfebb3f 100644 Binary files a/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-5-snap.png and b/__tests__/__image_snapshots__/html/transcript-navigation-visual-keyboard-indicator-js-transcript-navigation-should-show-visual-keyboard-indicators-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-2-snap.png b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-2-snap.png index 729e388e5d..0847cdd81d 100644 Binary files a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-2-snap.png and b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-6-snap.png b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-6-snap.png index a0abb740d1..f08983c835 100644 Binary files a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-6-snap.png and b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-2-snap.png b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-2-snap.png index 0a3872e171..2a6e25e930 100644 Binary files a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-2-snap.png and b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-6-snap.png b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-6-snap.png index 9b8a3efb3a..3d88ff28da 100644 Binary files a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-6-snap.png and b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-dark-theme-and-rtl-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-2-snap.png b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-2-snap.png index 32ea5e8811..11f2953402 100644 Binary files a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-2-snap.png and b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-6-snap.png b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-6-snap.png index 378775d5f8..203f0ca85b 100644 Binary files a/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-6-snap.png and b/__tests__/__image_snapshots__/html/ui-state-js-fluent-theme-applied-ui-state-should-display-properly-in-light-theme-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/with-builtin-decorator-js-built-in-decorator-with-decorators-1-snap.png b/__tests__/__image_snapshots__/html/with-builtin-decorator-js-built-in-decorator-with-decorators-1-snap.png index 1c7cc325d7..6f51d12484 100644 Binary files a/__tests__/__image_snapshots__/html/with-builtin-decorator-js-built-in-decorator-with-decorators-1-snap.png and b/__tests__/__image_snapshots__/html/with-builtin-decorator-js-built-in-decorator-with-decorators-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/with-builtin-decorator-js-fluent-theme-applied-with-decorators-1-snap.png b/__tests__/__image_snapshots__/html/with-builtin-decorator-js-fluent-theme-applied-with-decorators-1-snap.png index 5f521f8edd..1aca55e34f 100644 Binary files a/__tests__/__image_snapshots__/html/with-builtin-decorator-js-fluent-theme-applied-with-decorators-1-snap.png and b/__tests__/__image_snapshots__/html/with-builtin-decorator-js-fluent-theme-applied-with-decorators-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/with-custom-decorator-js-fluent-theme-applied-with-decorators-1-snap.png b/__tests__/__image_snapshots__/html/with-custom-decorator-js-fluent-theme-applied-with-decorators-1-snap.png index b4b6bd4071..736ccb5ea1 100644 Binary files a/__tests__/__image_snapshots__/html/with-custom-decorator-js-fluent-theme-applied-with-decorators-1-snap.png and b/__tests__/__image_snapshots__/html/with-custom-decorator-js-fluent-theme-applied-with-decorators-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/wrap-zero-width-space-js-link-definition-should-word-wrap-pure-identifier-to-next-line-but-not-text-content-1-snap.png b/__tests__/__image_snapshots__/html/wrap-zero-width-space-js-link-definition-should-word-wrap-pure-identifier-to-next-line-but-not-text-content-1-snap.png index c4bf3863dc..d1f7c75ee1 100644 Binary files a/__tests__/__image_snapshots__/html/wrap-zero-width-space-js-link-definition-should-word-wrap-pure-identifier-to-next-line-but-not-text-content-1-snap.png and b/__tests__/__image_snapshots__/html/wrap-zero-width-space-js-link-definition-should-word-wrap-pure-identifier-to-next-line-but-not-text-content-1-snap.png differ diff --git a/__tests__/html/accessibility.liveRegionActivity.speakOverrideAttachments.html b/__tests__/html/accessibility.liveRegionActivity.speakOverrideAttachments.html index d1061df538..0ad9e2b8ae 100644 --- a/__tests__/html/accessibility.liveRegionActivity.speakOverrideAttachments.html +++ b/__tests__/html/accessibility.liveRegionActivity.speakOverrideAttachments.html @@ -72,7 +72,7 @@ // The last activity have "webchat:fallback-text" field set to empty string. It is treated as role="presentation" and not emitted DOM element for screen reader. expect(screenReaderTexts).toEqual([ 'connecting', - 'Bot said:\nNo “webchat:fallback-text” field.\nA text: Hello.\nA text: World!', + 'Bot said:\nNo \"webchat:fallback-text\" field.\nA text: Hello.\nA text: World!', 'Bot said:\nWith \"webchat:fallback-text\" field.', 'Bot said:\nA text: Hello.\nA text: World!' ]); @@ -85,7 +85,7 @@ expect(screenReaderTexts).toEqual([ 'connecting', // In interactive transcript, this is narrated as "2 attachments". - 'Bot said:\nNo “webchat:fallback-text” field.\nA text: Hello.\nA text: World!', + 'Bot said:\nNo \"webchat:fallback-text\" field.\nA text: Hello.\nA text: World!', 'Bot said:\nWith "webchat:fallback-text" field.', 'Bot said:\nA text: Hello.\nA text: World!' ]); diff --git a/__tests__/html/fluentTheme/side-by-side.wide.dark.html b/__tests__/html/fluentTheme/side-by-side.wide.dark.html index 6d0ce2af70..8e8af513fb 100644 --- a/__tests__/html/fluentTheme/side-by-side.wide.dark.html +++ b/__tests__/html/fluentTheme/side-by-side.wide.dark.html @@ -123,7 +123,7 @@ channelData: { state: 'sent' }, from: { role: 'user' }, id: '2.1', - text: 'sharepoint.contoso.com/newhires/', + text: 'https://sharepoint.contoso.com/newhires/', type: 'message' }, { diff --git a/__tests__/html/fluentTheme/side-by-side.wide.html b/__tests__/html/fluentTheme/side-by-side.wide.html index 4d7b6dc002..d3f116ab62 100644 --- a/__tests__/html/fluentTheme/side-by-side.wide.html +++ b/__tests__/html/fluentTheme/side-by-side.wide.html @@ -132,7 +132,7 @@ channelData: { state: 'sent' }, from: { role: 'user' }, id: '2.1', - text: 'sharepoint.contoso.com/newhires/', + text: 'https://sharepoint.contoso.com/newhires/', type: 'message' }, { diff --git a/__tests__/html/markdown.attributes.curlyBrackets.html b/__tests__/html/markdown.attributes.curlyBrackets.html deleted file mode 100644 index c752f6217c..0000000000 --- a/__tests__/html/markdown.attributes.curlyBrackets.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - - -
- - - diff --git a/__tests__/html/markdown.attributes.curlyBrackets.js b/__tests__/html/markdown.attributes.curlyBrackets.js deleted file mode 100644 index 069972f007..0000000000 --- a/__tests__/html/markdown.attributes.curlyBrackets.js +++ /dev/null @@ -1,5 +0,0 @@ -/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ - -describe('Markdown', () => { - test('should process valid aria-label attributes set through curly brackets', () => runHTML('markdown.attributes.curlyBrackets.html')); -}); diff --git a/__tests__/html/markdownRenderHTML/false.adaptiveCards.html b/__tests__/html/markdownRenderHTML/false.adaptiveCards.html index 980c962d3d..b1fa62d6e7 100644 --- a/__tests__/html/markdownRenderHTML/false.adaptiveCards.html +++ b/__tests__/html/markdownRenderHTML/false.adaptiveCards.html @@ -59,7 +59,7 @@ const markdownElement = firstActivityElement.querySelectorAll('.webchat__render-markdown')[1]; - expect(markdownElement.innerHTML.startsWith('

Header

\n

<p>This is some text')).toBe(true); + expect(markdownElement.innerHTML.startsWith('

Header

\n<p>This is some text')).toBe(true); await host.snapshot(); }); diff --git a/__tests__/html/markdownRenderHTML/false.citationModal.html b/__tests__/html/markdownRenderHTML/false.citationModal.html index 5c965ef3aa..5fb286cb34 100644 --- a/__tests__/html/markdownRenderHTML/false.citationModal.html +++ b/__tests__/html/markdownRenderHTML/false.citationModal.html @@ -97,7 +97,7 @@ const markdownElement = document.querySelectorAll('dialog .webchat__render-markdown')[1]; - expect(markdownElement.innerHTML.startsWith('

Header

\n

<p>This is some text')).toBe(true); + expect(markdownElement.innerHTML.startsWith('

Header

\n<p>This is some text')).toBe(true); await host.snapshot(); }); diff --git a/__tests__/html/markdownRenderHTML/false.messageActivity.html b/__tests__/html/markdownRenderHTML/false.messageActivity.html index acbcc08f51..14e107147d 100644 --- a/__tests__/html/markdownRenderHTML/false.messageActivity.html +++ b/__tests__/html/markdownRenderHTML/false.messageActivity.html @@ -32,7 +32,7 @@ const markdownElement = firstActivityElement.querySelector('.webchat__render-markdown'); - expect(markdownElement.innerHTML.startsWith('

Header

\n

<p>This is some text')).toBe(true); + expect(markdownElement.innerHTML.startsWith('

Header

\n<p>This is some text')).toBe(true); await host.snapshot(); }); diff --git a/__tests__/html2/fluentTheme/preChatMessageActivity/layout.wide.html.snap-1.png b/__tests__/html2/fluentTheme/preChatMessageActivity/layout.wide.html.snap-1.png index e27f284c84..02c2d40991 100644 Binary files a/__tests__/html2/fluentTheme/preChatMessageActivity/layout.wide.html.snap-1.png and b/__tests__/html2/fluentTheme/preChatMessageActivity/layout.wide.html.snap-1.png differ diff --git a/jest.legacy.config.js b/jest.legacy.config.js index cf1b679942..4ba4f4eb99 100644 --- a/jest.legacy.config.js +++ b/jest.legacy.config.js @@ -10,6 +10,13 @@ const TRANSFORM_IGNORE_PACKAGES = [ 'mdast-util-from-markdown', 'mdast-util-to-string', 'micromark-core-commonmark', + 'micromark-extension-gfm', + 'micromark-extension-gfm-autolink-literal', + 'micromark-extension-gfm-footnote', + 'micromark-extension-gfm-strikethrough', + 'micromark-extension-gfm-table', + 'micromark-extension-gfm-tagfilter', + 'micromark-extension-gfm-task-list-item', 'micromark-factory-destination', 'micromark-factory-label', 'micromark-factory-space', diff --git a/package-lock.json b/package-lock.json index 0d19c4341d..ca51aa7e1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3986,6 +3986,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -5490,6 +5491,7 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -6832,6 +6834,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, "license": "MIT" }, "node_modules/bytes": { @@ -15774,48 +15777,6 @@ "markdown-it": "bin/markdown-it.js" } }, - "node_modules/markdown-it-attrs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz", - "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "markdown-it": ">= 9.0.0" - } - }, - "node_modules/markdown-it-attrs-es5": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/markdown-it-attrs-es5/-/markdown-it-attrs-es5-2.0.2.tgz", - "integrity": "sha512-VJczS1pwXA/OEyWD/30ehzBwyFwNT7V53tvwng6+S1uTLedPUGwp3nI2/HwOlKrMfRTe2L6zNb3HzmSNWUEhDA==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@babel/cli": "^7.17.6", - "@babel/core": "^7.17.5", - "@babel/plugin-transform-runtime": "^7.17.0", - "@babel/preset-env": "^7.16.11", - "@babel/runtime-corejs3": "^7.17.2", - "esbuild": "^0.14.23", - "mkdirp": "^1.0.4", - "read-pkg-up": "^9.1.0", - "terser": "^5.11.0" - }, - "engines": { - "node": ">= 12.2.0" - }, - "peerDependencies": { - "markdown-it-attrs": ">= 4" - } - }, - "node_modules/markdown-it-for-inline": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/markdown-it-for-inline/-/markdown-it-for-inline-2.0.1.tgz", - "integrity": "sha512-JGOi3/Ohhzehs+1qSA4CkDydmVBtiYi2q2BD//YtTbSK+75InrGJX2MtPq1AdMeC4BV7rwEhq1+3pLnwGbsgzA==", - "license": "MIT" - }, "node_modules/markdown-it/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -16167,7 +16128,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -16222,6 +16182,120 @@ "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-factory-destination": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", @@ -20131,6 +20205,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -20870,6 +20945,7 @@ "version": "5.33.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz", "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -20983,12 +21059,14 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, "license": "MIT" }, "node_modules/terser/node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -23754,13 +23832,11 @@ "botframework-webchat-core": "0.0.0-0", "classnames": "2.5.1", "core-js": "3.37.0", - "markdown-it": "13.0.2", - "markdown-it-attrs": "4.1.6", - "markdown-it-attrs-es5": "2.0.2", - "markdown-it-for-inline": "2.0.1", "math-random": "2.0.1", "mdast-util-from-markdown": "2.0.0", "memoize-one": "6.0.0", + "micromark": "^4.0.0", + "micromark-extension-gfm": "^3.0.0", "microsoft-cognitiveservices-speech-sdk": "1.17.0", "prop-types": "15.8.1", "punycode": "2.3.1", diff --git a/packages/bundle/package.json b/packages/bundle/package.json index d2e28ce291..f26d6476f0 100644 --- a/packages/bundle/package.json +++ b/packages/bundle/package.json @@ -106,10 +106,6 @@ "3.0.2", "needs to bump manually" ], - "markdown-it": [ - "13", - "markdown-it@14.1.0 has module field and it is breaking Webpack 4 because cross loading CJS and ESM" - ], "microsoft-cognitiveservices-speech-sdk": [ "1.17.0", "needs to bump manually" @@ -133,13 +129,11 @@ "botframework-webchat-core": "0.0.0-0", "classnames": "2.5.1", "core-js": "3.37.0", - "markdown-it": "13.0.2", - "markdown-it-attrs": "4.1.6", - "markdown-it-attrs-es5": "2.0.2", - "markdown-it-for-inline": "2.0.1", "math-random": "2.0.1", "mdast-util-from-markdown": "2.0.0", "memoize-one": "6.0.0", + "micromark": "^4.0.0", + "micromark-extension-gfm": "^3.0.0", "microsoft-cognitiveservices-speech-sdk": "1.17.0", "prop-types": "15.8.1", "punycode": "2.3.1", diff --git a/packages/bundle/scripts/devServer.mjs b/packages/bundle/scripts/devServer.mjs index 6dda715be1..5922a6d962 100644 --- a/packages/bundle/scripts/devServer.mjs +++ b/packages/bundle/scripts/devServer.mjs @@ -27,16 +27,16 @@ const BUILD_OPTIONS = { // Currently, we are only serving webchat-es5.js for development and testing purpose. // Saving some CPUs by not building other bundles. entryPoints: { - webchat: resolveFromProjectRoot('./dist/botframework-webchat.mjs'), - 'webchat-es5': resolveFromProjectRoot('./dist/botframework-webchat.es5.mjs'), - 'webchat-minimal': resolveFromProjectRoot('./dist/botframework-webchat.minimal.mjs') + webchat: resolveFromProjectRoot('./dist/webchat.js'), + 'webchat-es5': resolveFromProjectRoot('./dist/webchat-es5.js'), + 'webchat-minimal': resolveFromProjectRoot('./dist/webchat-minimal.js') }, logLevel: 'info', // Generate stats.json. metafile: true, // Minified file is smaller and load faster from GitHub Codespaces. minify: true, - outdir: resolveFromProjectRoot('./dist'), + outdir: resolveFromProjectRoot('./dist/dev'), plugins: [isomorphicReactResolvePlugin], sourcemap: true }; diff --git a/packages/bundle/src/__tests__/renderMarkdown.spec.js b/packages/bundle/src/__tests__/renderMarkdown.spec.js index fe4cab548d..d94c988cd1 100644 --- a/packages/bundle/src/__tests__/renderMarkdown.spec.js +++ b/packages/bundle/src/__tests__/renderMarkdown.spec.js @@ -53,8 +53,8 @@ describe('renderMarkdown', () => { it('should render aria-labels', () => { const styleOptions = { markdownRespectCRLF: true }; - expect(renderMarkdown('[example](https://sample.com){aria-label="Sample label"}', styleOptions)).toBe( - `

\u200Bexample\u200B

` + expect(renderMarkdown('[example](https://sample.com)', styleOptions)).toBe( + `

\u200Bexample\u200B

` ); }); @@ -62,8 +62,8 @@ describe('renderMarkdown', () => { const styleOptions = { markdownRespectCRLF: true }; const options = { externalLinkAlt: 'Opens in a new window, external.' }; - expect(renderMarkdown('[example](https://sample.com){aria-label="Sample label"}', styleOptions, options)).toBe( - `

\u200Bexample\u200B

` + expect(renderMarkdown('[example](https://sample.com)', styleOptions, options)).toBe( + `

\u200Bexample\u200B

` ); }); @@ -86,6 +86,6 @@ describe('renderMarkdown', () => { it('should render strikethrough text correctly', () => { const styleOptions = { markdownRespectCRLF: true }; - expect(renderMarkdown(`~~strike text~~`, styleOptions)).toBe('

strike text

'); + expect(renderMarkdown(`~~strike text~~`, styleOptions)).toBe('

strike text

'); }); }); diff --git a/packages/bundle/src/markdown/markdownItPlugins/ariaLabel.spec.ts b/packages/bundle/src/markdown/markdownItPlugins/ariaLabel.spec.ts deleted file mode 100644 index 93ad45182f..0000000000 --- a/packages/bundle/src/markdown/markdownItPlugins/ariaLabel.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import MarkdownIt from 'markdown-it'; - -import ariaLabel, { pre, post } from './ariaLabel'; - -test('should render {aria-label="Bing search"}', () => { - const markdown = 'Visit [Bing](https://bing.com/){aria-label="Bing search"} to start.'; - - const html = post(new MarkdownIt().use(ariaLabel).render(pre(markdown))); - - expect(html).toBe('

Visit Bing to start.

\n'); -}); - -test('should render {1} as-is', () => { - const markdown = 'This is number {1}.'; - - const html = post(new MarkdownIt().use(ariaLabel).render(pre(markdown))); - - expect(html).toBe('

This is number {1}.

\n'); -}); - -test('should render {title="abc"} as-is', () => { - const markdown = 'Visit [Bing](https://bing.com/){title="abc"} to start.'; - - const html = post(new MarkdownIt().use(ariaLabel).render(pre(markdown))); - - expect(html).toBe('

Visit Bing{title="abc"} to start.

\n'); -}); diff --git a/packages/bundle/src/markdown/markdownItPlugins/ariaLabel.ts b/packages/bundle/src/markdown/markdownItPlugins/ariaLabel.ts deleted file mode 100644 index beef1df92b..0000000000 --- a/packages/bundle/src/markdown/markdownItPlugins/ariaLabel.ts +++ /dev/null @@ -1,52 +0,0 @@ -import MarkdownIt from 'markdown-it'; -import markdownItAttrs from 'markdown-it-attrs-es5'; - -const MARKDOWN_ATTRS_LEFT_DELIMITER = '⟬'; -// Make sure the delimiter is free from any RegExp characters, such as *, ?, etc. -// IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here. -// eslint-disable-next-line require-unicode-regexp -const MARKDOWN_ATTRS_LEFT_DELIMITER_PATTERN = new RegExp(MARKDOWN_ATTRS_LEFT_DELIMITER, 'g'); - -const MARKDOWN_ATTRS_RIGHT_DELIMITER = '⟭'; -// Make sure the delimiter is free from any RegExp characters, such as *, ?, etc. -// IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here. -// eslint-disable-next-line require-unicode-regexp -const MARKDOWN_ATTRS_RIGHT_DELIMITER_PATTERN = new RegExp(MARKDOWN_ATTRS_RIGHT_DELIMITER, 'g'); - -const ariaLabel = (markdown: typeof MarkdownIt): typeof MarkdownIt => - markdown.use(markdownItAttrs, { - // `markdown-it-attrs` is added for accessibility and allow bot developers to specify `aria-label`. - // We are allowlisting `aria-label` only as it is allowlisted in `sanitize-html`. - // Other `aria-*` will be sanitized even we allowlisted here. - allowedAttributes: ['aria-label'], - leftDelimiter: MARKDOWN_ATTRS_LEFT_DELIMITER, - rightDelimiter: MARKDOWN_ATTRS_RIGHT_DELIMITER - }); - -// TODO: We should fold pre/post back into the plugin. -const pre = (markdown: string): string => - // Related to #3165. - // We only support attributes "aria-label" and should leave other attributes as-is. - // However, `markdown-it-attrs` remove unrecognized attributes, such as {hello}. - // Before passing to `markdown-it-attrs`, we will convert known attributes from {aria-label="..."} into ⟬aria-label="..."⟭ (using white tortoise shell brackets). - // Then, we ask `markdown-it-attrs` to only process the new brackets, so it should only try to process things that we allowlisted. - // Lastly, we revert tortoise shell brackets back to curly brackets, for unprocessed attributes. - markdown - // IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here. - // eslint-disable-next-line require-unicode-regexp - .replace(/\{\s*aria-label()\s*\}/gi, `${MARKDOWN_ATTRS_LEFT_DELIMITER}aria-label${MARKDOWN_ATTRS_RIGHT_DELIMITER}`) - .replace( - // IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here. - // eslint-disable-next-line require-unicode-regexp - /\{\s*aria-label=("[^"]*"|[^\s}]*)\s*\}/gi, - (_, valueInsideQuotes) => - `${MARKDOWN_ATTRS_LEFT_DELIMITER}aria-label=${valueInsideQuotes}${MARKDOWN_ATTRS_RIGHT_DELIMITER}` - ); - -const post = (html: string): string => - // Restore attributes not processed by `markdown-it-attrs`. - // TODO: [P2] #2511 After we fixed our polyfill story, we should use "String.prototype.replaceAll" instead of RegExp for replace all occurrences. - html.replace(MARKDOWN_ATTRS_LEFT_DELIMITER_PATTERN, '{').replace(MARKDOWN_ATTRS_RIGHT_DELIMITER_PATTERN, '}'); - -export default ariaLabel; -export { pre, post }; diff --git a/packages/bundle/src/markdown/markdownItPlugins/betterLink.spec.ts b/packages/bundle/src/markdown/markdownItPlugins/betterLink.spec.ts deleted file mode 100644 index 820513db1f..0000000000 --- a/packages/bundle/src/markdown/markdownItPlugins/betterLink.spec.ts +++ /dev/null @@ -1,80 +0,0 @@ -import MarkdownIt from 'markdown-it'; - -import betterLink from './betterLink'; - -// ariaLabel?: false | string; -// asButton?: boolean; -// iconAlt?: string; -// iconClassName?: string; -// className?: false | string; -// rel?: false | string; -// target?: false | string; -// title?: false | string; - -test('should render "ariaLabel"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ ariaLabel: 'Hello, World!' })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe('

This is a link.

\n'); -}); - -test('should render "asButton"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ asButton: true })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe('

This is a .

\n'); -}); - -test('should render "className"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ className: 'link' })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe('

This is a link.

\n'); -}); - -test('should render "iconClassName"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ iconClassName: 'icon' })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe( - '

This is a link.

\n' - ); -}); - -test('should render "iconClassName" with "iconAlt"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ iconAlt: 'open in new window', iconClassName: 'icon' })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe( - '

This is a link.

\n' - ); -}); - -test('should render "rel"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ rel: 'noopener noreferrer' })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe('

This is a link.

\n'); -}); - -test('should render "target"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ target: '_blank' })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe('

This is a link.

\n'); -}); - -test('should render "title"', () => { - const html = new MarkdownIt() - .use(betterLink, () => ({ title: 'Hello, World!' })) - .render('This is a [link](https://bing.com/).'); - - expect(html).toBe('

This is a link.

\n'); -}); diff --git a/packages/bundle/src/markdown/markdownItPlugins/betterLink.ts b/packages/bundle/src/markdown/markdownItPlugins/betterLink.ts deleted file mode 100644 index 5ff035d1fb..0000000000 --- a/packages/bundle/src/markdown/markdownItPlugins/betterLink.ts +++ /dev/null @@ -1,134 +0,0 @@ -import MarkdownIt from 'markdown-it'; -import iterator from 'markdown-it-for-inline'; - -// Put a transparent pixel instead of the "open in new window" icon, so developers can easily modify the icon in CSS. -const TRANSPARENT_GIF = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; - -type AttributeSetter = false | string | ((value?: string) => string); - -type Decoration = { - /** Value of "aria-label" attribute of the link. If set to `false`, remove existing attribute. */ - ariaLabel?: AttributeSetter; - - /** Turns this link into a

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "asButton" option with true and "iconClassName" with "my-icon"', () => { @@ -40,7 +36,7 @@ describe('When passing "asButton" option with true and "iconClassName" with "my- const decoration: BetterLinkDocumentModDecoration = { asButton: true, iconClassName: 'my-icon' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should replace with

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "asButton" option with true and "title" with "Hello, World!"', () => { @@ -64,7 +53,7 @@ describe('When passing "asButton" option with true and "title" with "Hello, Worl const decoration: BetterLinkDocumentModDecoration = { asButton: true, title: 'Hello, World!' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should replace with

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "asButton" option with true and "className" with "my-link"', () => { @@ -90,7 +72,7 @@ describe('When passing "asButton" option with true and "className" with "my-link const decoration: BetterLinkDocumentModDecoration = { asButton: true, className: 'my-link' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should replace with

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "asButton" option with true and "aria-label" with "Hello, World!"', () => { @@ -116,7 +91,7 @@ describe('When passing "asButton" option with true and "aria-label" with "Hello, const decoration: BetterLinkDocumentModDecoration = { asButton: true, ariaLabel: 'Hello, World!' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should replace with

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); diff --git a/packages/bundle/src/markdown/private/betterLinkDocumentMod.className.spec.ts b/packages/bundle/src/markdown/private/betterLinkDocumentMod.className.spec.ts index ac81a05374..cf3fb3265f 100644 --- a/packages/bundle/src/markdown/private/betterLinkDocumentMod.className.spec.ts +++ b/packages/bundle/src/markdown/private/betterLinkDocumentMod.className.spec.ts @@ -4,19 +4,22 @@ import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import MarkdownIt from 'markdown-it'; -import betterLink from '../markdownItPlugins/betterLink'; +import { micromark } from 'micromark'; import betterLinkDocumentMod, { type BetterLinkDocumentModDecoration } from './betterLinkDocumentMod'; const BASE_MARKDOWN = '[Example](https://example.com)'; -const BASE_HTML = new MarkdownIt().render(BASE_MARKDOWN); +let baseHTML: string; + +beforeEach(() => { + baseHTML = micromark(BASE_MARKDOWN, { allowDangerousHtml: true }); +}); describe('When passing "className" option with "my-link"', () => { let actual: DocumentFragment; const decoration: BetterLinkDocumentModDecoration = { className: 'my-link' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should have "className" attribute set to "my-link"', () => @@ -26,13 +29,6 @@ describe('When passing "className" option with "my-link"', () => { expect(serializeDocumentFragmentIntoString(actual)).toBe( '

Example

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "className" option with false', () => { diff --git a/packages/bundle/src/markdown/private/betterLinkDocumentMod.iconClassName.spec.ts b/packages/bundle/src/markdown/private/betterLinkDocumentMod.iconClassName.spec.ts index b518684a77..63afc6b458 100644 --- a/packages/bundle/src/markdown/private/betterLinkDocumentMod.iconClassName.spec.ts +++ b/packages/bundle/src/markdown/private/betterLinkDocumentMod.iconClassName.spec.ts @@ -4,19 +4,22 @@ import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import MarkdownIt from 'markdown-it'; -import betterLink from '../markdownItPlugins/betterLink'; +import { micromark } from 'micromark'; import betterLinkDocumentMod, { type BetterLinkDocumentModDecoration } from './betterLinkDocumentMod'; const BASE_MARKDOWN = '[Example](https://example.com)'; -const BASE_HTML = new MarkdownIt().render(BASE_MARKDOWN); +let baseHTML; + +beforeEach(() => { + baseHTML = micromark(BASE_MARKDOWN, { allowDangerousHtml: true }); +}); describe('When passing "iconAlt" option with "Hello, World!" and "iconClassName" with "my-icon"', () => { let actual: DocumentFragment; const decoration: BetterLinkDocumentModDecoration = { iconAlt: 'Hello, World!', iconClassName: 'my-icon' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should have icon image with "alt" attribute set to empty string', () => @@ -37,11 +40,4 @@ describe('When passing "iconAlt" option with "Hello, World!" and "iconClassName" expect(serializeDocumentFragmentIntoString(actual)).toBe( '

Example

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); diff --git a/packages/bundle/src/markdown/private/betterLinkDocumentMod.rel.spec.ts b/packages/bundle/src/markdown/private/betterLinkDocumentMod.rel.spec.ts index 556da5de1a..be0ba30548 100644 --- a/packages/bundle/src/markdown/private/betterLinkDocumentMod.rel.spec.ts +++ b/packages/bundle/src/markdown/private/betterLinkDocumentMod.rel.spec.ts @@ -4,19 +4,22 @@ import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import MarkdownIt from 'markdown-it'; -import betterLink from '../markdownItPlugins/betterLink'; +import { micromark } from 'micromark'; import betterLinkDocumentMod, { type BetterLinkDocumentModDecoration } from './betterLinkDocumentMod'; const BASE_MARKDOWN = '[Example](https://example.com)'; -const BASE_HTML = new MarkdownIt().render(BASE_MARKDOWN); +let baseHTML: string; + +beforeEach(() => { + baseHTML = micromark(BASE_MARKDOWN, { allowDangerousHtml: true }); +}); describe('When passing "rel" option with "noopener noreferer"', () => { let actual: DocumentFragment; const decoration: BetterLinkDocumentModDecoration = { rel: 'noopener noreferer' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should have "rel" attribute set to "noopener noreferer"', () => @@ -26,13 +29,6 @@ describe('When passing "rel" option with "noopener noreferer"', () => { expect(serializeDocumentFragmentIntoString(actual)).toBe( '

Example

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "rel" option with false', () => { diff --git a/packages/bundle/src/markdown/private/betterLinkDocumentMod.selector.spec.ts b/packages/bundle/src/markdown/private/betterLinkDocumentMod.selector.spec.ts index 4133e5a436..5c22a8d3f5 100644 --- a/packages/bundle/src/markdown/private/betterLinkDocumentMod.selector.spec.ts +++ b/packages/bundle/src/markdown/private/betterLinkDocumentMod.selector.spec.ts @@ -4,12 +4,15 @@ import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import MarkdownIt from 'markdown-it'; -import betterLink from '../markdownItPlugins/betterLink'; +import { micromark } from 'micromark'; import betterLinkDocumentMod, { type BetterLinkDocumentModDecoration } from './betterLinkDocumentMod'; const BASE_MARKDOWN = '[Hello, World!](https://example.com/1)\n\n[Aloha!](https://example.com/2)'; -const BASE_HTML = new MarkdownIt().render(BASE_MARKDOWN); +let baseHTML: string; + +beforeEach(() => { + baseHTML = micromark(BASE_MARKDOWN, { allowDangerousHtml: true }); +}); describe('When passing "ariaLabel" option with "Hello, World!" for a specific anchor based on "href"', () => { let actual: DocumentFragment; @@ -17,7 +20,7 @@ describe('When passing "ariaLabel" option with "Hello, World!" for a specific an beforeEach(() => { actual = betterLinkDocumentMod( - parseDocumentFragmentFromString(BASE_HTML), + parseDocumentFragmentFromString(baseHTML), href => href === 'https://example.com/1' && decoration ); }); @@ -29,17 +32,6 @@ describe('When passing "ariaLabel" option with "Hello, World!" for a specific an expect(serializeDocumentFragmentIntoString(actual)).toBe( '

Hello, World!

\n

Aloha!

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString( - new MarkdownIt() - .use(betterLink, (_, textContent) => textContent === 'Hello, World!' && decoration) - .render(BASE_MARKDOWN) - ) - ) - )); }); describe('When passing "ariaLabel" option with "Hello, World!" for a specific anchor based on "textContent"', () => { @@ -48,7 +40,7 @@ describe('When passing "ariaLabel" option with "Hello, World!" for a specific an beforeEach(() => { actual = betterLinkDocumentMod( - parseDocumentFragmentFromString(BASE_HTML), + parseDocumentFragmentFromString(baseHTML), (_, textContent) => textContent === 'Hello, World!' && decoration ); }); @@ -60,15 +52,4 @@ describe('When passing "ariaLabel" option with "Hello, World!" for a specific an expect(serializeDocumentFragmentIntoString(actual)).toBe( '

Hello, World!

\n

Aloha!

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString( - new MarkdownIt() - .use(betterLink, (_, textContent) => textContent === 'Hello, World!' && decoration) - .render(BASE_MARKDOWN) - ) - ) - )); }); diff --git a/packages/bundle/src/markdown/private/betterLinkDocumentMod.target.spec.ts b/packages/bundle/src/markdown/private/betterLinkDocumentMod.target.spec.ts index 0cddeabc9a..16c62f96d3 100644 --- a/packages/bundle/src/markdown/private/betterLinkDocumentMod.target.spec.ts +++ b/packages/bundle/src/markdown/private/betterLinkDocumentMod.target.spec.ts @@ -4,19 +4,22 @@ import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import MarkdownIt from 'markdown-it'; -import betterLink from '../markdownItPlugins/betterLink'; +import { micromark } from 'micromark'; import betterLinkDocumentMod, { type BetterLinkDocumentModDecoration } from './betterLinkDocumentMod'; const BASE_MARKDOWN = '[Example](https://example.com)'; -const BASE_HTML = new MarkdownIt().render(BASE_MARKDOWN); +let baseHTML: string; + +beforeEach(() => { + baseHTML = micromark(BASE_MARKDOWN, { allowDangerousHtml: true }); +}); describe('When passing "target" option with "noopener noreferer"', () => { let actual: DocumentFragment; const decoration: BetterLinkDocumentModDecoration = { target: 'noopener noreferer' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should have "target" attribute set to "noopener noreferer"', () => @@ -26,13 +29,6 @@ describe('When passing "target" option with "noopener noreferer"', () => { expect(serializeDocumentFragmentIntoString(actual)).toBe( '

Example

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "target" option with false', () => { diff --git a/packages/bundle/src/markdown/private/betterLinkDocumentMod.title.spec.ts b/packages/bundle/src/markdown/private/betterLinkDocumentMod.title.spec.ts index a702bcd851..1bd462f86c 100644 --- a/packages/bundle/src/markdown/private/betterLinkDocumentMod.title.spec.ts +++ b/packages/bundle/src/markdown/private/betterLinkDocumentMod.title.spec.ts @@ -4,19 +4,22 @@ import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import MarkdownIt from 'markdown-it'; -import betterLink from '../markdownItPlugins/betterLink'; +import { micromark } from 'micromark'; import betterLinkDocumentMod, { type BetterLinkDocumentModDecoration } from './betterLinkDocumentMod'; const BASE_MARKDOWN = '[Example](https://example.com)'; -const BASE_HTML = new MarkdownIt().render(BASE_MARKDOWN); +let baseHTML: string; + +beforeEach(() => { + baseHTML = micromark(BASE_MARKDOWN, { allowDangerousHtml: true }); +}); describe('When passing "title" option with "Hello, World!"', () => { let actual: DocumentFragment; const decoration: BetterLinkDocumentModDecoration = { title: 'Hello, World!' }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should have "title" attribute set to "Hello, World!"', () => @@ -26,13 +29,6 @@ describe('When passing "title" option with "Hello, World!"', () => { expect(serializeDocumentFragmentIntoString(actual)).toBe( '

Example

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "title" option with false', () => { diff --git a/packages/bundle/src/markdown/private/betterLinkDocumentMod.wrapZeroWidthSpace.spec.ts b/packages/bundle/src/markdown/private/betterLinkDocumentMod.wrapZeroWidthSpace.spec.ts index 7d127c8931..3e3a7abe84 100644 --- a/packages/bundle/src/markdown/private/betterLinkDocumentMod.wrapZeroWidthSpace.spec.ts +++ b/packages/bundle/src/markdown/private/betterLinkDocumentMod.wrapZeroWidthSpace.spec.ts @@ -4,32 +4,28 @@ import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import MarkdownIt from 'markdown-it'; -import betterLink from '../markdownItPlugins/betterLink'; +import { micromark } from 'micromark'; import betterLinkDocumentMod, { type BetterLinkDocumentModDecoration } from './betterLinkDocumentMod'; const BASE_MARKDOWN = '[Example](https://example.com)'; -const BASE_HTML = new MarkdownIt().render(BASE_MARKDOWN); +let baseHTML: string; + +beforeEach(() => { + baseHTML = micromark(BASE_MARKDOWN, { allowDangerousHtml: true }); +}); describe('When passing "wrapZeroWidthSpace" option with true', () => { let actual: DocumentFragment; const decoration: BetterLinkDocumentModDecoration = { wrapZeroWidthSpace: true }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should match snapshot', () => expect(serializeDocumentFragmentIntoString(actual)).toBe( '

\u200bExample\u200b

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); describe('When passing "wrapZeroWidthSpace" option with true and "asButton" option with true', () => { @@ -37,18 +33,11 @@ describe('When passing "wrapZeroWidthSpace" option with true and "asButton" opti const decoration: BetterLinkDocumentModDecoration = { asButton: true, wrapZeroWidthSpace: true }; beforeEach(() => { - actual = betterLinkDocumentMod(parseDocumentFragmentFromString(BASE_HTML), () => decoration); + actual = betterLinkDocumentMod(parseDocumentFragmentFromString(baseHTML), () => decoration); }); test('should match snapshot', () => expect(serializeDocumentFragmentIntoString(actual)).toBe( '

\u200b\u200b

' )); - - test('should match baseline', () => - expect(serializeDocumentFragmentIntoString(actual)).toBe( - serializeDocumentFragmentIntoString( - parseDocumentFragmentFromString(new MarkdownIt().use(betterLink, () => decoration).render(BASE_MARKDOWN)) - ) - )); }); diff --git a/packages/bundle/src/markdown/markdownItPlugins/respectCRLF.ts b/packages/bundle/src/markdown/private/respectCRLF.ts similarity index 100% rename from packages/bundle/src/markdown/markdownItPlugins/respectCRLF.ts rename to packages/bundle/src/markdown/private/respectCRLF.ts diff --git a/packages/bundle/src/markdown/renderMarkdown.ts b/packages/bundle/src/markdown/renderMarkdown.ts index 97725367e7..ab160c48b0 100644 --- a/packages/bundle/src/markdown/renderMarkdown.ts +++ b/packages/bundle/src/markdown/renderMarkdown.ts @@ -1,13 +1,13 @@ import { onErrorResumeNext } from 'botframework-webchat-core'; -import MarkdownIt from 'markdown-it'; import sanitizeHTML from 'sanitize-html'; import { parseDocumentFragmentFromString, serializeDocumentFragmentIntoString } from 'botframework-webchat-component/internal'; -import ariaLabel, { post as ariaLabelPost, pre as ariaLabelPre } from './markdownItPlugins/ariaLabel'; -import { pre as respectCRLFPre } from './markdownItPlugins/respectCRLF'; +import { micromark } from 'micromark'; +import { gfm, gfmHtml } from 'micromark-extension-gfm'; +import { pre as respectCRLFPre } from './private/respectCRLF'; import betterLinkDocumentMod, { BetterLinkDocumentModDecoration } from './private/betterLinkDocumentMod'; import iterateLinkDefinitions from './private/iterateLinkDefinitions'; @@ -72,20 +72,10 @@ export default function render( ): string { const linkDefinitions = Array.from(iterateLinkDefinitions(markdown)); - const MARKDOWN_IT_INIT = Object.freeze({ - breaks: false, - html: markdownRenderHTML ?? true, - linkify: true, - typographer: true, - xhtmlOut: true - }); - if (markdownRespectCRLF) { markdown = respectCRLFPre(markdown); } - markdown = ariaLabelPre(markdown); - const decorate = (href: string, textContent: string): BetterLinkDocumentModDecoration => { const decoration: BetterLinkDocumentModDecoration = { rel: 'noopener noreferrer', @@ -107,16 +97,23 @@ export default function render( linkDefinition.label === textContent && classes.add('webchat__render-markdown__pure-identifier'); } - // For links that would be sanitized out, let's turn them into a button so we could handle them later. - if (!SANITIZE_HTML_OPTIONS.allowedSchemes.map(scheme => `${scheme}:`).includes(protocol)) { - decoration.asButton = true; + // Let javascript: fell through. Our sanitizer will catch and remove it from . + // Otherwise, it will be turn into