UI testing approach for FOLIO for the next 2 years
Haven't met since October 2018; need to revisit the decisions made then since ecosystem has evolved since then. Agree, document, and communicate our decisions to dev teams to set their expectations about our guidelines.
New UI code changes acceptance criteria
What will acceptance criteria for new code be? Was challenged by Tech Council on the current "80% coverage" guideline.
Acceptance criteria for including a UI module into FOLIO release
What will quality gates be for community code to be included in a community-supported official quarterly release?
Aiming for a binary decision on whether to include or not
UI testing tools:
Selection (BigTest, Jest, RTL, etc)
set guideline that all modules are obligated to respect
can't just choose own framework and expect it to be part of the project. a spike is acceptable of course, but as a spike not as a final decision. All tools in use should be validated by this team. Not saying a firm "No" to other options, but looking to have a deliberate approach to adding new tools to the project.
Take emotions out of the process by agreeing on selection criteria that will be applied to every proposed solution (tool group). Folks have strong feelings, strong opinions, but this needs to be done impartially.
Each proposed tool should go through a spike and presented to the UI Testing team for review with ratings for each selection criteria.
Speed: must run FAST
Reliability: must not make issues further down in the suite opaque
Relevance:
Mocking facility (Sharing mocks for core modules)
at present, every module has to build own facility for this → lots of redundancy for mocks of core modules. WOULD BE SO VERY VERY NICE but may be hard to achieve.
Integration vs Unit vs e2e tests (can the same tool to be used for both?)
e.g. can use the same tool with both real backend and with mocks?
if yes, this is a huge win: reduces the amount of tooling folks need to know
Cost to migrate/rebuild existing tests
what is the cost of transitioning from one tool to another if we go this route?
Frontside is thinking about tools for (semi-)automated BT v1 to v2 conversion
Multi browser support
not necessary now, but likely required in the future
implicit in this statement is that some amount of real-browser testing is necessary for some tests (NB: Nightmare, Jest both do not)
maybe unit tests can/should run headless/Electron/Whatever, but functional tests and e2e need a real browser. What belongs where, what kind of testing do we want to do?