Comments (4)
Ah I see! Sorry, I'm unfamiliar with how Redux Form works.
I've taken a closer look and think I have a solution - you're almost there!
In your form component:
<Field name="email" cavyName='LoginScreen.Username' component={RenderInput} />
<Field name="name" cavyName='LoginScreen.Password' component={RenderInput} />
In your RenderInput component:
export default function RenderInput({ input, cavyName }) {
const generateTestHook = useCavy();
const TestableTextInput = wrap(TextInput);
return(
<TestableTextInput {...input} ref={generateTestHook(cavyName)}/>
)
}
and in your tests:
spec.it('Success Index', async function() {
...
const username = await spec.findComponent('LoginScreen.Username');
usernameInput.props.onChange('abigail');
const password = await spec.findComponent('LoginScreen.Password');
passwordInput.props.onChange('mypassword');
});
Running these tests with this code works for me :)
Compared to your solution, there were two things I needed to change to get this to work due to how Redux Form is rendering it's components:
- Wrapping the input component (see these docs).
- Not using
fillIn
- when I inspected the components returned in the test usingfindComponent
, I could see thatonChangeText
was not included in its props (which is whatfillIn
uses under the hood). However, I saw that there was anonChange
prop that I could call directly! (see these docs).
from cavy.
Hi @FR98 ! Have you tried adding the generateTestHook
ref to the inner <TextInput>
instead of the <Field>
component? Cavy needs a reference to the component with the onChangeText
prop for fillIn
to work.
from cavy.
Hi @AbigailMcP , thanks for your response... I can't do that because I use the <Field>
component in others input fields at the same time (username and password) so I cannot define the generateTestHook
ref in the inner <TextInput>
. So I tried through pass the ref but it doesn't work as I spected and then I tried to define the generateTestHook
ref in the <Field>
dynamicaly by passing the name but it doesnt work... I dont know why (I think it should work) :(
So... I think the solution is to through pass the ref from the <Field>
to the inner <TextInput>
, but I could not. Do you have any idea?
from cavy.
Oh, it works! Thank you so much!
from cavy.
Related Issues (20)
- Call methods from wrapped Cavy components (multiple refs ?) HOT 3
- spec.press resulting in error for non Button components HOT 7
- Can't see test outputs in expo project HOT 3
- Problems with running it on Wndows HOT 3
- Passing an object ref as second argument to generateTestHook doesn't work HOT 4
- React Legacy API string refs unsupported
- Add the possibility to start a test from a deepLink HOT 4
- Testing on real device logs not showing HOT 2
- component.props.onChange' is undefined HOT 3
- React Navigation doesn't unmount previous screens, causes `spec.findComponent` to return true. HOT 2
- Redux Action Dispatch from a Spec HOT 1
- Future of Cavy and Community HOT 1
- Can't close modals of react-native-modal-datetime-picker package HOT 1
- Update Peer Deps to support React 17+ HOT 1
- No response from Cavy HOT 2
- Wrapping TextInput and using another ref causing error
- Pressable elements are turns to double tap
- Cavy test just launches the app HOT 1
- [Cavy + Expo] iOS system prompt is blocking tests execution for cavy run-ios --skipbuild
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cavy.