From ed080912a1411c768330084bdb52ce8222265454 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Thu, 30 Apr 2026 15:27:38 +0200 Subject: [PATCH 1/3] test(intro-screen-native): fix snapshots and tests --- .../src/__tests__/IntroScreen.notch.spec.tsx | 33 ++- .../src/__tests__/IntroScreen.spec.tsx | 33 ++- .../IntroScreen.notch.spec.tsx.snap | 197 +++++++++++++++++- .../__snapshots__/IntroScreen.spec.tsx.snap | 197 +++++++++++++++++- 4 files changed, 438 insertions(+), 22 deletions(-) diff --git a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx index aa448378f..05936ab02 100644 --- a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx +++ b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx @@ -1,5 +1,5 @@ import { createElement } from "react"; -import { render } from "@testing-library/react-native"; +import { render, act } from "@testing-library/react-native"; import { IntroScreen } from "../IntroScreen"; import { IntroScreenProps } from "../../typings/IntroScreenProps"; import { IntroScreenStyle } from "../ui/Styles"; @@ -13,8 +13,8 @@ jest.mock("react-native-device-info", () => ({ })); jest.mock("@react-native-async-storage/async-storage", () => ({ - getItem: jest.fn().mockResolvedValue("gone"), - setValue: jest.fn().mockResolvedValue(null) + getItem: jest.fn().mockResolvedValue(null), + setItem: jest.fn().mockResolvedValue(null) })); describe("Intro Screen", () => { @@ -36,39 +36,52 @@ describe("Intro Screen", () => { hideIndicatorLastSlide: false, identifier: "" }; - - jest.useFakeTimers(); }); - it("renders", () => { + it("renders", async () => { const component = render(); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with 1 bottom button", () => { + it("renders with 1 bottom button", async () => { const component = render( ); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with 2 bottom button", () => { + it("renders with 2 bottom button", async () => { const component = render(); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with active slide attribute", () => { + it("renders with active slide attribute", async () => { const component = render( ().withValue(new Big(1)).build()} /> ); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with async storage identifier", () => { + it("renders with async storage identifier", async () => { const component = render(); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx index ada286a09..467e6556c 100644 --- a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx +++ b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx @@ -1,5 +1,5 @@ import { createElement } from "react"; -import { render } from "@testing-library/react-native"; +import { render, act } from "@testing-library/react-native"; import { IntroScreen } from "../IntroScreen"; import { IntroScreenProps } from "../../typings/IntroScreenProps"; import { IntroScreenStyle } from "../ui/Styles"; @@ -13,8 +13,8 @@ jest.mock("react-native-device-info", () => ({ })); jest.mock("@react-native-async-storage/async-storage", () => ({ - getItem: jest.fn().mockResolvedValue("gone"), - setValue: jest.fn().mockResolvedValue(null) + getItem: jest.fn().mockResolvedValue(null), + setItem: jest.fn().mockResolvedValue(null) })); describe("Intro Screen", () => { @@ -41,39 +41,52 @@ describe("Intro Screen", () => { hasNotch: jest.fn(), getDeviceId: jest.fn().mockReturnValue("iPhone") })); - - jest.useFakeTimers(); }); - it("renders", () => { + it("renders", async () => { const component = render(); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with 1 bottom button", () => { + it("renders with 1 bottom button", async () => { const component = render( ); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with 2 bottom button", () => { + it("renders with 2 bottom button", async () => { const component = render(); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with active slide attribute", () => { + it("renders with active slide attribute", async () => { const component = render( ().withValue(new Big(1)).build()} /> ); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); - it("renders with async storage identifier", () => { + it("renders with async storage identifier", async () => { const component = render(); + await act(async () => { + /* Wait for any async operations to complete */ + }); expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap b/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap index 4c7d1018a..1f5d722ca 100644 --- a/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap +++ b/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap @@ -8,4 +8,199 @@ exports[`Intro Screen renders with 2 bottom button 1`] = `null`; exports[`Intro Screen renders with active slide attribute 1`] = `null`; -exports[`Intro Screen renders with async storage identifier 1`] = `null`; +exports[`Intro Screen renders with async storage identifier 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-notch-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + +`; diff --git a/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.spec.tsx.snap b/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.spec.tsx.snap index 4c7d1018a..19b6c64dc 100644 --- a/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.spec.tsx.snap +++ b/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.spec.tsx.snap @@ -8,4 +8,199 @@ exports[`Intro Screen renders with 2 bottom button 1`] = `null`; exports[`Intro Screen renders with active slide attribute 1`] = `null`; -exports[`Intro Screen renders with async storage identifier 1`] = `null`; +exports[`Intro Screen renders with async storage identifier 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + +`; From d23d808035220102267ac7718873a4e84dbb4049 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Mon, 4 May 2026 14:55:10 +0200 Subject: [PATCH 2/3] test(intro-screen-native): adressed async rerender on initial state update Co-authored-by: Copilot --- .../src/__tests__/IntroScreen.notch.spec.tsx | 25 +++++++------------ .../src/__tests__/IntroScreen.spec.tsx | 25 +++++++------------ 2 files changed, 18 insertions(+), 32 deletions(-) diff --git a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx index 05936ab02..487aa4cfc 100644 --- a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx +++ b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.notch.spec.tsx @@ -3,7 +3,7 @@ import { render, act } from "@testing-library/react-native"; import { IntroScreen } from "../IntroScreen"; import { IntroScreenProps } from "../../typings/IntroScreenProps"; import { IntroScreenStyle } from "../ui/Styles"; -import { View } from "react-native"; +import { InteractionManager, View } from "react-native"; import { EditableValueBuilder } from "@mendix/piw-utils-internal"; import { Big } from "big.js"; @@ -17,6 +17,9 @@ jest.mock("@react-native-async-storage/async-storage", () => ({ setItem: jest.fn().mockResolvedValue(null) })); +const flushInteractions = (): Promise => + act(() => new Promise(resolve => InteractionManager.runAfterInteractions(resolve))); + describe("Intro Screen", () => { let defaultProps: IntroScreenProps; @@ -40,9 +43,7 @@ describe("Intro Screen", () => { it("renders", async () => { const component = render(); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); @@ -50,17 +51,13 @@ describe("Intro Screen", () => { const component = render( ); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); it("renders with 2 bottom button", async () => { const component = render(); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); @@ -71,17 +68,13 @@ describe("Intro Screen", () => { activeSlideAttribute={new EditableValueBuilder().withValue(new Big(1)).build()} /> ); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); it("renders with async storage identifier", async () => { const component = render(); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx index 467e6556c..8441c8817 100644 --- a/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx +++ b/packages/pluggableWidgets/intro-screen-native/src/__tests__/IntroScreen.spec.tsx @@ -1,9 +1,9 @@ import { createElement } from "react"; import { render, act } from "@testing-library/react-native"; +import { InteractionManager, View } from "react-native"; import { IntroScreen } from "../IntroScreen"; import { IntroScreenProps } from "../../typings/IntroScreenProps"; import { IntroScreenStyle } from "../ui/Styles"; -import { View } from "react-native"; import { EditableValueBuilder } from "@mendix/piw-utils-internal"; import { Big } from "big.js"; @@ -17,6 +17,9 @@ jest.mock("@react-native-async-storage/async-storage", () => ({ setItem: jest.fn().mockResolvedValue(null) })); +const flushInteractions = (): Promise => + act(() => new Promise(resolve => InteractionManager.runAfterInteractions(resolve))); + describe("Intro Screen", () => { let defaultProps: IntroScreenProps; @@ -45,9 +48,7 @@ describe("Intro Screen", () => { it("renders", async () => { const component = render(); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); @@ -55,17 +56,13 @@ describe("Intro Screen", () => { const component = render( ); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); it("renders with 2 bottom button", async () => { const component = render(); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); @@ -76,17 +73,13 @@ describe("Intro Screen", () => { activeSlideAttribute={new EditableValueBuilder().withValue(new Big(1)).build()} /> ); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); it("renders with async storage identifier", async () => { const component = render(); - await act(async () => { - /* Wait for any async operations to complete */ - }); + await flushInteractions(); expect(component.toJSON()).toMatchSnapshot(); }); }); From 35c046d7fdc0bd03b1362d40537653830f111d3a Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Mon, 4 May 2026 14:55:33 +0200 Subject: [PATCH 3/3] chore(intro-screen-native): update snapshots --- .../IntroScreen.notch.spec.tsx.snap | 816 +++++++++++++++++- .../__snapshots__/IntroScreen.spec.tsx.snap | 816 +++++++++++++++++- 2 files changed, 1624 insertions(+), 8 deletions(-) diff --git a/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap b/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap index 1f5d722ca..84d21083a 100644 --- a/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap +++ b/packages/pluggableWidgets/intro-screen-native/src/__tests__/__snapshots__/IntroScreen.notch.spec.tsx.snap @@ -1,12 +1,820 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Intro Screen renders 1`] = `null`; +exports[`Intro Screen renders 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-notch-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + +`; -exports[`Intro Screen renders with 1 bottom button 1`] = `null`; +exports[`Intro Screen renders with 1 bottom button 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-notch-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + + + + + +`; -exports[`Intro Screen renders with 2 bottom button 1`] = `null`; +exports[`Intro Screen renders with 2 bottom button 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-notch-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + + + + + +`; -exports[`Intro Screen renders with active slide attribute 1`] = `null`; +exports[`Intro Screen renders with active slide attribute 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-notch-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + +`; exports[`Intro Screen renders with async storage identifier 1`] = ` + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + +`; -exports[`Intro Screen renders with 1 bottom button 1`] = `null`; +exports[`Intro Screen renders with 1 bottom button 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + + + + + +`; -exports[`Intro Screen renders with 2 bottom button 1`] = `null`; +exports[`Intro Screen renders with 2 bottom button 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + + + + + +`; -exports[`Intro Screen renders with active slide attribute 1`] = `null`; +exports[`Intro Screen renders with active slide attribute 1`] = ` + + + + , + "name": "Page 1", + }, + ] + } + extraData={ + [ + 0, + 0, + ] + } + getItem={[Function]} + getItemCount={[Function]} + getItemLayout={[Function]} + horizontal={true} + importantForAccessibility="no" + initialScrollIndex={0} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + pagingEnabled={true} + removeClippedSubviews={true} + renderItem={[Function]} + scrollEventThrottle={50} + showsHorizontalScrollIndicator={false} + stickyHeaderIndices={[]} + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + testID="intro-screen-test" + viewabilityConfigCallbackPairs={[]} + > + + + + + + + + + + + + + + + + + + + +`; exports[`Intro Screen renders with async storage identifier 1`] = `