Skip to content

Complete synthetic CLI and browser end-to-end coverage - #23

Merged
mangeshraut712 merged 1 commit into
mainfrom
test/complete-synthetic-journeys-20261113
Nov 13, 2026
Merged

mangeshraut712 merged 1 commit into
mainfrom
test/complete-synthetic-journeys-20261113

Conversation

@mangeshraut712

@mangeshraut712 mangeshraut712 commented Nov 13, 2026 •

Copy link
Copy Markdown
Owner

Finish the existing local end-to-end suite against current main. Add 13 CLI journeys using temporary SQLite/rollout fixtures and 7 browser journeys for generated reports, profile tabs, clipboard feedback, and 375px/1440px layouts. Keep real account/session data and model calls out of the suite, and disable runner telemetry in standard commands and CI.

Update the old test-tooling pins to e2e 0.23.0 and @e2e-dev/web 0.15.5, eliminating the three high audit findings from the earlier unfinished dependency set. Align clipboard expectations with the current Copy failed feedback. Add an independent CI job and synthetic diagnostics artifacts.

Validation on macOS/Node 26.13.0: 20/20 end-to-end journeys; npm run ci (115 tests, lint, types, plugin validation, documentation and pack checks); 3 adoption tests; npm audit reports zero vulnerabilities. No production code behavior changes. Native authenticated app-server, model generation, publication and scheduling are not exercised.


Note

Low Risk
Changes are confined to dev dependencies, tests, CI, and docs; production CLI behavior is not modified.

Overview
Introduces a Tester Army end-to-end layer: 20 deterministic journeys (13 CLI subprocesses, 7 Playwright browser checks) that use temporary SQLite/rollout fixtures and a loopback fixture server—no real Codex home, model calls, or accounts.

Wires e2e 0.23.0 and @e2e-dev/web 0.15.5 via e2e.config.mts, adds npm run test:tester-army (plus cli/web targets) with E2E_TELEMETRY_DISABLED=1, and documents setup in docs/tester-army.md and the README. CI gains a separate tester-army job (Node 22, sqlite3, Chromium) that uploads .e2e/ artifacts; .gitignore excludes that output locally.

Reviewed by Cursor Bugbot for commit 39503b9. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor

cursor Bot commented Nov 13, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 7e3e26de-197f-49e9-a8b0-1c6d4ef666ba)

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-13T05:09:53.606960Z 39503b9 PR opened
🔒 Security Review ✅ Completed 2026-11-13T05:10:48.811066Z 39503b9 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@mangeshraut712
mangeshraut712 merged commit ca1587d into main Nov 13, 2026
10 checks passed

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 39503b9db2

ℹ️ 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".

await writeFile(report, JSON.stringify(createSampleReport()))
return { dir, home, report, cleanup: () => rm(dir, { recursive: true, force: true }),
cli: async args => {
try { const r = await exec(process.execPath, [path.join(root, 'bin/codex-insights.js'), '--codex-home', home, ...args], { cwd: root, env: { ...process.env, CI: '1' }, maxBuffer: 8 * 1024 * 1024 }); return { ...r, code: 0 } }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep the CLI cache inside the temporary fixture

Running these journeys locally still reads and writes the developer's real ~/.codex-insights-cache: --codex-home does not control the cache location, and collectLegacyThreadData defaults to that global directory unless --cache-dir is supplied. The estimate journey also accesses the global facet cache. Consequently, f.cleanup() leaves synthetic cache data behind, and the suite can fail on an otherwise valid installation whose existing cache is not writable. I confirmed that collecting this fixture leaves session-meta/synthetic.json after fixture cleanup. Pass a cache directory under dir to every subprocess so inputs and outputs are actually isolated.

Useful? React with 👍 / 👎.

await writeFile(report, JSON.stringify(createSampleReport()))
return { dir, home, report, cleanup: () => rm(dir, { recursive: true, force: true }),
cli: async args => {
try { const r = await exec(process.execPath, [path.join(root, 'bin/codex-insights.js'), '--codex-home', home, ...args], { cwd: root, env: { ...process.env, CI: '1' }, maxBuffer: 8 * 1024 * 1024 }); return { ...r, code: 0 } }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Pin the fixture's default report language

On a Chinese-language machine, or when CODEX_REPORT_LANG=zh-CN is set, these subprocesses inherit the locale and generate Chinese reports because detectSystemLanguage() reads the inherited environment. That makes valid application behavior fail the English-only Estimate assertion in cli.e2e.ts and the Trust & Coverage heading assertion in views.e2e.ts. Set an English default for fixture subprocesses, such as CODEX_REPORT_LANG: 'en'; the explicit --lang zh-CN journey can still override it.

Useful? React with 👍 / 👎.

@kilo-code-bot

kilo-code-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Code Review Roast 🔥

Verdict: No Issues Found | Recommendation: Merge

Oh wait, this PR is actually clean. I need to sit down. I had my flamethrower warmed up and everything—synthetic fixtures, loopback-only server, no live credentials, and tests that clean up after themselves. Suspiciously responsible.

📊 Overall: Like a fire drill where nobody panics and the exits are actually labeled — I came for chaos and got competence.

Files Reviewed (11 files)
  • .github/workflows/ci.yml
  • .gitignore
  • README.md
  • docs/tester-army.md
  • e2e.config.mts
  • package-lock.json
  • package.json
  • scripts/tester-army-server.mjs
  • tests/tester-army/cli.e2e.ts
  • tests/tester-army/fixture.mjs
  • tests/tester-army/views.e2e.ts

Reviewed by free · Input: 43.7K · Output: 3.4K · Cached: 242.7K

@mangeshraut712
mangeshraut712 deleted the test/complete-synthetic-journeys-20261113 branch November 14, 2026 07:39
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