@@ -116,6 +116,20 @@ const getReport = async (page: Page) => {
|
||||
return state!.report
|
||||
}
|
||||
|
||||
const FLOOR_CAMERA_BASELINE = {
|
||||
position: [315.2911, 385.8819, 234.6114] as const,
|
||||
target: [19.7236, -65.382, 42.1148] as const,
|
||||
zoom: 1,
|
||||
distance: 572.7601
|
||||
}
|
||||
|
||||
const assertFloorCameraBaseline = (camera: CameraReport) => {
|
||||
expect(getVectorDelta(camera.position, FLOOR_CAMERA_BASELINE.position)).toBeLessThan(1e-4)
|
||||
expect(getVectorDelta(camera.target, FLOOR_CAMERA_BASELINE.target)).toBeLessThan(1e-4)
|
||||
expect(camera.zoom).toBe(FLOOR_CAMERA_BASELINE.zoom)
|
||||
expect(Math.abs(camera.distance - FLOOR_CAMERA_BASELINE.distance)).toBeLessThan(1e-3)
|
||||
}
|
||||
|
||||
const openGuide = async (page: Page) => {
|
||||
await page.goto('/')
|
||||
await page.waitForURL(/tab=guide/, { timeout: 30_000 })
|
||||
@@ -479,6 +493,9 @@ test('floor view baseline is deterministic across repeated resets', async ({ pag
|
||||
return api.getFloorBaseline(floorId)
|
||||
}, floor.floorId)
|
||||
expect(baseline, `missing floor baseline ${floor.floorId}`).not.toBeNull()
|
||||
assertFloorCameraBaseline(baseline!)
|
||||
assertFloorCameraBaseline(first.camera)
|
||||
expect(first.modelRoot!.maxError).toBeLessThan(1e-12)
|
||||
expect(getMaximumCameraDelta(baseline!, first.camera)).toBeLessThan(1e-6)
|
||||
await page.evaluate(async (floorId) => {
|
||||
const api = (window as Window & { __GUIDE_3D_VISUAL_STABILITY__?: VisualStabilityApi })
|
||||
@@ -489,6 +506,7 @@ test('floor view baseline is deterministic across repeated resets', async ({ pag
|
||||
const second = await getReport(page)
|
||||
expect(second.activeView).toBe('floor')
|
||||
expect(second.floorId).toBe(floor.floorId)
|
||||
assertFloorCameraBaseline(second.camera)
|
||||
expect(getMaximumCameraDelta(first.camera, second.camera)).toBeLessThan(1e-6)
|
||||
expect(getMaximumCameraDelta(baseline!, second.camera)).toBeLessThan(1e-6)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user