fix all overlays

This commit is contained in:
larssand
2026-09-08 18:26:30 +02:00
parent d0889736d0
commit 8aedf83826
9 changed files with 197 additions and 4 deletions

View File

@@ -0,0 +1,87 @@
import assert from "node:assert/strict";
export async function runRaceSetupSmoke({ evaluate, navigate, fill, savedState, waitFor, pause }) {
const click = id => evaluate(`document.getElementById(${JSON.stringify(id)}).click()`);
const submit = id => evaluate(`document.getElementById(${JSON.stringify(id)}).requestSubmit()`);
const findEvent = async name => (await savedState()).events.find(event => event.name === name);
async function editEvent(event, view, readyForm) {
await click("event-edit-" + event.id);
await fill("eventEditForm", { name: event.name + " Updated" });
await submit("eventEditForm");
await waitFor(async () => Boolean(await findEvent(event.name + " Updated")), "event name saved");
await navigate(view, readyForm);
await click("event-edit-" + event.id);
assert.equal(await evaluate('document.getElementById("eventEditForm").elements.namedItem("name").value'), event.name + " Updated");
await click("eventEditCancel");
await click("event-manage-" + event.id);
}
await navigate("events", "eventForm");
await fill("eventForm", { name: "Browser Sponsor", date: "2026-09-08", classId: "test_class" });
await submit("eventForm");
await waitFor(async () => Boolean(await findEvent("Browser Sponsor")), "create sponsor event");
const sponsor = await findEvent("Browser Sponsor");
await editEvent(sponsor, "events", "eventForm");
await fill("sessionForm", { name: "Sponsor Heat", type: "heat", durationMin: "5", startMode: "mass" });
await submit("sessionForm");
await waitFor(async () => (await savedState()).sessions.some(session => session.name === "Sponsor Heat" && session.eventId === sponsor.id), "sponsor session");
console.log("PASS sponsor-event create/edit/reload and session creation");
await navigate("race_setup", "raceWizardStepForm");
await fill("raceWizardStepForm", { name: "Browser Endurance", date: "2026-09-08", classId: "test_class", presetId: "endurance" });
await click("raceWizardNext");
await click("wizardSelectAllParticipants");
await click("raceWizardNext");
await evaluate('document.querySelector("#raceWizardPlanForm [name=createTeamRace]").checked = true');
await fill("raceWizardPlanForm", { teamRaceDurationMin: "45" });
await click("raceWizardNext");
await click("raceWizardCreate");
await waitFor(async () => Boolean(await findEvent("Browser Endurance")), "wizard race creation");
const race = await findEvent("Browser Endurance");
await navigate("race_setup", "raceWizardStepForm");
await editEvent(race, "race_setup", "raceWizardStepForm");
const current = await savedState();
const driver = current.drivers.find(item => item.name === "Browser Driver Updated");
const car = current.cars.find(item => item.name === "Browser Car Updated");
const raceState = () => findEvent("Browser Endurance Updated");
await fill("teamForm", { teamName: "Browser Team" });
await evaluate(`document.querySelector('[form="teamForm"][name="teamDriverIds"][value="${driver.id}"]').checked=true`);
await submit("teamForm");
await waitFor(async () => (await raceState()).raceConfig.teams.some(team => team.name === "Browser Team"), "team create");
const team = (await raceState()).raceConfig.teams.find(item => item.name === "Browser Team");
assert.deepEqual(team.driverIds, [driver.id]);
await click("team-edit-" + team.id);
await fill("teamEditForm", { teamName: "Browser Team Updated" });
await evaluate(`document.querySelector('#teamEditForm [name="teamCarIds"][value="${car.id}"]').checked=true`);
await pause(5500);
assert.equal(await evaluate('document.getElementById("teamEditForm").elements.namedItem("teamName").value'), "Browser Team Updated");
await click("teamEditSave");
await waitFor(async () => (await raceState()).raceConfig.teams.some(item => item.name === "Browser Team Updated" && item.carIds.includes(car.id)), "team membership update");
await navigate("race_setup", "raceWizardStepForm");
await click("event-manage-" + race.id);
await click("team-edit-" + team.id);
assert.equal(await evaluate('document.getElementById("teamEditForm").elements.namedItem("teamName").value'), "Browser Team Updated");
assert.ok(await evaluate(`document.querySelector('#teamEditForm [name="teamCarIds"][value="${car.id}"]').checked`));
await click("teamEditCancel");
await fill("sessionForm", { name: "Editable Practice", type: "open_practice", durationMin: "5" });
await submit("sessionForm");
await waitFor(async () => (await savedState()).sessions.some(session => session.name === "Editable Practice"), "practice create");
const session = (await savedState()).sessions.find(item => item.name === "Editable Practice");
await click("session-edit-" + session.id);
await fill("sessionEditForm", { name: "Edited Team Session", type: "team_race", durationMin: "45", followUpSec: "30" });
await submit("sessionEditForm");
await waitFor(async () => (await savedState()).sessions.some(item => item.id === session.id && item.type === "team_race" && item.durationMin === 45 && item.followUpSec === 30), "session edit type and duration");
await fill("raceFormatForm", { minLapSec: "30", maxLapSec: "120" });
await submit("raceFormatForm");
await waitFor(async () => (await raceState()).raceConfig.minLapMs === 30000 && (await raceState()).raceConfig.maxLapMs === 120000, "lap limits saved");
await navigate("race_setup", "raceWizardStepForm");
await click("event-manage-" + race.id);
await click("session-edit-" + session.id);
assert.equal(await evaluate('document.getElementById("sessionEditForm").elements.namedItem("type").value'), "team_race");
await click("sessionEditCancel");
assert.equal(await evaluate('document.getElementById("raceFormatForm").elements.namedItem("minLapSec").value'), "30.0");
await click("team-delete-" + team.id);
await waitFor(async () => !(await raceState()).raceConfig.teams.some(item => item.id === team.id), "team deletion");
console.log("PASS race wizard/edit/reload, team create/member-edit/delete, session type/duration and lap limits");
}