I am new to JavaScript as well as PWAs. I had the very much same questions (How I can find out that my contents are available offline means have been loaded into the cache for off-line browsing?), looked around on the web and finally find out that the Service Workers (SW) can’t speak to the clients other than a SW may do a (console.log) after completing the loading using add() and/or addAll() methods. I think the best would be to find out the limit available for the storage and usage using estimate.quota() and estimate.usage(), as you might already know these are the methods of the of the Storage Api.
var storageMax = Math.round(estimate.quota/(1024*1024))
This will give you the maximum storage capacity available in Mib and the following line of code will give you the storage you have consumed.
Var storageValue = Math.round(estimate.usage/(1024*1024))
<progress value=" storageValue " max=" storageMax "></progress>
If you use the above mentioned progress bar onto your [index.html or whichever] page it will at least show you some sort of progress in terms of some contents being loaded and your initial capacity. Now come the second part of it, If in JavaScript (which I am sure we can), we can find out how much our contents are in size e.g. if I can find out the size of the folder(s) which contains videos to be loaded for the offline storage then the we can have another progress bar
Var folderSize = [folder1] + [folder2] + …;
<progress value=" storageValue " max=" folderSize "></progress>
This will give you very much precise progress bar showing folderSize as the maximum length of the progress bar and the storageValue as the contents been loaded into it. I am still trying to find out how do I find the size of a folder in JavaScript, so the answer is practically incomplete but logically complete, I think so