Skip to content

chore: add desktop e2e coverage collection and reporting#698

Merged
mrcfps merged 20 commits intomainfrom
nexu-e2e-coverage
Apr 6, 2026
Merged

chore: add desktop e2e coverage collection and reporting#698
mrcfps merged 20 commits intomainfrom
nexu-e2e-coverage

Conversation

@mrcfps
Copy link
Copy Markdown
Contributor

@mrcfps mrcfps commented Mar 30, 2026

What

Add end-to-end desktop coverage capture and reporting across the CI workflow, Electron/Node processes, and packaged Chromium targets.

Why

Desktop E2E runs previously proved behavior but gave no actionable coverage output, which made it hard to measure exercised paths or upload results to Codecov.

How

  • add workflow/build gating plus coverage environment plumbing for controller, desktop, and packaged launchd manifests
  • collect and merge Node V8 coverage with packaged Chromium precise coverage, then emit raw metadata, reports, summaries, and Codecov artifacts
  • document the desktop coverage flow and tighten launchd uninstall waiting so the validation suite passes reliably

Affected areas

  • Desktop app (Electron shell)
  • Controller (backend / API)
  • Web dashboard (React UI)
  • OpenClaw runtime
  • Skills
  • Shared schemas / packages
  • Build / CI / Tooling

Checklist

  • pnpm typecheck passes
  • pnpm lint passes
  • pnpm test passes
  • pnpm generate-types run (if API routes/schemas changed)
  • No credentials or tokens in code or logs
  • No any types introduced (use unknown with narrowing)

Notes for reviewers

  • The branch contains the earlier Ralph loop WIP commits plus a final validation fix commit; the PR diff is the reliable review surface.
  • pnpm install was required in this worktree before validation because dependencies were not installed yet.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

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: 7f2c71ae03

ℹ️ 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 .github/workflows/desktop-e2e.yml
Comment thread e2e/desktop/scripts/merge-coverage.mjs Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

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: b2653f4b37

ℹ️ 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 e2e/desktop/scripts/merge-coverage.mjs Outdated
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Mar 31, 2026

Deploying nexu-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: f0410df
Status: ✅  Deploy successful!
Preview URL: https://2568c67e.nexu-docs.pages.dev
Branch Preview URL: https://nexu-e2e-coverage.nexu-docs.pages.dev

View logs

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

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: c79c1568a8

ℹ️ 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 e2e/desktop/scripts/merge-coverage.mjs
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

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: efaced6a08

ℹ️ 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 apps/controller/src/services/skillhub/skill-dir-watcher.ts
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

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: 66ece12e53

ℹ️ 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 e2e/desktop/scripts/merge-coverage.mjs Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

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: 1f59e4b7e7

ℹ️ 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 .github/workflows/desktop-e2e.yml Outdated
@mrcfps mrcfps merged commit 5d125d4 into main Apr 6, 2026
18 checks passed
@mrcfps mrcfps deleted the nexu-e2e-coverage branch April 6, 2026 12:33
lefarcen added a commit that referenced this pull request Apr 7, 2026
…design

PR #698 unconditionally passed --config.electronDist pointing at the
electron package's dist directory inside the pnpm store. On the macOS
arm64 nightly runner, electron-builder copies Electron.app from that
path into the release output, but the framework version symlinks
(Electron Framework.framework/Versions/Current → A, etc.) do not survive
the copy out of the pnpm content-addressable store. The resulting
framework bundle has both top-level files and a Versions/ directory,
which causes codesign to fail with:

  Electron Framework: bundle format is ambiguous
  (could be app or framework)

The 04-07 nightly run (24058395128) hit this and codesign hung for
~6 minutes before exiting. The 04-06 run (pre-#698) succeeded.

Restore the previous behavior: only forward --config.electronDist to
electron-builder when NEXU_DESKTOP_ELECTRON_DIST_PATH is explicitly set
(the e2e coverage tooling use case). Otherwise let electron-builder
resolve electron via its default pnpm-aware path, which preserves
framework symlinks correctly.
lefarcen added a commit that referenced this pull request Apr 7, 2026
…design (#863)

PR #698 unconditionally passed --config.electronDist pointing at the
electron package's dist directory inside the pnpm store. On the macOS
arm64 nightly runner, electron-builder copies Electron.app from that
path into the release output, but the framework version symlinks
(Electron Framework.framework/Versions/Current → A, etc.) do not survive
the copy out of the pnpm content-addressable store. The resulting
framework bundle has both top-level files and a Versions/ directory,
which causes codesign to fail with:

  Electron Framework: bundle format is ambiguous
  (could be app or framework)

The 04-07 nightly run (24058395128) hit this and codesign hung for
~6 minutes before exiting. The 04-06 run (pre-#698) succeeded.

Restore the previous behavior: only forward --config.electronDist to
electron-builder when NEXU_DESKTOP_ELECTRON_DIST_PATH is explicitly set
(the e2e coverage tooling use case). Otherwise let electron-builder
resolve electron via its default pnpm-aware path, which preserves
framework symlinks correctly.
@lefarcen lefarcen mentioned this pull request Apr 8, 2026
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