Skip to content

feat(web_core): expand conformance suite coverage and unskip tests - #2315

Open
gspencergoog wants to merge 4 commits into
v1_0_firing_tsfrom
v1_0_conformance_ts
Open

feat(web_core): expand conformance suite coverage and unskip tests#2315
gspencergoog wants to merge 4 commits into
v1_0_firing_tsfrom
v1_0_conformance_ts

Conversation

@gspencergoog

@gspencergoog gspencergoog commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements graph topology validation and strict schema mode in TypeScript web core to achieve 100% conformance test suite pass rate with zero skipped tests.

Changes

  • MessageProcessor:
    • Implemented validateTopology graph integrity checks (missing root component, circular reference detected, dangling reference, orphaned component).
    • Added strict theme and catalog component Zod schema validation when strictMode: true option is passed.
  • SurfaceComponentsModel:
    • Added size, keys, and values accessors to support component collection inspection during topology graph traversal.
  • Conformance Harness (conformance_test.mjs):
    • Added jsonSchemaToZod converter for dynamic YAML test catalog component and theme definitions.
    • Passed strictMode: Boolean(testCase.strictMode) to MessageProcessor.
    • Cleared SKIP_TEST_NAMES so all 221 conformance test vectors execute and pass.

Impact & Risks

  • Impact: All Web Core conformance test vectors (221/221) now run and pass successfully.
  • Risks: None. Topology and strict schema validation are gated by strictMode.

Testing

  1. Run unit tests:

    yarn --cwd typescript/web_core test

    Verify 291/291 unit tests pass.

  2. Run conformance harness:

    node typescript/web_core/tests/conformance/conformance_test.mjs

    Verify 221/221 test cases pass with 0 failed and 0 skipped.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements support for normalizing v0.8 components, handles structured contents in data model updates, and falls back to the first catalog if catalogId is omitted. It also updates several conformance tests to validate these changes. The review feedback suggests several improvements for robustness: ensuring normalizeV08Component returns a safe fallback object and uses unknown instead of any; avoiding the spread operator to prevent property collisions; using the in operator instead of nullish coalescing to preserve explicit null values in data model updates; and replacing truthiness checks with nullish coalescing or explicit undefined checks to prevent valid falsy values (like 0 or empty strings) from being incorrectly overridden.

Comment thread typescript/web_core/src/processing/adapters/v0_8.ts Outdated
Comment thread typescript/web_core/src/processing/adapters/v0_8.ts
Comment thread typescript/web_core/src/processing/adapters/v0_8.ts Outdated
Comment thread typescript/web_core/src/processing/adapters/v0_8.ts Outdated
Comment thread typescript/web_core/src/processing/message-processor.ts Outdated
@gspencergoog
gspencergoog force-pushed the v1_0_conformance_ts branch 6 times, most recently from e215045 to ca7971f Compare August 19, 2026 00:30
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