Skip to content

docs(examples): purchase info-records report (SAP Fiori + Excel) - #487

Merged
HappyDevs1 merged 1 commit into
feat/assert-spreadsheet-grammarfrom
feat/purchase-info-records-example
Aug 18, 2026
Merged

docs(examples): purchase info-records report (SAP Fiori + Excel)#487
HappyDevs1 merged 1 commit into
feat/assert-spreadsheet-grammarfrom
feat/purchase-info-records-example

Conversation

@HappyDevs1

Copy link
Copy Markdown
Collaborator

Summary

Stacked on #486 (Slice 3c: grammar/record/replay wiring) — last PR in this stack.

  • examples/fiori/purchase-info-records-report.flow.yaml: P-190-040-080-2 from the UAT test-case PDF. Unlike manage-info-records.flow.yaml (P-190-040-070-2, editing one record), this case never stays inside the browser — it exports to a spreadsheet and finishes the assertion in Excel. First example exercising the full stack this PR series built: a captured launch command (EXCEL.EXE ${captured.pir_export}), a pinned browser download (Wait until the download completes as), and the out-of-band spreadsheet read (assert_spreadsheet).
  • Drafted with flowproof author-from-doc against the source PDF, then hand-extended with the excel: surface and the two new step forms. Two steps are left as flagged TODOs rather than guessed — the source PDF's own tester hit the same ambiguity live ("three near-identical tile options, no clear single target given" and "extract... no specific element identified"); resolving them needs the live app, which is flowproof record's job, not a guess made from a document.
  • docs/authoring.md: the Wait until the download completes as step and the ${captured.x}-in-a-launch-command capability (both landed in earlier PRs in this stack without their prose) — deferred here to pair with the flow that actually demonstrates them.
  • Not yet run against a live SAP system (no Windows/SAP/Excel access in this environment) — validated by FlowSpec::parse accepting the whole file, and a live flowproof record attempt reaching actual browser navigation before failing on a placeholder domain, proving every step form resolves. The unattended CI recording job against the real self-hosted runner is a separate PR (touches .github/workflows/, which CLAUDE.md reserves for a human to open).

This is the last PR in the feat/captured-surface-launchfeat/browser-downloads-capturefeat/assert-spreadsheet-formatfeat/assert-spreadsheet-probefeat/assert-spreadsheet-grammarfeat/purchase-info-records-example stack. I verified the full combined tree is byte-identical to what a single unsplit PR would have produced (no content lost or duplicated across the split).

Test plan

  • cargo test --workspace — 59/59 suites, 1001 tests
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo fmt --check
  • scripts/gate/ratchets.sh (against this PR's actual base) — diff size 136/400

🤖 Generated with Claude Code

https://claude.ai/code/session_01FrvHcYH5Soxy5x9hBMjEob

@HappyDevs1
HappyDevs1 marked this pull request as ready for review August 18, 2026 09:08
Copilot AI lite review requested due to automatic review settings August 18, 2026 09:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

P-190-040-080-2 from the UAT test-case PDF: run and export a purchasing
info records report in Fiori, then review the export in Excel — unlike
manage-info-records.flow.yaml (P-190-040-070-2, editing one record),
this case never stays inside the browser. First example exercising the
full stack this PR series built: a captured launch command (`EXCEL.EXE
${captured.pir_export}`), a pinned browser download (`Wait until the
download completes as`), and the out-of-band spreadsheet read
(`assert_spreadsheet`).

Drafted with `flowproof author-from-doc` against the source PDF, then
hand-extended with the `excel:` surface and the two new step forms.
Two steps are left as flagged TODOs rather than guessed: the source
PDF's own tester hit the same ambiguity live ("three near-identical
tile options, no clear single target given" and "extract... no
specific element identified") — resolving them needs the live app,
which is `flowproof record`'s job, not a guess made from a document.

Also documents the `Wait until the download completes as` step and the
`${captured.x}`-in-a-launch-command capability in docs/authoring.md,
alongside the multi-surface section — both landed in earlier PRs in
this stack without their prose, deferred here to pair with the flow
that actually demonstrates them.

Not yet run against a live SAP system (no Windows/SAP/Excel access in
this environment) — validated by `FlowSpec::parse` accepting the whole
file and a live `flowproof record` attempt reaching actual browser
navigation before failing on a placeholder domain, proving every step
form resolves. The unattended CI recording job against the real
self-hosted runner is a separate PR (touches .github/workflows/, which
CLAUDE.md reserves for a human to open).
@HappyDevs1
HappyDevs1 force-pushed the feat/purchase-info-records-example branch from 450472f to 1da37b0 Compare August 18, 2026 09:09
@HappyDevs1
HappyDevs1 merged commit c9dcc2e into main Aug 18, 2026
9 checks passed
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.

2 participants