| # | Given | When | Then | |---|-------|------|------| | | The user is on the “EngSub Convert” page | They upload one or more subtitle files and click Convert | The system validates each file (correct extension, well‑formed timestamps) and returns an error list for any invalid file, aborting processing for those files only. | | AC‑2 | The offset field is empty | The user clicks the “02:23:49 Min” shortcut button | The field is auto‑filled with 02:23:49 and the UI shows “+2 h 23 m 49 s”. | | AC‑3 | The user selects .srt as source and .vtt as target | Conversion runs | All timestamps are shifted, the file is rewritten in VTT syntax, and the download name changes to <original‑name>.vtt . | | AC‑4 | Any subtitle line after shifting would become negative (e.g., original 00:00:02 shifted by –00:00:05) | The conversion runs | The system clamps the timestamp to 00:00:00 and flags the line in the preview log with a warning. | | AC‑5 | The user uploads ≥ 1 and ≤ 100 files | The conversion starts | A progress bar shows “Processing X of Y files”, and a Cancel button aborts remaining work while preserving already processed outputs. | | AC‑6 | The conversion finishes successfully | The UI shows Download All (ZIP) and Download Log (CSV) buttons | Clicking either triggers a file‑download with correct MIME types ( application/zip , text/csv ). | | AC‑7 | The user clicks Preview before conversion | The system displays the first 5 subtitle entries after applying the offset (but before format conversion) | The preview table includes original timestamp, new timestamp, and subtitle text. | | AC‑8 | The user has an invalid file (e.g., .txt) | They attempt to process it | The UI shows a clear error “Unsupported file type – only .srt, .vtt, .ass are allowed.” | | AC‑9 | The user’s browser is IE11 (unsupported) | They load the page | The UI displays a friendly “Your browser is not supported – please use Chrome, Edge, or Firefox.” | | AC‑10 | The conversion is completed | The server cleans up temporary files | No processed files remain on the server after 15 minutes or after the user downloads, whichever comes first. |

Tell me your exact goal, and I can provide the right . Share public link