diff --git a/docs/Blog/video/build-scenes.py b/docs/Blog/video/build-scenes.py index 1cd5499..55d84fd 100644 --- a/docs/Blog/video/build-scenes.py +++ b/docs/Blog/video/build-scenes.py @@ -986,11 +986,23 @@ def retime(guiones: dict) -> None: print() -def ensure_stills(page_obj) -> dict: - """Capture the real report sections the evidence scenes pan over.""" +def ensure_stills(page_obj, refresh: bool = False) -> dict: + """Capture the real report sections the evidence scenes pan over. + + Captured once and kept, because the run behind them is slow. That is also how they go stale + without anyone noticing: these sat sixteen days and ten releases behind the tool whose output + they are supposed to BE, and the only reason the film was not showing something untrue is + that the fixture happened to extract identically. `--restills` is the way to check that + rather than assume it -- and a byte-identical recapture is itself the useful answer. + """ STILLS.mkdir(parents=True, exist_ok=True) wanted = {key: STILLS / f"{key}.png" for key, _, _ in STILLS_WANTED} + if refresh: + REPORT.unlink(missing_ok=True) + for path in wanted.values(): + path.unlink(missing_ok=True) + if any(not path.exists() for path in wanted.values()): if not REPORT.exists(): print(f" generating {REPORT.name} from {FIXTURE.name}") @@ -1046,6 +1058,10 @@ def main() -> None: parser.add_argument("--assemble", action="store_true", help="join the rendered scenes into one film per language, carrying " "each scene's narration if audio//.mp3 exists") + parser.add_argument("--restills", action="store_true", + help="recapture the evidence stills from a fresh run of the tool. They " + "are captured once and kept, so without this they outlive the " + "output they are supposed to be evidence of") parser.add_argument("--retime", action="store_true", help="rewrite each scene's length from its recorded take, or from its " "word count until one exists, and print the chapter list") @@ -1076,7 +1092,7 @@ def main() -> None: with sync_playwright() as playwright: browser = playwright.chromium.launch() helper = browser.new_page() - stills = ensure_stills(helper) + stills = ensure_stills(helper, refresh=args.restills) helper.close() print() for still in stills.values(): diff --git a/docs/Blog/video/posters/en/08-roslyn.png b/docs/Blog/video/posters/en/08-roslyn.png index 1367242..b9a1c84 100644 Binary files a/docs/Blog/video/posters/en/08-roslyn.png and b/docs/Blog/video/posters/en/08-roslyn.png differ diff --git a/docs/Blog/video/posters/es/08-roslyn.png b/docs/Blog/video/posters/es/08-roslyn.png index f43f55b..87e57b1 100644 Binary files a/docs/Blog/video/posters/es/08-roslyn.png and b/docs/Blog/video/posters/es/08-roslyn.png differ diff --git a/docs/Blog/video/scenes/en/08-roslyn.html b/docs/Blog/video/scenes/en/08-roslyn.html index d9f3ab1..804db2d 100644 --- a/docs/Blog/video/scenes/en/08-roslyn.html +++ b/docs/Blog/video/scenes/en/08-roslyn.html @@ -81,7 +81,7 @@
PharmacyDemo.Module/BusinessObjects/Prescription.cs
[DefaultClassOptions]
[NavigationItem("Care")]
[XafDefaultProperty(nameof(Reference))]
[Description("Authority to dispense a restricted product.")]
[RuleCriteria("Prescription_NotExpired", DefaultContexts.Save, "ExpiresOn > IssuedOn", CustomMessageTemplate = "A prescription cannot expire before it was issued.")]
public class Prescription : XPCustomObject
{
public Prescription(Session session) : base(session) { }
 
-
Works on a branch that does not build
No DevExpress assembly is ever referenced
270 tests run free on a public runner
+
Works on a branch that does not build
No DevExpress assembly is ever referenced
556 tests run free on a public runner
diff --git a/docs/Blog/video/scenes/es/08-roslyn.html b/docs/Blog/video/scenes/es/08-roslyn.html index e8ff198..e20974a 100644 --- a/docs/Blog/video/scenes/es/08-roslyn.html +++ b/docs/Blog/video/scenes/es/08-roslyn.html @@ -81,7 +81,7 @@
PharmacyDemo.Module/BusinessObjects/Prescription.cs
[DefaultClassOptions]
[NavigationItem("Care")]
[XafDefaultProperty(nameof(Reference))]
[Description("Authority to dispense a restricted product.")]
[RuleCriteria("Prescription_NotExpired", DefaultContexts.Save, "ExpiresOn > IssuedOn", CustomMessageTemplate = "A prescription cannot expire before it was issued.")]
public class Prescription : XPCustomObject
{
public Prescription(Session session) : base(session) { }
 
-
Funciona en una rama que no compila
Nunca referencia un ensamblado de DevExpress
270 pruebas corren gratis en un runner público
+
Funciona en una rama que no compila
Nunca referencia un ensamblado de DevExpress
556 pruebas corren gratis en un runner público