paperclip/tests/e2e
Dotta 4a7172f5ac
feat(runner-e2e): improve matrix report browsing (#12889)
## Thinking Path

> - Paperclip is the open source app that people use to manage AI agents
for work.
> - The runner E2E system verifies agent profiles across supported
execution environments.
> - Its generated report is the main surface for inspecting those
results and their visual evidence.
> - Expanded matcher content could change the matrix column widths and
make comparisons difficult.
> - Screenshots also required extra navigation, and the report did not
have current-result search and filters.
> - This pull request stabilizes the matrix layout and makes visual
evidence directly browsable.
> - The benefit is faster inspection of retained test evidence without
another paid matrix run.

## Linked Issues or Issue Description

**What happened?**

The runner E2E report changed matrix column widths when a matcher table
expanded. The report also made screenshot comparison and current-result
discovery slower than necessary.

**Expected behavior**

The matrix columns must remain stable. Each retained screenshot must
appear as a thumbnail. The gallery must support keyboard navigation and
show the relevant execution metadata. The report must support
client-side search and filters.

**Steps to reproduce**

1. Open a runner E2E matrix report that contains retained screenshots.
2. Expand the matcher details in a matrix cell.
3. Observe the matrix column movement in the old report.

**Paperclip version or commit**

`8430bd897`

**Deployment mode**

Generated static runner E2E report.

## What Changed

- Keep matrix and matcher table widths stable when details expand.
- Show retained screenshot thumbnails in each test card.
- Add a full-screen evidence gallery with mouse, keyboard, and swipe
navigation.
- Show agent, environment, runtime, status, duration, token, and matcher
data in the gallery header.
- Add client-side search and profile, environment, suite, and status
filters below the report section tabs.
- Keep the filters in normal document flow while the report tabs remain
sticky.
- Add report generator assertions for the new layout and controls.
- Add Playwright coverage for filtering, stable matcher expansion, and
filtered gallery navigation.

## Verification

- `pnpm test:e2e:runner:typecheck`
- `pnpm exec vitest run --config tests/runner-e2e/vitest.config.ts
tests/runner-e2e/report.test.ts`
- `PAPERCLIP_PLAYWRIGHT_CHANNEL=chrome pnpm exec playwright test
--config tests/e2e/playwright.config.ts
tests/e2e/runner-e2e-dashboard.spec.ts`
- `node --test ./scripts/__tests__/e2e-shard.test.mjs`
- `pnpm check:token-gates`
- `pnpm -r typecheck`
- `pnpm test:run`
- `pnpm build`
- Regenerated the report from GitHub Actions run `33963318820` without
rerunning the matrix.
- Verified 121 retained thumbnails across 66 results in a local browser.
- Verified that expanded matchers keep matrix widths at 260, 486, and
486 pixels in a 1280-pixel viewport.
- Verified search, filters, modal metadata, and arrow-key gallery
navigation.

## Risks

Low risk. This change only modifies the static runner E2E report
generator and its tests. It does not change runner execution or retained
evidence data.

> This work is focused report polish. It does not duplicate planned core
work in `ROADMAP.md`.

## Model Used

OpenAI Codex with `gpt-5.6-sol`. Codex desktop managed the context
window. The model used reasoning, filesystem tools, code execution,
GitHub CLI access, and in-app browser verification.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [ ] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-05 07:46:05 -05:00
..
helpers feat: make chat-style tasks the default experience (#11101) 2026-08-11 09:06:21 -07:00
app-not-connected.spec.ts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
application-delete-screenshot.spec.ts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
applications-crud.spec.ts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
apps-dark-mode-shots.spec.ts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
apps-prosumer-mcp-flow.spec.ts Simplify app connections and enable managed Google access (#12728) 2026-09-02 14:05:53 -05:00
archived-company-url.spec.ts feat(ui): bounce cold arrivals off archived company URLs, add Unarchive (#11302) 2026-08-12 21:02:12 -07:00
conference-room-typing-intro.spec.ts feat(onboarding): the connect step signs in from its own button (#12801) 2026-09-03 21:45:45 -07:00
connection-intents.spec.ts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
fetch-allowed-port.ts feat(mcp) [split 8/8]: add e2e coverage and operator docs (#9563) 2026-07-14 15:48:57 -05:00
mcp-user-stories.catalog.ts feat(mcp) [split 8/8]: add e2e coverage and operator docs (#9563) 2026-07-14 15:48:57 -05:00
mcp-user-stories.spec.ts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
multi-user-authenticated.spec.ts feat: implement multi-user access and invite flows (#3784) 2026-04-17 09:44:19 -05:00
multi-user.spec.ts feat: implement multi-user access and invite flows (#3784) 2026-04-17 09:44:19 -05:00
nux-phase4-screenshots.spec.ts Onboarding: model source tiles, one input canvas, and Storybook coverage for the agent arc (#12613) 2026-09-01 09:57:46 -07:00
onboarding.spec.ts feat(onboarding): the connect step's sign-in as one continuous sequence (#12863) 2026-09-04 17:48:16 -07:00
pipelines-tutorial-flow.spec.ts test: port pipelines tutorial e2e (#9149) 2026-07-07 05:54:26 -05:00
planning-mode-visual-verification.spec.ts feat(onboarding): the connect step signs in from its own button (#12801) 2026-09-03 21:45:45 -07:00
playwright-multiuser-authenticated.config.ts feat: implement multi-user access and invite flows (#3784) 2026-04-17 09:44:19 -05:00
playwright-multiuser.config.ts feat: implement multi-user access and invite flows (#3784) 2026-04-17 09:44:19 -05:00
playwright.config.ts Keep browser startup explicitly opt-in (#12435) 2026-08-29 12:08:35 -05:00
runner-e2e-dashboard.spec.ts feat(runner-e2e): improve matrix report browsing (#12889) 2026-09-05 07:46:05 -05:00
sidebar-takeover.spec.ts fix(ui): polish core navigation and task layout (#12793) 2026-09-03 15:35:39 -07:00
signoff-policy.spec.ts feat(issues): contain cross-issue agent side effects (#10837) 2026-08-04 13:17:49 -05:00
smoke-lab-browser-runner.mts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
smoke-lab-p1-p4.spec.ts test(e2e): shorten and split Smoke Lab coverage (#12506) 2026-08-31 10:15:39 -05:00
smoke-lab-p5-p7.spec.ts test(e2e): shorten and split Smoke Lab coverage (#12506) 2026-08-31 10:15:39 -05:00
smoke-lab-routine-classifier.test.mts feat(mcp) [split 8/8]: add e2e coverage and operator docs (#9563) 2026-07-14 15:48:57 -05:00
smoke-lab-routine.mts feat(mcp) [split 8/8]: add e2e coverage and operator docs (#9563) 2026-07-14 15:48:57 -05:00
smoke-lab.catalog.ts feat(connections): add v3 schema core (#9958) 2026-07-21 15:16:26 -05:00
smoke-lab.shared.ts feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00