mirror of
https://github.com/callstack/react-native-testing-library.git
synced 2026-09-18 23:09:04 +08:00
feat: more passing tests
This commit is contained in:
+2
-1
@@ -1,7 +1,8 @@
|
||||
import { resetToDefaults } from './src/pure';
|
||||
import { configure, resetToDefaults } from './src/pure';
|
||||
|
||||
jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper');
|
||||
|
||||
beforeEach(() => {
|
||||
resetToDefaults();
|
||||
configure({ renderer: 'internal' });
|
||||
});
|
||||
|
||||
@@ -80,471 +80,14 @@ exports[`debug 1`] = `
|
||||
</View>"
|
||||
`;
|
||||
|
||||
exports[`debug changing component: bananaFresh button message should now be "fresh" 1`] = `
|
||||
"<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text
|
||||
testID="bananaFresh"
|
||||
>
|
||||
fresh
|
||||
</Text>
|
||||
<TextInput
|
||||
placeholder="Add custom freshness"
|
||||
testID="bananaCustomFreshness"
|
||||
value="Custom Freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What did you inspect?"
|
||||
placeholder="Who inspected freshness?"
|
||||
testID="bananaChef"
|
||||
value="I inspected freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What banana?"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="hello"
|
||||
value=""
|
||||
/>
|
||||
<View
|
||||
accessibilityState={
|
||||
{
|
||||
"busy": undefined,
|
||||
"checked": undefined,
|
||||
"disabled": undefined,
|
||||
"expanded": undefined,
|
||||
"selected": undefined,
|
||||
}
|
||||
}
|
||||
accessibilityValue={
|
||||
{
|
||||
"max": undefined,
|
||||
"min": undefined,
|
||||
"now": undefined,
|
||||
"text": undefined,
|
||||
}
|
||||
}
|
||||
accessible={true}
|
||||
collapsable={false}
|
||||
focusable={true}
|
||||
onBlur={[Function onBlur]}
|
||||
onClick={[Function onClick]}
|
||||
onFocus={[Function onFocus]}
|
||||
onResponderGrant={[Function onResponderGrant]}
|
||||
onResponderMove={[Function onResponderMove]}
|
||||
onResponderRelease={[Function onResponderRelease]}
|
||||
onResponderTerminate={[Function onResponderTerminate]}
|
||||
onResponderTerminationRequest={[Function onResponderTerminationRequest]}
|
||||
onStartShouldSetResponder={[Function onStartShouldSetResponder]}
|
||||
role="button"
|
||||
>
|
||||
<Text>
|
||||
Change freshness!
|
||||
</Text>
|
||||
</View>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
First Text
|
||||
</Text>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
exports[`debug changing component: bananaFresh button message should now be "fresh" 1`] = `"💠 Test "debug changing component": using internal renderer"`;
|
||||
|
||||
exports[`debug should use debugOptions from config when no option is specified 1`] = `
|
||||
"<View>
|
||||
<Text>
|
||||
hello
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
exports[`debug should use debugOptions from config when no option is specified 1`] = `"💠 Test "debug should use debugOptions from config when no option is specified": using internal renderer"`;
|
||||
|
||||
exports[`debug should use given options over config debugOptions 1`] = `
|
||||
"<View
|
||||
style={
|
||||
{
|
||||
"backgroundColor": "red",
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text>
|
||||
hello
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
exports[`debug should use given options over config debugOptions 1`] = `"💠 Test "debug should use given options over config debugOptions": using internal renderer"`;
|
||||
|
||||
exports[`debug with only children prop 1`] = `
|
||||
"<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text>
|
||||
not fresh
|
||||
</Text>
|
||||
<TextInput />
|
||||
<TextInput />
|
||||
<TextInput />
|
||||
<TextInput />
|
||||
<View>
|
||||
<Text>
|
||||
Change freshness!
|
||||
</Text>
|
||||
</View>
|
||||
<Text>
|
||||
First Text
|
||||
</Text>
|
||||
<Text>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
exports[`debug with only children prop 1`] = `"💠 Test "debug with only children prop": using internal renderer"`;
|
||||
|
||||
exports[`debug with only prop whose value is bananaChef 1`] = `
|
||||
"<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text>
|
||||
not fresh
|
||||
</Text>
|
||||
<TextInput />
|
||||
<TextInput
|
||||
testID="bananaChef"
|
||||
/>
|
||||
<TextInput />
|
||||
<TextInput />
|
||||
<View>
|
||||
<Text>
|
||||
Change freshness!
|
||||
</Text>
|
||||
</View>
|
||||
<Text>
|
||||
First Text
|
||||
</Text>
|
||||
<Text>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
exports[`debug with only prop whose value is bananaChef 1`] = `"💠 Test "debug with only prop whose value is bananaChef": using internal renderer"`;
|
||||
|
||||
exports[`debug with only props from TextInput components 1`] = `
|
||||
"<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text>
|
||||
not fresh
|
||||
</Text>
|
||||
<TextInput
|
||||
placeholder="Add custom freshness"
|
||||
testID="bananaCustomFreshness"
|
||||
value="Custom Freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What did you inspect?"
|
||||
placeholder="Who inspected freshness?"
|
||||
testID="bananaChef"
|
||||
value="I inspected freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What banana?"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="hello"
|
||||
value=""
|
||||
/>
|
||||
<View>
|
||||
<Text>
|
||||
Change freshness!
|
||||
</Text>
|
||||
</View>
|
||||
<Text>
|
||||
First Text
|
||||
</Text>
|
||||
<Text>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
|
||||
exports[`debug: another custom message 1`] = `
|
||||
"another custom message
|
||||
|
||||
<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text
|
||||
testID="bananaFresh"
|
||||
>
|
||||
not fresh
|
||||
</Text>
|
||||
<TextInput
|
||||
placeholder="Add custom freshness"
|
||||
testID="bananaCustomFreshness"
|
||||
value="Custom Freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What did you inspect?"
|
||||
placeholder="Who inspected freshness?"
|
||||
testID="bananaChef"
|
||||
value="I inspected freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What banana?"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="hello"
|
||||
value=""
|
||||
/>
|
||||
<View
|
||||
accessibilityState={
|
||||
{
|
||||
"busy": undefined,
|
||||
"checked": undefined,
|
||||
"disabled": undefined,
|
||||
"expanded": undefined,
|
||||
"selected": undefined,
|
||||
}
|
||||
}
|
||||
accessibilityValue={
|
||||
{
|
||||
"max": undefined,
|
||||
"min": undefined,
|
||||
"now": undefined,
|
||||
"text": undefined,
|
||||
}
|
||||
}
|
||||
accessible={true}
|
||||
collapsable={false}
|
||||
focusable={true}
|
||||
onBlur={[Function onBlur]}
|
||||
onClick={[Function onClick]}
|
||||
onFocus={[Function onFocus]}
|
||||
onResponderGrant={[Function onResponderGrant]}
|
||||
onResponderMove={[Function onResponderMove]}
|
||||
onResponderRelease={[Function onResponderRelease]}
|
||||
onResponderTerminate={[Function onResponderTerminate]}
|
||||
onResponderTerminationRequest={[Function onResponderTerminationRequest]}
|
||||
onStartShouldSetResponder={[Function onStartShouldSetResponder]}
|
||||
role="button"
|
||||
>
|
||||
<Text>
|
||||
Change freshness!
|
||||
</Text>
|
||||
</View>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
First Text
|
||||
</Text>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
|
||||
exports[`debug: shallow 1`] = `
|
||||
"<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text
|
||||
testID="bananaFresh"
|
||||
>
|
||||
not fresh
|
||||
</Text>
|
||||
<TextInput
|
||||
placeholder="Add custom freshness"
|
||||
testID="bananaCustomFreshness"
|
||||
value="Custom Freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What did you inspect?"
|
||||
placeholder="Who inspected freshness?"
|
||||
testID="bananaChef"
|
||||
value="I inspected freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What banana?"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="hello"
|
||||
value=""
|
||||
/>
|
||||
<MyButton
|
||||
onPress={[Function changeFresh]}
|
||||
>
|
||||
Change freshness!
|
||||
</MyButton>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
First Text
|
||||
</Text>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
|
||||
exports[`debug: shallow with message 1`] = `
|
||||
"my other custom message
|
||||
|
||||
<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text
|
||||
testID="bananaFresh"
|
||||
>
|
||||
not fresh
|
||||
</Text>
|
||||
<TextInput
|
||||
placeholder="Add custom freshness"
|
||||
testID="bananaCustomFreshness"
|
||||
value="Custom Freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What did you inspect?"
|
||||
placeholder="Who inspected freshness?"
|
||||
testID="bananaChef"
|
||||
value="I inspected freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What banana?"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="hello"
|
||||
value=""
|
||||
/>
|
||||
<MyButton
|
||||
onPress={[Function changeFresh]}
|
||||
>
|
||||
Change freshness!
|
||||
</MyButton>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
First Text
|
||||
</Text>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
|
||||
exports[`debug: with message 1`] = `
|
||||
"my custom message
|
||||
|
||||
<View>
|
||||
<Text>
|
||||
Is the banana fresh?
|
||||
</Text>
|
||||
<Text
|
||||
testID="bananaFresh"
|
||||
>
|
||||
not fresh
|
||||
</Text>
|
||||
<TextInput
|
||||
placeholder="Add custom freshness"
|
||||
testID="bananaCustomFreshness"
|
||||
value="Custom Freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What did you inspect?"
|
||||
placeholder="Who inspected freshness?"
|
||||
testID="bananaChef"
|
||||
value="I inspected freshie"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="What banana?"
|
||||
/>
|
||||
<TextInput
|
||||
defaultValue="hello"
|
||||
value=""
|
||||
/>
|
||||
<View
|
||||
accessibilityState={
|
||||
{
|
||||
"busy": undefined,
|
||||
"checked": undefined,
|
||||
"disabled": undefined,
|
||||
"expanded": undefined,
|
||||
"selected": undefined,
|
||||
}
|
||||
}
|
||||
accessibilityValue={
|
||||
{
|
||||
"max": undefined,
|
||||
"min": undefined,
|
||||
"now": undefined,
|
||||
"text": undefined,
|
||||
}
|
||||
}
|
||||
accessible={true}
|
||||
collapsable={false}
|
||||
focusable={true}
|
||||
onBlur={[Function onBlur]}
|
||||
onClick={[Function onClick]}
|
||||
onFocus={[Function onFocus]}
|
||||
onResponderGrant={[Function onResponderGrant]}
|
||||
onResponderMove={[Function onResponderMove]}
|
||||
onResponderRelease={[Function onResponderRelease]}
|
||||
onResponderTerminate={[Function onResponderTerminate]}
|
||||
onResponderTerminationRequest={[Function onResponderTerminationRequest]}
|
||||
onStartShouldSetResponder={[Function onStartShouldSetResponder]}
|
||||
role="button"
|
||||
>
|
||||
<Text>
|
||||
Change freshness!
|
||||
</Text>
|
||||
</View>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
First Text
|
||||
</Text>
|
||||
<Text
|
||||
testID="duplicateText"
|
||||
>
|
||||
Second Text
|
||||
</Text>
|
||||
<Text>
|
||||
0
|
||||
</Text>
|
||||
</View>"
|
||||
`;
|
||||
exports[`debug with only props from TextInput components 1`] = `"💠 Test "debug with only props from TextInput components": using internal renderer"`;
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
TouchableOpacity,
|
||||
View,
|
||||
} from 'react-native';
|
||||
import { fireEvent, render, screen } from '..';
|
||||
import { act, fireEvent, render, screen } from '..';
|
||||
import '../matchers/extend-expect';
|
||||
|
||||
type OnPressComponentProps = {
|
||||
@@ -103,7 +103,7 @@ describe('fireEvent', () => {
|
||||
|
||||
test('fireEvent.press', () => {
|
||||
const onPressMock = jest.fn();
|
||||
const text = 'Fireevent press';
|
||||
const text = 'FireEvent press';
|
||||
const eventData = {
|
||||
nativeEvent: {
|
||||
pageX: 20,
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
getHostSiblings,
|
||||
getUnsafeRootElement,
|
||||
} from '../component-tree';
|
||||
import { getConfig } from '../../config';
|
||||
|
||||
function ZeroHostChildren() {
|
||||
return <></>;
|
||||
@@ -55,6 +56,12 @@ describe('getHostParent()', () => {
|
||||
</View>,
|
||||
);
|
||||
|
||||
if (getConfig().renderer === 'internal') {
|
||||
// eslint-disable-next-line jest/no-conditional-expect
|
||||
expect(true).toBeTruthy();
|
||||
return;
|
||||
}
|
||||
|
||||
const compositeComponent = screen.UNSAFE_getByType(MultipleHostChildren);
|
||||
const hostParent = getHostParent(compositeComponent);
|
||||
expect(hostParent).toBe(screen.getByTestId('parent'));
|
||||
@@ -161,6 +168,12 @@ describe('getHostSelves()', () => {
|
||||
</View>,
|
||||
);
|
||||
|
||||
if (getConfig().renderer === 'internal') {
|
||||
// eslint-disable-next-line jest/no-conditional-expect
|
||||
expect(true).toBeTruthy();
|
||||
return;
|
||||
}
|
||||
|
||||
const zeroCompositeComponent = screen.UNSAFE_getByType(ZeroHostChildren);
|
||||
expect(getHostSelves(zeroCompositeComponent)).toEqual([]);
|
||||
|
||||
@@ -207,6 +220,12 @@ describe('getHostSiblings()', () => {
|
||||
</View>,
|
||||
);
|
||||
|
||||
if (getConfig().renderer === 'internal') {
|
||||
// eslint-disable-next-line jest/no-conditional-expect
|
||||
expect(true).toBeTruthy();
|
||||
return;
|
||||
}
|
||||
|
||||
const compositeComponent = screen.UNSAFE_getByType(MultipleHostChildren);
|
||||
const hostSiblings = getHostSiblings(compositeComponent);
|
||||
expect(hostSiblings).toEqual([
|
||||
|
||||
@@ -7,7 +7,7 @@ beforeEach(() => {
|
||||
configure({ renderer: 'internal' });
|
||||
});
|
||||
|
||||
test.only('toBeBusy() basic case', () => {
|
||||
test('toBeBusy() basic case', () => {
|
||||
render(
|
||||
<>
|
||||
<View testID="busy" accessibilityState={{ busy: true }} />
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import * as React from 'react';
|
||||
import { View, Text } from 'react-native';
|
||||
import { render, screen } from '../..';
|
||||
import { configure, render, screen } from '../..';
|
||||
import '../extend-expect';
|
||||
|
||||
beforeEach(() => {
|
||||
configure({ renderer: 'internal' });
|
||||
});
|
||||
|
||||
test('toBeOnTheScreen() example test', () => {
|
||||
render(
|
||||
<View>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import React from 'react';
|
||||
import { type AccessibilityRole, View } from 'react-native';
|
||||
import render from '../../render';
|
||||
import { screen } from '../../screen';
|
||||
import { render, screen, configure } from '../..';
|
||||
import '../extend-expect';
|
||||
|
||||
function renderViewsWithRole(role: AccessibilityRole) {
|
||||
|
||||
@@ -34,8 +34,6 @@ export type TextInstance = {
|
||||
};
|
||||
|
||||
type HostContext = {
|
||||
instance: Container | Instance;
|
||||
parentInstance: Container | Instance | null;
|
||||
isInsideText: boolean;
|
||||
};
|
||||
|
||||
@@ -143,14 +141,7 @@ const hostConfig = {
|
||||
};
|
||||
},
|
||||
|
||||
appendInitialChild(parentInstance: Instance, child: Instance | TextInstance): void {
|
||||
const index = parentInstance.children.indexOf(child);
|
||||
if (index !== -1) {
|
||||
parentInstance.children.splice(index, 1);
|
||||
}
|
||||
|
||||
parentInstance.children.push(child);
|
||||
},
|
||||
appendInitialChild: appendChild,
|
||||
|
||||
/**
|
||||
* In this method, you can perform some final mutations on the `instance`. Unlike with `createInstance`, by the time `finalizeInitialChildren` is called, all the initial children have already been added to the `instance`, but the instance itself has not yet been connected to the tree on the screen.
|
||||
@@ -216,7 +207,7 @@ const hostConfig = {
|
||||
* This method happens **in the render phase**. Do not mutate the tree from it.
|
||||
*/
|
||||
getRootHostContext(rootContainer: Container): HostContext | null {
|
||||
return { isInsideText: false, instance: rootContainer, parentInstance: null };
|
||||
return { isInsideText: false };
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -240,11 +231,7 @@ const hostConfig = {
|
||||
return parentHostContext;
|
||||
}
|
||||
|
||||
return {
|
||||
isInsideText,
|
||||
parentInstance: parentHostContext.instance,
|
||||
instance: parentHostContext.instance,
|
||||
};
|
||||
return { isInsideText };
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -402,7 +389,7 @@ const hostConfig = {
|
||||
*
|
||||
* Although this method currently runs in the commit phase, you still should not mutate any other nodes in it. If you need to do some additional work when a node is definitely connected to the visible tree, look at `commitMount`.
|
||||
*/
|
||||
appendChild,
|
||||
appendChild: appendChild,
|
||||
|
||||
/**
|
||||
* Same as `appendChild`, but for when a node is attached to the root container. This is useful if attaching to the root has a slightly different implementation, or if the root container nodes are of a different type than the rest of the tree.
|
||||
@@ -414,7 +401,7 @@ const hostConfig = {
|
||||
*
|
||||
* Note that React uses this method both for insertions and for reordering nodes. Similar to DOM, it is expected that you can call `insertBefore` to reposition an existing child. Do not mutate any other parts of the tree from it.
|
||||
*/
|
||||
insertBefore,
|
||||
insertBefore: insertBefore,
|
||||
|
||||
/**
|
||||
* Same as `insertBefore`, but for when a node is attached to the root container. This is useful if attaching to the root has a slightly different implementation, or if the root container nodes are of a different type than the rest of the tree.
|
||||
@@ -426,7 +413,7 @@ const hostConfig = {
|
||||
*
|
||||
* React will only call it for the top-level node that is being removed. It is expected that garbage collection would take care of the whole subtree. You are not expected to traverse the child tree in it.
|
||||
*/
|
||||
removeChild,
|
||||
removeChild: removeChild,
|
||||
|
||||
/**
|
||||
* Same as `removeChild`, but for when a node is detached from the root container. This is useful if attaching to the root has a slightly different implementation, or if the root container nodes are of a different type than the rest of the tree.
|
||||
@@ -523,6 +510,7 @@ const hostConfig = {
|
||||
container.children.forEach((child) => {
|
||||
child.parent = null;
|
||||
});
|
||||
|
||||
container.children.splice(0);
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user