Skip to content

test(conformance): cover Express Event userMessage and nested action slots - #3637

Open
ditman wants to merge 3 commits into
fix/dart-express-actionsfrom
test/express-action-conformance
Open

ditman wants to merge 3 commits into
fix/dart-express-actionsfrom
test/express-action-conformance

Conversation

@ditman

@ditman ditman commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Shared conformance cases for the two Express gaps in #3598, so the TS, Python and Dart fixes in this stack are held to the same behavior.

Additionally, in list_item_action_catalog_v1_0.json and list_item_action_catalog_v09.json: a Links component whose items[].action and primary are the common Action, plus openUrl. The v0.9 one declares protocolVersion: "0.9" explicitly: the Python and Dart harnesses load an undeclared catalog as v1.0, TS as v0.9.

Validated with conformance/tests/test_conformance_yaml.py. Passes in all three SDKs on the branches below it in the stack.

Pre-launch Checklist

One time:

For this PR:

  • I have updated the relevant CHANGELOG.md file.
  • I updated/added relevant documentation.
  • My code changes (if any) have tests.
  • If my branch is on a fork, I have verified that scripts/e2e_test.sh passes.

If you need help, consider asking for advice on the discussion board.


Stack created with GitHub Stacks CLI • Give Feedback 💬

@ditman
ditman added this pull request to stack #3638 October 26, 2026 20:01
@github-project-automation github-project-automation Bot moved this to Todo in A2UI Oct 26, 2026

@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 introduces new conformance test cases for the Express compiler and decompiler, specifically focusing on handling userMessage arguments on events, keyword/positional context arguments, and function calls nested inside list item action slots. It also adds two new test catalog files (list_item_action_catalog_v09.json and list_item_action_catalog_v1_0.json) to support these tests. There are no review comments, so no feedback is provided.

@ditman
ditman force-pushed the test/express-action-conformance branch from cd71097 to cc95c1a Compare October 26, 2026 20:32
ditman added a commit to ditman/a2ui-project-a2ui that referenced this pull request Oct 26, 2026
dorny/paths-filter reads a pull request's files from the GitHub API
whenever it has a token, and its `token` input defaults to
`github.token`. A transient API error then fails the change-detection
job, and with it every job that depends on it, on a pull request that
changed nothing relevant.

Pass an empty token in the three workflows that use the action, so a
pull request is read as `git diff pull_request.base.sha..HEAD`, where
HEAD is the pull request's merge commit. The action fetches the base
commit itself at depth 1, so the shallow checkouts stay as they are.
Push and scheduled runs never used the API and are unchanged.

The file sets are the same: the merge commit's first parent is
`base.sha`, so the diff is the pull request's changes against the base.
Checked on a2ui-project#3633, a2ui-project#3634 and a2ui-project#3637: `git diff merge^1..merge` lists
exactly the files `GET /pulls/N/files` returns. The filters use no
status qualifiers, so the A/M/D statuses git reports cannot change a
result either.
@ditman
ditman force-pushed the test/express-action-conformance branch from cc95c1a to 508a06b Compare October 26, 2026 21:38
@ditman
ditman requested a review from nan-yu October 26, 2026 21:39
@ditman
ditman marked this pull request as ready for review October 26, 2026 21:40
@ditman
ditman force-pushed the test/express-action-conformance branch from 508a06b to 445a45e Compare October 27, 2026 01:35
@ditman
ditman force-pushed the test/express-action-conformance branch from 445a45e to 3098b65 Compare October 28, 2026 00:31
…slots

Add compile and decompile cases for the two Express gaps reported in #3598:

- `Event(name, context?, userMessage=?, context=?)`: `userMessage` compiles to
  the v1.0 `event.userMessage` field (string or `$path`), `context=` is
  accepted by keyword, an unknown keyword or a duplicate context is a
  validation error, and `userMessage` before v1.0 is a validation error.
- A function call in an action slot nested inside a list item compiles to a
  `functionCall` action, also when the item is reached through a variable.
- The decompiler writes `userMessage=` back and nested action slots round-trip.

New catalogs `list_item_action_catalog_v1_0.json` and
`list_item_action_catalog_v09.json` declare a `Links` component whose
`items[].action` is the common `Action` type.
Action.event.userMessage is a DynamicString, so a function call compiles
and round-trips, and a map literal is a validation error.
@ditman
ditman force-pushed the test/express-action-conformance branch from 3098b65 to bb41082 Compare October 28, 2026 01:13

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