Slow/laggy onboarding & end-to-end test flakiness
PRs almost always have failing e2e tests due to flakiness.
Flakiness defined as: arbitrary test failures, often a random test and browser/environment, where re-running the test with no code changes will yield different results.
Here are some possible causes that may be compounding to make these happen as often as they do. None of these have been thoroughly debugged and/or validated.
-
Inefficient/expensive crypto operations in several areas (cpu & memory) - also may increase the chance of mobile and lower powered VMs freezing up / timing out.
-
Unsafe/deprecated react APIs being used, which have known issues with race conditions, possibly having a higher chance of buggy page transitions on lower powered VMs / mobile.
-
Large js bundle sizes in blockstack.js and the browser web app which may increase the probability of network request timeouts or failures.
CircleCI and the BrowserStack servers likely throttle network when under load, and they have significant network interactions between each other during the e2e tests. Example of such interaction: circleCI hosts a hello-blockstack test web app, which BrowserStack VMs fetch via https://www.browserstack.com/local-testing, in addition to the selenium browser remoting connection.
-
Large js bundle sizes which may increase the chance of mobile and lower powered VMs freezing up / timing out from AST parsing, JIT'ing, etc.. (cpu & memory constraints).
Profiling & testing needs done so we can identify and prioritize potential work for fixing them.
My update to the test is ready to merge https://github.com/blockstack/blockstack-browser/pull/1955/commits/99e75c58d4d49aa7ce0c79432309a16c5d717f7b
Please see comments about appium/iOS know bugs causing flakes