From 556937067d9b659d89aa163f5a581b9c88665b22 Mon Sep 17 00:00:00 2001 From: Marlo Longley Date: Tue, 17 Dec 2024 16:04:03 -0500 Subject: [PATCH 1/4] Fix CI testing flakiness by waiting for the values to settle. --- .../mirador/tests/viewer-config.test.js | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/__tests__/integration/mirador/tests/viewer-config.test.js b/__tests__/integration/mirador/tests/viewer-config.test.js index 3e2a731e6f..927f4da078 100644 --- a/__tests__/integration/mirador/tests/viewer-config.test.js +++ b/__tests__/integration/mirador/tests/viewer-config.test.js @@ -1,19 +1,26 @@ import { expect, it } from 'vitest'; -import { screen } from '@testing-library/react'; +import { screen, waitFor } from '@testing-library/react'; import { setupIntegrationTestViewer } from '@tests/utils/test-utils'; import config from '../mirador-configs/initial-viewer-config'; describe('initialViewerConfig', () => { setupIntegrationTestViewer(config); - it('allows initialViewerConfig to be passed', async (context) => { - expect(await screen.findByRole('region', { name: /Window: Self-Portrait Dedicated to Paul Gauguin/i })).toBeInTheDocument(); + describe('initialViewerConfig', () => { + it('allows initialViewerConfig to be passed', async (context) => { + expect(await screen.findByRole('region', { name: /Window: Self-Portrait Dedicated to Paul Gauguin/i })).toBeInTheDocument(); - const { viewers } = context.miradorInstance.store.getState(); - const viewerObject = viewers[Object.keys(viewers)[0]]; - // You can see these values passed in initial-viewer-config.js - expect(viewerObject.x).toBe(934); - expect(viewerObject.y).toBe(782); - expect(viewerObject.zoom).toBe(0.0007); + let viewerObject; + await waitFor(() => { + const { viewers = {} } = context.miradorInstance.store.getState(); + viewerObject = viewers[Object.keys(viewers)[0]]; + console.log('viewerObject', viewerObject); + expect(viewerObject?.x).toBe(934); + }, { timeout: 3000 }); + + expect(viewerObject.x).toBe(934); + expect(viewerObject.y).toBe(782); + expect(viewerObject.zoom).toBe(0.0007); + }); }); }); From dab041ef4fc5cf6dac5db948f586d90652687876 Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Wed, 18 Dec 2024 10:18:29 -0800 Subject: [PATCH 2/4] Remove jest cruft from initial-viewer-config.js --- .../mirador/mirador-configs/initial-viewer-config.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/__tests__/integration/mirador/mirador-configs/initial-viewer-config.js b/__tests__/integration/mirador/mirador-configs/initial-viewer-config.js index 29bae74744..4f00cf02ce 100644 --- a/__tests__/integration/mirador/mirador-configs/initial-viewer-config.js +++ b/__tests__/integration/mirador/mirador-configs/initial-viewer-config.js @@ -1,8 +1,5 @@ export default { id: 'mirador', - theme: { - transitions: window.location.port === '4488' ? { create: () => 'none' } : {}, - }, windows: [{ canvasId: 'https://iiif.harvardartmuseums.org/manifests/object/299843/canvas/canvas-47174892', initialViewerConfig: { From fb225d150837598c3fcaebe43f3a39193765065a Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Wed, 18 Dec 2024 10:23:12 -0800 Subject: [PATCH 3/4] Don't start dispatching updateViewport actions until the viewport position is initialized. --- src/components/OpenSeadragonComponent.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/OpenSeadragonComponent.js b/src/components/OpenSeadragonComponent.js index 4432b10330..d8eedca0bf 100644 --- a/src/components/OpenSeadragonComponent.js +++ b/src/components/OpenSeadragonComponent.js @@ -27,6 +27,8 @@ function OpenSeadragonComponent({ const onViewportChange = useCallback((event) => { const { viewport } = event.eventSource; + if (!initialViewportSet.current) return; + onUpdateViewport({ bounds: viewport.getBounds(), flip: viewport.getFlip(), @@ -35,7 +37,7 @@ function OpenSeadragonComponent({ y: Math.round(viewport.centerSpringY.target.value), zoom: viewport.zoomSpring.target.value, }); - }, [onUpdateViewport]); + }, [onUpdateViewport, initialViewportSet]); const setInitialBounds = useCallback(({ viewport }) => { if (initialViewportSet.current) return; From f7fed3e88592582fdab489c960f93bc8cb5045e1 Mon Sep 17 00:00:00 2001 From: Marlo Longley Date: Wed, 18 Dec 2024 14:21:20 -0500 Subject: [PATCH 4/4] Delete console.log --- __tests__/integration/mirador/tests/viewer-config.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/__tests__/integration/mirador/tests/viewer-config.test.js b/__tests__/integration/mirador/tests/viewer-config.test.js index 927f4da078..db51cf392d 100644 --- a/__tests__/integration/mirador/tests/viewer-config.test.js +++ b/__tests__/integration/mirador/tests/viewer-config.test.js @@ -14,7 +14,6 @@ describe('initialViewerConfig', () => { await waitFor(() => { const { viewers = {} } = context.miradorInstance.store.getState(); viewerObject = viewers[Object.keys(viewers)[0]]; - console.log('viewerObject', viewerObject); expect(viewerObject?.x).toBe(934); }, { timeout: 3000 });