Skip to content

react-native-windows/cavy-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cavy-extension

npm version

Cavy is a cross-platform integration test framework for React Native.

Cavy-extension is a test page focused cavy extension, and it's ideally for component testing. SimpleTestApp setups a two page navigation(mainpage and subpage), and helps you maintains the navigation between them. You only need to focus on the test page area. (yellow part below)

relationship

It's main functionality:

  • It simplied the steps in component testing and enable user only need to be focused only on authoring test spec and test pages.
  • User only need to provides a testpage, a key which associate swith the testpage. And toTestPage would help to navigate directly to the test page.
  • Allow user to extend the functionality of TestScope and provides IntelliSense when authoring spec.

Usage Check out the sample app for a full example of how you may want to integrate cavy-extension into your native testing setup.

Pre steps

  • Installation To get started using Cavy with native reporting, install using yarn: yarn add cavy cavy-extension --dev or npm: npm i --save-dev cavy cavy-extension
  • create TestPages and replace the app with SimpleTestApp, then hook up them together in a testapp
      <Tester specs={[ExampleSpec]} store={testHookStore}>
        <SimpleTestApp testPages={TestPages} />
      </Tester>
  • convert your project to typescript. It's optionally

Steps to authoring test case

  1. Write a simple UI test page.
export const ExampleTestPage1 = () => {
    const generateTestHook = useCavy();
    const [text, setText] = useState('');

    return <TextInput placeholder="ExampleTestpage 1"
        onChangeText={(text) => setText(text)} value={text}
        ref={generateTestHook('Example1.TextInput')} />;
};
  1. Aggregate the testpages with keys. For example: Example1
export const TestPages: Array<ITestPage> = [
    {
        key: 'Example1',
        title: 'TestExample by import {ExampleTestPage1}',
        page: ExampleTestPage1
    },
    {
        key: 'Example2',
        title: 'TestExample by import ExampleTestPage',
        page: ExaExampleTestPage2
    },
  1. Write the spec. toTestPage('Example1') helps to navigate to test page.
      await spec2.toTestPage('Example1');

Functionality of this extension

  • Provides a simple testapp, test main page, back button on subpage. and toTestPage to help the navigation.

    1. Test main page

    testcaselist

    1. Test sub page

    testcase

  • Add your own functionality to spec and inject it to spec. like Spec2

function ExampleSpec (spec: TestScope, spec2: SpecHelper) {
  spec.describe('Example 1', function () {

    spec.it('Test Example 1', async function () {
      await spec2.toTestPage('Example1');
...
    });

  });

Or

export default function (spec: TestScope) {
  let spec2: SpecHelper = new SpecHelper(spec);

  spec.describe('Sample Module', function () {

    spec.it('SampleModule', async function () {
      await spec2.toTestPage('SampleModule');
     ...
    });

  });
  • A typescript project IntelliSense for spec or spec2 in IDE.

intell

Test Example

mYtEST