Skip to content

test(e2e): layout samples, index-page links, and sturdier picture checks on the panel - #153

Merged
dfattal merged 1 commit into
mainfrom
test/samples-panel-layout
Oct 13, 2026
Merged

dfattal merged 1 commit into
mainfrom
test/samples-panel-layout

Conversation

@leaiss

@leaiss leaiss commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

What

A follow-up to #151, still test/e2e/samples-panel.e2e.mjs (npm run test:e2e:samples-panel).

1. The layout samples on the panel (LOXR-828), browser 1.5.4:

Sample What the test checks Result
composition Case 01's tile is scrolled into view first: at the top of the page every tile is below the fold, so the browser rightly weaves nothing. The header cycles frosted → solid → opaque → frosted, and the case-05 page modal opens over a tile and dismisses. It also reports any case the sample marks broken (none). PASS
wall-3d Fast-scroll stress. Right after a 1,894 px scroll, none of the 20 fully visible tiles shows a raw pair or black. 2.5 s later, 25 tiles are woven with real stereo pairs. PASS
windows One weave rect per window (5 photos, the video, the scene). The video window keeps changing on screen (40.4) while a photo does not (0.9). PASS
links Every link on the samples index page must open: 27 links, all 200. A missing page or repo reports 404. PASS

2. Sturdier picture checks (these apply to every sample):

  • Stale dumps: the service always writes the same three dump file names. So a stale copy, from an earlier dump or another tool, could be analysed as this one, or the input copied before it was written. Old copies are now cleared first, and the test waits for the service's own wrote line for each file of this submit.
  • Screen timing: the screen is grabbed at the moment of the dump, so animated pages (a spinning model, a moving call test pattern) are compared with what was actually submitted.
  • Double detection: a double is now a shifted copy of the halves that beats a mirror match by 0.3. A symmetric crate seen face-on matched 0.83 as a copy but 0.87 as a mirror; the 8 Oct doubles beat the mirror by 0.64–0.72. All 15 labelled grabs are still classified correctly.
  • Mixed pages (stereo pictures plus live windows) allow identical eyes only on the live windows, and only when nobody is tracked.
  • Still pages: a 1 px scroll nudge makes a still page submit a frame.

Full run, unattended, against the live site (14 checks)

  • 13 pass: hello-cube, model, splat, camera-rig, display-modes (it now reads the panel at page load: the test(e2e): 3D scene samples on a real panel + display-modes startup read fix #151 fix is live), player, shopify, demo-gallery, call, composition, wall-3d, windows, links.
  • 1 fails: call-embed, reported rather than hidden. With a side-by-side camera, its self tile shows a "You · 3D" badge but submits the left eye in both halves: only 0.05–0.10% of pixels differ. The source pair differs on 37.6% of pixels, at exactly the 40 px shift. For comparison, call with openCamera(synthetic) submits a real pair (54%). It is either <dxr-call>'s auto-detected stereo camera taking a mono path, or a mono self-view by design. That is a question for the SDK.

The samples that render live only need two different eyes with VIEWER=present (someone in front of the panel). Unattended, the runtime gives both eyes one viewpoint.

🤖 Generated with Claude Code

https://claude.ai/code/session_0122B8TjqkRgdikyu3edTegH

… links, and sturdier picture checks

LOXR-828 on the panel (browser 1.5.4):
- composition: case 01's tile scrolled into view (at the top of the page every tile is below
  the fold, so the browser rightly weaves nothing); header modes cycle; the case-05 page modal
  opens over a tile and dismisses; reports cases the sample marks broken (none).
- wall-3d: fast-scroll stress. Right after a 1,894 px scroll, none of the 20 fully visible
  tiles shows a raw pair or black; 2.5 s later 25 tiles are woven with real stereo pairs.
- windows: one weave rect per window (5 photos + video + scene); the video window keeps
  changing on screen (40.4) where a photo does not (0.9).
- `links`: every link on the samples index page must open (27, all 200); a missing page or
  repo reports 404.

Picture-check fixes found on the way:
- The service always writes the same three dump names, so a stale copy (from an earlier dump
  or another tool) could be analysed as this one, or the input copied before it was written.
  Old copies are cleared first and the test waits for the service's own "wrote" line for each
  file of THIS submit.
- The screen is grabbed at the moment of the dump, so animated pages (a spinning model, a
  moving call test pattern) compare against what was actually submitted.
- A double is a shifted copy of the halves that beats a mirror match by 0.3: a symmetric
  crate face-on matched 0.83 as a copy but 0.87 as a mirror; the 8 Oct doubles beat the
  mirror by 0.64-0.72 (15 of 15 labelled grabs still right).
- Mixed pages (stereo pictures + live windows) allow identical eyes only on the live windows
  when nobody is tracked; a 1 px scroll nudge makes a still page submit a frame.

Known failure, reported rather than hidden: call-embed with a side-by-side camera shows a
"You · 3D" badge but submits the left eye in both halves (0.05-0.10% of pixels differ; the
source pair differs on 37.6% at a 40 px shift), where call with openCamera(synthetic) submits
a real pair (54%).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0122B8TjqkRgdikyu3edTegH
@dfattal
dfattal merged commit c6b1858 into main Oct 13, 2026
2 checks passed
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