Skip to content

DO NOT MERGE - Pipeline Test: Feat/expandable heroes#1733

Open
mlsamuelson wants to merge 40 commits into
devfrom
feat/expandable-heroes
Open

DO NOT MERGE - Pipeline Test: Feat/expandable heroes#1733
mlsamuelson wants to merge 40 commits into
devfrom
feat/expandable-heroes

Conversation

@mlsamuelson

@mlsamuelson mlsamuelson commented Jun 29, 2026

Copy link
Copy Markdown
Member

Based off pipeline-trial branch.

Start:
kiro-cli --agent acp-orchestrator

Prompt:

  Component: Hero (expandable). Build/validate a Unity hero component that has a
  primary hero plus expandable secondary and tertiary hero images + content.
  Intake: no Jira, no Figma — use the screenshot in .intake/HeroWithExpandableHeroes.png.
  Target: pick the right Unity package and tell me your reasoning before coding.
HeroWithExpandableHeroes

…bleHeroes

Add e.preventDefault() to Enter branch in handleKeyDown, mirroring the
existing Space branch. This suppresses the browser-synthesized click that
follows a keydown on a <button>, which would otherwise call commit() twice
and push two GA events (P2-1 finding from review cycle 1).

Add T09b and T10b: userEvent.keyboard assertions that dataLayer.push is
called EXACTLY once for Enter and Space respectively.
…ries

Finding C (review cycle 1):
- Add test-storybook script to package.json using already-installed
  @storybook/test-runner@^0.24.0 dev dependency.
- Add Viewport320, ReducedMotion, ForcedColors stories to ExpandableHeroes
  so T19 (prefers-reduced-motion), T20 (320px stack), and T24 (forced-colors)
  have runnable story fixtures for automated and manual verification.
…ated title spec alignment

Finding D: active panel rule was overriding position to 'relative', cancelling
the base rule's 'position: absolute'. Remove the position override — panel
keeps absolute positioning to overlay the active pane's 70% flex column.
Also adds pointer-events:none default (panel) / auto (active panel).
Also adds :focus-visible outline on __panel per design-doc §6 (Finding G).

Finding F: switch rotated title from horizontal-tb+rotate(-90deg) to
vertical-rl+rotate(180deg) per design-doc §7 spec (reads bottom-to-top).
…t regression test

D1: remove unused extractStructure function from T28 describe block.
D2: remove unused index parameter from handlePointerDown.
T29b: add two structural assertions verifying the active panel is the
immediate next sibling of .is-active tab and lacks is-hidden class,
guarding against the Finding D regression (absolute overlay pattern).
…er-pane DOM (cycle 3)

- Replace sibling button+panel DOM with wrapper-per-pane __item structure
- __item divs are now the flex items carrying width logic (15%/70%)
- Layout option β: in-flow panel inside column flex __item drives row height
- Active __panel in flow inside active __item (Hero image drives item height)
- Collapsed __panel display:none; button fills full item area
- Update T28 test for new 3-item DOM (was 6 flat children)
- Update T29b structural invariants for __item.is-active selector
- Update HtmlParity story to match new wrapper DOM
- P3 deferred: focus ring width (-size-spacing-1 kept; no thin-border token)
Aligns this branch with the project-local pipeline convention
established in c54c2ca: .pipeline/ holds ephemeral run state
(design doc, impl report, review report, visual report, phase log)
and .intake/* holds user-supplied input assets (screenshots).
Neither belongs in the repo; agents should write to these paths
for the current run only.

Untracks the two .pipeline/ files (design-doc.md, impl-report.md)
that were committed earlier in this run before the .gitignore
update was in place. Files remain on disk; the working-tree
content is unchanged.
@mlsamuelson
mlsamuelson requested a review from a team as a code owner June 29, 2026 16:39
@mlsamuelson

Copy link
Copy Markdown
Member Author

Failing with build errors.

> @asu/unity-react-core:docs

JSDOC_ERROR: ERROR: Unable to parse a tag's type expression for source file /home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/packages/unity-react-core/src/core/types/expandable-heroes-types.js in line 17 with tag title "property" and text "{(index: number, paneData: ExpandableHeroPane) => void} [onPaneChange]": Invalid type expression "(index: number, paneData: ExpandableHeroPane) => void": Expected "$", "'", ".", "0", "@", "\"", "\\", "_", "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "finally", "for", "function", "if", "implements", "import", "in", "instanceof", "interface", "let", "new", "package", "private", "protected", "public", "return", "static", "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while", "with", "yield", Unicode letter number, Unicode lowercase letter, Unicode modifier letter, Unicode other letter, Unicode titlecase letter, Unicode uppercase letter, or [1-9] but " " found.

    at Explain._runJsdoc (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/explain.js:61:24)

    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

    ... 2 lines matching cause stack trace ...

    at async JsdocToMarkdown.render (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:54:28) {

  cause: Error: jsdoc exited with non-zero code: 1

      at Explain._runJsdoc (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/explain.js:51:15)

      at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

      at async Explain.execute (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/jsdoc-command.js:56:16)

      at async JsdocToMarkdown.getTemplateData (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:68:23)

      at async JsdocToMarkdown.render (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:54:28)

}



> @asu/app-webdir-ui:docs





> @asu/component-news:docs



JSDOC_ERROR: ERROR: Unable to parse a tag's type expression for source file /home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/packages/unity-react-core/src/core/types/expandable-heroes-types.js in line 17 with tag title "property" and text "{(index: number, paneData: ExpandableHeroPane) => void} [onPaneChange]": Invalid type expression "(index: number, paneData: ExpandableHeroPane) => void": Expected "$", "'", ".", "0", "@", "\"", "\\", "_", "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "finally", "for", "function", "if", "implements", "import", "in", "instanceof", "interface", "let", "new", "package", "private", "protected", "public", "return", "static", "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while", "with", "yield", Unicode letter number, Unicode lowercase letter, Unicode modifier letter, Unicode other letter, Unicode titlecase letter, Unicode uppercase letter, or [1-9] but " " found.

    at Explain._runJsdoc (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/explain.js:61:24)

    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

    ... 2 lines matching cause stack trace ...

    at async JsdocToMarkdown.render (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:54:28) {

  cause: Error: jsdoc exited with non-zero code: 1

      at Explain._runJsdoc (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/explain.js:51:15)

      at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

      at async Explain.execute (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/jsdoc-command.js:56:16)

      at async JsdocToMarkdown.getTemplateData (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:68:23)

      at async JsdocToMarkdown.render (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:54:28)

}



> @asu/component-events:docs



JSDOC_ERROR: ERROR: Unable to parse a tag's type expression for source file /home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/packages/unity-react-core/src/core/types/expandable-heroes-types.js in line 17 with tag title "property" and text "{(index: number, paneData: ExpandableHeroPane) => void} [onPaneChange]": Invalid type expression "(index: number, paneData: ExpandableHeroPane) => void": Expected "$", "'", ".", "0", "@", "\"", "\\", "_", "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "finally", "for", "function", "if", "implements", "import", "in", "instanceof", "interface", "let", "new", "package", "private", "protected", "public", "return", "static", "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while", "with", "yield", Unicode letter number, Unicode lowercase letter, Unicode modifier letter, Unicode other letter, Unicode titlecase letter, Unicode uppercase letter, or [1-9] but " " found.

    at Explain._runJsdoc (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/explain.js:61:24)

    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

    ... 2 lines matching cause stack trace ...

    at async JsdocToMarkdown.render (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:54:28) {

  cause: Error: jsdoc exited with non-zero code: 1

      at Explain._runJsdoc (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/explain.js:51:15)

      at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

      at async Explain.execute (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-api/lib/jsdoc-command.js:56:16)

      at async JsdocToMarkdown.getTemplateData (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:68:23)

      at async JsdocToMarkdown.render (file:///home/jenkins/agent/workspace/ity-stack_feat_expandable-heroes/node_modules/jsdoc-to-markdown/index.js:54:28)

}



> @asu/app-degree-pages:docs





> @asu/component-header-footer:docs





 



 >  Lerna (powered by Nx)   Running target docs for 7 projects failed



   Failed tasks:

   

   - @asu/unity-react-core:docs

   - @asu/component-news:docs

   - @asu/component-events:docs



node:child_process:1000

    throw err;

    ^



Error: Command failed: lerna run --ignore=@asu/unity-bootstrap-theme docs

    at genericNodeError (node:internal/errors:985:15)

    at wrappedFn (node:internal/errors:539:14)

    at checkExecSyncError (node:child_process:925:11)

    at Object.execSync (node:child_process:997:15)

    at [eval]:1:44

    at runScriptInThisContext (node:internal/vm:219:10)

    at node:internal/process/execution:451:12

    at [eval]-wrapper:6:24

    at runScriptInContext (node:internal/process/execution:449:60)

    at evalFunction (node:internal/process/execution:283:30) {

  status: 1,

  signal: null,

  output: [ null, null, null ],

  pid: 3427,

  stdout: null,

  stderr: null

}



Node.js v24.13.1

script returned exit code 1

jsdoc-to-markdown (catharsis) cannot parse the TS arrow function syntax
'(index: number, paneData: ExpandableHeroPane) => void' inside a
@Property tag, breaking the docs target in 'yarn build'. Replace with
the catharsis-compatible function type form
'function(number, ExpandableHeroPane): void'.

Refs: unity-components skill 'JSDoc types'
…tside tablist (WCAG 1.3.1)

- Add aria-label={pane.title?.text ?? ''} on each tab button (WCAG 4.1.2)
- Remove non-viable aria-owns from tablist (axe 4.10.2 empirically proved
  aria-owns does not re-scope aria-required-children)
- Wrap tablist in outer .uds-expandable-heroes-container div
- Strip role/id/aria-labelledby/tabIndex from in-tablist __panel divs;
  add aria-hidden=true (decorative; sighted layout only)
- Add three semantic tabpanels as DOM siblings of the tablist; active
  panel: visually-hidden class; inactive: HTML hidden attribute
- Each outside tabpanel renders <Hero> once (duplicate, bounded: 3 panes)
- Update _heroes-expandable.scss: add .uds-expandable-heroes-container
  rule; update header comment + DOM diagram for Option C
- Update HtmlParity story to mirror the new dual-render DOM exactly
- Update tests: replace T29d aria-owns assertion with no-aria-owns
  regression guard; add T29e/T29f/T29g/T29h/T29i; update T28/T02/T29b
  for new DOM shape

axe-core 4.10.2 live verification: violations:[] on all 5 stories
vitest: 247/247 pass
build: exit 0
SCSS literal audit: clean (only 15% and 70% literals)
@asu-jenkins-devops

Copy link
Copy Markdown
Collaborator

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.

2 participants