Uploaded image for project: 'FOLIO'
  1. FOLIO
  2. FOLIO-1618

Update existing Nightmare tests to support coverage

    Details

    • Type: Umbrella
    • Status: Open (View Workflow)
    • Priority: P3
    • Resolution: Unresolved
    • Component/s: None
    • Labels:
      None
    • Development Team:
      Core: Platform

      Description

      **Note: We should selectively update a couple modules and verify results before rolling this out to all.**

      Update nightmare tests in ui-modules and platforms to use the pattern outlined in ui-users. This change will allow for enabling of code coverage enabled by UITEST-39 and demonstrated in UIU-570.

      The main change is to accept a Nightmare object instantiated outside of the test, rather than creating a new one within each test.

      For example, from this:

      module.exports.test = function myTests(uiTestCtx) {
        describe('Example', function () {
          const nightmare = new Nightmare(config.nightmare);
          nightmare.foo()
          //...
        }
      }
      

      To this:

      module.exports.test = function myTests(uiTestCtx, nightmare) {
        describe('Example', function () {
          nightmare.foo()
          //...
        }
      }
      

      Also remove any direct calls to .end() on the Nightmare instance within tests. End will be called on the shared instance after all tests are run. This includes use of the logout() helper method which internally calls end. A new helper method, logoutWithoutEnd() has been created to accommodate the transition.

      Example, from this:

      const { helpers: { login, logout } } = uiTestCtx;
      //...
      after( function (done) {
        logout(nightmare, config, done);
      });
      

      To this:

      const { helpers: { login, logoutWithoutEnd } } = uiTestCtx;
      //...
      after( function (done) {
        logoutWithoutEnd(nightmare, config, done);
      });
      

      Finally, although not required, this may be a good opportunity to review and replace our use of arrow functions for the Mocha test scaffolding (describe, it, before, after, etc). Due to the lexically bound this of the arrow function, access to Mohca's context is blocked and therefore not recommended.

      For example, rather than this:

      it('should do something', (done) => {
        // ...
      }
      

      Do this:

      it('should do something', function (done) {
        // ...
      }
      

        Attachments

          Issue Links

            Expenses

              Activity

              Hide
              mattj Matt Jones added a comment -

              Jakub Skoczen, I have created and linked JIRA tasks for the modules and platforms which appear to have existing Nightmare tests written. I recommend we trial the upgrade on a module or two before rolling out the change to all. This would give us a chance to update the instructions in this ticket with any issues encountered. Zak Burke do you have a recommendation for a candidate module? Perhaps one that has shown to be relatively stable recently.

              Also, there are more modules with Nightmare tests that I did not create tickets for. However, they only have a placeholder tests (from creating a new ui-module via the CLI). These others include platform-erm, ui-finance, ui-vendors, ui-receiving, ui-licenses, and ui-erm-usage.

              Show
              mattj Matt Jones added a comment - Jakub Skoczen , I have created and linked JIRA tasks for the modules and platforms which appear to have existing Nightmare tests written. I recommend we trial the upgrade on a module or two before rolling out the change to all. This would give us a chance to update the instructions in this ticket with any issues encountered. Zak Burke do you have a recommendation for a candidate module? Perhaps one that has shown to be relatively stable recently. Also, there are more modules with Nightmare tests that I did not create tickets for. However, they only have a placeholder tests (from creating a new ui-module via the CLI). These others include platform-erm, ui-finance, ui-vendors, ui-receiving, ui-licenses, and ui-erm-usage.
              Hide
              zburke Zak Burke added a comment -

              checkout, circulation, or organization are all relatively small and would be good candidates.

              Show
              zburke Zak Burke added a comment - checkout, circulation, or organization are all relatively small and would be good candidates.
              Hide
              jakub Jakub Skoczen added a comment -

              John Malconian what needs to be done to integrate those coverage reports into the Jenkins runs?

              Show
              jakub Jakub Skoczen added a comment - John Malconian what needs to be done to integrate those coverage reports into the Jenkins runs?
              Hide
              zburke Zak Burke added a comment -

              In light of UIU-777 and FOLIO-1660, I think this isn't ready to pursue at present.

              Show
              zburke Zak Burke added a comment - In light of UIU-777 and FOLIO-1660 , I think this isn't ready to pursue at present.

                People

                • Assignee:
                  Unassigned
                  Reporter:
                  mattj Matt Jones
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                  Dates

                  • Created:
                    Updated: