diff --git a/e2e/signedIn.e2e.js b/e2e/signedIn.e2e.js index 8d8e3c1d3..3d960f2d9 100644 --- a/e2e/signedIn.e2e.js +++ b/e2e/signedIn.e2e.js @@ -32,8 +32,8 @@ describe( "Signed in user", () => { // this component becomes visible, and there may be other observations in // the list, we need to wait for the right CommentsCount component to be // visible - const obsListItem = element( by.id( /MyObservations\.obsListItem\..*/ ) ).atIndex( 0 ); - const obsListItemAttributes = await obsListItem.getAttributes( ); + const obsGridItem = element( by.id( /MyObservations\.obsGridItem\..*/ ) ).atIndex( 0 ); + const obsListItemAttributes = await obsGridItem.getAttributes( ); const uuid = obsListItemAttributes.elements ? obsListItemAttributes.elements[0].identifier.split( "." ).pop( ) : obsListItemAttributes.identifier.split( "." ).pop( ); @@ -41,7 +41,7 @@ describe( "Signed in user", () => { if ( options.upload ) { const commentCount = element( by.id( "ObsStatus.commentsCount" ) - .withAncestor( by.id( `MyObservations.obsListItem.${uuid}` ) ) + .withAncestor( by.id( `MyObservations.obsGridItem.${uuid}` ) ) ); await waitFor( commentCount ).toBeVisible().withTimeout( 10000 ); } @@ -50,8 +50,8 @@ describe( "Signed in user", () => { } async function deleteObservationByUUID( uuid, username, options = { uploaded: false } ) { - const obsListItem = element( by.id( `MyObservations.obsListItem.${uuid}` ) ); - await obsListItem.tap(); + const obsGridItem = element( by.id( `MyObservations.obsGridItem.${uuid}` ) ); + await obsGridItem.tap(); await deleteObservation( options ); // Make sure we're back on MyObservations await waitFor( username ).toBeVisible().withTimeout( 10000 ); @@ -81,8 +81,8 @@ describe( "Signed in user", () => { /* / 4. Update the observation by adding a comment */ - const obsListItem = element( by.id( `MyObservations.obsListItem.${uuid}` ) ); - await obsListItem.tap(); + const obsGridItem = element( by.id( `MyObservations.obsGridItem.${uuid}` ) ); + await obsGridItem.tap(); const commentButton = element( by.id( "ObsDetail.commentButton" ) ); await waitFor( commentButton ).toBeVisible().withTimeout( 10000 ); await commentButton.tap(); @@ -116,6 +116,6 @@ describe( "Signed in user", () => { // point, and we can confirm deletion by testing for the absence of the // list item for the observation we deleted. await waitFor( element( by.text( /Upload 1 observation/ ) ) ).toBeVisible( ).withTimeout( 20_000 ); - await expect( obsListItem ).toBeNotVisible( ); + await expect( obsGridItem ).toBeNotVisible( ); } ); } ); diff --git a/src/components/Explore/ObservationsViewBar.js b/src/components/Explore/ObservationsViewBar.js index 5a39e82b8..b963492cd 100644 --- a/src/components/Explore/ObservationsViewBar.js +++ b/src/components/Explore/ObservationsViewBar.js @@ -8,6 +8,7 @@ import { getShadow } from "styles/global"; import colors from "styles/tailwindColors"; type Props = { + gridFirst?: boolean, hideMap?: boolean, layout: string, updateObservationsView: Function @@ -19,6 +20,7 @@ const DROP_SHADOW = getShadow( { } ); const ObservationsViewBar = ( { + gridFirst, hideMap, layout, updateObservationsView @@ -37,6 +39,9 @@ const ObservationsViewBar = ( { testID: "SegmentedButton.grid" } ]; + if ( gridFirst ) { + buttons.reverse( ); + } if ( !hideMap ) { buttons.push( { value: "map", diff --git a/src/components/MyObservations/MyObservationsSimple.tsx b/src/components/MyObservations/MyObservationsSimple.tsx index 166d2ad74..dda7f86ca 100644 --- a/src/components/MyObservations/MyObservationsSimple.tsx +++ b/src/components/MyObservations/MyObservationsSimple.tsx @@ -217,6 +217,22 @@ const MyObservationsSimple = ( { /> ); + const dataFilledWithEmptyBoxes = useMemo( ( ) => { + const data = observations.filter( o => o.isValid() ); + // In grid layout fill up to 8 items to make sure the grid is filled + if ( layout === "grid" ) { + // Fill up to 8 items to make sure the grid is filled + const emptyBoxes = new Array( 8 - ( data.length % 8 ) ).fill( { empty: true } ); + // Add random id to empty boxes to ensure they are unique + const emptyBoxesWithId = emptyBoxes.map( ( box, index ) => ( { + ...box, + id: `empty-${index}` + } ) ); + return [...data, ...emptyBoxesWithId]; + } + return data; + }, [observations, layout] ); + return ( <> @@ -245,7 +261,7 @@ const MyObservationsSimple = ( { { activeTab === OBSERVATIONS_TAB && ( <> o.isValid() )} + data={dataFilledWithEmptyBoxes} dataCanBeFetched={!!currentUser} handlePullToRefresh={handlePullToRefresh} handleIndividualUploadPress={handleIndividualUploadPress} @@ -265,6 +281,7 @@ const MyObservationsSimple = ( { renderHeader={renderObservationsHeader} /> { - // In grid layout fill up to 8 items to make sure the grid is filled - if ( layout === "grid" ) { - // Fill up to 8 items to make sure the grid is filled - const emptyBoxes = new Array( 8 - ( data.length % 8 ) ).fill( { empty: true } ); - // Add random id to empty boxes to ensure they are unique - const emptyBoxesWithId = emptyBoxes.map( ( box, index ) => ( { - ...box, - id: `empty-${index}` - } ) ); - return [...data, ...emptyBoxesWithId]; - } - return data; - }, [data, layout] ); - const renderItem = useCallback( ( { item: observation } ) => { // Empty box if ( observation.empty ) { @@ -278,7 +263,7 @@ const ObservationsFlashList: Function = forwardRef( ( { ListFooterComponent={renderFooter} ListHeaderComponent={renderHeader} contentContainerStyle={contentContainerStyle} - data={dataFilledWithEmptyBoxes} + data={data} estimatedItemSize={estimatedItemSize} extraData={extraData} ref={ref} diff --git a/src/sharedHooks/useStoredLayout.js b/src/sharedHooks/useStoredLayout.js index f761c1ea6..731993fbf 100644 --- a/src/sharedHooks/useStoredLayout.js +++ b/src/sharedHooks/useStoredLayout.js @@ -15,7 +15,7 @@ const useStoredLayout = ( storageKey: string ): Object => { const storedLayout = zustandStorage.getItem( storageKey ); const defaultLayout = storageKey === "exploreObservationsLayout" ? "map" - : "list"; + : "grid"; setLayout( storedLayout || defaultLayout ); }; diff --git a/tests/helpers/render.js b/tests/helpers/render.js index 8805f5b22..8d1df24fb 100644 --- a/tests/helpers/render.js +++ b/tests/helpers/render.js @@ -80,7 +80,7 @@ async function renderAppWithObservations( // by removing code until I was just rendering the stack navigator... and // that was still erroring out. Hopefully this will prevent that particular // point of confusion in the future. ~~~kueda 20240104 - await screen.findByTestId( `MyObservations.obsListItem.${observations[0].uuid}` ); + await screen.findByTestId( `MyObservations.obsGridItem.${observations[0].uuid}` ); } /** diff --git a/tests/integration/MyObservations.test.js b/tests/integration/MyObservations.test.js index 80d68d56f..b0c9f1047 100644 --- a/tests/integration/MyObservations.test.js +++ b/tests/integration/MyObservations.test.js @@ -324,33 +324,6 @@ describe( "MyObservations", ( ) => { } ); } ); - it( "displays observation status", async () => { - const realm = global.mockRealms[__filename]; - expect( realm.objects( "Observation" ).length ).toBeGreaterThan( 0 ); - renderAppWithComponent( ); - const syncIcon = await screen.findByTestId( "SyncButton" ); - await waitFor( ( ) => { - expect( syncIcon ).toBeVisible( ); - } ); - mockSyncedObservations.forEach( obs => { - displayItemByTestId( `ObsStatus.${obs.uuid}` ); - } ); - } ); - - it( "renders grid view on button press", async () => { - const realm = global.mockRealms[__filename]; - expect( realm.objects( "Observation" ).length ).toBeGreaterThan( 0 ); - renderAppWithComponent( ); - const button = await screen.findByTestId( "MyObservationsToolbar.toggleGridView" ); - fireEvent.press( button ); - // Awaiting the first observation because using await in the forEach errors out - const firstObs = mockSyncedObservations[0]; - await screen.findByTestId( `MyObservations.gridItem.${firstObs.uuid}` ); - mockSyncedObservations.forEach( obs => { - displayItemByTestId( `MyObservations.gridItem.${obs.uuid}` ); - } ); - } ); - it( "hides observation status in grid view", async () => { const realm = global.mockRealms[__filename]; expect( realm.objects( "Observation" ).length ).toBeGreaterThan( 0 ); @@ -358,7 +331,34 @@ describe( "MyObservations", ( ) => { displayItemByTestId( "SyncButton" ); mockSyncedObservations.forEach( obs => { const obsStatus = screen.queryByTestId( `ObsStatus.${obs.uuid}` ); - expect( obsStatus ).toBeFalsy( ); + expect( obsStatus ).toBeFalsy(); + } ); + } ); + + it( "renders list view on button press", async () => { + const realm = global.mockRealms[__filename]; + expect( realm.objects( "Observation" ).length ).toBeGreaterThan( 0 ); + renderAppWithComponent( ); + const button = await screen.findByTestId( "MyObservationsToolbar.toggleListView" ); + fireEvent.press( button ); + // Awaiting the first observation because using await in the forEach errors out + const firstObs = mockSyncedObservations[0]; + await screen.findByTestId( `MyObservations.obsListItem.${firstObs.uuid}` ); + mockSyncedObservations.forEach( obs => { + displayItemByTestId( `MyObservations.obsListItem.${obs.uuid}` ); + } ); + } ); + + it( "displays observation status in list view", async () => { + const realm = global.mockRealms[__filename]; + expect( realm.objects( "Observation" ).length ).toBeGreaterThan( 0 ); + renderAppWithComponent( ); + const syncIcon = await screen.findByTestId( "SyncButton" ); + await waitFor( () => { + expect( syncIcon ).toBeVisible(); + } ); + mockSyncedObservations.forEach( obs => { + displayItemByTestId( `ObsStatus.${obs.uuid}` ); } ); } ); diff --git a/tests/integration/PhotoDeletion.test.js b/tests/integration/PhotoDeletion.test.js index accf2959b..d4430571e 100644 --- a/tests/integration/PhotoDeletion.test.js +++ b/tests/integration/PhotoDeletion.test.js @@ -129,8 +129,8 @@ describe( "Photo Deletion", ( ) => { // Wait until header shows that there's an obs to upload await screen.findByText( /Upload \d observation/ ); // await screen.findByLabelText( "Grid layout" ); - const obsListItems = await screen.findAllByTestId( /MyObservations\.obsListItem\..*/ ); - await actor.press( obsListItems[0] ); + const obsGridItems = await screen.findAllByTestId( /MyObservations\.obsGridItem\..*/ ); + await actor.press( obsGridItems[0] ); } async function expectNoPhotosInStandardCamera() { diff --git a/tests/integration/PhotoImport.test.js b/tests/integration/PhotoImport.test.js index 468f0e0aa..de8f59eb5 100644 --- a/tests/integration/PhotoImport.test.js +++ b/tests/integration/PhotoImport.test.js @@ -146,9 +146,9 @@ describe( "Photo Import", ( ) => { await actor.press( saveButton ); // Wait until header shows that there's an obs to upload await screen.findByText( /Upload \d observation/ ); - const obsListItems = await screen.findAllByTestId( /MyObservations\.obsListItem\..*/ ); + const obsGridItems = await screen.findAllByTestId( /MyObservations\.obsGridItem\..*/ ); await waitFor( () => { - expect( obsListItems[0] ).toBeVisible( ); + expect( obsGridItems[0] ).toBeVisible( ); }, { timeout: 3_000, interval: 500 } ); } diff --git a/tests/integration/SuggestionsWithSyncedObs.test.js b/tests/integration/SuggestionsWithSyncedObs.test.js index 6646bc088..60880c281 100644 --- a/tests/integration/SuggestionsWithSyncedObs.test.js +++ b/tests/integration/SuggestionsWithSyncedObs.test.js @@ -133,10 +133,10 @@ afterEach( ( ) => { // // We need to navigate from MyObs to ObsDetails to Suggestions to TaxonSearch for all of these // // tests // async function navigateToTaxonSearchForObservation( observation ) { -// const observationRow = await screen.findByTestId( -// `MyObservations.obsListItem.${observation.uuid}` +// const observationGridItem = await screen.findByTestId( +// `MyObservations.obsGridItem.${observation.uuid}` // ); -// await actor.press( observationRow ); +// await actor.press( observationGridItem ); // const suggestIdButton = await screen.findByText( "SUGGEST ID" ); // await act( async ( ) => actor.press( suggestIdButton ) ); // await screen.findByTestId( @@ -147,10 +147,10 @@ afterEach( ( ) => { // } // async function navigateToTaxonSearchForObservationViaObsEdit( observation ) { -// const observationRow = await screen.findByTestId( -// `MyObservations.obsListItem.${observation.uuid}` +// const observationGridItem = await screen.findByTestId( +// `MyObservations.obsGridItem.${observation.uuid}` // ); -// await actor.press( observationRow ); +// await actor.press( observationGridItem ); // const editButton = await screen.findByLabelText( "Edit" ); // await act( async ( ) => actor.press( editButton ) ); // const addIdButton = await screen.findByText( "ADD AN ID" ); @@ -229,19 +229,19 @@ describe( "Suggestions", ( ) => { // We need to navigate from MyObs to ObsDetails to Suggestions for all of these // tests const navigateToSuggestionsForObservation = async observation => { - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); const suggestIdButton = await screen.findByText( "SUGGEST ID" ); await act( async ( ) => actor.press( suggestIdButton ) ); }; const navigateToSuggestionsForObservationViaObsEdit = async observation => { - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); const editButton = await screen.findByLabelText( "Edit" ); await act( async ( ) => actor.press( editButton ) ); const addIdButton = await screen.findByText( "ADD AN ID" ); @@ -304,11 +304,11 @@ describe( "Suggestions", ( ) => { expect( saveChangesButton ).toBeTruthy( ); await actor.press( saveChangesButton ); // Ensure we're back on MyObs - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observations[0].uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observations[0].uuid}` ); await waitFor( ( ) => { - expect( observationRow ).toBeVisible( ); + expect( observationGridItem ).toBeVisible( ); }, { timeout: 3000, interval: 500 } ); const savedObservation = global.mockRealms[__filename] .objectForPrimaryKey( "Observation", observations[0].uuid ); diff --git a/tests/integration/SuggestionsWithUnsyncedObs.test.js b/tests/integration/SuggestionsWithUnsyncedObs.test.js index b1b4b38f5..5f2c87185 100644 --- a/tests/integration/SuggestionsWithUnsyncedObs.test.js +++ b/tests/integration/SuggestionsWithUnsyncedObs.test.js @@ -169,10 +169,10 @@ const makeMockObservationsWithLocation = ( ) => ( [ const actor = userEvent.setup( ); const navigateToSuggestionsForObservationViaObsEdit = async observation => { - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); const addIdButton = await screen.findByText( "ADD AN ID" ); await actor.press( addIdButton ); }; diff --git a/tests/integration/navigation/MediaViewer.test.js b/tests/integration/navigation/MediaViewer.test.js index 608e35bb7..7a9e50553 100644 --- a/tests/integration/navigation/MediaViewer.test.js +++ b/tests/integration/navigation/MediaViewer.test.js @@ -97,10 +97,10 @@ describe( "MediaViewer navigation", ( ) => { async function navigateToObsEdit( ) { await renderAppWithObservations( observations, __filename ); - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); } it( "should show the first photo when tapped", async ( ) => { @@ -183,10 +183,10 @@ describe( "MediaViewer navigation", ( ) => { async function navigateToObsDetail( ) { await renderAppWithObservations( observations, __filename ); - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); expect( await screen.findByTestId( `ObsDetails.${observation.uuid}` ) ).toBeVisible( ); } @@ -256,10 +256,10 @@ describe( "MediaViewer navigation", ( ) => { async function navigateToTaxonDetail( ) { await renderAppWithObservations( observations, __filename ); - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); expect( await screen.findByTestId( `ObsDetails.${observation.uuid}` ) ).toBeVisible( ); const displayedTaxon = await screen.findByText( taxon.name ); await act( async ( ) => actor.press( displayedTaxon ) ); @@ -308,10 +308,10 @@ describe( "MediaViewer navigation", ( ) => { async function navigateToSuggestions( ) { await renderAppWithObservations( observations, __filename ); - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); expect( await screen.findByTestId( `ObsDetails.${observation.uuid}` ) ).toBeVisible( ); const suggestButton = await screen.findByTestId( "ObsDetail.cvSuggestionsButton" diff --git a/tests/integration/navigation/ObsEdit.test.js b/tests/integration/navigation/ObsEdit.test.js index 397979578..4f6aa3d01 100644 --- a/tests/integration/navigation/ObsEdit.test.js +++ b/tests/integration/navigation/ObsEdit.test.js @@ -147,10 +147,10 @@ describe( "ObsEdit", ( ) => { describe( "from MyObservations", ( ) => { async function navigateToObsEditOrObsDetails( observations ) { await renderAppWithObservations( observations, __filename ); - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observations[0].uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observations[0].uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); } it( "should show correct observation when navigating from MyObservations", async ( ) => { diff --git a/tests/integration/navigation/Suggestions.test.js b/tests/integration/navigation/Suggestions.test.js index fb065af4b..5f46cb8a0 100644 --- a/tests/integration/navigation/Suggestions.test.js +++ b/tests/integration/navigation/Suggestions.test.js @@ -103,25 +103,16 @@ describe( "Suggestions", ( ) => { // We need to navigate from MyObs to ObsEdit to Suggestions for all of these // tests async function navigateToSuggestionsViaObsEditForObservation( observation ) { - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); const addIdButton = observation.taxon ? await screen.findByLabelText( "Edit identification" ) : await screen.findByText( "ADD AN ID" ); await actor.press( addIdButton ); } - // async function navigateToSuggestionsViaObsDetailsForObservation( observation ) { - // const observationRow = await screen.findByTestId( - // `MyObservations.obsListItem.${observation.uuid}` - // ); - // await actor.press( observationRow ); - // const addIdButton = await screen.findByText( "SUGGEST ID" ); - // await actor.press( addIdButton ); - // } - async function navigateToSuggestionsViaCameraForObservation( ) { const tabBar = await screen.findByTestId( "CustomTabBar" ); const addObsButton = await within( tabBar ).findByLabelText( "Add observations" ); diff --git a/tests/integration/navigation/TaxonDetails.test.js b/tests/integration/navigation/TaxonDetails.test.js index 4f0df5456..333b4770c 100644 --- a/tests/integration/navigation/TaxonDetails.test.js +++ b/tests/integration/navigation/TaxonDetails.test.js @@ -115,10 +115,10 @@ describe( "TaxonDetails", ( ) => { // navigate to ObsDetails -> Suggest ID -> Suggestions -> TaxonDetails async function navigateToTaxonDetailsViaSuggestId( observation ) { - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); const suggestIdButton = await screen.findByText( /SUGGEST ID/ ); expect( suggestIdButton ).toBeVisible( ); await actor.press( suggestIdButton ); @@ -127,10 +127,10 @@ describe( "TaxonDetails", ( ) => { // navigate to ObsEdit -> Suggestions -> TaxonDetails async function navigateToTaxonDetailsViaObsEdit( observation ) { - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); const editButton = await screen.findByLabelText( /Edit/ ); expect( editButton ).toBeVisible( ); await actor.press( editButton ); @@ -141,10 +141,10 @@ describe( "TaxonDetails", ( ) => { // navigate to ObsEdit -> Suggestions -> TaxonSearch -> TaxonDetails async function navigateToTaxonDetailsViaTaxonSearch( observation ) { - const observationRow = await screen.findByTestId( - `MyObservations.obsListItem.${observation.uuid}` + const observationGridItem = await screen.findByTestId( + `MyObservations.obsGridItem.${observation.uuid}` ); - await actor.press( observationRow ); + await actor.press( observationGridItem ); const editButton = await screen.findByLabelText( /Edit/ ); expect( editButton ).toBeVisible( ); await actor.press( editButton ); diff --git a/tests/unit/components/MyObservations/MyObservations.test.js b/tests/unit/components/MyObservations/MyObservations.test.js index 8f6eac4b2..bddd04381 100644 --- a/tests/unit/components/MyObservations/MyObservations.test.js +++ b/tests/unit/components/MyObservations/MyObservations.test.js @@ -102,7 +102,7 @@ describe( "MyObservations", () => { it( "render grid view", ( ) => { renderMyObservations( "grid" ); mockObservations.forEach( obs => { - expect( screen.getByTestId( `MyObservations.gridItem.${obs.uuid}` ) ).toBeTruthy(); + expect( screen.getByTestId( `MyObservations.obsGridItem.${obs.uuid}` ) ).toBeTruthy(); } ); } ); diff --git a/tests/unit/components/SharedComponents/ObservationsFlashList/__snapshots__/ObsGridItem.test.js.snap b/tests/unit/components/SharedComponents/ObservationsFlashList/__snapshots__/ObsGridItem.test.js.snap index 72afab54d..4321b6385 100644 --- a/tests/unit/components/SharedComponents/ObservationsFlashList/__snapshots__/ObsGridItem.test.js.snap +++ b/tests/unit/components/SharedComponents/ObservationsFlashList/__snapshots__/ObsGridItem.test.js.snap @@ -29,7 +29,7 @@ exports[`ObsGridItem for an observation with a photo should render 1`] = ` ], ] } - testID="MyObservations.gridItem.00000000-0000-0000-0000-000000000000" + testID="MyObservations.obsGridItem.00000000-0000-0000-0000-000000000000" >