feat(training): base training stats on practice, keep race laps separate

Training stats count Open/Free practice by default; laps from
qualifying, heats and finals are kept and shown under Based on: Races
or All, marked with race, session and series. Races are listed per race
session and never split into stints. Same picker in the mobile profile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
larssand
2026-10-10 20:08:17 +02:00
parent 9a9379aa83
commit af79b610db
15 changed files with 377 additions and 42 deletions

View File

@@ -16,6 +16,7 @@ import { runSuspectLapsSmoke } from "./browser_suspect_laps.js";
import { runCorrectionsScopeSmoke } from "./browser_corrections_scope.js";
import { runDriversPageSmoke } from "./browser_drivers_page.js";
import { runSeriesSmoke } from "./browser_series.js";
import { runTrainingSourceSmoke } from "./browser_training_source.js";
import { runObsPopupSmoke } from "./browser_obs_popup.js";
import { runDecoderReconnectSmoke } from "./browser_decoder_reconnect.js";
import assert from "node:assert/strict";
@@ -162,6 +163,7 @@ try {
await runCorrectionsScopeSmoke({ evaluate, navigate, savedState, waitFor, base });
await runDriversPageSmoke({ evaluate, navigate, savedState, waitFor, base });
await runSeriesSmoke({ evaluate, navigate, savedState, waitFor, base, dialogs });
await runTrainingSourceSmoke({ evaluate, navigate, savedState, waitFor, base });
await runRaceDaySmoke({ evaluate, navigate, fill, savedState, waitFor, pause, base, dialogs });
await runRaceDayStartSequencesSmoke({ evaluate, navigate, waitFor, pause, base, dialogs });
await runObsPopupSmoke({ evaluate, navigate, fill, savedState, waitFor, pause, base, debugPort, dialogs, realClick });