Skip to content

feat(core): parse-parity suite for acorn parser (T6d)#1370

Open
vanceingalls wants to merge 1 commit into
06-12-feat_core_acorn_gsap_write_path_magic-string_offset-splice_t6c_from
06-12-feat_core_parse-parity_suite_for_acorn_parser_t6d_
Open

feat(core): parse-parity suite for acorn parser (T6d)#1370
vanceingalls wants to merge 1 commit into
06-12-feat_core_acorn_gsap_write_path_magic-string_offset-splice_t6c_from
06-12-feat_core_parse-parity_suite_for_acorn_parser_t6d_

Conversation

@vanceingalls

Copy link
Copy Markdown
Collaborator

Summary

  • Adds gsapParserAcorn.full.test.ts — 60 passing tests that run the full parse scenario suite from gsapParser.test.ts against parseGsapScriptAcorn
  • Fixes a bug in gsapParserAcorn.ts: object-array keyframe percentage calculation had cumulative/percentage order swapped vs recast (fix: add duration before computing percentage, matching recast behavior)
  • 4 tests are it.skip'd — write-path cases already covered by gsapWriter.acorn.test.ts
  • Stacked on T6c (magic-string write path)

Coverage added

Parse scenarios ported from gsapParser.test.ts:

  • Basic .to() / .from() / .set() / .fromTo() parsing
  • resolvedStart position resolution (relative, absolute, implicit, chained)
  • Timeline defaults inheritance
  • Property group classification
  • Stagger / yoyo / repeat round-trips
  • Unresolvable value round-trips
  • Variable-target resolution (querySelector, getElementById, querySelectorAll)
  • Array targets, chained tween calls, gsap.utils.toArray
  • Lexical scoping, forEach/map callback targets
  • Native GSAP keyframes (percentage, object-array, simple-array, three-level easing)

Test plan

  • bunx vitest run packages/core/src/parsers/gsapParserAcorn.full.test.ts → 60 pass, 4 skip
  • bunx vitest run packages/core/src/parsers/gsapParser.acorn.test.ts packages/core/src/parsers/gsapWriter.acorn.test.ts → 35 pass (T6b + T6c unaffected)

🤖 Generated with Claude Code

Copy link
Copy Markdown
Collaborator Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

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.

1 participant