diff --git a/solitaire_server/e2e/scripts/cycle_metrics.js b/solitaire_server/e2e/scripts/cycle_metrics.js
index fa29ab8..71149a5 100644
--- a/solitaire_server/e2e/scripts/cycle_metrics.js
+++ b/solitaire_server/e2e/scripts/cycle_metrics.js
@@ -103,6 +103,9 @@ async function main() {
const policyArg = readArg("--policy", "loop_aware");
const policy = policyArg === "baseline" ? "baseline" : "loop_aware";
const outPath = readArg("--out", "/tmp/playwright-cycle-metrics.json");
+ // --route play-classic (default) or --route play
+ const routeArg = readArg("--route", "play-classic");
+ const route = routeArg === "play" ? "play" : "play-classic";
const maxCycleRateAll = parseOptionalNumber("--max-cycle-rate-all");
const maxCycleRateDraw1 = parseOptionalNumber("--max-cycle-rate-draw1");
const maxCycleRateDraw3 = parseOptionalNumber("--max-cycle-rate-draw3");
@@ -155,17 +158,19 @@ async function main() {
}
});
- await page.goto(`${baseUrl}/play-classic?seed=${seed}${suffix}`, {
+ await page.goto(`${baseUrl}/${route}?seed=${seed}${suffix}`, {
waitUntil: "domcontentloaded",
});
- const resumeVisible = await page
- .locator("#resume-overlay:not(.hidden)")
- .isVisible()
- .catch(() => false);
- if (resumeVisible) {
- await page.evaluate(() => localStorage.removeItem("fs_game_save"));
- await page.reload({ waitUntil: "domcontentloaded" });
+ if (route === "play-classic") {
+ const resumeVisible = await page
+ .locator("#resume-overlay:not(.hidden)")
+ .isVisible()
+ .catch(() => false);
+ if (resumeVisible) {
+ await page.evaluate(() => localStorage.removeItem("fs_game_save"));
+ await page.reload({ waitUntil: "domcontentloaded" });
+ }
}
await page.waitForFunction(
diff --git a/solitaire_server/web/play.html b/solitaire_server/web/play.html
index 9751687..9b0ca6f 100644
--- a/solitaire_server/web/play.html
+++ b/solitaire_server/web/play.html
@@ -14,7 +14,201 @@