This drastically improves the usability of the app by reducing the time it takes for the main page to load on subsequent loads.
Implemented behaviour:
If the changesets have not been cached fetch them.
If the cache is older than 24 hours, clear it and fetch new changesets.
This view allows you to select each line of a file
and determine which tests cover that specific line.
This work comes from the UCOSP work from @LinkaiQi and @yuenj.
Some pushes in mozilla-central do not yet have code coverage information.
The backend returns 202 for those pushes and we mark them as 'Pending'.
Once we have determined which csets don't have coverage data we can query
on an interval to see if anything has changed. We do this until
there are no csets with a backend response of 202.
Indicate if changesets are still being polled.
Until now we would only fetch the coverage for the tipmost changeset.
With this change every changeset contains information about code coverage
and if it should be linkify or hidden (instead of being stored at the push level).
NOTE: This change can only work if the backend behaves (currently failing often),
otherwise, you will not think anything useful happens in this commit besides adding
an empty 'code coverage' column.
Recent pushes from mozilla-central may not have code coverage available for few hours.
If succesful, this change adds a coverage summary for every push.
We fetch the coverage data sequentially for each push (rather than in parallel)
since we can overwhelm the backend. Read the details in
[here](https://github.com/mozilla-releng/services/issues/632).
Up until now we were using the index of the array to identify each line
in the diff viewer. This is a bad habit and the new linter rules catches this.
In the future we will be able to create links to this unique row identifiers.
Neutrino version 7 was released yesterday and the code inside of package.json
allowed it to be installed (my bad).
Unfortunately that became a complete mess locally and on Heroku.
Trying to fix it was also a bit of a mess and never got it fixed right.
I needed to spend more time but instead I decided to get rid of neutrino
altogether.
I've wanted to remove neutrino for a while since I feel it adds
one more layer of complexity. It even makes .eslintrc.js use a
different style than it normally would.
react-scripts has a much larger community behind it and I expect
it to get less on the way.
One other benefit of react-scripts is that it auto-opens a tab
and loads your app there.