Skip to content

4/7: HTML test report generation#11

Closed
Amnell wants to merge 19 commits into
mainfrom
pr/04-test-reporting
Closed

4/7: HTML test report generation#11
Amnell wants to merge 19 commits into
mainfrom
pr/04-test-reporting

Conversation

@Amnell
Copy link
Copy Markdown
Owner

@Amnell Amnell commented May 27, 2026

Summary

Add HTML test report generation tooling for W3C test suite coverage visualization.

Changes

  • Create a script to generate HTML report
  • Update coverage data
  • Test report tool improvements

Merge order

⚠️ Merge these PRs in order: #8#9#10#11#12#13#14. After merging each PR, GitHub will automatically update the next PR's base to main.

Stack:

  1. Swift 6 prep & test modernization (1/7: Swift 6 prep & test modernization #8)
  2. Docs & tooling (2/7: Project docs, tooling & initial W3C coverage #9)
  3. Pattern/gradient paint servers (3/7: Implement pattern & gradient paint servers #10)
  4. Test reporting ← this PR
  5. DOM scripting & currentColor
  6. Shapes & coordinates
  7. Structural elements & text

Amnell added 19 commits May 23, 2026 17:19
…ers-grad-03-b)

- Add SVGPattern model (SVGPaint subclass) with CGBitmapContext tile rendering
- Add draw(in: CGContext) to SVGNode (no-op), SVGRect, and SVGGroup
- Add SVGParser.parseElements(_:index:) internal helper for pattern tile parsing
- Register <pattern> elements as paint servers in SVGIndex with xlink:href inheritance
- Wire SVGPattern into SVGPaint.apply(paint:model:) switch
- Add pserversGrad03B test and reference file
- SVGPattern.apply() now uses Canvas-based tiling when patternTransform != .identity
  Computes inverse-transform bounds to determine exact tile coverage; falls back
  to cheaper ImagePaint path for identity transforms
- Add pserversGrad06B test and reference file
…itmapContext

Previously the parser baked gradientTransform into cx/cy/r, which only worked
for uniform scale+translate and silently dropped skew/rotation (shear).

Changes:
- SVGRadialGradient now stores gradientTransform: CGAffineTransform (default .identity)
- Parser no longer transforms the gradient points; raw gradient-space cx/cy/fx/fy/r
  are preserved and gradientTransform is passed directly to the model
- SVGRadialGradient.apply() uses a CGBitmapContext path when gradientTransform is
  non-identity: sets up y-flip + shape-offset CTM, concatenates gradientTransform,
  then calls drawRadialGradient in gradient space so CoreGraphics handles the full
  affine deformation (translate, scale, skewX/Y, rotate, arbitrary matrix)
- Falls back to the existing SwiftUI RadialGradient path for identity transforms

Fixes the pservers-grad-06-b skewX(45) radial gradient rendering.
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