{"id":51536938,"url":"https://github.com/chris-mclennan/mnml-test-cypress","last_synced_at":"2026-07-09T09:30:36.877Z","repository":{"id":363024459,"uuid":"1261499079","full_name":"chris-mclennan/mnml-test-cypress","owner":"chris-mclennan","description":"Cypress mochawesome JSON viewer for mnml — terminal TUI for browsing pass/fail state per test, with filter + spec-path yank. Runs standalone or as an mnml-hosted pane.","archived":false,"fork":false,"pushed_at":"2026-06-26T01:48:56.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T03:13:14.066Z","etag":null,"topics":["cypress","mnml-integration","ratatui","rust","terminal","testing","tui"],"latest_commit_sha":null,"homepage":"https://mnml.sh","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chris-mclennan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-06T19:14:06.000Z","updated_at":"2026-06-26T01:48:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chris-mclennan/mnml-test-cypress","commit_stats":null,"previous_names":["chris-mclennan/mnml-test-cypress"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/chris-mclennan/mnml-test-cypress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-mclennan%2Fmnml-test-cypress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-mclennan%2Fmnml-test-cypress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-mclennan%2Fmnml-test-cypress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-mclennan%2Fmnml-test-cypress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chris-mclennan","download_url":"https://codeload.github.com/chris-mclennan/mnml-test-cypress/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-mclennan%2Fmnml-test-cypress/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35295105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cypress","mnml-integration","ratatui","rust","terminal","testing","tui"],"created_at":"2026-07-09T09:30:35.559Z","updated_at":"2026-07-09T09:30:36.866Z","avatar_url":"https://github.com/chris-mclennan.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mnml-test-cypress\n\nCypress test results viewer for [mnml](https://mnml.sh) — a\nterminal TUI for browsing mochawesome JSON reports. Pass/fail\nstate per test, filter to failures, yank the spec file path.\nRuns standalone in any terminal or as a hosted mnml pane.\n\nPart of the family `mnml-test-*` siblings — sibling to\n[mnml-test-playwright](https://github.com/chris-mclennan/mnml-test-playwright).\nThe **test runner** stays in mnml core (runs on the buffer you\nhave open, jumps to source on accept); this sibling is the\nread-only results inspector.\n\n```\n┌─ /path/to/cypress/results/mochawesome.json ──────────────────────┐\n│ 🧪 cypress  · 47p / 3f / 0pending · 12.4s                         │\n└──────────────────────────────────────────────────────────────────┘\n┌─ 5 rows ─────────────────────────────────────────────────────────┐\n│ ▸ 📄 login.cy.js  (8p, 2f)                                        │\n│    ✗  Login flow › rejects bad password                  2.5s    │\n│    ✗  Login flow › times out on invalid creds            30.1s   │\n│   📄 checkout.cy.js  (12p, 1f)                                    │\n│    ✗  Checkout › card declined                           1.8s    │\n└──────────────────────────────────────────────────────────────────┘\n┌─ failure ────────────────────────────────────────────────────────┐\n│ expected URL to contain \"/dashboard\", got \"/login\"                │\n│   AssertionError: at chai.assertion                               │\n│     at ...                                                        │\n└──────────────────────────────────────────────────────────────────┘\n  47p / 3f / 0pending · 5/50 rows · filter: failures only\n  ↑↓/jk · F failures-only · y yank spec · r reload · q quit\n```\n\n## Install\n\n```sh\ncargo install --git https://github.com/chris-mclennan/mnml-test-cypress mnml-test-cypress\nmnml-test-cypress --install\n```\n\n## Usage\n\n```sh\n# Point at a mochawesome JSON file\nmnml-test-cypress cypress/results/mochawesome.json\n\n# Or at a directory — auto-finds mochawesome.json / output.json /\n# results/mochawesome.json inside it\nmnml-test-cypress cypress/results/\n\n# Print parsed stats without launching the TUI\nmnml-test-cypress cypress/results/mochawesome.json --check\n```\n\nThe path is positional. v0.1 reads only [mochawesome](https://github.com/adamgruber/mochawesome) JSON (the default Cypress JSON reporter doesn't carry enough structure to render usefully). Wire your `cypress.config.js` like:\n\n```js\nconst { defineConfig } = require(\"cypress\");\n\nmodule.exports = defineConfig({\n  reporter: \"mochawesome\",\n  reporterOptions: {\n    reportDir: \"cypress/results\",\n    overwrite: false,\n    html: false,\n    json: true,\n  },\n});\n```\n\nThen `npx cypress run` writes `cypress/results/mochawesome.json` after the suite finishes; point this viewer at that file.\n\n## Keys\n\n| Chord | Action |\n|---|---|\n| `↑` / `k`, `↓` / `j` | Move selection |\n| `PgUp` / `PgDn` | Page up / down |\n| `g` / `G` | Top / bottom |\n| `F` | Toggle \"failures only\" / \"all\" filter |\n| `y` | Yank focused row's spec file path (absolute) to OS clipboard |\n| `r` | Reload mochawesome JSON from disk (re-run cypress, then `r`) |\n| `q` / `Esc` / `Ctrl+C` | Quit |\n\nDefault filter is **failures only** — most of the time you open a results viewer because something broke. If there are zero failures, the viewer falls back to showing all tests on open.\n\n## Layout\n\n- **Header:** path to the loaded JSON + run stats (passes / failures / pending / total duration)\n- **Body:** flat row list — spec headers (`📄 file.cy.js (Np, Nf)`) followed by their tests. Failed tests are red + bold; passes green; pending yellow.\n- **Failure detail (when a failed row is selected):** error message + first 4 lines of stack\n- **Status line:** active filter, row counts, key hints\n\n## Use it as an mnml pane\n\n`mnml-test-cypress` speaks the `tmnl-protocol` blit-host shape when launched with `--blit \u003csocket\u003e`. mnml can host it inside a regular pane:\n\n```vim\n:host.launch mnml-test-cypress cypress/results/mochawesome.json\n```\n\nThe positional path is passed through verbatim — useful for wiring it into a tmnl chord or palette command that opens a fresh results file on demand.\n\n## Status\n\n**v0.1 (this release)** — Mochawesome JSON parsing, flat test list with filter, spec-path yank, error details panel. Standalone TUI + blit-host mode.\n\nHeld back for v0.2+:\n- Screenshot rendering inline (Cypress writes failure screenshots to `cypress/screenshots/`; v0.2 would link from a failed row to the screenshot path and use mnml's image protocol to preview it inline)\n- Video link (Cypress's `cypress/videos/\u003cspec\u003e.mp4` — would yank or open in default player)\n- Tree-view layout grouping by suite (currently flat, with suite path joined into the test title)\n- Other Cypress reporter formats (junit XML, default JSON) — v0.1 is mochawesome-only because that's the format with enough structure to render usefully\n- The `tmnl-protocol::Message::OpenFile { path }` integration for \"Enter on a row → open spec at the failing line in mnml's editor\"\n\n## Source\n\nThe viewer lives in its own sibling repo: [github.com/chris-mclennan/mnml-test-cypress](https://github.com/chris-mclennan/mnml-test-cypress). MIT-licensed. See [Building integrations](https://mnml.sh/manual/integrations/building/) for the anatomy of an integration.\n\n## License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris-mclennan%2Fmnml-test-cypress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchris-mclennan%2Fmnml-test-cypress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris-mclennan%2Fmnml-test-cypress/lists"}