UI Testing Tools Guidelines Q3 2020

Unit and Integration Tests for Folio UI modules

  1. For all new functionality teams have to use RTL and/or Jest to build unit or integration tests.
  2. Resources: All UI developers will be utilizing RTL and Jest for creating tests with exception of Stripes Force team and developers who will be building UI end-2-end test suite (see below) 
  3. Tool Selection:
    1. We are converting to mainstream testing tools adopted by React JS community
    2. Real browser rendering does not required for UI module testing trerefore selection of RTL and Jest is appropriate
    3. Onboarding new UI developers will be easier because we'll be employing tools that are commonly used outside of Folio project
    4. Only RTL/Jest should be used across all UI modules. It will allow developers to switch work from one module to another without learning curve.
  4.  Transition:
    1. Existing BigTest test cases have to be reimplemented (if applicable) with RTL/Jest according to priorities set by PO.
    2. Teams have to maintain and execute BigTest tests until coverage of 80+% has been achieved with RTL/Jest.
    3. Teams have to maintain 2 separate coverage reports for both BigTest and RTL/Jest
    4. UI module build pipeline has to include additional step for RTL/Jest tests. 
    5. BigTest step can be removed from the pipeline only after RTL/Jest step is reporting 80%+ code coverage.

Stripes 

  1. All Stripes modules should use next release of BigTest.
  2. Tool selection:
    1. It is important to test Stripes components rendering in the real browser
    2. BigTest has the best browser support as well as iOS
    3. BigTest project has adequate functionality available to start work now
    4. Allows testing of responsive design features as well as rendering on the iPad
    5. Next version of Big Test requires no UI bundle instrumentation
    6. Tests can be run against any UI bundle as long as URL access is available
  3. Transition:
    1. Stripes Force team has to migrate existing BigTest test suite to the new version.
  4. Resources:
    1. Only developers working with Stripes will need to learn how to use new version of BigTest.
    2. Frontsite will allocate resources to assist with this transition 

Replacement of NightmareJS End-2-End Tests 

  1. Replace NightmareJS (end-2-end) tests with next release of Big Test
  2. Tool selection notes: (see tool selection notes for Stripes)
  3. Transition:
    1. Continue to maintain and execute Nightmare JS tests until BigTest test suite provides greater coverage in terms of functionality and test cases.
    2. PO will select test cases from Bug Fest test plan to be automated.
    3. Jenkins pipeline should execute BigTest tests against folio-testing system on the daily basis.
    4. Test suite will be designed to run on any system that deploys platform-complete
  4. Resources:
    1. Zak needs to maintain NightmareJS test suite until we're ready to drop it.
    2. Folio project will need to allocate UI developer(s) to implement BigTest test suite.
    3. Frontsite will allocate resources to assist with creation of this test suite.


BigTest Considerations

  1. BigTest tool is very promising. However, it is in the Beta phase of v1.0 release.
  2. We need to utilize Big Test without overcommitting significant Folio dev resources
  3. Approach was chosen to balance the need for browser based end to end tests and exposure to smaller, less mature tooling