-
Notifications
You must be signed in to change notification settings - Fork 0
CTS - MyAssessment UI changes #155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
rlorenzo
wants to merge
654
commits into
main
Choose a base branch
from
VPR-104-accessibility-audit-CTS-myassessments
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
654 commits
Select commit
Hold shift + click to select a range
0cd46f5
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 95c66e3
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 8e67efa
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo ab251da
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 7b9d3aa
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo be6e7ab
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 7d53309
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 69d12c1
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 76910dc
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo b424b61
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 008ef0b
Merge branch 'VPR-47-percent-assignment' into Development
rlorenzo 829ac4e
Merge branch 'VPR-49-instructor-edit-effort' into Development
rlorenzo 2740bfb
Merge branch 'dependabot/npm_and_yarn/VueApp/npm_and_yarn-86c0509402'…
rlorenzo 2590703
Merge branch 'dependabot/nuget/web/nuget-febcf3c244' into Development
rlorenzo 2b815aa
feat(effort): VPR-52 - staff dashboard with verification tracking
rlorenzo 2301332
fix(effort): resolve code quality warnings in dashboard code
rlorenzo 94369e9
Merge branch 'VPR-52-effort-staff-dashboard' into Development
rlorenzo a31e075
feat(effort): enhance staff dashboard with navigation and term views
rlorenzo cc0343d
Merge branch 'VPR-52-effort-staff-dashboard' into Development
rlorenzo 7ec1667
feat(scripts): add --clear-cache flag to test-dotnet for clearing bui…
rlorenzo d2a7847
Merge branch 'VPR-52-effort-staff-dashboard' into Development
rlorenzo 645fac9
Merge branch 'VPR-49-instructor-edit-effort' into Development
rlorenzo 3f9c614
Merge branch 'add-roles-mypermissions' into Development
rlorenzo db3503e
Merge branch 'VPR-49-instructor-edit-effort' into Development
rlorenzo 593732b
Merge branch 'VPR-49-instructor-edit-effort' into Development
rlorenzo ed8eec0
Merge branch 'VPR-52-effort-staff-dashboard' into Development
rlorenzo 0a521a3
refactor(effort): DRY up MyEffort and InstructorDetail pages
rlorenzo 804789a
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo 4e6e4ea
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo f7d2d2c
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo a8a3cf5
feat(effort): add optional notes field to effort records
rlorenzo 9057484
Merge branch 'VPR-67-r-course-notes' into Development
rlorenzo 4e3b890
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo a484c30
VPR-67 refactor(effort): make form validation consistent
rlorenzo 1d41d28
Merge branch 'VPR-67-r-course-notes' into Development
rlorenzo fc72cbd
VPR-67 feat(effort): restrict notes to generic R-Course and fix impor…
rlorenzo f4782c8
Merge branch 'VPR-67-r-course-notes' into Development
rlorenzo 62b126b
VPR-60 feat(effort): add course-level effort management
rlorenzo 65619eb
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo 24a303c
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo 578d9b5
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo 055ed2a
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo 17f4846
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo f66003d
Merge branch 'VPR-65-percent-assign-rollover' into Development
rlorenzo 850d26c
VPR-60 feat(effort): add instructor evaluation data to course detail
rlorenzo 19d2719
VPR-60 refactor(effort): auto-compute eval stats from rating counts
rlorenzo 08112c2
VPR-60 refactor(effort): conditionally show eval tabs and remove sour…
rlorenzo 49bd7af
VPR-60 fix(effort): validate instructor effort before ad-hoc eval
rlorenzo 6051851
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo a329ece
VPR-60 fix(effort): deduplicate eval permission fetch and add eval se…
rlorenzo 72c50ae
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo 7f38ab0
VPR-60 fix(effort): filter facilitator evals from status query and in…
rlorenzo 9f66975
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo 51be37f
VPR-60 fix(effort): address code review findings for eval feature
rlorenzo d524e0b
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo 4cce0a5
VPR-60 feat(effort): validate eval rating counts against backend max
rlorenzo 9181c8a
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo d1e46c3
VPR-60 fix(effort): add min=0 constraint to eval rating count inputs
rlorenzo 3278fdf
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo be7fdbe
VPR-60 refactor(effort): rename CourseInstructorOptionsDto to match b…
rlorenzo b694ecb
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo e1ce75a
Merge branch 'security-package-updates' into Development
rlorenzo cfca8ac
Merge branch 'security-package-updates' into Development
rlorenzo 1451885
VPR-60 feat(effort): add course-level effort management
rlorenzo 012a133
VPR-60 feat(effort): add instructor evaluation data to course detail
rlorenzo 97584e7
VPR-60 refactor(effort): auto-compute eval stats from rating counts
rlorenzo b5bbddc
VPR-60 refactor(effort): conditionally show eval tabs and remove sour…
rlorenzo 989bcad
VPR-60 fix(effort): validate instructor effort before ad-hoc eval
rlorenzo 2337f38
VPR-60 fix(effort): deduplicate eval permission fetch and add eval se…
rlorenzo 5ce6664
VPR-60 fix(effort): filter facilitator evals from status query and in…
rlorenzo 4defb48
VPR-60 fix(effort): address code review findings for eval feature
rlorenzo 99f2fdd
VPR-60 feat(effort): validate eval rating counts against backend max
rlorenzo 947341c
VPR-60 fix(effort): add min=0 constraint to eval rating count inputs
rlorenzo fcf8e4c
VPR-60 refactor(effort): rename CourseInstructorOptionsDto to match b…
rlorenzo c3d2827
VPR-48 feat(effort): add teaching activity reports infrastructure
rlorenzo d750b72
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo 010dd7f
VPR-48 feat(effort): add summary and merit reports
rlorenzo d421690
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo dcc5eb0
Merge branch 'VPR-69-email-header' into Development
rlorenzo 426a681
Merge branch 'VPR-69-email-header' into Development
rlorenzo 986a1d5
Merge branch 'VPR-72-codecov' into Development
rlorenzo e4f891e
VPR-60 fix(effort): skip re-auth on in-app navigation to prevent perm…
rlorenzo e77afe6
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo 12b88be
Merge branch 'VPR-60-instructor-eval-data' into Development
rlorenzo 79b79d9
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 417a4b0
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 2f464c7
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 70bfb26
Merge branch 'dependabot/npm_and_yarn/npm_and_yarn-c64628b3c1' into D…
rlorenzo 86071f6
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 36696d5
VPR-48 fix(effort): remove duplicate inline report routes from routes.ts
rlorenzo f29d5d3
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 8e58f18
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 056c167
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 389930b
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 9c1e9e6
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 3648a00
Merge branch 'VPR-48-effort-reports' into Development
rlorenzo 54a2afa
Merge branch 'VPR-73-effort-expected-close' into Development
rlorenzo a5d265e
Merge branch 'VPR-73-effort-expected-close' into Development
rlorenzo 858ec2c
Merge branch 'patch/dashboard-missing-instructors' into Development
rlorenzo 7ec884b
Merge branch 'upgrade/lts-dotnet10-node24' into Development
rlorenzo 9420468
Merge branch 'upgrade/lts-dotnet10-node24' into Development
rlorenzo 4b54eae
Merge branch 'upgrade/lts-dotnet10-node24' into Development
rlorenzo 80b4acc
Merge branch 'upgrade/lts-dotnet10-node24' into Development
rlorenzo c235ee7
Merge branch 'upgrade/lts-dotnet10-node24' into Development
rlorenzo 6112044
Merge branch 'upgrade/lts-dotnet10-node24' into Development
rlorenzo 199fa3c
Merge branch 'dependency-cooldown' into Development
rlorenzo 5e710c8
Merge branch 'dependabot-fix' into Development
rlorenzo db4a052
Merge branch 'VPR-104-accessibility-audit-base' into Development
rlorenzo dae367c
Merge branch 'VPR-104-accessibility-audit-base' into Development
rlorenzo f56f15e
Merge branch 'VPR-104-accessibility-audit-base' into Development
rlorenzo 212f526
VPR-104 fix(a11y): RAPS area accessibility improvements (PR 2 of 6)
rlorenzo 483c3b6
VPR-104 fix(a11y): safe strict-equality guards in ApplyTemplate
rlorenzo 3ee47a9
VPR-104 fix(a11y): add aria-label to icon-only buttons in RAPS
rlorenzo 693002b
VPR-104 fix(a11y): fix grammar in RAPS headings
rlorenzo d7e3d7d
VPR-104 fix(a11y): align RAPS button colors to UC Davis brand palette
rlorenzo a42f86b
VPR-104 fix(a11y): add dialog close buttons, delete confirmations, an…
rlorenzo b77ce9f
VPR-63 feat(students): add emergency contact management module
rlorenzo c7afb8f
VPR-63 feat(students): add admin access controls, exports, and form U…
rlorenzo af9cb7b
VPR-63 refactor(ui): extract shared ExportToolbar and unify report he…
rlorenzo 1b9fb3e
VPR-63 fix(students): toggle app access via Access column instead of …
rlorenzo 7dda850
VPR-63 fix: address PR review findings — dispose XLWorkbook, fix phon…
rlorenzo feb806a
VPR-63 fix: remove duplicate scoped .sr-only from ContactSection.vue
rlorenzo c34b2f8
VPR-63 fix: reset PhoneInput validity on successful validation
rlorenzo efe0380
VPR-63 refactor: migrate emergency contact banners to StatusBanner co…
rlorenzo ce48cd5
VPR-63 fix: use ASCII-only digit regex and route SIS users to view page
rlorenzo 596b31a
Merge branch 'VPR-104-accessibility-audit-RAPS' into Development
rlorenzo 9d2398c
VPR-63 fix: add [Required] to nested DTOs in UpdateStudentContactRequest
rlorenzo 734de40
Merge branch 'VPR-63-emergency-contact-info' into Development
rlorenzo 7703476
chore: patch glob, node-forge, serialize-javascript, path-to-regexp v…
rlorenzo e91303c
Merge branch 'security-package-updates-2026-04-02' into Development
rlorenzo 8931c7e
Merge branch 'security-package-updates-2026-04-02' into Development
rlorenzo beba52c
Merge branch 'security-package-updates-2026-04-02' into Development
rlorenzo 463e99b
Merge branch 'VPR-104-accessibility-audit-base' into Development
rlorenzo 7a10387
Merge branch 'VPR-104-accessibility-audit-base' into Development
rlorenzo 31f8f10
Merge branch 'VPR-104-accessibility-audit-base' into Development
rlorenzo 939f835
chore(deps): update dev tooling and lint dependencies
rlorenzo 6d49657
Merge branch 'chore/dependabot-updates' into Development
rlorenzo 88340bd
VPR-104 fix(a11y): RAPS area accessibility improvements (PR 2 of 6)
rlorenzo 99e5dca
VPR-104 fix(a11y): safe strict-equality guards in ApplyTemplate
rlorenzo 773e185
VPR-104 fix(a11y): add aria-label to icon-only buttons in RAPS
rlorenzo 59affbb
VPR-104 fix(a11y): fix grammar in RAPS headings
rlorenzo 6fa7b7d
VPR-104 fix(a11y): align RAPS button colors to UC Davis brand palette
rlorenzo 688e93f
VPR-104 fix(a11y): add dialog close buttons, delete confirmations, an…
rlorenzo a652961
VPR-104 fix(a11y): remove transparent from Delegate badge for contrast
rlorenzo 0b94b1e
VPR-104 fix(a11y): RAPS page titles, column labels, and dialog fixes
rlorenzo b170f91
Merge branch 'chore/dependabot-updates' into Development
rlorenzo 4d80de5
VPR-104 fix(a11y): RAPS aria labels, target sizing, audit filter chips
rlorenzo 95f538f
VPR-104 fix(a11y): remove double delete confirmation in Role Members
rlorenzo 606f71e
Merge branch 'VPR-104-accessibility-audit-base' into Development
rlorenzo 78ece99
Merge branch 'VPR-104-accessibility-audit-RAPS' into Development
rlorenzo 6678be4
VPR-104 fix(a11y): CTS area accessibility improvements (PR 3 of 6)
rlorenzo 774ae49
fix: address Copilot review feedback on CTS PR
rlorenzo a05816d
fix: address second round of Copilot review feedback on CTS PR
rlorenzo feb31f4
VPR-104 fix(a11y): make CTS edit button aria-labels unique per item
rlorenzo 2c540a2
VPR-104 fix(a11y): align CTS button and badge colors to UC Davis bran…
rlorenzo 13d4180
VPR-104 fix(a11y): add dialog close buttons and delete confirmations …
rlorenzo 420ac97
VPR-104 fix(a11y): CTS followup — contrast, banners, broken forms
rlorenzo ae28f4f
VPR-104 fix(a11y): ManageDomains labels, ManageCompetencies empty state
rlorenzo d0641c0
VPR-104 fix(a11y): move heading outside q-list to fix aria-required-c…
rlorenzo f586754
VPR-104 fix(a11y): CTS brand colors, page titles, and UX improvements
rlorenzo 70cb3d9
VPR-104 fix: session timeout, left nav highlighting, and view polish
rlorenzo 3bc3997
Merge branch 'VPR-104-accessibility-audit-RAPS' into Development
rlorenzo a712ebe
VPR-104 fix(a11y): CTS assessment bubbles, banners, button labels
rlorenzo 846ea51
Merge branch 'VPR-104-accessibility-audit-CTS' into Development
rlorenzo b4375b6
Merge branch 'VPR-104-accessibility-audit-Effort' into Development
rlorenzo 869affa
Merge branch 'VPR-104-accessibility-audit-Students-Directory' into De…
rlorenzo 5250100
Merge branch 'effort-dup-variable-400' into Development
rlorenzo 4b84299
Merge branch 'VPR-104-accessibility-audit-Students-Directory' into De…
rlorenzo e24135e
Merge branch 'security-update-vite-8.0.8' into Development
rlorenzo 29ef773
Merge branch 'VPR-104-accessibility-audit-Remaining' into Development
rlorenzo 55c6e1e
Merge branch 'VPR-63-emergency-contact-info' into Development
rlorenzo 9c38f18
Merge branch 'VPR-137-ldap-session-options' into Development
rlorenzo ab8fd49
Merge branch 'VPR-63-emergency-contact-info' into Development
rlorenzo 32d73d2
Merge branch 'VPR-63-emergency-contact-info' into Development
rlorenzo b3f3046
Merge branch 'dotnet-10.0.6' into Development
rlorenzo 70f871f
Merge branch 'VPR-137-ldap-session-options' into Development
rlorenzo 07d517f
VPR-142 refactor(cms): consolidate HTML sanitization into shared service
rlorenzo 6315a0c
VPR-142 fix(cms): sanitize without tracking; correct at-rule comment
rlorenzo e191f21
VPR-142 refactor(cms): sanitize after permission filter
rlorenzo 03f2847
Merge branch 'VPR-142-html-sanitization-consolidation' into Development
rlorenzo 14897b7
Merge branch 'VPR-143-oldURL-fix' into Development
rlorenzo 564094c
Merge branch 'VPR-104-effort-colors' into Development
rlorenzo e0cfeba
Merge branch 'VPR-104-effort-colors' into Development
rlorenzo a64cdee
Merge branch 'VPR-104-effort-colors' into Development
rlorenzo 77f2c9f
VPR-141 feat(healthchecks): add /health endpoints and UI dashboard
rlorenzo c3b7542
Merge branch 'VPR-141-health-check' into Development
rlorenzo daef548
VPR-104 fix(a11y): redesign MyAssessments and AssessmentBubble
rlorenzo 9c92454
VPR-141 fix(healthchecks): swap dead infra /24 for campus VPN /24
rlorenzo 8bd50c3
Merge branch 'VPR-141-health-check' into Development
rlorenzo 4ab9f46
VPR-141 chore(healthchecks): log IP gate decisions for debugging
rlorenzo 1516cc1
Merge branch 'VPR-141-health-check' into Development
rlorenzo 864b4a4
VPR-141 chore(healthchecks): drop IP gate + inject debug banner
rlorenzo 4c9b521
Merge branch 'VPR-141-health-check' into Development
rlorenzo 462496d
VPR-141 fix(security): trust Cloudflare for X-Forwarded-For
rlorenzo 242d408
VPR-104 feat(cts): add 5 MyAssessments display styles for review
rlorenzo aa83668
Merge branch 'VPR-104-accessibility-audit-CTS-myassessments' into Dev…
rlorenzo def468e
Merge branch 'VPR-141-health-check' into Development
rlorenzo 1e4971f
Merge remote-tracking branch 'origin/Development' into Development
rlorenzo 7bf0514
VPR-141 chore(healthchecks): add anonymous /health/whoami debug endpoint
rlorenzo dafbf0d
VPR-141 fix(security): populate both KnownNetworks lists for CF
rlorenzo 860f8c5
Merge branch 'VPR-141-health-check' into Development
rlorenzo 133bd46
VPR-141 fix(security): override RemoteIp from CF-Connecting-IP
rlorenzo 0fa866c
Merge branch 'VPR-141-health-check' into Development
rlorenzo 3b329ba
VPR-141 fix(security): run CF override outside dev guard
rlorenzo 19c1892
Merge branch 'VPR-141-health-check' into Development
rlorenzo 4699a14
VPR-141 chore(security): emit CF override diagnostics on response
rlorenzo 25795d4
Merge branch 'VPR-141-health-check' into Development
rlorenzo 1058a5c
VPR-141 fix(security): bump ForwardLimit to 2 for CF + F5 chain
rlorenzo 96a4877
Merge branch 'VPR-141-health-check' into Development
rlorenzo 01e5b82
VPR-141 chore(healthchecks): remove /health/whoami debug endpoint
rlorenzo e2e1665
VPR-141 fix(security): trust Cloudflare for X-Forwarded-For
rlorenzo c5ff681
Merge branch 'VPR-139-ldap-filter-escaping' into Development
rlorenzo afbd20a
Merge branch 'VPR-139-ldap-filter-escaping' into Development
rlorenzo 5243726
Merge branch 'VPR-139-ldap-filter-escaping' into Development
rlorenzo 1c17416
Merge branch 'VPR-80-updating-minweek-logic' into Development
bsedwards 23fcaa1
VPR-141 fix(healthchecks): scope allowlist, use localhost for UI poll
rlorenzo 2aa4432
Merge branch 'VPR-141-health-check' into Development
rlorenzo 704cf03
Merge branch 'VPR-80-updating-minweek-logic' into Development
bsedwards a109c2d
VPR-141 fix(healthchecks): revert UI poll to BaseUrl, restore SVM /24
rlorenzo 01ed488
Merge branch 'VPR-141-health-check' into Development
rlorenzo a83c9f1
VPR-141 fix(healthchecks): bypass IP filter for collector via process…
rlorenzo e2e6d15
Merge branch 'VPR-141-health-check' into Development
rlorenzo ba670d9
VPR-141 fix(security): trust Cloudflare for X-Forwarded-For
rlorenzo b8de30c
VPR-141 feat(healthchecks): add /health endpoints and UI dashboard
rlorenzo e72d693
Merge branch 'dependabot/npm_and_yarn/VueApp/npm-vueapp-b512b27c30' i…
rlorenzo d4a1c17
Merge branch 'VPR-141-health-check' into Development
rlorenzo 7b881f4
Merge branch 'chore/dotnet-deps-bump' into Development
rlorenzo 0af9e9c
VPR-141 fix(security): trust Cloudflare for X-Forwarded-For
rlorenzo f347ad2
Merge branch 'tools/fallow-jscpd' into Development
rlorenzo ab04023
VPR-141 feat(healthchecks): add /health endpoints and UI dashboard
rlorenzo 6f81c7b
Merge branch 'VPR-141-health-check' into Development
rlorenzo f632f53
Merge branch 'tools/codeql-roslyn-sonar-resharper' into Development
rlorenzo 7aacfe6
chore(jobs): remove unused Quartz POC
rlorenzo ccb5f00
VPR-141 fix(security): trust Cloudflare for X-Forwarded-For
rlorenzo 7d22f24
VPR-141 feat(healthchecks): add /health endpoints and UI dashboard
rlorenzo 37a7f95
VPR-141 chore(healthchecks): fix ReSharper findings
rlorenzo 78af0e7
Merge branch 'VPR-141-health-check' into Development
rlorenzo 64e16bb
VPR-141 chore(healthchecks): address review feedback
rlorenzo 7482ca9
Merge branch 'VPR-141-health-check' into Development
rlorenzo 947d29f
chore(config): restore staff names in InternalAllowlist comments
rlorenzo 91ff070
VPR-157 feat(a11y): add Word, PDF, and Excel accessibility helpers
rlorenzo 18c59c5
VPR-157 feat(a11y): tag Photo Gallery and Emergency Contact exports
rlorenzo 70367b2
VPR-157 feat(a11y): tag Effort report exports for accessibility
rlorenzo 32570dd
VPR-157 feat(reports): open report PDFs inline + UX polish
rlorenzo 4369708
Merge branch 'VPR-157-accessible-word-pdf-export' into Development
rlorenzo c5f9bf4
VPR-104 fix(a11y): redesign MyAssessments and AssessmentBubble
rlorenzo 43056bc
VPR-104 feat(cts): add 5 MyAssessments display styles for review
rlorenzo 7fddcb5
VPR-104 feat(cts): refine MyAssessments timeline view
rlorenzo f4e6377
Merge branch 'VPR-104-accessibility-audit-CTS-myassessments' into Dev…
rlorenzo b96e286
VPR-104 fix(cts): show MyAssessments timeline chart above comments on…
rlorenzo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,160 @@ | ||
| import { mount } from "@vue/test-utils" | ||
| import { Quasar } from "quasar" | ||
|
|
||
| import AssessmentBubble from "../components/AssessmentBubble.vue" | ||
|
|
||
| /** | ||
| * Tests for AssessmentBubble — the rating dot rendered on CTS assessment lists. | ||
| * | ||
| * Focus areas: | ||
| * 1. Privacy: aria-label must surface the descriptive rating label, never the | ||
| * numeric value. Students should not hear "Rating 1 of 5" from a screen | ||
| * reader when they are low-rated. | ||
| * 2. Class mapping: value/maxValue drive the bubbleClass contract consumed | ||
| * by cts.css. | ||
| * 3. Click contract: clickable variant (id prop set) emits bubble-click with | ||
| * the id; non-clickable variant renders as a non-interactive span. | ||
| */ | ||
|
|
||
| function createWrapper(props: Record<string, unknown>) { | ||
| return mount(AssessmentBubble, { | ||
| props: props as never, | ||
| global: { | ||
| plugins: [[Quasar, {}]], | ||
| }, | ||
| }) | ||
| } | ||
|
|
||
| describe(AssessmentBubble, () => { | ||
| describe("aria-label privacy", () => { | ||
| it("uses levelName on the clickable button and does not expose the numeric value", () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value: 1, | ||
| levelName: "Trust with indirect supervision", | ||
| id: 42, | ||
| }) | ||
|
|
||
| const label = wrapper.get("button").attributes("aria-label")! | ||
| expect(label).toContain("Trust with indirect supervision") | ||
| expect(label).not.toMatch(/\b1 of 5\b/i) | ||
| expect(label).not.toMatch(/rating\s+\d/i) | ||
| }) | ||
|
|
||
| it("uses levelName on the standalone span and does not expose the numeric value", () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value: 2, | ||
| levelName: "Trust with direct supervision", | ||
| }) | ||
|
|
||
| const label = wrapper.get('span[role="img"]').attributes("aria-label")! | ||
| expect(label).toBe("Trust with direct supervision") | ||
| expect(label).not.toMatch(/\b2 of 5\b/i) | ||
| }) | ||
|
|
||
| it("appends open-details hint on the clickable variant", () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value: 3, | ||
| levelName: "Independent remote supervision", | ||
| id: 7, | ||
| }) | ||
|
|
||
| expect(wrapper.get("button").attributes("aria-label")).toBe( | ||
| "Independent remote supervision, open assessment details", | ||
| ) | ||
| }) | ||
|
|
||
| it("falls back to a generic hint when levelName is missing on a clickable bubble", () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value: 3, | ||
| id: 7, | ||
| }) | ||
|
|
||
| expect(wrapper.get("button").attributes("aria-label")).toBe("Open assessment details") | ||
| }) | ||
| }) | ||
|
|
||
| describe("bubbleClass contract", () => { | ||
| it.each([ | ||
| [1, "assessmentBubble5_1"], | ||
| [2, "assessmentBubble5_2"], | ||
| [3, "assessmentBubble5_3"], | ||
| [4, "assessmentBubble5_4"], | ||
| [5, "assessmentBubble5_5"], | ||
| ])("maps value=%i to %s", (value, expected) => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value, | ||
| levelName: "Label", | ||
| }) | ||
|
|
||
| expect(wrapper.get('span[role="img"]').classes()).toContain(expected) | ||
| }) | ||
|
|
||
| it.each([0, 6])("yields no level class for out-of-range value=%i", (value) => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value, | ||
| levelName: "Label", | ||
| }) | ||
|
|
||
| const classes = wrapper.get('span[role="img"]').classes() | ||
| expect(classes.some((c) => c.startsWith("assessmentBubble5_"))).toBeFalsy() | ||
| }) | ||
|
|
||
| it("yields no level class when maxValue is not 5", () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 3, | ||
| value: 2, | ||
| levelName: "Label", | ||
| }) | ||
|
|
||
| const classes = wrapper.get('span[role="img"]').classes() | ||
| expect(classes.some((c) => c.startsWith("assessmentBubble5_"))).toBeFalsy() | ||
| }) | ||
| }) | ||
|
|
||
| describe("click behaviour", () => { | ||
| it("renders a button and emits bubble-click with the id when clicked", async () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value: 3, | ||
| levelName: "Label", | ||
| id: 99, | ||
| }) | ||
|
|
||
| await wrapper.get("button").trigger("click") | ||
|
|
||
| expect(wrapper.emitted("bubble-click")).toEqual([[99]]) | ||
| }) | ||
|
|
||
| it("renders a non-interactive span and does not emit when id is omitted", () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value: 3, | ||
| levelName: "Label", | ||
| }) | ||
|
|
||
| expect(wrapper.find("button").exists()).toBeFalsy() | ||
| expect(wrapper.find('span[role="img"]').exists()).toBeTruthy() | ||
| expect(wrapper.emitted("bubble-click")).toBeUndefined() | ||
| }) | ||
| }) | ||
|
|
||
| describe("bubble content", () => { | ||
| it("does not render the numeric value inside the bubble", () => { | ||
| const wrapper = createWrapper({ | ||
| maxValue: 5, | ||
| value: 4, | ||
| levelName: "Label", | ||
| id: 1, | ||
| }) | ||
|
|
||
| const bubble = wrapper.get("span.assessmentBubble") | ||
| expect(bubble.text()).toBe("") | ||
| }) | ||
| }) | ||
| }) | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial | ⚡ Quick win
No test for the accessibility edge case: span variant with missing/empty
levelName.The existing aria-label privacy suite covers a
levelName-present span, but the component's default oflevelName: ""producesaria-label=""onrole="img"— a real a11y gap that is currently undetected by the suite.✅ Proposed additional test
🤖 Prompt for AI Agents