{t("crm.stats.variants")}
- {stats.variants.length === 0 ? (
+ {unavailable.has("variants") ? (
+
+ ) : stats.variants.length === 0 ? (
) : (
diff --git a/apps/web/src/pages/ScoutPage.test.tsx b/apps/web/src/pages/ScoutPage.test.tsx
index f10288c..1bb13b4 100644
--- a/apps/web/src/pages/ScoutPage.test.tsx
+++ b/apps/web/src/pages/ScoutPage.test.tsx
@@ -1,10 +1,10 @@
import { fireEvent, render, screen, waitFor } from "@testing-library/react";
import { MemoryRouter } from "react-router-dom";
-import { beforeEach, describe, expect, it, vi } from "vitest";
+import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import type { Repos } from "../data/repos";
import type { Job, ScoutHomeworkRecord, ScoutRun, ScoutRunBrief } from "../domain/types";
import { I18nProvider } from "../i18n/I18nContext";
-import { translate } from "../lib/i18n/messages";
+import { ensureCatalog, translate } from "../lib/i18n/messages";
import { scoutPostFixture } from "../test/scoutFixtures";
import { ScoutPage } from "./ScoutPage";
@@ -125,6 +125,11 @@ function renderPage() {
}
describe("ScoutPage baseline harness", () => {
+ // 英文字典是動態載入的,斷言前先確保它到位
+ beforeAll(async () => {
+ await ensureCatalog("en");
+ });
+
beforeEach(() => {
harness.failLoad = false;
harness.repos = buildRepos();
diff --git a/apps/web/src/pages/publicPages.test.tsx b/apps/web/src/pages/publicPages.test.tsx
index f71213d..91fbc6f 100644
--- a/apps/web/src/pages/publicPages.test.tsx
+++ b/apps/web/src/pages/publicPages.test.tsx
@@ -1,13 +1,13 @@
import { fireEvent, render, screen, within } from "@testing-library/react";
import { MemoryRouter, Route, Routes } from "react-router-dom";
-import { beforeEach, describe, expect, it, vi } from "vitest";
+import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import { KEYS } from "../data/mock/keys";
import { I18nProvider } from "../i18n/I18nContext";
import { DataDeletionPage } from "./DataDeletionPage";
import { HomePage } from "./HomePage";
import { PrivacyPage } from "./PrivacyPage";
import { TermsPage } from "./TermsPage";
-import { translate } from "../lib/i18n/messages";
+import { ensureCatalog, translate } from "../lib/i18n/messages";
import { PLANS } from "../lib/usageMeter";
const authState = vi.hoisted(() => ({
@@ -71,6 +71,11 @@ const PRIVACY_SECTION_IDS = [
] as const;
describe("public intro homepage", () => {
+ // 切換語系的斷言會用到英文字典,動態載入需先等它到位
+ beforeAll(async () => {
+ await ensureCatalog("en");
+ });
+
beforeEach(() => {
authState.member = null;
authState.loading = false;