Skip to content

test: failing tests documenting emoji migration regressions - #41609

Closed
KevLehman wants to merge 2 commits into
release-8.7.0from
test/emoji-migration-regressions
Closed

test: failing tests documenting emoji migration regressions#41609
KevLehman wants to merge 2 commits into
release-8.7.0from
test/emoji-migration-regressions

Conversation

@KevLehman

@KevLehman KevLehman commented Jul 28, 2026

Copy link
Copy Markdown
Member

Proposed changes (including videos or screenshots)

Adds deliberately failing tests (12 red) documenting runtime-confirmed regressions from the joypixels → native unicode emoji migration (#39411). Each failure is the expected assertion, not a setup error; all pre-existing tests stay green (except the pdf-worker vocabulary assertions, deliberately realigned — see below).

Suite Red tests Regression documented
apps/meteor/app/emoji-native/lib/generateEmojiData.spec.ts (jest) 6 Hair-style shortcodes (:bald:, :red_haired:, :curly_haired:, :white_haired:) and :iphone: no longer resolve; shortnameToUnicode skips a shortcode directly following an unknown :token: (12:30:fire:)
apps/meteor/app/emoji-native/lib/getEmojiConfig.spec.ts (jest) 1 Bare (no VS16) pictographic emojis no longer render as emojis — scoped to pictographs so it coexists with the deliberate VS16-only handling of ©/
apps/meteor/tests/unit/app/emoji/helpers.spec.ts (mocha) 1 Legacy emojione shortcodes (digit_one) render in messages but are invisible to renderPicker — pre-8.7 recents silently disappear from the picker
ee/packages/pdf-worker/.../markup/emoji.spec.ts (jest) 4 Omnichannel transcript prints emojibase-primary shortnames (:+1:, :grinning_face_with_big_eyes:) instead of the joypixels-first vocabulary the app renders since #41587 (:thumbsup:, :smiley:); suite realigned in place rather than contradicting the old assertions

Issue(s)

Regressions from #39411. All findings were verified at runtime against a live server (screenshots/DOM inspection) before writing the tests.

Steps to test or reproduce

cd apps/meteor
yarn jest app/emoji-native/lib/generateEmojiData.spec.ts app/emoji-native/lib/getEmojiConfig.spec.ts  # 7 failing
yarn mocha --config ./.mocharc.base.json --exit tests/unit/app/emoji/helpers.spec.ts  # 1 failing
cd ee/packages/pdf-worker
yarn jest src/templates/ChatTranscript/markup/emoji.spec.ts  # 4 failing

Regressions under test

All regressed by the native emoji migration (#39411); IDs from the internal review triage. Every one was runtime-verified against a live server before the test was written, and each has a passing 8.6 baseline in the counterpart PR.

ID Regression Test
B1 Server shortnameToUnicode (push/email notification text) skips a shortcode that directly follows an unknown :token:12:30:fire: keeps the raw :fire:. Message rendering is NOT affected (parser behavior is identical pre/post migration). generateEmojiData.spec.ts › timestamp-adjacent
B2 emojione hair-style shortcodes no longer resolve: :bald: :red_haired: :curly_haired: :white_haired: render as literal text (dropped by the group === 2 skip). generateEmojiData.spec.ts › hair-style ×4
B3 :iphone: renders as literal text — joypixels ?? emojibase picks joypixels wholesale, losing emojibase-only aliases. generateEmojiData.spec.ts:iphone:
B4 Bare (no VS16) pictographic emojis get no .emoji span, tooltip, or big-emoji treatment — emojione rendered them; the fix must preserve the intentional VS16-only handling of ©/. getEmojiConfig.spec.ts › bare pictographs
C3 Legacy emojione shortcodes (digit_one, …) render fine in messages but are invisible in picker recents — renderPicker has no legacy-map fallback, so pre-8.7 recents vanish after upgrade. helpers.spec.ts › legacy shortcodes
D2 Omnichannel PDF transcript prints emojibase-primary shortnames (:+1:, :grinning_face_with_big_eyes:) instead of the joypixels-first vocabulary the app renders (#41587) — same root cause as #41606. pdf-worker emoji.spec.ts ×4

Deliberately excluded (real bugs, but not migration regressions — the defective code and trigger paths exist identically on 8.6; tracked as separate bug-fix follow-ups):

  • Deleting a custom emoji that shadows a native shortcode permanently removes the native emoji until reload (live-verified: Animals & Nature collapses from ~130 emojis to 4).
  • One unresolvable name truncates the rest of a picker category (return vs continue in createEmojiList).
  • Stale frequent-emoji names silently eat quick-reaction toolbar slots.
  • Mixed-tone variants never appear in picker search (dead keep-branch from the regression: custom emojis with mixed skin-tone names missing from search #41553 refactor) — defect in new code with no pre-migration baseline (emojione 4.5 predates these emojis).

Also not covered: federation reactions (fixed in #41606); livechat widget missing Unicode 14+ shortnames (no test infra in packages/livechat).

Further comments

CI is expected red on this PR by design — it turns green as the fixes land. Test-only change, no changeset.

Review in cubic

Red tests for runtime-confirmed regressions from the joypixels ->
native unicode migration (#39411):

- generateEmojiData: emojione hair-style shortcodes (:bald: et al)
  and :iphone: no longer resolve; bare text-presentation emojis
  (bare heart, relaxed) missing from bareAliases; shortnameToUnicode
  skips a shortcode that follows an unknown :token: (12:30:fire:)
- helpers: one unresolvable name truncates the rest of a picker
  category; legacy emojione shortcodes invisible to renderPicker;
  mixed-tone variants never returned by picker search; frequent
  emoji list yields empty quick-reaction slots
- customEmoji: deleting a custom emoji that shadows a native
  shortcode permanently removes the native emoji until reload
- pdf-worker: transcript emits emojibase-primary shortnames
  (:+1:) instead of the joypixels-first names the app uses
@dionisio-bot

dionisio-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Looks like this PR is not ready to merge, because of the following issues:

  • This PR is missing the 'stat: QA assured' label
  • This PR is missing the required milestone or project

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

@changeset-bot

changeset-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 8328c3b

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 85ba9c95-2f5e-4da4-9b61-d6c9b79d7cf9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@KevLehman

Copy link
Copy Markdown
Member Author

Counterpart baseline PR (same expectations passing on 8.6, pre-migration): #41610

@codecov

codecov Bot commented Jul 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.41%. Comparing base (9bd5a7d) to head (8328c3b).
⚠️ Report is 1 commits behind head on release-8.7.0.

Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                @@
##           release-8.7.0   #41609      +/-   ##
=================================================
+ Coverage          68.40%   68.41%   +0.01%     
=================================================
  Files               4139     4139              
  Lines             158309   158311       +2     
  Branches           28305    28306       +1     
=================================================
+ Hits              108290   108314      +24     
+ Misses             44882    44861      -21     
+ Partials            5137     5136       -1     
Flag Coverage Δ
e2e 58.93% <ø> (+0.05%) ⬆️
e2e-api 45.37% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Drop tests for pre-existing bugs the migration merely exposed (custom
emoji shadow-delete, category truncation, frequent-slot decay) and for
the dead mixed-tone search branch, which has no pre-migration baseline.

Rework the bare-emoji expectation onto the public render surface,
scoped to pictographs so it coexists with the deliberate VS16-only
handling of text symbols. Align the pdf-worker suite on the joypixels
vocabulary (#41587) instead of contradicting it in place.
@KevLehman

Copy link
Copy Markdown
Member Author

Revised after an adversarial pass over the findings: removed tests for pre-existing bugs the migration merely exposed (custom-emoji shadow delete, category truncation on stale names, frequent-slot decay — the defective code and trigger paths exist identically on 8.6) and for the dead mixed-tone search branch (defect in new code, no pre-migration baseline). Reworked the bare-emoji test onto the public render surface scoped to pictographs (coexists with the intentional VS16-only ©/ handling), and realigned the pdf-worker suite on the joypixels vocabulary established by #41587 instead of contradicting its old assertions. Now 12 red tests, each with a passing 8.6 baseline in #41610. The removed bugs remain real and runtime-verified — they should be fixed as separate bug fixes, not regression fixes.

@KevLehman KevLehman closed this Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant