odop

Open Design Optimization Platform (ODOP) - Coil spring design app; mechanical springs; compression spring, extension spring, torsion spring

View the Project on GitHub thegrumpys/odop

Prepare for release

This entry describes steps that should be executed prior to release of a new version of the ODOP app. These steps are somewhat independent of the actual release procedure and can be optionally executed in advance to make the actual release activity shorter and less prone to distraction or failure.

  1. Create an issue providing a branch in which to make these changes. This issue is to capture test results from below and any errors / fixes during release. Set title to "Release Major.Minor.Patch"

  2. Run test automation on BDW and MKM machines. Do client testing for performance on BDW machine.

    1. In server, run "npm test" and verify test cases executed successfully. Repair errors or update tests to run successfully.
    2. In client, run "npm test" and verify test cases executed successfully. Repair errors or update tests to run successfully.
    3. Save results of performance (duration) in:
      /ODOP/client/src/__test__/test-results/test_results_Major_Minor_Patch.txt.
      For example: test_results_5_1_0.txt
      1. Update performance summary .csv file with results from the tests above.
  3. Test For Console Output
    Bring up Google Chrome and enable View Console / Debugger.
    Test various input and menu functions and verify no unexpected console.log output.

    Use regular expression search: "^\s*console\." to find non-commented out console.log lines. Most console.log output is acceptable in:

    • client/public/dynoLoading.js
    • client/src/__test__/*.*
    • client/src/menus/View/ViewExecuteToTest.jsx
    • client/src/store/middleware/dispatcher.js
    • client/src/store/middleware/pxUpdateObjectiveValue.js
    • client/src/store/middleware/seek.js
    • client/src/store/middleware/updateObjectiveValue.js
    • client/src/store/reducers.js
    • client/src/logUsage.js
    • client/src/registerServiceWorker.js
    • scripts/build_index.js
    • scanner.js
    • server.js
  4. Run the production build in a test environment to confirm that things are synchronized with the Heroku build environment and assure that the build process goes smoothly during the actual release. One possibility is to build into the staging system with the Heroku environment variables set to "production".

    1. Set NODE_ENV to "production"
    2. Set REACT_APP_NODE_ENV to "production"
    3. Release to staging via git push heroku-staging master
    4. Verify that it is production by starting https://odop-staging.herokuapp.com/ and checking if "Load Initial State" is in File Open modal.
    5. Afterwards reset REACT_APP_NODE_ENV to "staging"
    6. Leave NODE_ENV to "production"