mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-05-08 09:57:21 -05:00
Introduces tools/release-smoke/ — a headless-Chromium smoke harness for validating the live state of every mlsysbook.ai sub-site after a publish. Each site in sites.json declares expected title, optional H1, headings, additional pages, and a wait-strategy hint (WASM-heavy sites like /labs/ use 'domcontentloaded' since 'networkidle' never settles on long-lived marimo sockets). For each site the runner: - fetches the landing URL - asserts HTTP 200, title match, optional H1 match - verifies expected headings render - collects every same-origin <a href> and HEAD-checks each - fetches each declared additional page - captures a full-page screenshot - captures console errors, page errors, failed requests Output: reports/smoke-<ISO>.json + screenshots/<site>-<ISO>.png. Exit code is non-zero iff any site had a hard error (title mismatch, missing expected heading, missing additional page, uncaught JS error). Used to verify the initial release train of instructors, slides, mlsysim, and labs. Cross-site broken links that point to not-yet- launched sub-sites (/staffml/, /about/, /community/, /vol1/, /vol2/) are reported but treated as soft warnings.
73 lines
1.7 KiB
JSON
73 lines
1.7 KiB
JSON
{
|
|
"instructors": {
|
|
"url": "https://mlsysbook.ai/instructors/",
|
|
"titleIncludes": "Blueprint",
|
|
"expectedH1": "The AI Engineering Blueprint",
|
|
"expectedHeadings": [
|
|
"Course Materials",
|
|
"Teaching Resources",
|
|
"Syllabi"
|
|
],
|
|
"additionalPages": [
|
|
"course-map.html",
|
|
"getting-started.html",
|
|
"pedagogy.html",
|
|
"foundations-syllabus.html",
|
|
"scale-syllabus.html",
|
|
"tinyml-syllabus.html",
|
|
"ta-guide.html",
|
|
"faq.html",
|
|
"assessment.html",
|
|
"customization.html"
|
|
]
|
|
},
|
|
"slides": {
|
|
"url": "https://mlsysbook.ai/slides/",
|
|
"titleIncludes": "Slides",
|
|
"expectedHeadings": [],
|
|
"additionalPages": []
|
|
},
|
|
"staffml": {
|
|
"url": "https://mlsysbook.ai/staffml/",
|
|
"titleIncludes": "StaffML",
|
|
"expectedHeadings": [],
|
|
"additionalPages": []
|
|
},
|
|
"mlsysim": {
|
|
"url": "https://mlsysbook.ai/mlsysim/",
|
|
"titleIncludes": "MLSys",
|
|
"expectedHeadings": [],
|
|
"additionalPages": []
|
|
},
|
|
"labs": {
|
|
"url": "https://mlsysbook.ai/labs/",
|
|
"titleIncludes": "Labs",
|
|
"waitUntil": "domcontentloaded",
|
|
"expectedHeadings": [],
|
|
"additionalPages": [
|
|
"vol1/lab_00_introduction/",
|
|
"vol1/lab_01_ml_intro/",
|
|
"vol2/lab_01_introduction/",
|
|
"vol2/lab_02_compute_infra/"
|
|
]
|
|
},
|
|
"tinytorch": {
|
|
"url": "https://mlsysbook.ai/tinytorch/",
|
|
"titleIncludes": "TinyTorch",
|
|
"expectedHeadings": [],
|
|
"additionalPages": []
|
|
},
|
|
"book": {
|
|
"url": "https://mlsysbook.ai/book/",
|
|
"titleIncludes": "Machine Learning Systems",
|
|
"expectedHeadings": [],
|
|
"additionalPages": []
|
|
},
|
|
"kits": {
|
|
"url": "https://mlsysbook.ai/kits/",
|
|
"titleIncludes": "Kits",
|
|
"expectedHeadings": [],
|
|
"additionalPages": []
|
|
}
|
|
}
|