Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Results of the testing investigation issued by 

Jira Legacy
serverSystem Jira
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyFOLIO-1397
 :

...

To run tests use yarn test command in the terminal in the project root folder. This command refers to the npm script in the package.json.

"test": "stripes test karma"

This command would produce the following output in the terminal:

...

To run tests with coverage change the command to look like below:

"test": "stripes test karma --coverage"

This would produce the additional output to the previous command in the terminal:

...

index.html file in the lcov-report folder can be opened in the browser and this would allow to examine the code coverage in details for the certain files and areas which should be improved.

 

There is a way to define the coverage threesholds for the tests

karma.conf.js

Code Block
languagejs
themeEclipse
titlekarma.conf.js
linenumberstrue
  if (configuration.coverageIstanbulReporter) {
    configuration.coverageIstanbulReporter.thresholds.global = {
      statements: 95,
      branches: 85, // should be raised after getting this % up
      functions: 95,
      lines: 95
    };
  }


Interactors

One of the main concepts of the BigTest is interactors. They are like wrappers of the components which allows to get information about component UI state (attribute, text, class). There are many helper methods to get information from the component which is stored in @bigtest/interactor package. For example in the code snippet below the attribute, is, hasClass are used to get information about UI state of the component. Particular interactor could contain as mach as needed of such helper fields. List of all interactors could found here. The source code is well documented with examples.


Code Block
languagejs
themeEclipse
titlesample-interactor
linenumberstrue
import {

...


 interactor,

...


 is,

...


 attribute,

...


 hasClass

...


} from '@bigtest/interactor';

...



import css from '../Button.css';

...



export default interactor(class ButtonInteractor {

...


 static defaultScope = `.${css.button}`;

...


 id = attribute('id');

...


 href = attribute('href');

...


 isAnchor = is('a');

...


 isButton = is('button');

...


 rendersDefault = hasClass(css.default);

...


 rendersPrimary = hasClass(css.primary);

...


 rendersBottomMargin0 = hasClass(css.marginBottom0)

...


});


Setup

ui-eholdings repo uses BigTest for E2E tests. Inside it there is a flow which sets up the entire Folio application with mirage for mocking backend, mounts it, and tears it down. For this purpose the describeApplication setupApplication helper is used from the bigtest/helpers directory. Use this helper for end-to-end acceptance testing instead of the normal describe. The actual tests should sit inside the bigtest/tests directory.

...


Code Block
languagejs
themeEclipse
titlesample-test
linenumberstrue
describe('ChangePasswordPage', function() {

...


  setupApplication();

  it('should show something awesome', function() {

...


    expect($('h1')).to.have.text('something awesome');

...


  });

...


});


Make sure to include needed dependencies in the package.json like @bigtest/mocha and @bigtest/mirage. See package.json from ui-eholdings repo for more reference.

Overall the folder structure for the testing and files to configure it should be the following:

  • module-folder
    • test
      • bigtest/
        • helpers/ - helpers
        like describeApplication
        • like setupApplication to set up the whole stripes application where the tests will be run
        • interactors/ - wrappers around components to get the information about its DOM state (text, attribute, state) and interaction with it (clicks, input, blur, etc).
        • network/ - network mocking configuration based on BigTest Mirage package (here is the Wiki about BigTest Mirage overview)
        test
        • tests/ - the actual
        e2e
        • tests
      • .stripesclirc.js (configure mirage there)
      • karma.conf.js (setup karma test runner to run tests)

  1. Stripes component testing: BigTests: Tutorial
  2. https://github.com/bigtestjs/react
  3. https://github.com/bigtestjs and https://bigtestjs.io/
  4. BigTest Mirage overview
  5. Pact overview
  6. Big Testing in React
  7. FOLIO UI Testing Team

...