Progress simulator
The five behaviours this course spends a semester on, in one page — with the completion condition printed beside the bar.
Everything here is simulated. No file is read, nothing is uploaded, and no network request is made. The byte counts, stage durations and failures are generated in your browser from a fixed script so that every behaviour is reproducible on demand — which is the whole reason this course can set exercises about failure at all.
This is a demonstration of the five behaviours the twelve weeks work through. It is not the prototype students build; theirs is a repository they keep for the semester. Use the ×4 speed if you do not want to wait — a site about waiting should not make you do any.
Even rate. The easy case, and the one most bars are designed for.
Idle
—0.0 s elapsed
Nothing has started. Press Start.
Source events (0)
Every number above is derived from one of these. An event the simulator does not emit is a number the interface is not entitled to show.
The completion condition
The bar reaches 100% only when a committed event has been received.Not when the last byte is sent, and not when the transfer stage ends — verification runs after that and can still fail. The percentage countswork units across four stages (read 5, hash 15, transfer 60, verify 20), weighted by their duration in the steady scenario. It is not a percentage of bytes, and in the Stage speeds vary scenario you can watch those two disagree.
What each scenario is for
- Steady
- Even rate. The easy case, and the one most bars are designed for. Week 3: Where is the denominator?
- Stage speeds vary
- Same total work, wildly different rates per stage. Watch the estimate. Week 3: Where is the denominator?
- Unknown total
- No denominator. Nothing on screen may imply a fraction. Week 4: No idea how long
- Stall, then recover
- Live connection, no data for eight seconds, then it resumes. Week 8: Stuck, timed out, disconnected
- Fail, then retry
- Fails in verification. Retry resumes from the last completed stage. Week 9: Cancel and retry
Things to notice
- Unknown total shows no number at all. Not 0%, not a bar creeping to 90 — the percentage readout is removed and
aria-valuenowis omitted, because omitting it is how the platform says indeterminate, while setting it to zero claims nothing has happened. - The bar stops asserting during a stall. No shimmer, no creep. The elapsed counter keeps running, which is what tells you something is wrong without the interface having to guess that something is wrong.
- Only state changes are announced. The status line is a polite live region and it fires on transitions, never on percentage ticks. A bar that announces every integer from 0 to 100 has not been made accessible.
- Retry resumes from the last completed stage. The log shows it: verification restarts, the 60 transfer units are not re-sent, and the elapsed clock does not reset.