Files
labtimesheet/docs/tests/web/project-intern-picker.md
T

3.9 KiB

Web Test Evidence

Requirement and scenario IDs

  • AUTH-001, AUTH-002, AUTH-011; PRJ-001, PRJ-004, PRJ-005, PRJ-006, PRJ-017; UI-001, UI-005, UI-014, UI-018; TST-001 through TST-010.
  • AC-AUTH-001, AC-AUTH-010, AC-PRJ-001, AC-PRJ-003, AC-PRJ-009, AC-UI-005, AC-TST-001.

Behavior under test

Project creation, direct member addition, and leadership reassignment render only server-provided eligible Intern choices. The native dialog picker exposes name, student code, and internship dates while numeric identifiers remain form values rather than visible labels. Local search, selection summaries, focus, apply, cancel, empty results, and retained server errors remain usable without adding a client API.

Expected result derivation

The expected options are literal fixtures from the Account public DTO. Project membership history independently determines which eligible users are valid nonmembers or current-member leadership candidates. Native dialog controls keep server forms and CSRF as the mutation boundary.

RED

env PATH=/opt/homebrew/opt/node@24/bin:$PATH npm run test:ui executed the dependency-free interaction contract first: 1 test, 1 failure. Opening the picker left dialog.open undefined because no picker behavior existed.

The combined Java RED command was env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH ./mvnw '-Dtest=ProjectControllerTest,ProjectServiceIntegrationTest' test. After correcting test-only assertion imports, test compilation failed only because the requested ProjectService.addMembers(long,long,List<Long>) API did not exist. Controller rendering RED will be rerun after that producer API compiles.

After the producer API compiled, env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH ./mvnw '-Dtest=ProjectControllerTest' test ran 19 tests with 4 expected assertion failures for the missing eligible-option model, filtered multi-select markup, and retained selection rendering. A separate no-roster regression ran 1 test with 1 assertion failure because the disabled picker trigger had no reachable explanatory copy.

GREEN

env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH ./mvnw '-Dtest=ProjectControllerTest' test passed the initial rendered picker suite at 19/19. After adding the no-roster regression, the affected Project command below passed the expanded controller suite at 20/20.

env PATH=/opt/homebrew/opt/node@24/bin:$PATH npm run test:ui passed 1/1 executable tests with no failures, proving local name/student-code filtering, summary updates, initial search focus, apply retention, cancel rollback, and opener focus restoration.

env PATH=/opt/homebrew/opt/node@24/bin:$PATH npm run build succeeded with Tailwind CSS 4.3.3 and the existing local icon builder. No dependency was added.

Affected suite

env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH DOCKER_HOST=unix:///Users/sechmachine/.orbstack/run/docker.sock ./mvnw '-Dtest=ProjectControllerTest,ProjectEntityTest,ProjectPersistenceStructureTest,ProjectServiceIntegrationTest,ProjectTaskMutationContextTest,LayerStructureTest' test passed 38/38 tests with no failures, errors, or skips.

env JAVA_HOME=/opt/homebrew/opt/openjdk@25 PATH=/opt/homebrew/opt/openjdk@25/bin:$PATH ./mvnw -DskipTests compile succeeded. Project-scoped javadoc:javadoc with -Ddoclint=all succeeded; it retained four non-fatal default-constructor warnings, including pre-existing advice/query types. git diff --check passed.

External boundaries

No browser loop or Impeccable detector is run on this branch; the root owner performs one integrated pass. MockMvc proves rendered semantics and a dependency-free Node test executes the dialog/search/selection behavior with controlled DOM boundaries. These pre-merge results will be rerun after merging the taskmaster-specified exact main SHA.