Skip to content

test: add QA Lab UX Matrix evidence scenario#94306

Merged
RomneyDa merged 2 commits into
openclaw:mainfrom
Solvely-Colin:codex/qa-lab-ux-matrix-scenario
Jun 18, 2026
Merged

test: add QA Lab UX Matrix evidence scenario#94306
RomneyDa merged 2 commits into
openclaw:mainfrom
Solvely-Colin:codex/qa-lab-ux-matrix-scenario

Conversation

@Solvely-Colin

@Solvely-Colin Solvely-Colin commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add ux-matrix-evidence-dashboard as a QA Lab script-backed scenario using the existing qa-lab: support script-backed evidence scenarios #94276 producer contract: execution.kind: script writes/imports producer-owned qa-evidence.json.
  • Add scripts/qa/ux-matrix-evidence-producer.ts, which writes a UX Matrix evidence bundle with coverage IDs, logs, screenshot/video artifacts where local Playwright can produce them, and blocked evidence when local prerequisites are unavailable.
  • Add focused catalog/runner regression coverage proving the scenario stays on the script contract and imports the expected producer evidence bundle.

Scope Notes

  • No execution.config.evidenceSummaryPath or Vitest sidecar evidence API is added.
  • No Evidence Archive/gallery implementation, product UI, GitHub Actions, smoke profile, or workflow wiring is changed here.
  • The generated producer-artifact-fixture HTML/PNG/WebM is producer/artifact proof only; it is explicitly not the QA Lab Evidence Archive UI.
  • Real QA Lab Evidence Archive UI proof was captured from the actual qa-lab: add evidence artifact gallery #94283 gallery UI stack at 911a2aafba4d0142ca9ce1a28aaaedefae54da36 while loading this PR's generated UX Matrix qa-evidence.json.

Verification

  • git diff --check
  • pnpm exec oxfmt --check --threads=1 scripts/qa/ux-matrix-evidence-producer.ts qa/scenarios/ui/ux-matrix-evidence-dashboard.yaml extensions/qa-lab/src/scenario-catalog.test.ts extensions/qa-lab/src/test-file-scenario-runner.test.ts
  • node scripts/run-vitest.mjs extensions/qa-lab/src/scenario-catalog.test.ts extensions/qa-lab/src/test-file-scenario-runner.test.ts --reporter=verbose
  • OPENCLAW_BUILD_PRIVATE_QA=1 pnpm openclaw qa suite --scenario ux-matrix-evidence-dashboard --output-dir .artifacts/qa-e2e/ux-matrix-script-proof --allow-failures
  • .agents/skills/autoreview/scripts/autoreview

Visual Proof

These embedded visuals are GitHub-hosted proof from the actual #94283 QA Lab Evidence Archive UI loading this PR's UX Matrix qa-evidence.json. They are not the producer artifact fixture.

QA Lab Evidence Archive UI loading UX Matrix evidence

QA Lab Evidence Archive UI previewing UX Matrix screenshot and log artifacts

Fallback raw files:

Evidence

Generated UX Matrix evidence from this branch:

  • .artifacts/qa-e2e/ux-matrix-script-proof/qa-evidence.json
  • .artifacts/qa-e2e/ux-matrix-script-proof/qa-suite-summary.json
  • .artifacts/qa-e2e/ux-matrix-script-proof/qa-suite-report.md
  • Producer-owned bundle: .artifacts/qa-e2e/ux-matrix-script-proof/script/ux-matrix-evidence-dashboard/qa-evidence.json

Real QA Lab Evidence Archive UI proof, captured from the actual #94283 UI stack loading the UX Matrix evidence bundle:

  • UI run command: OPENCLAW_BUILD_PRIVATE_QA=1 pnpm openclaw qa ui --port 58083 --embedded-gateway disabled
  • Capture command: QA_LAB_UI_URL=http://127.0.0.1:58083 node .artifacts/qa-e2e/ux-matrix-script-proof/real-evidence-archive-ui/capture-real-evidence-archive-ui.mjs (Playwright); it opens /evidence?path=.artifacts%2Fqa-e2e%2Fux-matrix-script-proof%2Fqa-evidence.json, selects ux-matrix.control-ui.screenshot-artifact, then selects ux-matrix.cli.entrypoint-help and expands Preview log.
  • GitHub proof assets: Solvely-Colin/pr-proof-assets@e60c91bc39061561be9e245eea56b216630a2a8f/openclaw-pr-94306/

Producer/artifact fixture proof only, not UI proof:

  • .artifacts/qa-e2e/ux-matrix-script-proof/script/ux-matrix-evidence-dashboard/surfaces/qa-lab/stages/producer-artifact-fixture/producer-artifact-fixture.html
  • .artifacts/qa-e2e/ux-matrix-script-proof/script/ux-matrix-evidence-dashboard/surfaces/qa-lab/stages/producer-artifact-fixture/producer-artifact-fixture.png
  • .artifacts/qa-e2e/ux-matrix-script-proof/script/ux-matrix-evidence-dashboard/surfaces/qa-lab/stages/producer-artifact-fixture/producer-artifact-fixture.webm

Observed local evidence result: scenario status pass, 3 evidence entries, 7 artifacts, 0 missing artifacts when loaded through the #94283 Evidence Archive API/UI.

Real behavior proof

Behavior addressed: QA Lab now has a repeatable UX Matrix scenario that uses the existing script producer contract and emits consumable QA evidence entries/artifacts.

Real environment tested: Local macOS source checkout, branch codex/qa-lab-ux-matrix-scenario, commit 5bd80b6620088953145686ff579c9336330e312b; real UI proof captured from #94283 stack 911a2aafba4d0142ca9ce1a28aaaedefae54da36.

Exact steps or command run after this patch: See Verification, Visual Proof, and Evidence above.

Evidence after fix: The scenario writes suite evidence, producer-owned qa-evidence.json, logs, screenshots, WebM producer fixture proof, and GitHub-hosted embedded real #94283 Evidence Archive UI screenshot/GIF proof.

Observed result after fix: Focused QA Lab tests passed; qa suite --scenario ux-matrix-evidence-dashboard produced 3 passing UX Matrix evidence entries: producer artifact fixture, control UI screenshot artifact, and CLI entrypoint help.

What was not tested: GitHub Actions/profile wiring was intentionally not added or tested. The real Evidence Archive UI proof depends on #94283's gallery UI stack being available; this PR does not include that UI implementation.

Copilot AI review requested due to automatic review settings June 17, 2026 23:54
@openclaw-barnacle openclaw-barnacle Bot added the proof: supplied External PR includes structured after-fix real behavior proof. label Jun 17, 2026

Copilot AI 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.

Pull request overview

Adds a Vitest-backed QA Lab scenario that produces UX Matrix evidence bundles and extends QA Lab’s server + web UI to load, browse, and stream declared evidence artifacts (including merged/suite evidence and blocked/skipped status handling).

Changes:

  • Add ux-matrix-evidence-dashboard QA scenario and a Vitest producer test that writes UX Matrix artifacts + qa-evidence.json.
  • Introduce Evidence Gallery model/types and QA Lab server endpoints to load evidence and serve declared artifacts.
  • Extend QA Lab web UI with an “Evidence Archive” tab, filters, and producer-context rendering.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
scripts/check-no-raw-channel-fetch.mjs Updates allowlisted callsite line numbers for qa-lab web app.
qa/scenarios/ui/ux-matrix-evidence-dashboard.yaml Adds new QA scenario definition targeting a Vitest producer with sidecar evidence summary.
extensions/qa-lab/shared/evidence-gallery-types.ts Defines shared view-model types for the Evidence Archive UI.
extensions/qa-lab/src/evidence-gallery.ts Implements evidence bundle loading, producer-context discovery, and artifact path containment/authorization.
extensions/qa-lab/src/evidence-gallery.test.ts Adds tests for gallery model building, UX Matrix producer detection (full/slim), and artifact containment.
extensions/qa-lab/src/lab-server.ts Adds /api/evidence and /api/evidence/artifact endpoints and maps gallery errors to HTTP responses.
extensions/qa-lab/src/lab-server.test.ts Tests artifact HEAD/GET streaming, headers, and declared/outside artifact rejections.
extensions/qa-lab/web/src/ui-render.ts Adds Evidence Archive rendering (filters, entry list, artifact cards, producer mini-grid).
extensions/qa-lab/web/src/styles.css Adds Evidence Archive layout + styling and evidence-focused shell layout.
extensions/qa-lab/web/src/app.ts Adds Evidence Archive state, URL param handling, and client-side evidence loading/actions.
extensions/qa-lab/web/src/ui-render.test.ts Tests evidence status tone mapping and UX Matrix cell linking/deferred previews.
extensions/qa-lab/src/test-file-scenario-runner.ts Supports scenario-produced evidence sidecars and merges them into suite evidence output.
extensions/qa-lab/src/test-file-scenario-runner.test.ts Tests sidecar evidence usage, stale sidecar cleanup, and failure fallback behavior.
extensions/qa-lab/src/suite.ts Extends suite scenario status to include skip.
extensions/qa-lab/src/suite-launch.runtime.ts Maps blocked/skipped native evidence to suite skip while preserving evidence.status detail.
extensions/qa-lab/src/suite-launch.runtime.test.ts Adds coverage for blocked native evidence mapping to skipped suite status.
extensions/qa-lab/src/scenario-catalog.test.ts Updates catalog expectations and asserts YAML config for the new scenario.
extensions/qa-lab/src/ux-matrix-evidence.test.ts Adds the Vitest UX Matrix evidence producer that writes artifacts and validates gallery loadability.

Comment thread extensions/qa-lab/src/evidence-gallery.ts
Comment thread extensions/qa-lab/src/test-file-scenario-runner.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e92898cedc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread extensions/qa-lab/src/evidence-gallery.ts Outdated
@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 18, 2026, 4:38 PM ET / 20:38 UTC.

Summary
Adds a QA Lab ux-matrix-evidence-dashboard YAML scenario, a script producer that writes UX Matrix QA evidence and artifacts, and regression tests for catalog loading and producer evidence import.

PR surface: Tests +71, Other +671. Total +742 across 4 files.

Reproducibility: not applicable. This PR adds a QA Lab evidence scenario rather than fixing a current-main bug. The changed behavior can be exercised with pnpm openclaw qa suite --scenario ux-matrix-evidence-dashboard, and the supplied media proof shows after-patch output loaded in QA Lab.

Review metrics: 1 noteworthy metric.

  • Executable QA scenario: 1 added. Selecting this QA Lab scenario runs a repo-owned producer script through the existing script execution contract, so maintainers should notice the executable QA surface before merge.

Stored data model
Persistent data-model change detected: serialized state: extensions/qa-lab/src/test-file-scenario-runner.test.ts. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: canonical
Canonical: #94306
Summary: This PR is the canonical open UX Matrix scenario-producer slice in the split QA Lab series.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Next step before merge

  • No automated repair lane is needed; the remaining action is maintainer review and merge decision, not a concrete code defect.

Security
Cleared: No concrete security or supply-chain concern found; the diff adds a QA-only script scenario and tests without workflow, dependency, lockfile, auth, or artifact-serving changes.

Review details

Best possible solution:

Land this narrow scenario-producer slice if maintainers want the UX Matrix scenario, while keeping Evidence Archive UI and workflow dispatch wiring in their separate related PRs.

Do we have a high-confidence way to reproduce the issue?

Not applicable; this PR adds a QA Lab evidence scenario rather than fixing a current-main bug. The changed behavior can be exercised with pnpm openclaw qa suite --scenario ux-matrix-evidence-dashboard, and the supplied media proof shows after-patch output loaded in QA Lab.

Is this the best way to solve the issue?

Yes; using the merged execution.kind: script producer contract is the narrowest maintainable boundary for this slice. The Evidence Archive UI and workflow wiring are already split into separate related PRs, which is cleaner than reviving the broad combined branch.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 61b116d5972c.

Label changes

Label justifications:

  • P2: This is a bounded QA Lab feature/test improvement with limited blast radius outside QA tooling.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (recording): Sufficient recording proof: inspected GitHub-hosted PNG/GIF/WebM assets show QA Lab Evidence Archive loading this PR's UX Matrix evidence with 3 passing entries and artifact previews.
  • proof: sufficient: Contributor real behavior proof is sufficient. Sufficient recording proof: inspected GitHub-hosted PNG/GIF/WebM assets show QA Lab Evidence Archive loading this PR's UX Matrix evidence with 3 passing entries and artifact previews.
  • proof: 🎥 video: Contributor real behavior proof includes video or recording evidence. Sufficient recording proof: inspected GitHub-hosted PNG/GIF/WebM assets show QA Lab Evidence Archive loading this PR's UX Matrix evidence with 3 passing entries and artifact previews.
Evidence reviewed

PR surface:

Tests +71, Other +671. Total +742 across 4 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 2 72 1 +71
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 2 671 0 +671
Total 4 743 1 +742

What I checked:

  • Repository policy applied: Root, scripts, and extensions AGENTS guidance was read and applied; the review checked the QA YAML scenario shape, repo-owned script execution boundary, and extension/test ownership constraints. (AGENTS.md:1, 61b116d5972c)
  • Current main script scenario contract: Current main expands script scenario args, runs execution.kind: script through node --import tsx, imports latest-run.json or producer qa-evidence.json, and normalizes producer artifact paths. (extensions/qa-lab/src/test-file-scenario-runner.ts:141, 61b116d5972c)
  • Current main gallery consumer: Current main already detects UX Matrix evidence entries and producer roots from declared artifacts, so this PR is feeding an existing Evidence Archive consumer rather than adding artifact-serving behavior. (extensions/qa-lab/src/evidence-gallery.ts:414, 61b116d5972c)
  • Scenario declaration: The PR declares the new QA scenario as a script-backed producer and passes ${outputDir} as the artifact base through the existing script scenario contract. (qa/scenarios/ui/ux-matrix-evidence-dashboard.yaml:28, 30b8ae26cb83)
  • Producer behavior: The producer builds CLI, screenshot, and producer-fixture cells, records blocked evidence when local prerequisites are unavailable, then writes qa-evidence.json, latest-run.json, manifest, matrix, ledger, commands, and scorecard files. (scripts/qa/ux-matrix-evidence-producer.ts:467, 30b8ae26cb83)
  • Regression coverage: The added runner test loads the new scenario, runs it through runQaTestFileScenarios, validates three imported UX Matrix evidence entries, checks expected coverage IDs, and verifies producer fixture artifact paths. (extensions/qa-lab/src/test-file-scenario-runner.test.ts:693, 30b8ae26cb83)

Likely related people:

  • Solvely-Colin: Authored the merged script-backed QA scenario contract and Evidence Archive prerequisite PRs that this scenario producer builds on, and authored the main current PR commit. (role: feature owner and recent area contributor; confidence: high; commits: 591313e80a5e, c677424edba0, 3dc2d1a6888a; files: extensions/qa-lab/src/test-file-scenario-runner.ts, extensions/qa-lab/src/evidence-gallery.ts, scripts/qa/ux-matrix-evidence-producer.ts)
  • RomneyDa: Authored recent merged QA suite runner and evidence-profile work in the same path, and the current PR head includes this contributor's lint repair commit. (role: adjacent QA Lab runner and evidence contributor; confidence: high; commits: 561b293c7a96, 1f8c4d3958b2, 30b8ae26cb83; files: extensions/qa-lab/src/test-file-scenario-runner.ts, extensions/qa-lab/src/evidence-summary.ts, scripts/qa/ux-matrix-evidence-producer.ts)
  • vincentkoc: The local current-main history and blame for the scenario catalog and test-file runner point to a recent grafted commit by this contributor, which is useful routing context but less specific than the merged PR history. (role: recent current-main area contributor; confidence: medium; commits: 65e77b82f5d3; files: extensions/qa-lab/src/scenario-catalog.ts, extensions/qa-lab/src/test-file-scenario-runner.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. labels Jun 18, 2026
@Solvely-Colin
Solvely-Colin force-pushed the codex/qa-lab-ux-matrix-scenario branch from 6ff3c68 to 5bd80b6 Compare June 18, 2026 13:54
@openclaw-barnacle openclaw-barnacle Bot added size: L and removed size: XL proof: sufficient ClawSweeper judged the real behavior proof convincing. labels Jun 18, 2026
@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 18, 2026
@clawsweeper clawsweeper Bot added status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. and removed merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. labels Jun 18, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 18, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 🎥 video Contributor real behavior proof includes video or recording evidence. and removed proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jun 18, 2026
@RomneyDa
RomneyDa force-pushed the codex/qa-lab-ux-matrix-scenario branch from 710885e to 30b8ae2 Compare June 18, 2026 20:16
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 18, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 18, 2026
@RomneyDa
RomneyDa merged commit d5a27b0 into openclaw:main Jun 18, 2026
171 checks passed
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 19, 2026
* test: add qa lab ux matrix script scenario

* fix(qa-lab): annotate UX Matrix producer catch callback as unknown for oxlint

---------

Co-authored-by: Dallin Romney <[email protected]>
cxbAsDev pushed a commit to cxbAsDev/openclaw that referenced this pull request Jun 23, 2026
* test: add qa lab ux matrix script scenario

* fix(qa-lab): annotate UX Matrix producer catch callback as unknown for oxlint

---------

Co-authored-by: Dallin Romney <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

extensions: qa-lab P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: L status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants