Skip to content

test(e2e): golden-transcript E2E scenario hub, runners, v0.9.1 lowering, and manifest CI - #3918

Draft
gspencergoog wants to merge 8 commits into
a2ui-project:mainfrom
gspencergoog:test/e2e-web-runners-lowering-and-ci
Draft

gspencergoog wants to merge 8 commits into
a2ui-project:mainfrom
gspencergoog:test/e2e-web-runners-lowering-and-ci

Conversation

@gspencergoog

@gspencergoog gspencergoog commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Unit conformance suites test the agent SDKs and UI renderers separately. As a result, they can miss contract drift between emitted agent envelopes and renderer state transitions across multi-turn interactions.

This pull request adds a golden-transcript end-to-end (e2e) conformance corpus (conformance/e2e/) and v1.0 to v0.9.1 scenario lowering (conformance/scripts/lower_e2e_scenarios.py). It also adds agent-half runners in Python, TypeScript, and Dart, renderer-half runners in Lit, React, Angular, Flutter, and SwiftUI, and check_executed_cases.py --corpus e2e in CI.

Note: This pull request stacks on #3887. Merging #3887 first will isolate this diff to the E2E scenario hub and runners.

Reviewer Focus

  • Start with conformance/conformance_schema.json (E2EScenario), conformance/e2e/*.yaml, conformance/scripts/e2e_outcome.py, conformance/scripts/compare_e2e_outcome.py, and conformance/scripts/lower_e2e_scenarios.py to review the scenario schema, renderer-visible outcome comparator, and v0.9.1 lowering pipeline.
  • Review the agent-half E2E runners in python/a2ui_agent/tests/conformance/test_e2e_conformance.py, typescript/agents/a2ui_agent/tests/conformance/e2e-scenarios.test.ts, and dart/a2ui_agent/test/conformance/e2e_scenarios_conformance_test.dart.
  • Review the renderer-half E2E runners in typescript/renderers/lit/src/tests/e2e_scenarios.test.ts, typescript/renderers/react/tests/e2e_scenarios.test.tsx, typescript/renderers/angular/src/e2e_scenarios.spec.ts, dart/a2ui_flutter/test/e2e_scenarios_test.dart, and swift/swiftui/Tests/A2UISwiftUITests/E2EScenarioTests.swift.
  • You can skim conformance/e2e/v0_9_1/*.yaml, which are generated from conformance/e2e/*.yaml by conformance/scripts/lower_e2e_scenarios.py and checked in conformance/tests/test_e2e_scenarios.py.

Changes

Golden-Transcript E2E Corpus and Tools (conformance/e2e/, conformance/scripts/)

  • Adds four multi-turn v1.0 scenarios in conformance/e2e/ (newsletter_signup.yaml, restaurant_list_booking.yaml, login_form_action.yaml, and missing_surface_error.yaml) covering Direct JSON, Express, user actions, local validation, and INTEGRITY_ERROR recovery.
  • Adds conformance/scripts/lower_e2e_scenarios.py to generate the v0.9.1 equivalents in conformance/e2e/v0_9_1/*.yaml, plus conformance/scripts/import_recording.py to import JSONL transcripts.
  • Adds conformance/scripts/e2e_outcome.py and compare_e2e_outcome.py to compare renderer-visible surface outcomes across inference formats.

Agent-Half E2E Runners (python/a2ui_agent/, typescript/agents/a2ui_agent/, dart/a2ui_agent/)

  • Replays each scenario's turns in Python (test_e2e_conformance.py), TypeScript (e2e-scenarios.test.ts), and Dart (e2e_scenarios_conformance_test.dart).
  • Checks system prompt instructions, inbound client_message parsing, RendererState updates, and semantic outcome parity against the golden envelopes.

Renderer-Half E2E Runners (typescript/renderers/, dart/a2ui_flutter/, swift/swiftui/)

  • Replays each scenario's envelopes, user_action triggers, assert_view, assert_data, and assert_outbound expectations in Lit, React, Angular, Flutter (e2e_scenarios_test.dart plus example/test/hub_driver.dart and example_v0_9/test/hub_driver.dart), and SwiftUI (E2EScenarioTests.swift).
  • Wires check_executed_cases.py --corpus e2e into .github/workflows/python_ci.yml, .github/workflows/web_ci.yml, .github/workflows/flutter_packages_test.yml, and .github/workflows/swift_build_and_test.yml.

Impact & Risks

  • Adds RendererCapabilities and A2uiInboundMessage support from #3881 so the agent-half E2E runners can parse client_message envelopes and a2uiClientCapabilities.
  • All other changes live in conformance/e2e/, test runners, and CI workflows.

Testing

  • Ran uv run pytest conformance/tests python/a2ui_agent/tests/conformance/test_e2e_conformance.py -q.
  • Ran corepack yarn workspace @a2ui/agent test, corepack yarn workspace @a2ui/lit test, corepack yarn workspace @a2ui/react test, and corepack yarn workspace @a2ui/angular test.
  • Ran dart test test/conformance/e2e_scenarios_conformance_test.dart in dart/a2ui_agent, flutter test test/e2e_scenarios_test.dart in dart/a2ui_flutter, and swift test in swift/swiftui.

🤖 Agent-generated

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@gspencergoog
gspencergoog force-pushed the test/e2e-web-runners-lowering-and-ci branch from d46bcc6 to 3548f97 Compare November 4, 2026 21:44
…s-lowering-and-ci

# Conflicts:
#	.github/workflows/flutter_packages_test.yml
#	.github/workflows/python_ci.yml
#	.github/workflows/swift_build_and_test.yml
#	.github/workflows/web_ci.yml
#	conformance/conformance_harness_implementation_guide.md
#	dart/a2ui_agent/test/conformance/unsupported_suites_test.dart
#	dart/a2ui_flutter/test/adapter_conformance_test.dart
#	dart/a2ui_flutter/test/adapter_harness.dart
#	python/a2ui_a2a/tests/conformance/test_a2a_integration.py
#	python/a2ui_a2a/tests/conftest.py
#	python/a2ui_adk/tests/conformance/test_adk_extensions.py
#	python/a2ui_adk/tests/conftest.py
#	python/a2ui_agent/tests/conformance/conformance_helpers.py
#	python/a2ui_agent/tests/conformance/conftest.py
#	python/a2ui_agent/tests/conformance/test_unsupported_suites.py
#	swift/swiftui/Tests/A2UISwiftUITests/AdapterConformanceTests.swift
#	swift/swiftui/Tests/A2UISwiftUITests/AdapterHarness.swift
#	typescript/agents/a2ui_agent/tests/conformance/catalog-provider.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/catalog-resolution.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/catalog-transformer.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/conformance.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/direct-json-conformance.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/direct-json-prompt-generator.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/direct-json-response-streaming.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/express-conformance.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/express-response-streaming.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/loader.ts
#	typescript/agents/a2ui_agent/tests/conformance/manifest.ts
#	typescript/agents/a2ui_agent/tests/conformance/multi-catalog-conformance.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/skill-conformance.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/streamed-answer.test.ts
#	typescript/agents/a2ui_agent/tests/conformance/suite-helpers.ts
#	typescript/agents/a2ui_agent/tests/conformance/unsupported-suites.test.ts
#	typescript/core/web_core/tests/conformance/accessibility_conformance.test.ts
#	typescript/renderers/angular/karma.conf.js
#	typescript/renderers/angular/src/adapter_conformance.spec.ts
#	typescript/renderers/angular/src/adapter_harness.ts
#	typescript/renderers/lit/src/tests/adapter_conformance.test.ts
#	typescript/renderers/lit/src/tests/adapter_harness.ts
#	typescript/renderers/react/tests/adapter_conformance.test.tsx
#	typescript/renderers/react/tests/adapter_harness.tsx

This branch has not been deployed

No deployments
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