Skip to content

FFS-4862: Ensure "Reporting for (name)" header appears throughout Emmy CE and Employment flows - #2161

Merged
jakewheeler merged 10 commits into
mainfrom
jw/ffs-4862
Oct 14, 2026
Merged

jakewheeler merged 10 commits into
mainfrom
jw/ffs-4862

Conversation

@jakewheeler

@jakewheeler jakewheeler commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

FFS-4862

Changes

This PR adds the Reporting for <name> header across the Emmy CE / employment-focused flows.

This header does not display on a few of the CE pages (also shown here):

  • Pop-up to connect a job
  • Synchronizations view while loading employment data
  • Success page

The header will not display if first name or last name is blank / empty. The header never displays when using the "income" flow type.

Context for reviewers

  • Per the ticket, this applies to CE and employment-focused activity flows. Income flows don't change

Example

image

Acceptance testing

Tag product and design in Slack for acceptance: @emmy-acceptance-testers

  • No acceptance testing needed
    • This change will not affect the user experience (bugfix, dependency updates, etc.)
  • Acceptance testing prior to merge
    • This change can be verified visually via screenshots attached below or by sending a link to a local development environment to the acceptance tester
    • Acceptance testing should be done by design for visual changes, product for behavior/logic changes, or both for changes that impact both.
  • Acceptance testing in PR Environment
    • This change can be verified in a PR environment. Run this Github Action with the existing PR number.
  • Acceptance testing after merge
    • This change is hard to test locally, so we'll test it in the demo environment (deployed automatically after merge.)
    • Make sure to notify the team once this PR is merged so we don't inadvertently deploy the unaccepted change to production. (e.g. :alert: Deploy block! @ffs-eng I just merged PR [#123] and will be doing acceptance testing in demo - please don't deploy until I'm finished!)

AI Usage

  • USED_AI: I attest that I have read, understood, and take ownership of all AI-generated code in this PR.
  • NO_AI: I did not use AI.

If you used AI:

Purpose for AI usage:

  • Code generation
  • Error explanation/research
  • Architecture explanation/research
  • AWS feature research
  • Documentation search
  • Writing assistance
  • Code validation
  • Generating PR summary
  • Other ______________________________

Which AI Tool(s) did you use:

  • Github Copilot
  • Claude Code
  • Claude
  • Gemini
  • Google Search AI assist
  • Other ______________________________

Infrastructure Changes

  • Plan reviewed
  • Applied in dev before merge
  • Applied in demo after merge
  • Applied in prod after merge (note any exceptions or special coordination below)

Risk / Downtime:

CMS Cloud review environment

♻️ Environment destroyed ♻️

Comment on lines +24 to +26
def show_activity_reporting_banner?
false
end

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CE pages will display the banner by default unless you opt out like this.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nonblocking, dev chat probably: do we stylistically want to favor patterns like this where its (meh) in the controller but (yay) comes configured for free in the flow, or more controlled in the UI which has its own tradeoffs?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seemed slightly less clunky to me than the way I originally had it, which was essentially just checking against URLs. It's a good question.

@jakewheeler
jakewheeler marked this pull request as ready for review October 13, 2026 14:16
@jakewheeler
jakewheeler requested a review from a team as a code owner October 13, 2026 14:16
@github-actions
github-actions Bot requested a review from millerti October 13, 2026 14:16

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 15 files against origin/main (security perspective only; no IaC files in the diff). Found 0 findings. The new 'Reporting for ' banner HTML-escapes the applicant name (tag.strong plus Rails' _html translation helper), is limited to the current session's or invitation's ActivityFlow, and is not written to logs, tracking or URLs. Spec data uses synthetic names only.

Reviewed by AI, was this helpful? Please react with 👍 or 👎.

Comment thread app/spec/controllers/activities/entries_controller_spec.rb
Comment thread app/app/helpers/activities_helper.rb Outdated
return unless flow.is_a?(ActivityFlow) && flow.activity_flow_invitation.present?

applicant = flow.cbv_applicant
return unless applicant&.first_name.present? && applicant.last_name.present?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: rather than applicant&.ing, i'd add that as another escape hatch to the control flow. alternatively, would there ever be a reason to assume the cbv_applicant is missing here? wouldnt things get pretty screwy in that case?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that's a good call. This was me being unnecessarily defensive since you're correct that we will have an applicant value here. I'll rework this a bit to match what you're getting at. Thanks!

@iannorriswork iannorriswork left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left some thinking comments, but nothing blocking. checked and the name is showing up as appropriate in CE flow.

@github-actions

Copy link
Copy Markdown
Contributor

test-classifier: AI triage of failing tests

AI Test Classifier — no action required

Observed — these verdicts are grounded in the actual test run output.

Re-resolved base: AI_REVIEW_DIFF_RANGE (origin/main HEAD) included an upstream commit not yet merged into the branch (a04e99a), so I used merge-base 3abdd37 as the base. Ran the changed specs (165 examples), the changed e2e spec with E2E_RUN_TESTS=1 (3 examples) and the wider controllers/components/helpers/requests suites (1620 examples), all with 0 failures. Used Ruby 3.4.11 (repo pins 3.4.9) with the Gemfile pin restored afterward; built npm assets before the final run.

React 👍 if this is right (nothing needed triage) / 👎 if a real failure was missed, and on a 👎 please reply with a one-line reason. Advisory, non-blocking.

Comment thread app/spec/controllers/activities/entries_controller_spec.rb
Comment thread app/spec/controllers/activities/entries_controller_spec.rb
@jakewheeler
jakewheeler removed the request for review from millerti October 13, 2026 17:20
Comment thread app/spec/controllers/activities/entries_controller_spec.rb
@pauljgehrig

Copy link
Copy Markdown

Excellent work, Jake! Approved! ✅ :shipit:

@jakewheeler
jakewheeler merged commit c20180c into main Oct 14, 2026
27 checks passed
@jakewheeler
jakewheeler deleted the jw/ffs-4862 branch October 14, 2026 18:34

This branch was successfully deployed

No deployments
cms-dev-pr-2161 — 6ff11076 Deployed Oct 14, 2026 by github-actions[bot]
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.

3 participants