Files
labtimesheet/docs/tests/web/dark-icon-sprite-presentation.md

2.6 KiB

Test Evidence: dark icon sprite presentation

  • Test type: Web
  • Requirement IDs: UI-006, UI-009, UI-010, UI-018
  • Scenario IDs: AC-UI-003, AC-UI-005
  • Test class/method: com.lab.labtimesheet.ui.UiContractWebTest#generatedLucideSymbolsRetainCurrentColorStrokePresentation
  • Implementation commit: pending

Protected behavior

Every local Lucide sprite symbol retains the source presentation attributes so icons referenced with <use> inherit currentColor rather than rendering with the SVG default black fill on dark surfaces.

Test method

The focused web contract reads the generated classpath sprite, scans every emitted <symbol>, and checks the five presentation attributes on each symbol. It checks the deployable generated artifact rather than generator source text.

Hand-derived expected result

Lucide 1.27.0 line icons use fill="none", stroke="currentColor", stroke-width="2", stroke-linecap="round", and stroke-linejoin="round" on their SVG root. Each selected generated symbol must preserve those values.

RED

Command

env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH ./mvnw '-Dtest=UiContractWebTest#generatedLucideSymbolsRetainCurrentColorStrokePresentation' test

Observed result

UiContractWebTest.generatedLucideSymbolsRetainCurrentColorStrokePresentation
Missing fill on  id="bell" viewBox="0 0 24 24" ==> expected: <true> but was: <false>
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
BUILD FAILURE

GREEN

Command

env PATH=/opt/homebrew/opt/node@24/bin:$PATH npm ci
env PATH=/opt/homebrew/opt/node@24/bin:$PATH npm run build
env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH ./mvnw '-Dtest=UiContractWebTest#generatedLucideSymbolsRetainCurrentColorStrokePresentation' test

Observed result

Node v24.19.0 and npm 11.17.0 installed the locked dependencies.
Tailwind CSS v4.3.3 rebuilt app.css and build-icons regenerated icons.svg.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

Affected suite

Command and result

env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH ./mvnw '-Dtest=UiContractWebTest' test

Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

External-test boundaries

The deterministic asset contract proves the generated sprite carries theme-aware Lucide presentation attributes. It does not replace the taskmaster-owned integrated browser/detector pass for rendered layout and interactive states.